參考資料:Docker部署Prometheus實(shí)現(xiàn)微信郵件報(bào)警
Prometheus 組成及架構(gòu)
Prometheus 生態(tài)圈中包含了多個(gè)組件尉共,其中許多組件是可選的:
Prometheus Server: 用于收集和存儲(chǔ)時(shí)間序列數(shù)據(jù)狸捕。
Client Library: 客戶端庫(kù)愁铺,為需要監(jiān)控的服務(wù)生成相應(yīng)的 metrics 并暴露給 Prometheus server脸侥。當(dāng) Prometheus server 來 pull 時(shí)辛燥,直接返回實(shí)時(shí)狀態(tài)的 metrics。
Push Gateway: 主要用于短期的 jobs迈窟。由于這類 jobs 存在時(shí)間較短私植,可能在 Prometheus 來 pull 之前就消失了。為此车酣,這次 jobs 可以直接向 Prometheus server 端推送它們的 metrics曲稼。這種方式主要用于服務(wù)層面的 metrics索绪,對(duì)于機(jī)器層面的 metrices,需要使用 node exporter贫悄。
Exporters: 用于暴露已有的第三方服務(wù)的 metrics 給 Prometheus瑞驱。
Alertmanager: 從 Prometheus server 端接收到 alerts 后,會(huì)進(jìn)行去除重復(fù)數(shù)據(jù)窄坦,分組唤反,并路由到對(duì)應(yīng)的接收方式,發(fā)出報(bào)警鸭津。常見的接收方式有:電子郵件彤侍,pagerduty,OpsGenie, webhook 等曙博。
Prometheus 官方文檔中的架構(gòu)圖:
其大概的工作流程是:
- Prometheus server 定期從配置好的 jobs 或者 exporters 中拉 metrics拥刻,或者接收來自 Pushgateway 發(fā)過來的 metrics,或者從其他的 Prometheus server 中拉 metrics父泳。
- Prometheus server 在本地存儲(chǔ)收集到的 metrics,并運(yùn)行已定義好的 alert.rules吴汪,記錄新的時(shí)間序列或者向 Alertmanager 推送警報(bào)惠窄。
- Alertmanager 根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理漾橙,發(fā)出告警杆融。
- 在圖形界面中,可視化采集數(shù)據(jù)霜运。
Prometheus官網(wǎng):https://prometheus.io/
Java服務(wù)上部署Jmx-exporter
下載jar :https://github.com/prometheus/jmx_exporter (jmx_prometheus_javaagent-0.11.0.jar )
配置文件: https://github.com/prometheus/jmx_exporter/tree/master/example_configs
中間件啟動(dòng)參數(shù)添加:
CATALINA_OPTS="-javaagent:/app/tomcat-8.5.23/lib/jmx_prometheus_javaagent-0.11.0.jar=1234:/app/tomcat-8.5.23/conf/config.yaml"