prometheus監控方案

簡介

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

架構

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

prometheus

部署

prometheus

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

- job_name: 'consul-node'
    consul_sd_configs:
      - server: 'localhost:8500'
        services: ['scorer','file-proxy','....']

services若是不配置默認會顯示出全部的服務,包含了consul agent服務。git

運行,默認端口9090github

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

prometheus jmx exporter

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

1. 在pom.xml中增長依賴架構

先把修改好的exporter jar(已經把consul的服務註冊功能整合進去)給傳到本地nexus上去,而後在maven中增長相應以來。app

<repository>
    <id>repo.mxnt.com</id>
    <name>Maxent Repository</name>
    <url>http://supervisor:8081/nexus/content/repositories/public</url>
</repository>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>jmx_prometheus_javaagent</artifactId>
    <version>0.7</version>
</dependency>

2. 增長啓動參數maven

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

javaagent參數解釋以下:工具

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

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 &

解釋以下

  • 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通訊。

部署完成

下圖是服務啓動後,在prometheus裏展現的一些信息。 Markdown

使用

查詢

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

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

能夠在開發環境搭建的prometheus上面試手

可視化

prometheus官方的dashboard不怎麼給力,目前將grafana集成了進去。grafana能夠自定義數據源,而且保存多個dashboard,針對不一樣的系統可使用不一樣的dashboard來進行監控。最後貼一個效果圖。

Markdown

相關文章
相關標籤/搜索