본문 바로가기

인프라,데이터/Elasticsearch, Logstash, Kibana

(13)
Metricbeat로 Logstash 모니터링하기 Kafka -> Logstash -> ES 의 데이터 파이프라인에서 Kafka lag이 심하게 생기는 현상이 발생했다. 어느 곳이 문젠지 알아보려면 Kafka, Logstash, ES 각각의 모니터링 지표가 필요하다. ES는 Kibana에서 모니터링을 활성화할 수 있는데, Logstash는 데이터독 agent로 연결하려다가 잘 안되어서 ES로 모니터링을 보내기로 했다. 참고 : https://www.elastic.co/guide/en/logstash/current/monitoring-with-metricbeat.html Collect Logstash monitoring data with Metricbeat | Logstash Reference [8.6] | Elastic In production envi..
ELK란? + ELK 8.2.0 버전에 추가된 사항 ELK(Elastic) Stack Elasticsearch 분산 검색 엔진 (검색 엔진 + NoSQL 데이터베이스) 모든 레코드를 JSON 도큐멘트 형태로 입력, 관리 텍스트, 숫자, 날짜, IP 주소, 지리 정보 등 다양한 데이터 타입에 대해 최적화되어 있음 인덱싱 시점에 분석을 거쳐 용어 단위로 분해해 역인덱스 사전 구축 숫자, 키워드 타입의 데이터들은 집계에 최적화된 컬럼 기반 자료구조로 저장됨 → 병렬이나 분산 처리 가능 검색어에 따른 유사도 스코어를 기반으로 데이터 정렬 → 복잡한 문자열 콘텐츠를 검색할 때 큰 효과 통신을 REST API를 이용하도록 만들어 사용자가 쉽게 접근할 수 있음 AWS, GCP, 애져 모두 엘라스틱서치 서비스를 제공하고 있음 단점 저장공간이 크게 압축되지 않고 시스템 ..
Logstash multiple kinesis input Logstash로 Kinesis Data Streams를 연결하고 나서, 추가적으로 Data Streams 하나를 더 생성해서 연결하려고 하는데 계속 제대로 연결되지 않았다. 🤔 왜일까... 하고 찾아봤는데, Logstash Kinesis input plugin (Kinesis Data Streams만 지원한다. Kinesis Firehose Delivery streams는 지원되지 않으니 주의! 대신 Kinesis Firehose Delivery Streams 의 목적지를 S3으로 하면 Logstash S3 input을 사용해서 S3에서 데이터를 받아오고 바로 지울 수 있다.) 은 Dynamodb를 사용하는데, 이 Dynamodb는 기본적으로 'logstash'라는 이름으로 생성되고, 로그스태시 플러그..
Logstash 6.3.x 버전에서의 GC(Garbage Collector) Logstash로 kinesis input 플러그인을 설치하려는데 Unrecognized VM option 'UseParNewGC' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 오류가 났다. 찾아보니 jdk 버전 문제인 것 같았다. Remove or comment line: -XX:+UseParNewGC Remove or comment line: -XX:+UseConcMarkSweepGC Add this line instead: -XX:+UseG1GC Apparently the previously used GC in Java 8 and older was de..
Logstash file input시 파일 열고 수정하면 데이터 중복 집계되는 이유 input { file { path => "/home/test/*.log" start_position => "beginning" } } start_position => "beginning" 으로 로그스태시가 파일을 처음부터 읽도록 설정한다. 오래된 데이터를 임포트할 때 유용하다. (매번 파일의 처음에서 읽는 게 아니다.) 로그스태시 file input 설정을 주면, 로그스태시가 시작하면서 sincedb path를 자동으로 생성한다. [INFO ] 2022-02-25 06:21:51.942 [[main]-pipeline-manager] file - No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"/usr/sha..
Logstash는 로그를 왜 message라는 field로 저장할까? 요새 Fluent Bit를 써서 EKS 안의 애플리케이션 로그를 수집하고 Kinesis firehose를 버퍼로 사용한 후, 이를 Logstash에서 수집한 후 ES로 보내 Kibana에서 분석하는 환경을 구성 중이다. "log"=>"* 2022-02-16 12:38:44,245 [Timer-0] INFO |c.e.demo.SpringBootLoggerApplication: 12:38:44 ::: Hello World ::: 1"} 그 중에서 Fluent Bit는 로그 파일을 "log"라는 key에 저장해서, 기존 Logstash 설정을 사용하기 위해서는 "log" 를 "message"로 바꿔주어야 했다. { "message" => "Hello Logstash!" } 그럼 애초에 왜 Logstash는 "..
Logstash에서 SQS, Elasticsearch로 데이터가 들어가지 않을 때 [상황] 로그를 수집하는 과정에서 예상보다 굉장히 많은 로그가 Logstash에서 수집되어 SQS로 보내졌고, 그 과정에서 오버헤드가 생겨 SQS에서 제대로 처리할 수 없었다. [에러 메시지] - 로그스태시 [WARN ] 2022-01-05 23:00:52.337 [[main]"test_queue", :exception=>Seahorse::Client::NetworkingError, :message=>"Connection refused - Failed to open TCP connection to sqs.ap-northeast-2.amazonaws.com:443 (Connection refused - connect(2) for \"sqs.ap-northeast-2.amazonaws.com\" port 4..
Logstash nested json, json in json parsing error 부제 : 로그스태시에서 잘 되던 metric log가 갑자기 이상하게 파싱이 안 될때. { \"system\": { \"cpu\": { \"core\":4, \"cpuPct\":, \"loadavg1\":0.18, \"loadavg5\":0.23, \"loadavg15\":0.25 }, \"mem\": { \"total\":7624.00, \"used\":3731.00, \"free\":3894.00, \"memPct\":48.94 }, \"disk\": { \"total\":51188.00, \"used\":16209.00, \"free\":34980.00, \"diskPct\":32 } } 메트릭 로그는 이런 형태이다. 해결 : 1. 오류메시지 잘 보기. :exception=>#