Grafana+Zabbix+Prometheus 監控系統

 

環境說明php

軟件html

版本node

操做系統mysql

IP地址linux

Grafananginx

5.4.3-1c++

Centos7.5web

192.168.18.231正則表達式

Prometheussql

2.6.1 

Centos7.5

192.168.18.232

Zabbix

4.0.4

Centos7.5

192.168.18.233

 

 

 

 

 

 

1、部署Grafana

Grafana是一個開源的指標量監測和可視化工具,官方網站爲:https://grafana.com/Grafana的安裝很是簡單,官方就有軟件倉庫能夠直接使用,也能夠經過docker鏡像等方式直接本地啓動。還能夠直接下載rpm包、二進制包進行安裝。你們能夠從 https://grafana.com/grafana/download 下載rpm安裝包。

1.1 安裝

cd /usr/local/src/

wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm

yum localinstall grafana-5.4.3-1.x86_64.rpm

 #默認狀況下,grafana的配置存儲於sqlite3中,若是你想使用其餘存儲後端,如mysql,postgresql等,請參考官方文檔配置: http://docs.grafana.org/installation/configuration/ 

 

1.2 啓動

#啓動服務

systemctl start grafana-server

#查看服務是否正常啓動

systemctl status grafana-server

#自啓動

systemctl enable grafana-server

 

1.3 防火牆

systemctl stop firewalld.service

systemctl disable firewalld.service

yum install -y iptables-services

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

#重啓

systemctl restart iptables.service

systemctl enable iptables.service

 

#後續添加先重啓再保存

service iptables restart

service iptables save

 

1.4 訪問

訪問 http://192.168.18.231:3000 就能夠看到登陸界面了。默認的用戶名和密碼都是admin。Grafana的配置文件位於/etc/grafana/grafana.ini,通常狀況下無需修改配置文件。

 

 

2、部署zabbix

2.1 部署LNMP環境

2.1.1 安裝Nginx

這裏使用nginx最新穩定版本 nginx-1.14.2,安裝過程以下:

yum -y install gcc gcc-c++ make zlib pcre pcre-devel openssl openssl-devel

useradd -s /sbin/nologin www

cd /usr/local/src/

wget http://nginx.org/download/nginx-1.14.2.tar.gz

tar zxvf nginx-1.14.2.tar.gz

cd nginx-1.14.2

./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/subsys/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre

make

make install

 

#設置自啓

vim /etc/rc.local

/usr/local/nginx/sbin/nginx

 

2.1.2 安裝MySQL

一、安裝

安裝mysql5.7版本,這裏使用mysql官方的yum源進行安裝

cd /usr/local/src/

wget https://repo.mysql.com/mysql57-community-release-el7.rpm

rpm -ivh mysql57-community-release-el7.rpm

yum install -y mysql-server mysql mysql-devel

 

二、啓動mysql

systemctl start mysqld

 

三、修改密碼

mysql啓動後,系統會自動爲root用戶設置一個臨時密碼,獲取MySQL的臨時密碼:

grep "password" /var/log/mysqld.log

mysql5.7版本後,對密碼安全性增強了不少,臨時密碼只能用於登陸,登陸後須要立刻修改密碼,否則沒法執行任何sql操做,同時,對密碼長度和密碼強度有了更高要求,必須符合長度8,且必須含有數字,小寫或大寫字母,特殊字符。重置mysql的root密碼了,執行以下命令:

mysql -uroot -p

set password=password('Admin@123');
flush privileges;

 

2.1.3 安裝PHP

一、安裝依賴庫

yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel

 

二、安裝PHP7

PHP官方下載地址:http://www.php.net/downloads.php

cd /usr/local/src/

wget http://cn2.php.net/distributions/php-7.2.15.tar.gz

tar zxvf php-7.2.15.tar.gz

cd php-7.2.15

cp -frp /usr/lib64/libldap* /usr/lib/

./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-gettext --enable-bcmath --enable-sockets --with-ldap --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip

vim Makefile

找到 /^EXTRA_LIBS 開頭行,行尾加上 「-llber」

 

