开源解决方案搭建统一日志平台

最近项目里面需要搭建一个统一日志平台,顺手写下自己理解的日志平台介绍,主要作为自己的一个笔记,这是为了后面做智能运维的基础,智能的基础首先必须有自动化平台

统一日志平台背景

 

早期在系统规模较小的时期,系统的运维工作主要靠运维人员手工完成,随着业务的急剧膨胀,及服务的多样化,让网络的组建变得越来越复杂,一个系统可能涉及到多个设备,部署多个实例,运维人员手工的去查看定位问题变得困难,效率低效。设备的增加让跨运维小组之间的沟通代价变得很高,各种日志和告警散落在不同的设备上,如果日志的文件设计不合理,可能还会导致打开日志文件耗时高,甚至失败的结果。为了解决这些困难,统一日志平台应运而生。

 

统一日志平台介绍

“统一”在这里包含三层涵义:1.统一监控:对各应用系统涉及到的网络、主机、存储、数据库、中间件、负载均衡器、接口交互通过日志数据进行统一监控 2. 统一采集,分析,汇聚和关联展示:采集的日志数据统一进行解析,关联和入库,提供搜索查询功能,支持多维度查询,方便维护人员排查问题3.统一的日志规范:为了实现跨系统的分析和管理,日志的规范是统一日志的重要环节,规范的目的是为了更好的可读性,可分析性,因此,统一的日志规范是统一日志平台的基础。

开源解决方案搭建统一日志平台_第1张图片统一日志平台提供了以下的监控分析功能:

  1. 性能、稳定性监控:对设备的性能指标进行准实时(5分钟粒度)的采集和展现,运维人员能够直观的了解系统涉及到的各设备和程序的健康状况。

  2. 用户角度的系统的监控:用户通过前端页面访问系统得到的一个响应时间是指用户的访问发送到服务器,服务器响应并返回的时间,通过流量镜像将这些数据包抓取后进行分析,可以计算出系统页面的响应时间,页面的访问量,出错率等指标,从用户角度监控系统的运行状况。

  3. 卡单业务统计分析:对全业务的接口交互进行汇总、分析,可以根据关联字段查询详细的业务接口交互时间,实现业务端到端分析。这部分设计还能有效避免系统之间的纠纷,用统一的数据反应接口交互真实情况。

  4. 审计日志查询分析 :数据库,操作系统,业务系统的审计日志的采集,汇聚为审计人员提供了数据来源。

 

统一日志平台的技术架构

开源解决方案搭建统一日志平台_第2张图片

 

本平台的技术架构选型为ELK(Elasticsearch,Lostash,Kibana)结合zabbix的解决方案,这个方案的优点是实现向下兼容,覆盖多种采集方式和协议。

  1. 网络设备(交换机、路由器、防火墙)的性能指标及物理机、虚拟机的性能指标和告警都是基于snmp、tcp协议进行采集,其中网络设备只需要做一定的配置,无需部署代理便能采集到,而主机则通过部署主机的代理程序zabbix-agent的方式实现;虚拟机和共享存储的性能指标通过调用虚拟化层的API获取;一体机的存储和性能指标通过脚本定时采集;网络设备和主机的日志都是基于syslog采集;文本类的日志(中间件、数据库、nginx、应用层)采集是轻量级的日志采集器Beats。

开源解决方案搭建统一日志平台_第3张图片

 

  1. 数据解析

数据解析采用logstash将汇聚的数据按照一定的规则和协议进行解析,通过ip、端口等信息与CMDB进行关联,把关联后的信息写入ES集群中。

  1. 数据安全

免费的ELK方案中不包含AAA(Authentication, Authorization, Audit,认证、权限控制、审计)的解决方案,而开源的searchguard作为ES的一个插件,通过ESACL控制实现多租户,提供了不同粒度的权限控制,包括索引级indecies、类型types甚至过滤field粒度的权限控制,不同用户访问不同索引,不授权的索引无法查看,分组控制不同user查看各自的业务,同时提供多种HTTP支持方式、认证方式,支持HTTPS,日志平台采用TLS证书方式进行认证,结合Kibana和logstash进行统一的权限控制,确保数据访问的安全性。

  1. 日志的展示

Kibana是一个针对ES的开源分析和可视化平台,用来搜索、查看交互存储在ES索引中的数据,ES提供了丰富的聚合函数,kibana通过分区图、数据表、折线图、柱状图、饼状图、热度分布图等展示聚合的数据,这些自由排列在一个仪表盘(dashboard)进行监控。

 

如果需要对数据进行复杂的运算,logstash+ELK的架构无法满足需求,可以通过以下两种方案实现,第一种是通过调用ES的API方式实时的取数据到传统数据库中供应用使用;第二种方案引入kafaka组件,应对峰值数据的高负载,并且在Logstash出现故障时,可直接从Kafka做数据回放,避免回溯至若干上游应用,通过spark实现复杂的离线计算,得到的数据可以写会ES做展现,也可以通过存储到mysql做定制化的展示,随着业务需求的复杂度提供,第二种方案是后续演进的路径。

 

ES集群的数据共享有两种方式:一种是调用ES的API(TransportClient)的方式;另一种是登录kibana后,点击"Dev Tools"后使用console进行索引数据查询,e.g

GET /eastcom-middleware-nginx-2018.06.01/_search?pretty

{

"query":{"match_all":{}},

"size":1000

}

然后使用elasticdump(插件)导出数据。

如果只导出统计类的表格,则可以直接在dashboard上查询某段时间的数据后,导出为excel(只针对表格型)

开源解决方案搭建统一日志平台_第4张图片

 

 

统一日志平台使用场景

场景一:分系统日志展示:把IAAS、PAAS、SAAS及用户体验层的各类日志按照所属的应用系统进行分类,主机数据关联CMDB进行划分应用主机/数据库主机/NGINX主机等分类,通过kibana提供的丰富图标功能和聚合功能把数据做转换后在dashboard页面集中呈现数据,运维人员可以直观的关注系统的整体状况,减少查看不同类数据时来回切换页面的操作。

管理者视图(能看出一周内的业务变化规律):dashboard上可以配置多个图形化的查询图标,方便管理者看业务的趋势,走向,业务特点。

 

你可能感兴趣的:(运维)