ELK + Apache Kafka 활용한 로그 모니터링
데이터 흐름도
1. Apache 서버 2대의 로그데이터를 수집한다.
2. 각 Apache 로그를 수집하기 위해 Logstash(Collection용)를 활용한다.
3. 대량의 로그데이터를 대비해 Apache-kafka 에 쌓는다. (필수 아님)
4. Apache-kafka에 쌓인 로그데이터를 logstash를 통해 elastic으로 indexing 한다
5. elastic 데이터를 Kibana를 통해 모니터링 한다.
설치
1. logstash - 각 Apache 서버 Collection용 , 데이터 흐름도 4) index 용
2. elasticsearch - 2대 cluster 구성 (1대로 구성해도 문제 없음)
3. Apache-kafka - 1대 구성 (Cluster 구성 가능) 내장된 zookeeper 사용 (Kafka 사용시에 zookeeper 필수) * Redis , RabbitMQ를 사용해도 무방하다.
4. kibana 설치
5. 모니터링용 1) ES 모니터링 head 2) Apache-kafka
설치의 어려움은 없다.압축만 풀면 된다.
Logstash 설정 및 실행
unzip logstash-2.1.1.zip ./logstash -f apache.conf
elasticsearch 설정 및 실행(기존 설치가 되어 있어서 예전 버젼임)
unzip elasticsearch-1.7.1.zip ./elasticsearch
Apache-kafka 설정 및 실행
tar zxvf kafka_2.11-0.9.0.0.tgz
bin/zookeeper-server-start.sh ../config/zookeeper.properties (zookeepr 실행) bin/kafka-server-start.sh ../config/server.properties (kafka 실행) Kafka 내에 TOPIC 생성 필요.
bin/kafka-topics.sh --create --zookeeper localhost:2181 \ --replication-factor 2 --partions 10 --topic log(topic 이름)
kibana 설정 및 실행
/config/kibana.yml elasticsearch_url: "http://localhost:8200" (세팅) /bin/kibana (실행)
kafka 모니터링(http://quantifind.github.io/KafkaOffsetMonitor/)
java -cp KafkaOffsetMonitor-assembly-0.2.1.jar \ com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --zk zk-server1,zk-server2 \ --port 7180 \ (원하는 Port) --refresh 10.seconds \ --retain 2.days
전체적인 구조에 대해서만 작성해 놓았다. 상세 설정에 대해선 시간 날 때마다 정리해 볼 예정이다.
댓글 영역