动态

详情 返回 返回

《數據資產管理核心技術與應用》讀書筆記- 第六章-數據監控與告警(二) -如何使用Grafana和Prometheus來實現數據監控與告警 - 动态 详情

《數據資產管理核心技術與應用》是清華大學出版社出版的一本圖書,全書共分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也非常適合數據鏈路、數據任務、數據質量、數據服務、數據處理資源等的監控和告警。

.......

未完待續 《數據資產管理核心技術與應用》是清華大學出版社出版的一本圖書,作者為張永清等著

user avatar FunTester 头像 u_11920995 头像 mulavar 头像 daxi_613eff614e117 头像 shuikulangzi 头像 HunterCode 头像 vivotech 头像
点赞 7 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.