環境說明
軟件 |
版本 |
操作系統 |
IP地址 |
Grafana |
5.4.3-1 |
Centos7.5 |
192.168.18.231 |
Prometheus |
2.6.1 |
Centos7.5 |
192.168.18.232 |
Zabbix |
4.0.4 |
Centos7.5 |
192.168.18.233 |
一、部署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,一般情況下無需修改配置文件。
二、部署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
1、安裝
安裝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
2、啟動mysql
systemctl start mysqld
3、修改密碼
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
1、安裝依賴庫
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
2、安裝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/
3、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
如果修改了參數不生效,參考文章:https://blog.51cto.com/msiyuetian/2355134
2.1.4 配置lnmp環境
1、修改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; }
2、修改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 准備工作
1、安裝依賴庫
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel
2、創建用戶
groupadd zabbix
useradd -g zabbix zabbix
2.2.2 安裝zabbix server
1、編譯安裝
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組件。
2、創建軟連接
由於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 創建數據庫和初始化表
1、登錄數據庫,創建一個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;
2、開始導入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服務
1、復制啟動腳本
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
2、開啟自啟
chkconfig zabbix_server on
chkconfig zabbix_agentd on
3、啟動zabbix server
/etc/init.d/zabbix_server start
2.2.6 安裝與配置zabbix agent
1、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
2、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。
3、啟動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完成,登入后界面后如下:
三、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這個變量就創建好了。
下面解釋一下各個參數的作用:
1、General部分
Ø name:變量的名字,比如我這里取名為group,到時候要使用這個變量名就用$group來調用。
Ø type: 變量類型,變量類型有多種,其中query表示這個變量是一個查詢語句,type也可以是datasource,datasource就表示該變量代表一個數據源,如果是datasource你可以用該變量修改整個DashBoard的數據源,變量類型還可以是時間間隔Interval等等。這里我們選擇query。
Ø label: 是對應下拉框的名稱,默認就是變量名,選擇修改為“主機組”。
Ø hide: 有三個值,分別為空,label,variable。選擇label,表示不顯示下拉框的名字。選擇variable表示隱藏該變量,該變量不會在DashBoard上方顯示出來。默認選擇為空,這里也選默認。
2、Query options部分
Ø Data source: 數據源,不用多說。
Ø Refresh: 何時去更新變量的值,變量的值是通過查詢數據源獲取到的,但是數據源本身也會發生變化,所以要時不時的去更新變量的值,這樣數據源的改變才會在變量對應的下拉框中顯示出來。Refresh有三個值可以選擇,Never:永不更新。On Dashboard Load:在DashBoard加載時更新。On Time Range Change:在一個時間范圍內更新。可根據情況進行選項。
Ø Query:查詢表達式,不同的數據源查詢表達式都不同(這些可以到官網上查詢),這里由於是要查詢zabbix的groups信息,所以表達式為“*”,代表所有。
Ø Regex:正則表達式,用來對抓取到的數據進行過濾,這里默認不過濾。
Ø Sort:排序,對下拉框中的變量值做排序,排序的方式挺多的,默認是disable,表示查詢結果是怎樣下拉框就怎樣顯示。此處選disable。
3、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.*
2、創建變量application
Name:application
Query:$group.$host.*
3、創建變量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采用餅圖
四、部署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語言編寫的,因此部署非常方便,而這些組件大部分都是可選的,主要組件介紹如下:
1、Prometheus Server
Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。
Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。
其次Prometheus Server需要對采集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將采集到的監控數據按照時間序列的方式存儲在本地磁盤當中。
最后Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。
Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。
2、推送網關(push gateway)
主要是實現接收由Client push過來的指標數據,在指定的時間間隔,由主程序來抓取。
由於Prometheus數據采集基於Pull模型進行設計,因此在網絡環境的配置上必須要讓Prometheus Server能夠直接與Exporter進行通信。
當這種網絡需求無法直接滿足時,就可以利用PushGateway來進行中轉。
可以通過PushGateway將內部網絡的監控數據主動Push到Gateway當中。
而Prometheus Server則可以采用同樣Pull的方式從PushGateway中獲取到監控數據。
3、Exporter
主要用來采集數據,並通過HTTP服務的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的接口,即可獲取到需要采集的監控數據。
常見的Exporter有很多,例如node_exporter、mysqld_exporter、statsd_exporter、blackbox_exporter、haproxy_exporter等,支持如 HAProxy,StatsD,Graphite,Redis 此類的服務監控;
4、告警管理器(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 抓取。