日志收集系统
结构
elasticsearch
logstash
kibana
jaeger
cerebro
filebeat
示例图
ELK
ELK 简介
- ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写
- Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点
- Logstash:数据收集引擎,它支持动态的从各种数据源搜集数据并处理数据
- Kibana:数据分析,可视化平台
Filebeat
- Filebeat 是一个轻量型的服务对服务器压力比较小,用于采集数据,并上报到Logstash或Elasticsearch
Beats
- Packetbeat => 网络数据(收集网络流量数据)
- Topbeat => 指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)
- Filebeat => 日志文件(收集文件数据)
- Winlogbeat => windows事件日志(收集Windows事件日志数据)
- Metricbeat => 指标发送,分析。
- Heartbeat => 运行时间监控(收集系统运行时的数据)
- Auditbeat => 审计数据(收集审计日志)。
- Functionbeat =>使用无服务器基础架构传送云数据。
- Journalbeat => 分析日志记录。
cerbro
Cerebra 是ElasticSearch监控工具,对 elasticsearch
集群进行健康检查以及异常分析。
依赖镜像下载
# elk + beats (暂时用 7.14.0)
docker pull elastic/elasticsearch:7.14.0
docker pull elastic/logstash:7.14.0
docker pull elastic/kibana:7.14.0
docker pull elastic/filebeat:7.14.0
docker pull elastic/metricbeat:7.14.0
docker pull elastic/journalbeat:7.14.0
docker pull elastic/packetbeat:7.14.0
# cerebro
docker pull lmenezes/cerebro
# jaeger
# 单节点开发模式
docker pull jaegertracing/all-in-one:latest
# 发布模式
docker pull jaegertracing/jaeger-collector:latest
docker pull jaegertracing/jaeger-agent:latest
docker pull jaegertracing/jaeger-query:latest
启动
elasticsearch
配置
# elasticsearch.yml
http.host: 0.0.0.0
启动
# 单节点
docker run -d \
--name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
elastic/elasticsearch:7.14.0
#-e "ES_JAVA_OPTS=-Xms1024m -Xmx4048m" \
# 查看
http://localhost:9200
kibana
配置
server.host: "0"
server.shutdownTimeout: "5s"
# elasticsearch 地址
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 汉化
i18n.locale: "zh-CN"
启动
# 开发模式启动
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://10.2.29.195:9200 \
-v /Users/douchunrong/Documents/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-p 5601:5601 \
--link elasticsearch \
elastic/kibana:7.14.0
## 查看
http://localhost:5601
jaeger 启动
# 单节点启动
docker run -d \
--link elasticsearch \
--name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-e SPAN_STORAGE_TYPE=elasticsearch \
-e ES_SERVER_URLS=http://elasticsearch:9200 \
-e ES_TAGS_AS_FIELDS_ALL=true \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 9411:9411 \
jaegertracing/all-in-one:latest
# 查看
http://localhost:16686
logstash 启动
配置
logstash.conf
input {
beats {
port => 4567
}
}
filter {
#Only matched data are send to output.
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"] #ElasticSearch host, can be array.
index => "logapp-%{+YYYY.MM}" #The index to write data to.
}
}
logstash.yml
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: http://elasticsearch:9092
启动
docker run -d \
--link elasticsearch \
--name logstash \
-p 4567:4567 \
-p 5044:5044 \
-p 5045:5045 \
-p 9600:9600 \
-v /Users/douchunrong/Documents/elk/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
elastic/logstash:7.14.0
# -v /Users/douchunrong/Documents/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
filebeat
配置
# filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths: # 需要收集的文件的地址
- /var/workflow_execute/logs/workflow-execute-service-*.log
document_type: "dssp-execute" #指定类型 在elastic中可通过[type]识别
fields:
tag: dssp-execute
output.logstash:
hosts: ["http://logstash:5044"]
启动
docker run -d \
--name filebeat \
--link logstash \
-u root \
-v /Users/douchunrong/goWork/wfmp_workflow/workflow_execute/logs:/var/logs/:rw \
-v /Users/douchunrong/Documents/elk/filebeat/confing/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro \
elastic/filebeat:7.14.0
cerebro 启动
docker run -d \
--link elasticsearch \
--name cerebro \
-p 9000:9000 \
lmenezes/cerebro
# CEREBRO_PORT 可以修改端口号 默认 9000
docker run -e CEREBRO_PORT=8080 -p 8080:8080 lmenezes/cerebro