Monitoring Tools/ELK Stack (30) 썸네일형 리스트형 6. filebeat agent 설정 1. 기본 설정 [root@filebeat]# vim /etc/filebeat/filebeat.yml # 데이터 input. 30초 마다 로그 경로에 접근하여 새로운 데이터를 읽어 들임. # /var/lib/filebeat 경로에 offset 값 기록 filebeat.inputs: ... - type: log enabled: true paths: - {log path}/*.log.gz # 데이터 output. logstash와, elasticsearch로 보낼수 있음. output.logstash: # The Logstash hosts hosts: ["{logstash ip}:5044"] 2. 서비스 시작 [root@filebeat]# systemctl start filebeat 3. 모듈 사용 - 지원.. 5.2 grok pattern을 이용한 nginx log 파싱 1. 개요 - 당초 nginx 서버에서 filebeat를 이용하여 로그를 수집하려고 하였으나 nginx 서버의 filebeat 설치가 여의치 않았음. - filebeat의 nginx 모듈을 사용하려고 하였으나 다양한 log format 필드를 이용할 수 없었음. - 따라서 nginx 의 custom log format을 구성하고 access_log 설정에 syslog를 이용하여 수집서버로 보냄 - 수집서버에서 filebeat와 logstash를 이용 하여 elasticsearch로 푸시 2. [Client] nginx log format log_format main '[$host] [$remote_addr] - [$remote_user] [$time_local] [$request] ' '[$status].. 5.1 [logstash filter] 시간대 변경 1. 단순히 시간 값에 초단위로 더하고자 하는경우 ruby { code => "event.set('KORConnectTimestamp', Time.parse(event.get('ConnectTimestamp')) + 32400 )" } 2. 시간대를 변경 UTC → KOR date { match => ["ConnectTimestamp","YYYY-MM-dd HH:mm:ss"] timezone => "Asia/Seoul" locale => "ko" target => "new_date" } 5. Logstash 설정 및 테스트 1. 기본 설정 # 설정 경로 [root@localhost]# vim /etc/logstash/logstash.yml ... # data 저장 경로 path.data: /var/lib/logstash # log 저장 경로 path.logs: /var/log/logstash 2. 로그 파싱을 위한 pipeline 기본 설정 - json 데이터를 파싱 - mutate를 이용 필드 rename이나 필드 type 변경 - elasticsearch와 stdout 둘다 output 처리 # filebeat에서 데이터를 받기위해 5044포트 바인딩 [root@localhost]# cat /etc/logstash/conf.d/gcp.conf input { beats { port => 5044 host => "0.0.0.. 4.1 index pattern id 조회 curl -XGET 'localhost:5601/api/saved_objects/_find?type=index-pattern' [root@CC-MON-ELASTIC conf.d]# curl -XGET 'localhost:5601/api/saved_objects/_find?type=index-pattern' | jq . { "page": 1, "per_page": 20, "total": 1, "saved_objects": [ { "type": "index-pattern", "id": "48df5170-bf95-11ec-9f40-4b6b290513da", "attributes": { "fieldAttrs": "{}", "title": "filebeat-nginx*", "timeFieldName": "@tim.. 4. Kibana 설정 1. 설정 경로 [root@localhost]# vim /etc/kibana/kibana.yml # bind port server.port: 5601 # bind ip server.host: "0.0.0.0" # elasticsearch host 설정 elasticsearch.hosts: ["http://localhost:9200"] 2. 서비스 시작 [root@localhost]# systemctl restart kibana 3. 프로세스 확인 # process 확인 [root@localhost kibana]# ps uax | grep kibana kibana 1568 0.0 0.0 616984 564 ? Ssl Oct18 0:00 /usr/share/kibana/bin/../node/bin/node .. 3.1 Index Alias 변경 curl -X POST "http://localhost:9200/_aliases" -H 'Content-Type: application/json' -d '{ "actions": [ { "add" : { "index" : "gnnspectrum", "alias" : "gnnspectrum_alias" } } ]}' 3. elasticsearch 설정 1. config 설정 # 설정 파일 수정 [root@localhost]# vim /etc/elasticsearch/elasticsearch.yml ... # data 저장 경로 path.data: /var/lib/elasticsearch # 로그 저장 경로 path.logs: /var/log/elasticsearch # bind ip. Filebeat(agent) -> elasticsearch로 직접 로그를 전송하는 경우가 아니라면 localhost 설정 network.host: 0.0.0.0 # bind port. default 9200 http.port: 9200 # elasticsearch node가 시작할때 discovery 초기 호스트 목록. bind.ip를 0.0.0.0으로 할 경우 활성화 .. 2. ELK Stack 설치 환경 : 1개의 머신(CentOS7)에 Elasticsearch 단일 노드 + Kibana + Logstash 설치, 수집 대상에 Filebeat 설치 기본 설치 # OpenJDK 1.8.0 설치 [root@localhost] # yum install java-1.8.0-openjdk # java 버전 확인 [root@localhost] # java -version # elasticsearch repo 추가 [root@localhost] # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch [root@localhost] # cat /etc/yum.repos.d/elasticsearch.repo [elasticsearch] name=Elast.. 1. 개요 개요 : Elasticsearch(데이터 가공, 검색, 분석 엔진) + Logstash(로그 수집 필터) + Kibana(데이터 시각화) + Filebeat(로그수집) 을 기반으로 한 시스템 로그 및 시각화 목적 : Cloudflare Log 파싱 + 시스템 로그 + 네트워크 장비 로그 수집 등의 집중화 아래 절차 들은 GCP storage로 푸쉬되는 Cloudflare Spectrum Log를 gsutil을 사용한 별도의 스크립트로 다운 받고 이를 elasticsearch로 전송하는 일련의 과정이 포함되어 있음. 이전 1 2 3 다음