做网站找谁/竞价推广账户竞价托管公司
Grafana-业务数据监控实践
点击上方“技术支持联盟”,选择“置顶公众号”
第一时间了解程序员大小事儿
作者:红枫,大龄单身开发一枚。
摘要:业务监控,主要侧重对业务状态数据的实时监控, 收集数据后对业务数据进行深入的统计分析,最终目的是可以基于我们分析的结果给运维动作做出决策。目前项目组更多的是对系统层级的监控,对业务监控的的工具还是比较欠缺的。针对业务数据监控本文提出的解决方案是利用ELK套件作为数据采集,储存的工具,通过Grafana的可视化页面展示业务指标。
背景
1、运维实时监控不够,缺少生产问题印象范围的数据评估。
2、过往偏重对资源硬件方面的监控,缺少业务数据监控的工具。
解决方案
将业务关键信息按一定格式打印到日志文件中,根据需求点对日志数据进行分析,在UI页面清晰、直观的展示。依赖组件:node_export、prometheus、filebeat、logstash、elasticsearch、grafana。
部署方案
工具介绍
1、 Filebeat是日志数据采集器,可监控日志目录或特定日志文件。支持对文件名称模糊匹配,可以一次读取某个文件夹下的所有后缀名为log的文件,也可以读取指定的某一个后缀名为log的文件,并将日志数据发送到你为Filebea配置的输出。
2、 Logstash是一个数据分析软件,可以将数据进行过滤和格式化(转成JSON格式),并将数据标准化到你所选择的目的地。Logstash的filter插件可以将传输过来的数据进行过滤解析并完成格式转换,是最为重要和复杂的一个插件,在其之下还包含众多小插件,例如:date、grok、mutate、geoip、output等插件。在此我们主要使用grok、mutate以及output插件,grok模式是正则表达式,用于将日志中符合正则规则的字段重新定义为另一个字段,实现格式化输出。Logstash其本身已经内置很多正则规则文件,我们可以在此基础上扩展,达到自己所需。mutate对字段内容做处理,比如使用rename进行字段重命名、使用remove_field删除字段、使用convert进行数据类型转换等。output插件配置数据输出,可以通过配置elasticsearch地址、索引建立规则、用户、密码直接将采集到的信息下沉到elasticsearch。
3、 Elasticsearch基于Lucene的全文检索库,是一个高度可扩展的开源全文搜索和分析引擎。它允许快速,近实时地存储,搜索和分析大量数据。此处我们主要使用它作为对日志数据储存使用,按天建立索引,通过编写查询语句获取目标数据。
4、 Prometheus是一套开源的系统监控报警框架。此处,我们主要使用它来监控服务器CPU、内存、磁盘、I/O等信息,首先需要安装node_exporter。node_exporter的作用是用于机器系统数据收集。
5、 Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。官方 官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。本次我们主要使用Prometheus,Elasticsearch作为监控数据源,编写数据查询语句,设置展示图形信息。还可以针对CPU指标、 业务数据指标设置告警规则,触发条件,告警频率等。
监控页面展示
可以设置变量,图形根据变量值动态变化。
展示CPU、请求数、接口响应时间信息。
界面设置告警临界值,告警规则。
效果评估
运维人员可以通过监控系统了解系统运行情况:系统响应时间、请求数、成功/失败数。让运维人员对系统运行情况、生产数据有个宏观了解。设置告警规则,在CPU使用率过高,交易失败数、接口响应时间短时间内大幅上升企业微信告警通知运维人员。
后续改进
告警功能比较简单并且无法使用变量,配置新的告警需配置新的数据面板,工作量比较大且交易失败无法告警出系统报错的详细信息,后续可以引进开源报警Elastalert组件解决。
