Quản lý log với mô hình ELK

ELK stack là gì

"ELK" là viết tắt của 3 mã nguồn mở: Elasticsearch, Logstash, and Kibana

Elasticsearch: Cơ sở dữ liệu để lưu trữ, tìm kiếm và query log
Logstash: Tiếp nhận log từ nhiều nguồn, sau đó xử lý log và ghi dữ liệu và Elasticsearch
Kibana: Giao diện để quản lý, thống kê log. Đọc thông tin từ Elasticsearch

Về cơ chế hoạt động bạn có thể xem hình bên dưới
elk1

  • Đầu tiên thì log sẽ được đưa đến Logstash qua nhiều con đường, từ file, từ beat (Công cụ đọc file của elastic.co)
  • Sau đó Logstash sẽ xử lý, và phân loại log rồi đưa đến Elastic Search để lưu trữ
  • Kibana sẽ đọc những dữ liệu được lưu trong Elastic Search để hiện thị log

Build ELK stack với docker

  • Đầu tiên pull 3 image elk về máy:
    docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.4 docker pull docker.elastic.co/kibana/kibana:6.2.4 docker pull docker.elastic.co/logstash/logstash:6.2.4 
  • Tạo folder có cấu trúc sau:
    docker_elk

docker-compose.yml

version: '2' services:  elasticsearch:  	container_name: elastic_624    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4    build: elasticsearch    environment:      ES_JAVA_OPTS: "-Xms1g -Xmx1g"    ports:      - "9203:9200"      - "9302:9300"    volumes:      - ./elasticsearch/config/:/etc/elasticsearch/config/  kibana:    container_name: kibana_624    image: docker.elastic.co/kibana/kibana:6.2.4    build: kibana    ports:      - 5601:5601    volumes:      - ./kibana/config/:/opt/kibana/config/    depends_on:      - elasticsearch  logstash:  	container_name: logstash_624  	image: docker.elastic.co/logstash/logstash:6.2.4  	command: -f /etc/logstash/conf.d/    build:logstash    ports:      - 5000:5000    volumes:      - ./logstash/config:/etc/logstash/conf.d    depends_on:      - elasticsearch 

kibana.yml

server.name: "kibana" server.host: "0.0.0.0" ops.interval: 5000 elasticsearch.url: "[ip_server_here]:9203" xpack.security.enabled: false 

my_config.conf

input {     file {     	path => "your file log"         type => "Name of Log"     } } output {     elasticsearch {      	hosts => ["localhost:9200"]      }     if "INFO" in [message] { 	    email { 	        username => "yourmail@gmail.com" 	        address => "smtp.gmail.com" 	        password => "yourpass" 	        port => 587 	        use_tls => true 	        from => "yourmail@gmail.com" 	        subject => "LOG alert" 	        to => "yourmail@gmail.com" 	        via => "smtp" 	        body => "Here is the event line that occured: %{message}" 	    }     }     stdout { codec => rubydebug } } 
  • Run:
    • Trong folder chứa file docker-compose.yml chạy lệnh docker-compose up
    • Chạy thành công sẽ có 3 container như hình bên dưới
      docker_elk_running
    • Địa chỉ truy cập vào kibana: your_ip:5601

Share Tweet Send

0 Comments
Bài viết liên quan
scrolltop