전체 글
[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 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에 대해
파이프라인데이터를 입력받아 실시간으로 변경하고 이를 다른 시스템에 전달하는 역할입력, 필터, 출력의 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(정렬 알고리즘)
선택정렬 - 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾼다. - 한번씩 순회를 하고 가장 큰 수를 찾은다음 바꿈 - 시간 복잡도 : 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)에 대해
우리는 왜? 불변성을 지키면서 코딩을 해야할까? 내가 알고있는 불변성이라는 개념은 '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 = "..