**
ELK=ElasticSearch+LogStash+Kibana
**
对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。
随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示某台机器或者某个应用的错误。然而在实际的生产环境中,由于实施了隔离,一旦在某个应用出现了 Bug,则无法访问到其对应的日志,也就谈不上将日志取出了。
另外,有些深度依赖日志平台的应用,也可能在日志产生的时候就直接采集走,进而删除掉原始的日志文件。这些场景给我们日志系统的维护都带来了难度。
一般会有两种日志业务流程:
-
正常情况下的简单流程为:应用产生日志→根据预定义的日志文件大小或时间间隔,通过执行
Logrotation,不断刷新出新的文件→定期查看→定期删除。 -
复杂应用场景的流程为:应用产生日志→采集→传输→按需过滤与转换→存储→分析与查看。
日志数据流如下:应用将日志落地在本地文件,部署在每台服务器上的FileBeat负责收集日志,然后将日志发送给LogStash;LogStash对日志进行处理解析等操作;然后将处理后的Json对象传递给ElasticSearch,进行落地并进行索引处理;最后通过Kibana来提供web界面,来查看日志等