#編譯安裝

make

make install

cp php.ini-production /usr/local/php7/etc/php.ini

cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/

 

三、PHP配置優化

vim /usr/local/php7/etc/php.ini

post_max_size = 16M
max_execution_time = 300
memory_limit = 128M
max_input_time = 300
date.timezone = Asia/Shanghai

若是修改了參數不生效,參考文章:http://www.javashuo.com/article/p-odcmfjsv-cr.html

 

2.1.4 配置lnmp環境

一、修改nginx配置文件nginx.conf,server下添加php-fpm的整合配置,內容以下:

vim /usr/local/nginx/conf/nginx.conf

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

 

二、修改php-fpm配置文件,啓用php-fpm默認配置

cd /usr/local/php7/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf

 

2.1.5 啓動lnmp服務

systemctl start php-fpm
/usr/local/nginx/sbin/nginx

 

 

2.2 安裝zabbix

2.2.1 準備工做

一、安裝依賴庫

yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel

 

二、建立用戶

groupadd zabbix

useradd -g zabbix zabbix

 

2.2.2 安裝zabbix server

一、編譯安裝

cd /usr/local/src/

wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz

tar zxvf zabbix-4.0.4.tar.gz

cd zabbix-4.0.4

./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2

make

make install

 

說明:configure配置參數含義:

1)--with-mysql:表示啓用MySQL做爲後端存儲,若是MySQL客戶端類庫再也不默認的位置(rpm包方式安裝的MySQL,MySQL客戶端類庫在默認位置,所以只需指定「--with-mysql」便可,無需指定具體路徑),須要在MySQL的配置文件中指定路徑,指定方法是指定mysql_config的路徑,例如,若是是源碼安裝的mysql,安裝路徑爲/usr/local/mysql,就能夠這麼指定:「--with-mysql=/usr/local/mysql/bin/mysql_config」。

2)--with-net-snmp:用於支持SNMP監控所須要的組件。

3)--with-libcurl:用於支持WEB監控,VMware監控及SMTP認證所須要的組件,對於SMTP認證,須要7.20.0或以上版本。

4)--with-libxml2:用於支持VMware監控所須要的組件。

5)--enable-server、 --enable-agent、和--enable-proxy分別表示啓用zabbix的server、agent和proxy組件。

 

二、建立軟鏈接

因爲zabbix啓動腳本路徑默認指向的是/usr/local/sbin路徑,而咱們zabbix的安裝路徑是/usr/local/zabbix,所以,須要提早建立以下軟連接:

ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

