제목 없음
ELK Stack Install
ELK Stack 패키지 설치 - ELK서버에서 수행repository 구성$vi/etc/yum.repos.d/elk.repo[logstash-7.x]name=Elastic repositoryfor7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=0gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdjava 설치 (java 설치 버전은 1.8 버전으로 배포 진행)$ yuminstalljava -y$ java -versionopenjdk version"1.8.0_282"OpenJDK Runtime Environment (build 1.8.0_282-b08)OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)Logstash / Elasticsearch / Kibana 설치$ yuminstalllogstash elasticsearch kibana -y
ELK Stack Config - ELK서버에서 수행kibana 설정$vi/etc/kibana/kibana.yml...server.host:"0.0.0.0"(외부에서 webui 접근이 0.0.0.0 으로 사용)......i18n.locale:"ko-KR"Cluster 기반의 Elasticsearch 설정$vi/etc/elasticsearch/elasticsearch.yml...cluster.name: es-cluster# 클러스터링 할 서버는 동일한 cluster.name값으로 설정node.name: ${HOSTNAME}# 클러스티링할 서버 호스트네임 (노드별로 uniq한 값이어야 함)path.data:/data/elasticsearch# Elasticsearch Data경로path.logs:/var/log/elasticsearch# Elasticsearch 로그경로network.host: 0.0.0.0# 외부에서 접속시 설정discovery.seed_hosts: ["1.255.102.41","1.255.102.42","1.255.102.43"]#Elasticsearch Discovery 호스트 설정cluster.initial_master_nodes: ["1.255.102.41","1.255.102.42","1.255.102.43"]#마스터 서버 리스트...http.port: 9200# http 호스트 사용하는 포트transport.tcp.port: 9300# 데이터 전송 포트...node.master:true# master 노드 역활시 truenode.data:true# data 노드 역활 적용시 true...index.number_of_replicase: 1#각 인덱스를 3개의 replicaset으로 구성index.number_of_shards: 2#각 인덱스를 샤딩...node.attr.box_type: hot#노드역활 설정 (hot / warm / clod 중 선택)logstash config 설정$vi/etc/logstash/conf.d/nginx.confinput {beats {port => 5044host =>"0.0.0.0"}}output {elasticsearch {index =>"nginx-%{+YYYY.MM.dd}"#user => "elastic"#password => "changeme"}}#config 참고해서 logstash 구동하도록 설정 (기존 설정값 삭제 후 아래내용 설정)$vi/etc/systemd/system/logstash.service...ExecStart=/usr/share/logstash/bin/logstash-f/etc/logstash/conf.d/nginx.conf...$ systemctl daemon-reload
filebeat 설치 - log를 전달할 서버에 설치repository 구성$vi/etc/yum.repos.d/elk.repo[logstash-7.x]name=Elastic repositoryfor7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=0gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md패키지 설치$ yuminstallfilebeat -yfilebeat 설정$vi/etc/filebeat/filebeat.yml...filebeat.inputs:-type: logenabled:true#true로 변경paths:#Logstash로 전달할 로그파일 혹은 경로를 설정하면 된다.-/svc/stg/web/logs/access.log-/var/log/cmd.log-/var/log/kibana/*...setup.kibana:host:"1.255.102.41:5601"#Kibana 서버 IP...#output.elasticsearch: #filebeat -> logstash로 전달할것이기 때문에 elasticsearch는 주석처리# hosts: ["localhost:9200"]...output.logstash:#주석해제hosts: ["1.255.102.41:5044"]#logstash 서버ip/포트 설정...
프로세스 실행kibana / elasticsearch 프로세스 실행 - ELK 서버에서 수행$ systemctlenablekibana --now$ systemctlenableelasticsearch --now$ systemctlenablelogstash --nowfilebeat 서비스 구동 - Log 전달할 서버에서 수행$ systemctlenablefilebeat --now
서비스 작동 확인
logstash 기능 확인#logstash 포트 LISTEN 확인$netstat-antp|grep5044 |grepLISTENtcp6 0 0 :::5044 :::* LISTEN 6730/java#filebeat → logstash로 데이터 전송이 되는지 확인 (logstash서버에서 수행)$ tcpdump -nn port 5044 -i bond014:11:35.759481 IP 1.255.102.41.5044 > 1.255.102.2.34160: Flags [P.],seq379:385, ack 87143, win 1432, options [nop,nop,TS val 341934898 ecr 464702009], length 614:11:35.760109 IP 1.255.102.2.34160 > 1.255.102.41.5044: Flags [.], ack 385, win 115, options [nop,nop,TS val 464702013 ecr 341934898], length 0Elasticsearch 기능 작동 확인#Elasticsearch 포트 LISTEN 확인$netstat-antp |grep9200 |grepLISTENtcp6 0 0 :::9200 :::* LISTEN 11324/java#logstsh에서 전달한 데이터가 elasticsearch에서 index수집되는지 확인$ curl --connect-timeout 2 -XGET http://127.0.0.1:9200/_cat/indices?vhealth status index uuid pri rep docs.count docs.deleted store.size pri.store.sizegreenopen.kibana_task_manager_7.12.0_001 jNMZ2LZcRtqYkwCrQqCsdQ 1 1 9 10 92.6kb 73.7kbgreenopen.apm-custom-link MmzSDfLtSXuQCYwqXoYbFg 1 1 0 0 416b 208bgreenopen.apm-agent-configuration xbHoMaQ0QUS2WAsOy3Uspw 1 1 0 0 416b 208bgreenopen.async-search pMPoD_2OQzue0gJH-vSdig 1 1 1 0 90.9kb 46.9kbgreenopen.kibana_7.12.0_001 Qmo4u9gjTOmihGVwJlguqQ 1 1 22 0 6.3mb 4.2mbgreenopen.kibana-event-log-7.12.0-000001 VykSos0vR1W_l5F2E5G2pg 1 1 2 0 21.9kb 10.9kbgreenopen.elastichq 7sr4ATTsSnasGRH4tJhCBA 1 1 1 0 13.7kb 6.8kbgreenopen.tasks X2B8PyG5SMCV0dPAo6eH4g 1 1 2 0 15.5kb 7.7kb클러스터 구성 정보 확인$ curl --connect-timeout 2 -XGET http://127.0.0.1:9200/_cluster/health?pretty=true{"cluster_name":"es-cluster",#클러스터 이름"status":"green",#클러스터 상태"timed_out":false,"number_of_nodes": 3,# 마스터 노드 수"number_of_data_nodes": 3,# 데이터 노드 수"active_primary_shards": 9,"active_shards": 18,"relocating_shards": 0,"initializing_shards": 0,"unassigned_shards": 0,"delayed_unassigned_shards": 0,"number_of_pending_tasks": 0,"number_of_in_flight_fetch": 0,"task_max_waiting_in_queue_millis": 0,"active_shards_percent_as_number": 100.0Kibana 구성정보 확인#kibana 포트 LISTEN 확인$netstat-antp |grep5601 |grepLISTENtcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 13513/node#kibana 접속 확인$ curl -IL -XGET http://1.255.102.41:5601/app/home/HTTP/1.1 200 OKcontent-type: text/html; charset=utf-8content-security-policy: script-src'unsafe-eval''self'; worker-src blob:'self'; style-src'unsafe-inline''self'kbn-name: SKB-DJK-ELK1kbn-license-sig: 0f6943d9f4b6625724a0d78fe647bbe2f284a6e24fb46f587b17b1b0bec18e34cache-control: private, no-cache, no-store, must-revalidatecontent-length: 127971vary: accept-encodingaccept-ranges: bytesDate: Fri, 09 Apr 2021 05:52:47 GMTConnection: keep-aliveKeep-Alive: timeout=120
Kibana Index Pattern 설정
WebUI :http://kibanaIP:5601Management → Stack Management → Kibana → Index patterns{{ index name }}-YYYY.mm.DD 패턴이 보이지 않으면 elasticsearch에서 데이터가 아직 유입되지 않은 상태.Search에서 등록할 index명 입력 후 Create index pattern 선택Time filed에는 @timestamp 선택 후 Create index pattern 선택Analytics → discover 선택하면 유입된 데이터 확인 가능
WEB UI를 통한 Elasticsearch 상태 확인
docker 설치 후 cerebro container 구동$ docker container run -d --name cerebro --restart always -p 9000:9000 -m 512m lmenezes/cerebro:latest8d691f585fa8: Pull complete3da6fe7ff2ef: Pull completee22147996cc0: Pull complete8df48a2d4467: Pull complete45e578fea430: Pull completeDigest: sha256:1cd0765418f1737de3533648d549655437eb550ee0cfad27488c19e620028f2fWEB UI 로그인 :htttp://elk서버ip:9200Node address에 ELK 설치된 서버 IP입력첫화면(Overview) : Elastic 서버 & 인덱스 상태확인Nodes : 노드 상태 확인 (별표에 색깔 칠해진 노드가 master 노드)
참고 Site
logstash input : https://www.elastic.co/guide/en/logstash/current/input-plugins.html
filebeat log : https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html#filebeat-input-types
elk intsall: https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html
logstach / filebeat 비교 : https://velog.io/@deet1107/logstash-filebeat
ElasticSearch 이중화 : https://nesoy.github.io/articles/2019-01/ElasticSearch-System-Architecture
elasticsearch data 구조 : https://koocci-dev.tistory.com/13