技术选型
基于Docker的 ELK日志系统搭建(Elasticsearch+Kibana+Logstash)
利用docker容器化以后,需要考虑如何采集位于Docker容器中的应用程序的打印日志供运维分析。比如SpringBoot应用的日志收集。利用ELK日志中心来收集容器化应用程序所产生的日志,并且可以用可视化的方式对日志进行查询与分析,其架构如下图所示
部署版本统一采用7.10.1 (7.x 为最新系列版本)
中间件
Elasticsearch
分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
Kibana
数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Logstash
数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
部署流程
创建网络(elasticsearch+kibana同一网段)
docker network create es-net
elasticsearch安装
docker pull elasticsearch:7.10.1
docker run -d --name tyjt-elasticsearch -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v es-data:/usr/share/elasticsearch/data -v es-plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:7.10.1
elasticsearch 安装验证地址 http://172.26.1.247:9200/
kibana安装
kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.26.1.247:9200"]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
start.sh
docker pull kibana:7.10.1
docker run -d --name tyjt-kibana -e ELASTICSEARCH_HOSTS=http://tyjt-elasticsearch:9200 --network=es-net -p 5601:5601 -v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.10.1
kibana安装完成验证地址:http://172.26.1.247:5601/app/home#/
logstash安装(这个较复杂)
#先拉取镜像
docker pull logstash:7.10.1
#容器化
docker run -d --name tyjt-logstash -p 5044:5044 logstash:7.10.1
#将logstash 配置文件拷贝到主机
docker cp tyjt-logstash:/usr/share/logstash/config /home/logstash
cd /home/logstash/config && ll
出现下列文件表示ok
修改文件logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://172.26.1.247:9200" #es地址
#xpack.monitoring.elasticsearch.username: "elastic" #es xpack账号
#xpack.monitoring.elasticsearch.password: "xxxx" #es xpack账号
path.config: /usr/share/logstash/config/*.conf
path.logs: /usr/share/logstash/logs
修改logstash-sample.conf
input {
tcp {
port => 5044
codec => "json"
}
}
output {
elasticsearch {
action => "index"
hosts => ["172.26.1.247:9200"]
index => "%{[appname]}"
}
}
编写 start.sh
docker rm -f tyjt-logstash
docker run -p 5044:5044 --name=tyjt-logstash \
--restart=always --privileged=true\
-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \
-v /home/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/logstash/config/logstash-sample.conf:/usr/share/logstash/config/logstash-sample.conf \
-v /home/logstash/logs:/usr/share/logstash/logs \
-d logstash:7.10.1
至此ELK 日志系统搭建完毕