전체 글

전체 글

    [Elastic Stack] Ingest Pipeline + processor

    [Elastic Stack] Ingest Pipeline + processor

    Logstash는 Elastic Stack에 원래 포함되어 있는 구성 요소로서, 구문을 분석하고 데이터를 보강하며 처리를 할 때 사용하던 도구이다.  Ingest Node는 Elasticsearch 5.0부터 도입되었으며 최소한의 구성으로 간단한 아키텍처를 가능하게 하며, Logstash의 상위개념이라고 볼 수 있다. 일부 기능은 중복되지만 서로의 사용처가 분명하게 다르다. 실습으로 경험해본 차이점은 Logstash의 Filter 부분을 구성할 때 .yaml 파일로 작성하게 되는데 만약 관련 설정이 길어지거나 추가사항이 많을때는 가독성과 유지보수가 힘들다.하지만 Ingest Node를 사용하여 관리했을땐 GUI기반으로 설정하기가 매우 간단했으며 편리하게 관리할 수 있었다. 인제스트 노드(In..

    [Elastic Stack] Fleet and Elastic Agent

    [Elastic Stack] Fleet and Elastic Agent

    Elastic Agent 로그, 지표 및 기타 모니터링을 추가할 수 있는 통합된 단일 방법이다. 기존의 데이터수집을 위해선 여러 종류의 Beats를 설치하고, 각각의 설정을 일일이 변경하고 Health check까지 별도로 해야했지만 Elastic Agent 하나로 여러 타입의 데이터를 손쉽게 수집하고, Fleet으로 Agent 통합관리, Configuration 및 바이너라 자동업데이트까지 여러기능을 가능케 한다. Fleet의 중앙관리 Elastic Agent를 중앙에서 관리할 수 있도록 Kibana에서 웹 기반 UI를 제공하며 Fleet에 있는 모든 Elastic Agent의 상태를 볼 수 있다. Fleet은 Elastic Agent로 돌아가는 통신 채널 역할을 하며 Agent Policy를 변경하면..

    [Elastic Stack] Grok Pattern에 대해

    [Elastic Stack] Grok Pattern에 대해

    파이프라인데이터를 입력받아 실시간으로 변경하고 이를 다른 시스템에 전달하는 역할입력, 필터, 출력의 3가지 옵션으로 이루어져 있으며 필터에 다양한 옵션이 있는데 그 중 Grok pattern을 사용하는 법에 대해 정리해보려고 한다. 입력 플러그인은 file, syslog, kafka, jdbc 등의 플러그인으로 데이터를 받아온다.필터 플러그인은 grok, dissect, mutate, date 등의 플러그인으로 데이터를 필터링 한다. Grok Pattern - 예악어 활용Grok은 정규 표현식을 이용해 문자열을 파싱할 수 있다. 자주 사용하는 정규 표현식들을 패턴화해뒀으며 패턴을 이용해%{패턴명:변수명} 형태로 데이터에서 특정 필드를 파싱할 수 있다.패턴명설명NUMBER십진수를 인식한다. 부호와 소수점을..

    [Grafana] Customizing Grafana Alerting Notification Templates

    Customize 하지않은 상태로 Test 알림을 보내게되면 다음과 같은 알림을 얻을 수 있는데 필요한 정보만 Alerting하게 하는것이 Customize 하는 목적입니다. **Firing** Value: [no value] Labels: - alertname = TestAlert - instance = Grafana Annotations: - summary = Notification test Silence: http://----- 1. Alerts & IRM -> Contact points 로 이동 2.Notification Templates에서 + Add notification template 버튼을 눌러 새로운 템플릿을 만듭니다. 기본적으로 Nofification Templates은 Go 언어의 ..

    Coding Test(정렬 알고리즘)

    Coding Test(정렬 알고리즘)

    선택정렬 - 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾼다. - 한번씩 순회를 하고 가장 큰 수를 찾은다음 바꿈 - 시간 복잡도 : O(N*2) - 공간 복잡도 : O(N) int[] arr = {7, 5, 2, 4, 6, 1, 3, 9, 8}; for (int i = 0; i arr[j]) { min = j; } } int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } 삽입정렬 - 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입한다. - 현재위치에서 아래쪽을 순회하며 크기가 작을..

    애플리케이션의 종류

    애플리케이션의 종류

    반응형 웹 화면 크기에 따라 홈페이지의 크기가 변화하는 웹사이트 적응형 웹 정해진 화면 크키가 기기에 맞게 홈페이지를 따로 제작하는 웹사이트 네이티브 앱 - 앱 각 운영체제에 맞는 앱을 개발 안드로이드 - Java, Kotlin IOS - Swift, Objective-C 크로스 플랫폼 - 앱 같은 소스코드로 안드로이드, IOS 모든 환경에서 작동할 수 있는 앱 Flutter, React native 웹 앱 - 웹사이트 스마트폰의 기종이나 기기에 상관없이 모든 단말기에서 같은 콘텐츠를 볼 수 있게함 모바일 앱과 비슷한 UI/UX를 지원하는 웹사이트 하이브리드 앱 - 웹사이트 네이티브 or 크로스 플랫폼 + 웹 뷰 PWA(Progressive Web Apps) - 웹사이트 웹 앱이지만 스마트폰과 PC의 바..

    불변성(Immutable)과 빌더 패턴(Builder Pattern)에 대해

    불변성(Immutable)과 빌더 패턴(Builder Pattern)에 대해

    우리는 왜? 불변성을 지키면서 코딩을 해야할까? 내가 알고있는 불변성이라는 개념은 'final' 불변객체는 재할당은 가능하지만, 한번 할당하면 내부 데이터를 변경할 수 없는 객체 class ImmutablePerson { private final int age; private final int name; public ImmutablePerson(int age, int name) { this.age = age; this.name = name; } } private final로 변수를 선언했기 때문에 외부에서 당연히 접근 불가 final로 했기 때문에 setter도 사용 불가능 그럼 이 불변성을 지키는것의 장단점은 무엇일까? 장점 객체에 대한 신뢰도가 높아진다 => 객체가 한번 생성되어서 그게 변하지 않는다..

    객체 지향 프로그래밍

    클래스 멤버 변수 vs 인스턴스(객체) 멤버 변수 public class Person { //클래스 멤버 변수 static String org = "jiwon"; //인스턴스 멤버 변수 String name; int age; boolean isHungry; void eat() { System.out.println("냠냠"); isHungry = false; } void work() { System.out.println("열심히.."); isHungry = true; } } public class PersonTest { public static void main(String[] args) { //지금 11줄에서 객체를 만드는 과정이 있기 전에 클래스 멤버 변수를 수정한 것임 // Person.org = "..