prometheus監控方案


 

簡介

prometheus 是一個開源的系統監控和告警的工具包,其采用pull方式采集時間序列,通過http協議傳輸。

架構

每個應用都通過javaagent向外提供一個http服務暴露出自己的JMX信息。當應用啟動的時候就會向consul注冊服務,注冊成功后,prometheus就能把這個應用加入監控對象列表,進行數據收集並跟蹤服務的狀態。

這里寫圖片描述

部署

prometheus

官網下載prometheus-1.2.1.linux-amd64.tar.gz, 解壓到/services/apps/目錄下,修改配置文件 prometheus.yml,在 scrape_config節點下增加以下內容:

- job_name: 'consul-node' consul_sd_configs: - server: 'localhost:8500' services: ['scorer','file-proxy','....']
  • 1
  • 2
  • 3
  • 4

services如果不配置默認會顯示出所有的服務,包含了consul agent服務。

運行,默認端口9090

./prometheus -config.file=prometheus.yml &
  • 1

prometheus jmx exporter

jmx exporter是prometheus和JMX的橋梁。 
在我們的工程里面,它是以Java Agent的方式運行,它的功能是收集本地的JVM信息,並通過HTTP服務暴露出來。引用的方式為:

1. 在pom.xml中增加依賴

<dependency> <groupId>io.prometheus</groupId> <artifactId>jmx_prometheus_javaagent</artifactId> <version>0.7</version> </dependency> 
  • 1
  • 2
  • 3
  • 4
  • 5

該工程已經把consul的服務注冊功能整合進去。沒有注銷服務功能。

2. 增加啟動參數

-javaagent:${WORK_DIR}/lib/jmx_prometheus_javaagent-0.7.jar=scorer:1234:${WORK_DIR}/bin/scorer.yaml
  • 1

javaagent參數解釋如下:

-javagent:path/agent.jar=serviceName:servicePort:path/conf.yaml
  • 1

service 指的是http service,如指定servicePort為1234,在應用啟動之后,可以在http://host:1234/metrics獲取到metrics信息。在conf.yaml里配置JMX的收集策略,完整的yaml配置

consul agent

prometheus可以靜態的配置監控對象,也可以采用動態的服務發現機制。為了部署更方便,我們采用的是現在更為流行的服務發現解決方案consul。其只包含了一個二進制的命令文件,把它拷貝到PATH( echo $PATH 可以查看 )就可以運行。 
運行命令為:

consul agent -server -data-dir data &
  • 1

解釋如下:

  • consul agent 啟動一個consul agent進程。 該進程負責維護集群成員信息、注冊服務、運行檢查、查詢響應等等。而且,consul集群的每一個節點上都必須有agent進程運行。

  • -server **agent有兩種模式:server與client。**server模式包含了一致性的工作:保證一致性和可用性(在部分失敗的情況下),響應RPC,同步數據到其他節點代理。client 模式用於與server進行通信,轉發RPC到服務的代理agent,它僅保存自身的少量一些狀態,是非常輕量化的東西。本身是相對無狀態的。

  • -data-dir 指定一個文件夾用於存儲該agent的狀態,在以server模式運行時,尤其重要。

一些其他的可選參數

  • -node 指定該節點的名稱,默認為主機名
  • -http-port 指定端口接收http請求,用於默認端口8500被占用的情況。
  • -config-dir 指定一個或多個文件夾用於agent啟動時加載配置文件,加載順序由文件名的字母順序決定。

consul 運行起來后,server會通過8500端口與prometheus通信。

使用

consul 啟動

consul agent -server –data-dir=/services/data/consul/ –join 10.18.1.12&

注銷服務

curl http://localhost:8500/v1/agent/service/deregister/172.17.42.1

查詢該agent上面注冊的服務

curl http://localhost:8500/v1/agent/services?pretty

查詢集群上面所有的服務

curl http://localhost:8500/v1/catalog/services?pretty

查詢

參見prometheus官網提供的查詢表達式,簡而言之,標簽過濾用{},時間范圍選擇用[],如下例。

http_request_total{job="prometheus"}[5m]
  • 1

可視化

prometheus官方的dashboard不怎么給力,目前將grafana集成了進去。grafana可以自定義數據源,並且保存多個dashboard,針對不同的系統可以使用不同的dashboard來進行監控。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM