基於 Prometheus 和 Grafana 的監控平臺 - 環境搭建

相關概念

微服務中的監控分根據做用領域分爲三大類,Logging,Tracing,Metrics。java

  • Logging - 用於記錄離散的事件。例如,應用程序的調試信息或錯誤信息。它是咱們診斷問題的依據。好比咱們說的ELK就是基於Logging。node

  • Metrics - 用於記錄可聚合的數據。例如,隊列的當前深度可被定義爲一個度量值,在元素入隊或出隊時被更新;HTTP 請求個數可被定義爲一個計數器,新請求到來時進行累。prometheus專一於Metrics領域。linux

  • Tracing - 用於記錄請求範圍內的信息。例如,一次遠程方法調用的執行過程和耗時。它是咱們排查系統性能問題的利器。最經常使用的有Skywalking,ping-point,zipkin。git

今天咱們主要聊聊Prometheus的監控,接下來咱們瞭解下須要涉及的幾個關鍵組件。github

Prometheus

Prometheus(中文名:普羅米修斯)是由SoundCloud開發的開源監控報警系統和時序列數據庫(TSDB). Prometheus使用Go語言開發, 是Google BorgMon監控系統的開源版本。web

Prometheus的基本原理是經過HTTP協議週期性抓取被監控組件的狀態, 任意組件只要提供對應的HTTP接口就能夠接入監控. 不須要任何SDK或者其餘的集成過程。輸出被監控組件信息的HTTP接口被叫作exporter,目前開發經常使用的組件大部分都有exporter能夠直接使用, 好比Nginx、MySQL、Linux系統信息、Mongo、ES等shell

exporter

prometheus能夠理解爲一個數據庫+數據抓取工具, 工具從各處抓來統一的數據, 放入prometheus這一個時間序列數據庫中. 那如何保證各處的數據格式是統一的呢?就是經過這個exporter. Exporter是一類數據採集組件的總稱. Exporter負責從目標處蒐集數據, 並將其轉化爲Prometheus支持的格式, 它開放了一個http接口(以便Prometheus來抓取數據). 與傳統的數據採集組件不一樣的是, Exporter並不向中央服務器發送數據, 而是等待中央服務器(如Prometheus等)主動前來抓取。https://github.com/prometheus 有不少寫好的exporter,能夠直接下載使用。數據庫

Grafana

Grafana是一個圖形化工具, 它能夠從不少種數據源(例如Prometheus)中讀取數據信息, 使用很漂亮的圖表來展現數據, 而且有不少開源的dashborad可使用,能夠快速地搭建起一個很是精美的監控平臺。它與Prometheus的關係就相似於Kibana與ElasticSearch。瀏覽器

環境準備

在開始配置以前請下載如下幾個軟件(直接從github或者grafana官網下載太慢了,簡直是龜速並且容易下載失敗,建議使用迅雷下載)。服務器

  • prometheus

  • grafana

  • node_exporter

安裝

準備兩臺服務器,一臺用做安裝prometheus和grafana,一臺用做放置exporter組件。創建應用文件夾,將相關軟件上傳至服務器。

  • 192.168.249.131 prometheus,grafana

  • 192.168.249.129 exporter

prometheus

使用以下shell命令進行安裝並啓動

tar zxvf prometheus-2.13.1.linux-amd64.tar.gz
mv prometheus-2.13.1.linux-amd64 prometheus
cd prometheus
nohup ./prometheus &

啓動完成後,用瀏覽器打開 http://192.168.249.131:9090進行訪問,效果以下:

grafana

使用以下shell命令進行安裝並啓動

tar grafana-6.4.3.linux-amd64.tar.gz
cd grafana-6.4.3
nohup ./grafana-server &

啓動完成後,用瀏覽器打開 http://192.168.249.131:3000進行訪問,默認帳號密碼爲admin/admin,初次登錄須要修改密碼,修改密碼並登錄效果以下:

node_exporter

使用以下shell命令進行安裝並啓動

tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64 node_exporter
nohup ./node_exporter &

node exporter默認使用9100端口,可使用--web.listen-address=":9200"指定端口號。啓動完成後,用瀏覽器打開 http://192.168.249.129:9100/進行訪問,顯示效果以下:

配置

prometheus

進入prometheus安裝目錄,修改 prometheus.yml文件,增長監聽job server-192.168.249.129,完整配置以下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"


scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: '192.168.249.129'
    static_configs:
    - targets: ['192.168.249.129:9100']

配置完成後重啓prometheus,查看監聽狀態。

grafana

  • 配置prometheus數據源

  • 去官網尋找對應的錶盤,咱們選擇node exporter監控看板

  • 在grafana中在導入錶盤

  • 查看監控效果

至此基於Prometheus的監控環境搭建完成,你也來動手試一下吧。

本文分享自微信公衆號 - JAVA日知錄(javadaily)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索