当前用ELK架构搭建日志服务已非常流行,近期利用ELK架构完成应用系统日志搭建,对整个过程也做一下总结。先了解一下架构图

服务器运维之应用系统日志运维_Linux

 

        本次搭建ELK架构由Elasticsearch、Logstash、Kibana和Filebeat四部分组件组成;
        Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
        Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
        kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
        Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

1、应用系统日志收集
       
应用系统分布在各个服务器上,当某个系统有多台服务器时开发人员查询日志就比较麻烦,需要到每台服务器上进行查询,非常不便。我们可以采用ELK架构对部署在各服务器上的应用系统所产生的日志进行收集,最终汇总到Elasticsearch中。
        Filebeat:Filebeat查找配制好的日志文件,找到后启动收集日志信息并将日志发送至Logstash。
        Logstash:Logstash端用来收集各终端发过来的日志信息并将日志信息发送给Elasticsearch。

2、APM日志收集
        APM:应用程序性能管理(Application Performance Monitoring/Management)
        我们应用系统的服务器越来越多,绝大多数应用系统都部署在云端。各应用系统之间调用需要一个或更多的服务共同完成,整个业务链条会变得非常复杂,那么体现的问题是如果某个环节响应慢或down机,整个链接就会出问题。那么我们就需要一些技术手段来监控整个链路的情况,当某个环境出问题时能及时发现问题做出响应。
        APM由客户端(ApmAgent)、服务器端(ApmServer)组成。
                ApmAgent:负责收集应用程序信息发送给ApmServer。
                ApmServer:负责将收集到的信息发送给Elasticsearch。

3、Kibana
        日志查询界面:
服务器运维之应用系统日志运维_python_02

服务器运维之应用系统日志运维_Linux_03

服务器运维之应用系统日志运维_ELK_04

4、运维预警系统(自研

        运维预警系统开发语言:Django2+Python3
        运维预警系统由应用应用系统监控模块、日志查询模块、日志预警模块、应用系统接口预警模块等功能模块组成。
        应用系统监控模块:当应用系统启动后会开启对应的端口号对外提供服务,如果应用系统down掉该端口号也会相应关闭;或当应用系统超载服务不能对外提供服务或延时很长;可以利用端口号来监控应用系统的存活状态,监控不到端口号或连接应用系统超时都可认为该应用系统存在问题,需要发出预警通知运维人员介入处理,预警途径微信、钉钉、邮件等方式。
部分界面如下:

服务器运维之应用系统日志运维_Linux_05


服务器运维之应用系统日志运维_ELK_06


        日志查询模块:由于Kibana查询语法较为复杂,不利于开发人员查询操作,利用Django开发了简单易用的日志查询界面,部分界面如下:

服务器运维之应用系统日志运维_ELK_07

服务器运维之应用系统日志运维_Django_08

        日志预警模块:日志预警模块是对日志查询模块的补充,是个定期Job,搜索关键字(如error、exception)触发预警,预设值为近5分钟内的日志信息,可根据业务需要设置时间;以微信、钉钉、邮件等方式通知开发人员、运维人员。部分界面如下:

服务器运维之应用系统日志运维_ELK_09

 

        接口预警模块:对应用系统程序进行监控,当接口响应时间超过预定值(预定值:10秒)就发生预警信息,以微信、钉钉、邮件等方式通知开发人员、运维人员。部分界面如下:

服务器运维之应用系统日志运维_python_10

5、后续

        运维预警系统待开发功能模块:备忘录提醒模块、域名管理模块、服务器管理模块、中间件管理模块等功能模块。