ln -s /usr/local/zabbix/bin/* /usr/local/bin/

 

2.2.3 建立數據庫和初始化表

一、登陸數據庫,建立一個zabbix數據庫和zabbix用戶,操做以下:

mysql -uroot -p

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'Admin@123';
flush privileges;

 

二、開始導入zabbix的表信息,須要執行三個sql文件,sql文件在zabbix源碼包中database/mysql/目錄下。先進入這個mysql目錄,而後進入sql命令行,按照以下SQL語句執行順序導入SQL,執行以下操做:

cd database/mysql/

mysql -uroot -p

use zabbix;
source schema.sql;
source images.sql;
source data.sql;

 

2.2.4 配置zabbix server端

vim /usr/local/zabbix/etc/zabbix_server.conf

ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
ListenIP=0.0.0.0
StartPollers=5
StartTrappers=10
StartDiscoverers=10
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

參數說明:

1)ListenPort是zabbix server默認監聽端口

2)LogFile用來指定zabbix server日誌輸出路徑

3)DBHost爲數據庫的地址,若是數據庫在本機,可不作修改

4)DBName爲數據庫名稱

5)DBUser爲鏈接數據庫的用戶名

6)DBPassword爲鏈接數據量對應的用戶密碼

7)ListenIP爲zabbix server監聽的IP地址,也就是zabbix server啓動的監聽端口對哪些ip開放,Agentd爲主動模式時,這個值建議設置爲0.0.0.0。

8)StartPollers用於設置zabbix serve服務啓動時啓動Pollers(主動收集數據進程)的數量,數量越多,則服務端吞吐能力越強,同時對系統資源消耗越大。

9)StartTrappers用於設置zabbix server服務啓動時啓動Trappers(負責處理Agentd推送過來的數據的進程)的數量。Agentd爲主動模式時,zabbix server須要設置這個值大一些。

10)StartDiscoverers用於設置zabbix server服務啓動時啓動Discoverers進程的數量,若是zabbix監控報Discoverers進程忙時,須要提升該值。

11)AlertScriptsPath用來配置zabbix server運行腳本存放目錄,一些供zabbix server使用的腳本,均可以放在這裏。

 

2.2.5 啓動zabbix_server服務

一、複製啓動腳本

cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server

cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd

chmod +x /etc/init.d/zabbix_server

chmod +x /etc/init.d/zabbix_agentd

 

二、開啓自啓

chkconfig zabbix_server on

chkconfig zabbix_agentd on

 

三、啓動zabbix server

/etc/init.d/zabbix_server start

  

2.2.6 安裝與配置zabbix agent

一、zabbix agent端的安裝

zabbix agent端的安裝建議採用rpm包方式安裝,可從http://repo.zabbix.com/zabbix/下載zabbix的agent端rpm包,版本與zabbix server端保持一致,安裝以下:

cd /usr/local/src/

wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.4-1.el7.x86_64.rpm

rpm -ivh zabbix-agent-4.0.4-1.el7.x86_64.rpm

  

二、zabbix agent端的配置

vim /etc/zabbix/zabbix_agentd.conf,須要修改的內容爲以下:

LogFile=/var/log/zabbix/zabbix_agentd.log
Server=192.168.18.233
StartAgents=3
ServerActive=192.168.18.233
Hostname=agent233
Include=/etc/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1

參數說明:

1)LogFile:#zabbix agentd日誌文件路徑

2)Server:#指定zabbix server端IP地址

3)StartAgents:#指定啓動agentd進程的數量,默認是3個,設置爲0,表示關閉agentd的被動模式(zabbix server主動來agent拉取數據)。

4)ServerActive:#啓用agentd的主動模式(zabbix agent主動推送數據到zabbix server),啓動主動模式後,agentd將主動將收集到的數據發送到zabbix server端,ServerActive後面指定的ip就是zabbix server端IP。

5)Hostname:#須要監控服務器的主機名或者IP地址,此選擇的設置必定要和zabbix web端主機配置中對應的主機名一致。

6)Include:#相關配置均可以放到此目錄下,自動生效。

7)UnsafeUserParameters:#啓用agent端自定義item功能,設置此參數爲1後,就可使用UserParameter指令了。UserParameter用於自定義itme。

 

三、啓動zabbix_agent

systemctl start zabbix-agent

 

2.3 安裝zabbix gui

2.3.1 部署zabbix web

Zabbix web是php代碼編寫的,將zabbix web安裝到/usr/loca/nginx/html目錄下,所以,只需將Zabbix web的代碼放到此目錄便可。Zabbix web的代碼在Zabbix 源碼包中的frontends/php目錄下,將這個php目錄拷貝到/usr/loca/nginx/html目錄下並更名爲zabbix便可完成Zabbix web端的安裝。

cp -a /usr/local/src/zabbix-4.0.4/frontends/php/ /usr/local/nginx/html/

cd /usr/local/nginx/html/

mv php/ zabbix

 

2.3.2 防火牆開啓

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

systemctl restart iptables.service

systemctl enable iptables.service

 

關閉selinux

setenforce 0

  

2.3.3 訪問web

在瀏覽器輸入http://192.168.18.233/zabbix/setup.php,而後會檢查zabbix web運行環境是否知足,

下一步檢測PHP環境參數,以下圖:

配置數據庫鏈接,以下圖:

默認的zabbix平臺登陸用戶名爲Admin,密碼爲zabbix。(注意帳號首字母大寫)

到此部署zabbix完成,登入後界面後以下:

 

3、Grafana與zabbix整合

3.1 安裝grafana-zabbix 插件

grafana和zabbix的集成是經過插件方式實現的,所以,須要先安裝grafana-zabbix插件,grafana官方已經包含了這個插件,直接使用便可。

3.1.1 查詢插件

grafana-cli plugins list-remote|grep zabbix

id: alexanderzobnin-zabbix-app version: 3.10.0

 

3.1.2 安裝插件

grafana-cli plugins install alexanderzobnin-zabbix-app

安裝成功以後會提示咱們須要重啓grafana 服務,以使插件生效,稍後重啓。

 

3.1.3 安裝時鐘插件

安裝一個clock-panel插件,這個插件是個時鐘插件,能夠在dashboard上顯示時間用。

grafana-cli plugins install grafana-clock-panel

 

3.1.4 重啓grafana

全部須要的插件安裝完成後,執行以下命令重啓grafana服務:

systemctl restart grafana-server

 

3.2 配置zabbix數據源

全部準備工做完成後,下面就能夠進入Grafana的web界面配置數據源,點擊這個「Add data source」

進入以下界面,顯示的是默認Grafana自帶的數據源:

咱們要添加zabbix,那麼zabbix默認是以插件形式存在的,因此點擊上圖Plugins標籤,而後搜索zabbix,以下圖所示:

能夠看到,這個顯示的zabbix插件,就是咱們剛剛安裝好的。點擊這個插件,進入以下界面:

這裏點擊「Enable」,啓用這個插件。啓用zabbix插件以後,再次選擇「Data Source」標籤,以下圖所示:

能夠看到,基於zabbix的數據源已經出來了,點擊這個數據源,進入以下界面:

http://192.168.18.233/zabbix/api_jsonrpc.php

配置完成以後,點擊最下面的「Save &Test」,若是配置有問題會報錯提示,若是沒有問題會提示成功。

這樣zabbix數據源就配置完成了。最後,點擊左側導航中的zabbix圖標,選擇「Zabbix Server Dashboard」,以下圖所示: 

能夠看到,默認Dashboard已經有數據了,這個數據就是經過上面配置的數據源而來。這只是一個初步配置,後續還有不少能夠細化的東西。

若是沒有數據,能夠修改相關配置,例如對上面CPU這個Panel進行修改,能夠這樣操做,以下圖所示: 

此界面是調試出圖是否正常的方法,很是重要,首先,圖中「$datasource」用來指定數據源,「Query Mode」指定查詢模式,有「Metrics、text」等可選項,還有四個選項「Group」、 「Host」、「 Application」、「 Item」,分別對應zabbix中的主機組、主機、應用集和監控項。正常狀況下選擇「Group」後,會在「Host」中看到此「Group」下的全部主機,「 Application」和「 Item」也是相似的。

 

3.3 自定義Dashboard

除了zabbix插件自帶的Dashboard,咱們還能夠自定義須要的Dashboard,點擊Grafana左側導航,選擇建立一個Dashboard,以下圖所示:

今後圖能夠看出,默認已經存在一些Panel,能夠選擇添加,可是在添加以前,須要先作幾個變量配置,點擊右上角的齒輪按鈕,以下圖所示:

此界面是對Dashboard進行配置,這裏咱們修改Dashboard名稱爲「 Zabbix Template Linux Server」,其它保存不變,接着,點擊上圖左側的「Variables」,而後添加一個Variables,以下圖所示:

 

3.3.1自定義主機組

這裏咱們添加了一個group變量,類型爲「Query」,對應的標籤爲主機組,到時候要使用這個變量名就用$group來調用便可。 接着在「Query Options」中的Query方法,這裏是一個星號,表明全部組。就設置這麼多,最後,點擊add,group這個變量就建立好了。

 

下面解釋一下各個參數的做用:

 一、General部分

Ø name:變量的名字,好比我這裏取名爲group,到時候要使用這個變量名就用$group來調用。

Ø type: 變量類型,變量類型有多種,其中query表示這個變量是一個查詢語句,type也能夠是datasource,datasource就表示該變量表明一個數據源,若是是datasource你能夠用該變量修改整個DashBoard的數據源,變量類型還能夠是時間間隔Interval等等。這裏咱們選擇query。

Ø label: 是對應下拉框的名稱,默認就是變量名,選擇修改成「主機組」。

Ø hide: 有三個值,分別爲空,label,variable。選擇label,表示不顯示下拉框的名字。選擇variable表示隱藏該變量,該變量不會在DashBoard上方顯示出來。默認選擇爲空,這裏也選默認。

 

二、Query options部分

Ø Data source: 數據源,不用多說。

Ø Refresh: 什麼時候去更新變量的值,變量的值是經過查詢數據源獲取到的,可是數據源自己也會發生變化,因此要時不時的去更新變量的值,這樣數據源的改變纔會在變量對應的下拉框中顯示出來。Refresh有三個值能夠選擇,Never:永不更新。On Dashboard Load:在DashBoard加載時更新。On Time Range Change:在一個時間範圍內更新。可根據狀況進行選項。

Ø Query:查詢表達式,不一樣的數據源查詢表達式都不一樣(這些能夠到官網上查詢),這裏因爲是要查詢zabbix的groups信息,因此表達式爲「*」,表明全部。

Ø Regex:正則表達式,用來對抓取到的數據進行過濾,這裏默認不過濾。

Ø Sort:排序,對下拉框中的變量值作排序,排序的方式挺多的,默認是disable,表示查詢結果是怎樣下拉框就怎樣顯示。此處選disable。

 

三、Selection Options部分

Ø Multi-value:啓用這個功能,變量的值就能夠選擇多個,具體表如今變量對應的下拉框中能夠選多個值的組合。

Ø Include All option:啓用這個功能,變量下拉框中就多了一個all選項。

 

3.3.2自定義主機、item、application

按照這個方式能夠建立多個變量(host,application,item、Network)。建立方法和group基本同樣,除了name,query不同以外其它都同樣。

1、建立變量host

Name:host

Query:$group.*

 

 

二、建立變量application

Name:application

Query:$group.$host.*

  

三、建立變量item

Name:item

Query:$group.$host.$application.*

變量建立完成後,保存,以下圖:

 

3.3.3建立Graph

返回剛剛建立好的「Zabbix Template Linux Server」,點擊右上角的添加panel按鈕,選擇左邊的「Graph」,以下圖所示:

點擊編輯這個panel,進入下圖:

這裏選擇數據源爲zabbix-213,而後選擇Query Mode爲Metrics,因爲Grafana已經能夠鏈接到zabbix數據庫,因此,Group一項會列出zabbix因此的主機組,接着在Host一項中會列出對應主機組下的全部主機,同理,Application和Item項都會自動列出全部的對應內容,選擇一個須要圖形展現的監控項便可。

 

3.3.4安裝餅圖

grafana-cli plugins install grafana-piechart-panel

全部須要的插件安裝完成後,執行以下命令重啓grafana服務:

systemctl restart grafana-server

刷新界面就能夠看到以下

配置CPU採用餅圖

 

 

4、部署Prometheus

4.1 Prometheus介紹

4.1.1 Prometheus特色

做爲新一代的監控框架,Prometheus 具備如下特色:

1)強大的多維度數據模型

2)靈活而強大的查詢語句(PromQL):在同一個查詢語句,能夠對多個 metrics進行乘法、加法、鏈接、取分數位等操做。

3)易於管理: Prometheus server 是一個單獨的二進制文件,可直接在本地工做,不依賴於分佈式存儲。

4)高效:一個 Prometheus server 能夠處理數百萬的 metrics。

5)使用pull模式採集時間序列數據,這樣不只有利於本機測試並且能夠避免有問題的服務器推送壞的metrics。

6)能夠採用 push gateway的方式把時間序列數據推送至Prometheus server 端。

7)能夠經過服務發現或者靜態配置去獲取監控的targets。

8)支持多種繪圖和儀表盤模式。

9)監控目標能夠經過服務發現或靜態配置

 

4.1.2 Prometheus 適合作什麼?

Prometheus很是適合記錄純數字的時間序列,既能夠是以主機爲中心的監控,也能夠是以服務爲導向的動態架構。在微服務的世界,它支持多維度的數據集合,查詢功能很是強大。

Prometheus 是爲可用性而設計,利用它你能夠快速定位問題。每個 Prometheus Server 都是獨立的,不依賴於網絡存儲或其餘的第三方服務。能夠在部分基礎設施出現問題時仍然使用它。

 

4.1.3 Prometheus 不適合作什麼?

Prometheus 用於評估可用性。若是你想要100%的精準度,好比每一個請求的帳單,Prometheus就不是一個好的選擇,由於收集上來的數據可能沒這麼細緻、完整。對於這樣的需求,你最好用其餘的大數據系統對數據作分析。

  

4.2 Prometheus 的組件與架構

4.2.1 Prometheus 生態圈組件

Prometheus 的生態系統包括多個組件,大部分的組件都是用Go語言編寫的,所以部署很是方便,而這些組件大部分都是可選的,主要組件介紹以下:

一、Prometheus Server

Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。

Prometheus Server能夠經過靜態配置管理監控目標,也能夠配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。

其次Prometheus Server須要對採集到的監控數據進行存儲,Prometheus Server自己就是一個時序數據庫,將採集到的監控數據按照時間序列的方式存儲在本地磁盤當中。

最後Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。

Prometheus Server內置的Express Browser UI,經過這個UI能夠直接經過PromQL實現數據的查詢以及可視化。

 

二、推送網關(push gateway)

主要是實現接收由Client push過來的指標數據,在指定的時間間隔,由主程序來抓取。

因爲Prometheus數據採集基於Pull模型進行設計,所以在網絡環境的配置上必需要讓Prometheus Server可以直接與Exporter進行通訊。

當這種網絡需求沒法直接知足時,就能夠利用PushGateway來進行中轉。

能夠經過PushGateway將內部網絡的監控數據主動Push到Gateway當中。

而Prometheus Server則能夠採用一樣Pull的方式從PushGateway中獲取到監控數據。

 

三、Exporter

主要用來採集數據,並經過HTTP服務的形式暴露給Prometheus Server,Prometheus Server經過訪問該Exporter提供的接口,便可獲取到須要採集的監控數據。

常見的Exporter有不少,例如node_exporter、mysqld_exporter、statsd_exporter、blackbox_exporter、haproxy_exporter等,支持如 HAProxy,StatsD,Graphite,Redis 此類的服務監控;

 

四、告警管理器(Alertmanager)

管理告警,主要是負責實現報警功能。

在Prometheus Server中支持基於PromQL建立告警規則,若是知足PromQL定義的規則,則會產生一條告警,而告警的後續處理流程則由AlertManager進行管理。

在AlertManager中咱們能夠與郵件,Slack等等內置的通知方式進行集成,也能夠經過Webhook自定義告警處理方式。AlertManager即Prometheus體系中的告警處理中心。

 

4.2.2 Prometheus 的架構

下圖展現了Prometheus的基本架構:

 

從架構圖中能夠看出其大概的工做流程:

1)Prometheus Server 以服務發現(如 Kubernetes 等)的方式自動發現或者靜態配置添加監控目標;

2)Prometheus Server 按期從監控目標(Jobs/exporters)或 Pushgateway 中拉取數據(metrics),將時間序列數據保存到其自身的時間序列數據庫(TSDB)中;

3)Prometheus Server 經過 HTTP Server 對外開放接口,能夠給可視化工具(如 Prometheus web UI、Grafana 或本身開發的工具)用PromQL查詢/導出數據;

4)當有告警產生時,Prometheus Server 將告警信息推送到Alertmanager ,由 Alertmanager 根據配置的策略發送告警信息到對應的接收方;

5)Pushgateway 接收 「Short-lived」 類型的 Jobs 推送過來的 metrics 並緩存,等待 Prometheus Server 抓取。

 

 

 

 

 

5、Grafana與Prometheus整合

相關文章
相關標籤/搜索