본문 바로가기

logstash

(9)
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..
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는 "..
Kubernetes 특정 경로로 로그 파일 수집하기(nginx access 로그 만들기) nginx같은 경우는 /var/log/nginx/ 경로 하위에 access.log, error.log가 만들어진다. 이렇게 쌓이는 로그를 쿠버네티스에 띄운 Logstash로 수집할 수 있다. nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx namespace: test spec: replicas: 3 selector: matchLabels: run: my-nginx template: metadata: labels: run: my-nginx spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchE..
Logstash 7.16.2 버전에서 로그 파싱하기 {"svctype":"test-svc-type","instance_name":"test-instance_ip-0.0.0.0", "@timestamp":"2021-12-30T12:30:06.731Z","environment":"test","role":"api","filename":"test.log","@version":"1","message":"* 2021-12-30 21:30:06,690 test log message","host":"ip-0.0.0.0.ap-northeast-2.compute.internal","team":"test"} 위와 같은 로그가 있다. 각 서버에서 위와 같은 로그를 받아와, 로그스태시에 input 형태로 넣고, SQS로 아웃풋을 보낸다. 중요한 것은 설정 파일에서 input {..
Kubernetes에서 Logstash(sqs output)를 사용해 elasticsearch, kibana로 로그 확인 1. Hombrew를 사용하여 logstash 설치 brew tap elastic/tap brew cask install homebrew/cask-versions/adoptopenjdk8 brew install elastic/tap/logstash-full 로그스태시가 최신버전으로 설치된다. 2. 폴더 생성 후 conf 파일 생성 input { file { path => "/usr/share/logstash/data/*.log" codec => "json" } } output { stdout { } sqs { access_key_id => "***" secret_access_key => "****" codec => "json" queue => "test_queue" region => "ap-northea..