前边有两篇 ELK 的文章分别介绍了MySQL 慢日志收集和Nginx 访问日志收集,那么各种不同类型应用程序的日志该如何方便的进行收集呢?且看本文我们是如何高效处理这个问题的
规范的日志存放路径和输出格式将为我们后续的收集和分析带来极大的方便,无需考虑各种不同路径、格式的兼容问题,只需要针对固定几类日志做适配就可以了,具体的规范如下:
日志存放路径规范
/data/logs/
目录下application.log
exception.log
和business.log
日志输出格式规范
日志信息级别规范
日志级别 | 说明 | 数值 ---|---|--- debug | 调试日志,日志信息量最多 | 7 info | 一般信息日志,最常用的级别 | 6 notice | 最具有重要性的普通条件信息 | 5 warning | 警告级别 | 4 error | 错误级别,某个功能不能正常工作 | 3 critical | 严重级别,整个系统不能正常工作 | 2 alert | 需要立刻修改的日志 | 1 emerg | 内核崩溃等严重信息 | 0
从上到下级别依次从低到高,日志量从多到少,正确选择日志级别帮助后期快速排查问题
我们通用日志采集方案如下图:
Client 端 Filebeat 配置
filebeat.prospectors:
- input_type: log
paths:
- /home/logs/app/business.log
- /home/logs/app/exception.log
json.message_key: log
json.keys_under_root: true
output.kafka:
hosts: ["10.82.9.202:9092","10.82.9.203:9092","10.82.9.204:9092"]
topic: filebeat_docker_java
Kafka 接收到的数据格式
{"@timestamp":"2018-09-05T13:17:46.051Z","appname":"app01","beat":{"hostname":"52fc9bef4575","name":"52fc9bef4575","version":"5.4.0"},"classname":"com.domain.pay.service.ApiService","date":"2018-09-05 21:17:45.953+0800","filename":"ApiService.java","hostname":"172.17.0.2","level":"INFO","linenumber":285,"message":"param[{\"email\":\"TEST@163.COM\",\"claimeeIP\":\"123.191.2.75\",\"AccountName\":\"\"}]","source":"/home/logs/business.log","thread":"Thread-11","timestamp":1536153465953,"type":"log"}
Server 端 Logstash 配置
input {
kafka {
bootstrap_servers => "10.82.9.202:9092,10.82.9.203:9092,10.82.9.204:9092"
topics => ["filebeat_docker_java"]
}
}
filter {
json {
source => "message"
}
date {
match => ["timestamp","UNIX_MS"]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["10.82.9.205", "10.82.9.206", "10.82.9.207"]
index => "filebeat-docker-java-%{+YYYY.MM.dd}"
}
}
都是基础配置很简单,不做过多解释,通过以上简单的配置就能实现任何应用程序的日志收集
收集日志到 elasticsearch 之后,就可以通过 kibana 配置展示应用程序的日志了,方便开发及时发现问题,在线定位问题
如果你觉得文章对你有帮助,请转发分享给更多的人。如果你觉得读的不尽兴,推荐阅读以下文章:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.