ELK 指的是由 Elasticsearch、Logstash 和 Kibana 這三個開源軟體組成的日誌分析系統。這個系統用於收集、儲存、搜尋和分析大量日誌資料,並以視覺化圖表的方式呈現,以協助使用者進行應用程式和基礎設施的監控、故障排除與分析。
各個元件的功能:
因為專題需要用到監控日誌
# ======= ELASTICSEARCH(官方分布式搜索和分析引擎) ========
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.2
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
- xpack.security.transport.ssl.certificate=/usr/share/elasticsearch/config/certs/elasticsearch/elasticsearch.crt
- xpack.security.transport.ssl.key=/usr/share/elasticsearch/config/certs/elasticsearch/elasticsearch.key
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
- xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/elasticsearch/elasticsearch.crt
- xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/elasticsearch/elasticsearch.key
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- /opt/elk/certs:/usr/share/elasticsearch/config/certs:ro
- /opt/elk/elasticsearch/elasticsearch:/usr/share/elasticsearch/data
ports:
- "9200:9200"
networks:
- elk_net
# ======= LOGSTASH(輕量級伺服器端資料處理管道) ========
logstash:
container_name: logstash
image: docker.elastic.co/logstash/logstash:8.12.2
environment:
- xpack.monitoring.enabled=true
- xpack.monitoring.elasticsearch.hosts=[""]
- xpack.monitoring.elasticsearch.ssl.certificate_authority="/usr/share/logstash/config/certs/ca.crt"
- xpack.monitoring.elasticsearch.username=""
- xpack.monitoring.elasticsearch.password=""
volumes:
- /opt/elk/logstash:/usr/share/logstash/pipeline:ro
- /opt/elk/certs:/usr/share/logstash/config/certs:ro
depends_on:
- elasticsearch
ports:
- "5044:5044"
networks:
- elk_net
# ======= KIBANA ========
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:8.12.2
environment:
- ELASTICSEARCH_HOSTS=""
- ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=/usr/share/kibana/config/certs/ca/ca.crt
- ELASTICSEARCH_USERNAME=""
- ELASTICSEARCH_PASSWORD=""
- xpack.security.enabled=true
- SERVER_BASEPATH=/kibana
- SERVER_REWRITEBASEPATH=true
- SERVER_PUBLICBASEURL=""
volumes:
- /opt/elk/certs:/usr/share/kibana/config/certs:ro
- /opt/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml:ro
depends_on:
- elasticsearch
ports:
- "5601:5601"
networks:
- elk_net
# ======= filebeat(輕量級日誌傳送工具) =======
filebeat:
container_name: filebeat
image: docker.elastic.co/beats/filebeat:8.12.2
user: root
depends_on:
- logstash
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /opt/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /opt/elk/filebeat/filebeat:/usr/share/filebeat/data
- /opt/elk/certs:/usr/share/filebeat/config/certs:ro
networks:
- elk_net
備註:(https://github.com/elastic/elasticsearch)
備註:(https://github.com/elastic/logstash)
備註:(https://github.com/elastic/kibana)