1)收集-能够采集多种来源的日志数据 Log4js PM2
2)传输-能够稳定的把日志数据传输到中央系统 Filebeat
3)存储-如何存储日志数据 Elasticsearch
4)分析-可以支持 UI 分析 Kibana
5)警告-能够提供错误报告,监控机制 Monitor
ELK :Elasticsearch Logstash Kibana
- FIilbeat :将服务器上收集的日志发送到Logstash中(格式使用log4js规范化)
- Logstash:Logstash将日志接受过滤并转发到Elasticsearch存储
- Elasticsearch:存储收集来的日志,提供实时的数据查询
- Kibana:数据可视化服务
多应用的监控架构
当然也可做更加分布式的部署
- 下载 Filebeat
配置 filebeat.yml
filebeat.inputs:
type: log
enabled: true // 默认关闭
paths:
~/logs/*.log // ~/logs/*/*.log 仅匹配二级目录下的.log文件
output.logstash:
hosts: ["localhost: 9900"]
运行filebeat
sudo ./filebeat -e -c filebeat.yml
// 如果提示权限问题,则使用以下代码运行
sudo chown root filebeat.yml
sudo ./filebeat -e -c filebeat.yml -d "publish"
- 下载 Logstash
配置 config/logstash-sample.conf (没有则新建)
input {
beats {
port => 9900
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "testlog"
}
}
运行logstash, logstash 自己占用9600-9700 之间第一个可用的端口
可在config/logstash.yml 中配置
bin/logstash -f config/logstash-sample.conf // 使用配置文件启动
bin/logstash -e "input { stdin{} } output { stdout {} }" // 使用字符串配置启动
// 在终端接受并输出
测试logstash正确开启: curl localhost:9600 (具体端口看启动时的日志/自己配置)
- 下载 Elasticsearch
配置 config/elasticsearch.yml
path.data: /Users/rogers/Project/Agora/test/util/data
path.data: /Users/rogers/Project/Agora/test/util/logs
运行elasticsearch
bin/elasticsearch
测试elasticsearch正确开启
使用elasticsearch提供的API 在elasticsearch上进行查找数据
http://localhost:9200/_cat/indices?v // 查找当前所有Index
http://localhost:9200/[Index][Type][ID/_search]
http://localhost:9200/testlog/doc/_search // testlog下doc类中所有的数据
http://localhost:9200/testlog/doc/_Ze_f2cBIQjv8oYr3PEN testlog下doc类中ID为_Ze_f2cBIQjv8oYr3PEN的数据
等等丰富的API供用户调用
注: 当加入未指定ID的数据时,自动为其生成随机ID
- 下载 Kibana
配置 config/kibana.yml
运行bin/kibana 默认端口为5601
此时在页面中选择对应之前创建的Index,即可在discover中或其他页面看到所存在的数据
至此,已将简单的日志收集转发并在kibana上进行展示的逻辑调通,
接下来需要做两件事:
- 根据elasticsearch提供的API,做一个monitor达到告警的效果
- 得到告警后在kibana(多功能)中根据不同的条件,查看具体的日志信息。
- 由于本次调试仅在本地调试,所以很多配置直接采用了默认的配置,后续记录其他配置