《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与告警、数据服务、数据权限与安全、数据资产管理架构等。第9~10章主要从实战的角度介绍数据资产管理技术的应用实践,包括如何对元数据进行管理以发挥出数据资产的更大潜力,以及如何对数据进行建模以挖掘出数据中更大的价值。
关注清哥聊技术公众号,了解更多技术文章
图书介绍:数据资产管理核心技术与应用
今天主要是给大家分享一下第六章的第二节的内容:
第六章的标题为数据监控与告警 -> 关注清哥聊技术公众号,了解更多技术文章
本次分享紧接着上次的内容继续 《数据资产管理核心技术与应用》读书笔记- 第六章-数据监控与告警(一)
- 《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
内容思维导图如下:
二、如何使用Grafana和Prometheus来实现数据监控与告警
1、 Prometheus
Prometheus是一个开源的系统监控和告警监控工具包,其作为一个非常流行的开源项目工程在社区有众多活跃的开发人员和用户人员,该项目工程在2016年加入Cloud Native Computing Foundation(云原生计算基金会),成为旗下的开源项目,其官方网址为:https://prometheus.io,如下图5-2-1所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
图5-2-1
Prometheus的源码是托管在Github中,其Github的源码网址为:https://github.com/prometheus,如下图5-2-2所示,从源码中可以看到Prometheus的核心开发语言是Go,Go是由Google开发的一种编译型语言,Go语言的性能非常好,非常适合直接运行于硬件设备之上。
图5-2-2
Prometheus 主要用于采集数据指标,并且以时间序列的方式来存储采集到的数据,如下图5-2-3所示为Prometheus官网提供的技术实现架构图。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
图5-2-3
从图中可以看到Prometheus除了其核心的Prometheus Server外,还包含了数据采集工具和告警管理工具,比如图中的Pushgateway和Exporters 就是用来做数据采集使用的,而Alertmanager 就是用来做告警规则配置和告警消息通知的,图中各个核心组件的相关介绍如下。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
- Jobs/Exporters: 监控数据采集的工具,一般需要独立部署,如下图5-2-4所示,主要负责采集数据,并且提供数据访问服务给Prometheus Server来主动拉取数据。
图5-2-4
访问Prometheus的官方网址:https://prometheus.io/docs/instrumenting/exporters/ 可以获取到常见的Exporters,如下图5-2-5所示。
图5-2-5
Prometheus官方提供的常见的Exporters如下表5-2-1所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
表5-2-1
|-------------------------------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Exporters 类型 | 描述 | 对应的常见Exporters 以及下载地址 |
| Databases | 主要用于数据库的监控数据的采集 | clickhouse_exporter:https://github.com/f1yegor/clickhouse_exporter druid-exporter:https://github.com/opstree/druid-exporter elasticsearch_exporter:https://github.com/prometheus-community/elasticsearch_exporter mongodb_exporter:https://github.com/percona/mongodb_exporter prometheus-mssql-exporter:https://github.com/awaragi/prometheus-mssql-exporter opentsdb_exporter:https://github.com/cloudflare/opentsdb_exporter postgres_exporter:https://github.com/prometheus-community/postgres_exporter presto_exporter: https://github.com/yahoojapan/presto_exporter redis_exporter: https://github.com/oliver006/redis_exporter sql_exporter: https://github.com/burningalchemist/sql_exporter |
| Hardware related | 主要用于硬件相关的数据采集 | windows_exporter:https://github.com/prometheus-community/windows_exporter NVIDIA GPU exporter:https://github.com/mindprince/nvidia_gpu_prometheus_exporter Disk usage exporter:https://github.com/dundee/disk_usage_exporter |
| Issue trackers and continuous integration | 一般用于问题跟踪器和持续集成相关的数据采集 | JIRA exporter:https://github.com/AndreyVMarkelov/jira-prometheus-exporter Jenkins exporter:https://github.com/lovoo/jenkins_exporter Confluence exporter:https://prometheus.io/docs/instrumenting/exporters/ |
| Messaging systems | 一般用于消息队列相关的数据采集 | Kafka exporter:https://github.com/danielqsj/kafka_exporter RocketMQ exporter:https://github.com/apache/rocketmq-exporter RabbitMQ exporter:https://github.com/kbudde/rabbitmq_exporter IBM MQ exporter:https://github.com/ibm-messaging/mq-metric-samples/tree/master/cmd/mq_prometheus |
| Storage | 一般用于存储相关的数据采集 | Hadoop HDFS FSImage exporter:https://github.com/marcelmay/hadoop-hdfs-fsimage-exporter GPFS exporter:https://github.com/treydock/gpfs_exporter Lustre exporter:https://github.com/HewlettPackard/lustre_exporter |
| Http | 一般用于Web中间件相关的数据采集 | Apache exporter:https://github.com/Lusitaniae/apache_exporter HAProxy exporter:https://github.com/prometheus/haproxy_exporter Nginx metric library:https://github.com/knyar/nginx-lua-prometheus Varnish exporter:https://github.com/jonnenauha/prometheus_varnish_exporter WebDriver exporter:https://github.com/mattbostock/webdriver_exporter |
| Other Monitoring Systems | 其他监控系统的数据采集 | Java GC exporter:https://github.com/loyispa/jgc_exporter JMX exporter:https://github.com/prometheus/jmx_exporter Azure Monitor exporter:https://github.com/RobustPerception/azure_metrics_exporter Graphite exporter:https://github.com/prometheus/graphite_exporter |
在实际使用和部署这些Exporter时,可以到对应的下载地址中下载,并且对应的下载的链接中,通常也包含了对应的部署文档,按照部署文档部署后,就可以启动对应的Exporter来采集数据了。
- Pushgateway:同样也是监控数据采集的工具并且需要独立部署,和Exporters的区别在于,Exporters是自己主动去待监控的目标上获取数据,而Pushgateway是自己提供了一个通用的数据接收服务,待监控的目标需要自己通过Pushgateway提供的数据接收服务,将自身的监控数据上报上来,如下图5-2-6所示。
图5-2-6
Pushgateway也是采用Go语言进行开发,其Github上的源码网址为:https://github.com/prometheus/pushgateway,Pushgateway 是以http协议的形式对外提供的数据接收服务,如下图5-2-7所示,需要注意的是,如果发送的是Http Post 请求,那么Pushgateway在接收到Post 请求时,只会更新已经存在的数据指标,对于不存在的数据指标不会进行主动的创建,但是当发送的是Put请求时,除了更新已经存在的数据指标外,对于不存在的数据指标Pushgateway也会主动创建新的指标数据进行保存。
图5-2-7
另外Pushgateway 也支持Docker 部署,可以从网址https://hub.docker.com/r/prom/pushgateway中下载Docker 镜像或者在Docker中直接通过"docker pull prom/pushgateway" 来拉取镜像。
- Alertmanager:配合Prometheus 来做告警规则配置和告警消息通知的一个采用Go语言开发的技术组件,负责对告警消息做去重、分组等处理,然后根据配置的路由规则将告警消息发送到对应的接收器中,比如企业微信、Email、钉钉等。通过访问官方文档网址:https://prometheus.io/docs/alerting/latest/alertmanager/ 可以查看Alertmanager更多的详细介绍,如下图5-2-8所示。
图5-2-8
Alertmanager 在Github上的源码网址为https://github.com/prometheus/alertmanager,其官网提供的技术架构图如下图5-2-9所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
图5-2-9
从图中可以看到Alertmanager 自身也提供了API服务,通过访问网址:https://petstore.swagger.io/?url=https://raw.githubusercontent.com/prometheus/alertmanager/main/api/v2/openapi.yaml 可以直接看到其提供了哪些API接口服务,如下图5-2-10所示。
图5-2-10
从图中可以看到Alertmanager 集成了Swagger这个工具来自动生成API接口文档,其API接口服务提供了告警接收、分组、静默等很多告警必要的功能。另外Alertmanager也支持了通过Docker来进行快速部署,在Docker中可以直接通过"docker pull prom/alertmanager" 来拉取镜像进行部署。
- Prometheus Server:Prometheus的核心服务,负责监控数据的写入和存储,底层的本质是一个时序数据库,并且提供了API服务和其独有的"SQL"查询语言,让外部系统可以便捷的查询到Prometheus上对应的数据,如下图5-2-11所示。
图5-2-11
Prometheus 提供了一种其独有的名为的PromQl的SQL查询语言,相关的介绍可以参考官方网址:https://prometheus.io/docs/prometheus/latest/querying/basics/,而且也支持HTTP API接口服务查询,相关的介绍可以参考官方网址:https://prometheus.io/docs/prometheus/latest/querying/api/,如下图5-2-12所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
另外Prometheus Server也同样支持了通过Docker来进行快速部署,在Docker中可以直接通过"docker pull prom/prometheus" 来拉取镜像进行部署。
2、 Grafana
Grafana是一个开源的提供大量图表工具的可视化监控和Dashboard制作工具,通过访问官方网址:https://grafana.com/grafana/ 即可以进入Grafana的官方主页,如下图5-2-13所示。
图5-2-13
Grafana具有如下特点:
- 统一数据格式,而不是统一所有的数据库:Grafana不需要从外部的数据库中将数据摄取到其自己的存储或其他外部的数据库中。相反,Grafana采用了一种独特的设计方式,通过统一 转换查询到的数据的格式来达到数据的统一使用,无论需要使用的数据位于何处。
- 每个人都能轻松看到数据:通过数据民主化,Grafana有助于促进数据的统一访问,即需要数据的人可以轻松使用和访问数据,有助于打破数据孤岛,增强部门和团队之间的协作能力。
- 任何人都可以轻松使用仪表板(Dashboards):Grafana仪表板不仅为从众多数据来源收集到的数据赋予了深刻的意义,而且还可以与其他团队成员共享创建的仪表板,使得大家能够一起探索和使用数据,在Grafana,任何人都可以创建和共享动态仪表板,以促进团队内部得协作和透明度。
- 更多的灵活性和多功能性:任何数据都可以转换为灵活多样的仪表板,与其他工具不同,Grafana 允许每个人或者团队自己定义自己的仪表板。通过Grafana的高级查询和转换功能,可以自定义面板以创建对实际使用有用的可视化效果。
基于以上的特点以及结合Prometheus本身没有强大的数据界面展示功能,Grafana非常适合用来做监控数据的Dashboard展示,借助Grafana丰富的图表工具,可以从多个不同的维度和角度来完成 监控的可视化展示,如下图5-2-14所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
图5-2-14
从图中可以看到Prometheus 完成了数据采集和数据存储的功能,而Grafana完成了监控展示的功能。
Grafana 同样也是采用Go语言作为核心的底层开发语言,其总体技术实现架构如下图5-2-15所示,从图中可以看到Grafana包含了前端、后端、以及数据库三个部分。
- 前端:主要使用了TypeScript语言来做的开发实现。
- 后端:主要是使用Go语言来做的底层实现,对前端提供了Http协议的查询。
- 数据库:主要存储Grafana 的配置数据,包括用户、Dashboard等配置信息,对后端提供数据的写入和查询。
图5-2-15
Grafana除了拥有丰富的图表工具外,还包括了监控、告警等模块,如下图5-2-16所示。
图5-2-16
从图中可以看到,Grafana的监控和告警是基于Dashboard之上的,也就是需要先创建Dashboard,然后基于Dashboard上的数据指标来配置监控和告警。Grafana官网提供的监控告警配置流程如下图5-2-17所示。
图5-2-17
从图中可以看到包含了如下三个部分:
Alert Rule(告警规则):是一组标准的用于确定告警应在满足什么条件时触发的规则,通常由一个或多个查询的表达式、查询结果需要满足的条件、告警规则评估的间隔时长(多长时间去按照规则查询一次是否满足告警),以及 满足告警规则的持续时长组成。
Alert Instances(告警实例):实际产生告警的实例,通常一条告警规则在触发告警时,就会生成一个实例。
Notification Policies(通知策略):产生告警后,什么时候以什么样的策略通知到告警的接收者,并且通过通知策略还可以控制告警消息的发送频率。
Grafana的告警通知方式支持Email、钉钉、Cisco Webex、Webhook等很多常见的消息通信工具。
3、如何使用Grafana和Prometheus来实现数据监控与告警
通过上面的介绍可以看到Grafana+Prometheus 组合在一起,非常适合做监控和告警,同样Grafana和Prometheus也非常适合数据链路、数据任务、数据质量、数据服务、数据处理资源等的监控和告警。
.......
未完待续 《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著