天天看點

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

文章目錄

  • ​​安裝部署​​
    • ​​安裝go環境​​
  • ​​安裝Prometheus​​
  • ​​安裝node_exporter​​
  • ​​安裝mysqld_exporter​​
  • ​​安裝redis_exporter​​
  • ​​安裝Grafana​​
    • ​​配置grafana-node_exporter儀表版​​
    • ​​配置grafana-mysqld_exporter儀表版​​
    • ​​配置grafana-redis_exporter儀表版​​
  • ​​安裝Altermanager(Altermanager監控告警)​​

安裝部署

基礎環境

作業系統:CentOS 7.7

MySQL:5.7

安裝go環境

  • 選擇go安裝包 ​​傳送門​​
  • 下載下傳安裝go,及環境配置

    确定要下載下傳的go安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

wget https://studygolang.com/dl/golang/go1.13.5.linux-amd64.tar.gz   #下載下傳go安裝包

tar -C /usr/local -zxvf go1.13.5.linux-amd64.tar.gz   #解壓到/usr/local目錄下

vim /etc/profile   #打開環境變量配置檔案,末尾寫入如下内容(位置根據實際的存放位置為準)

export GO_HOME=/usr/local/go
export PATH=$GO_HOME/bin:$PATH
#添加完成後:wq儲存退出

source /etc/profile   # 重新開機環境變量
go version    #檢視版本号驗證是否安裝成功      

安裝Prometheus

下載下傳Prometheus安裝包 ​​傳送門​​

下載下傳安裝Prometheus及環境配置

确定要下載下傳的安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

mkdir -p /software/installs   #安裝包安裝目錄,根據自己習慣設定
mkdir -p /software/pkgs   #安裝包存儲目錄,根據自己習慣設定

cd /software/pkgs
wget https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz   #下載下傳Prometheus安裝包

#建立prometheus使用者
groupadd prometheus
useradd -g prometheus prometheus -d /software/installs/prometheus

cd /software/pkgs
tar -zxvf prometheus-2.14.0.linux-amd64.tar.gz -C /software/installs/   #解壓包至指定目錄,根據自己習慣

mv /software/installs/prometheus-2.14.0.linux-amd64 /software/installs/prometheus
cd /software/installs/prometheus   #進入解壓後的檔案
mkdir {data,cfg,logs,bin} -p
mv prometheus promtool bin/
mv prometheus.yml cfg/

chown -R prometheus.prometheus *

#設定環境變量
vim /etc/profile

#末尾加入如下内容
export PROMETHEUS_HOME=/software/installs/prometheus
export PATH=$PROMETHEUS_HOME/bin:$PATH
#添加後确認無誤:wq儲存并退出

source /etc/profile   #重新加載環境變量      

建立prometheus.service 的 systemd unit 檔案

vim /etc/systemd/system/prometheus.service

#加入如下内容
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/bin/prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml --storage.tsdb.path=/software/installs/prometheus/data   #這裡是重點,注意每個目錄與上面保持一緻
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且檢查無誤後:wq儲存并退出      

prometheus.yml配置檔案

#末尾處加入如下内容
    labels:
    instance: prometheus
- job_name: node
static_configs:
  - targets: ['localhost:9100']        #部落客的node_exporter安裝在本地,如果安裝在其他機器使用IP即可,9100是node_exporter的端口号
    labels:
      instance: server1                #名稱,根據自己愛好取就行了

- job_name: mysql
static_configs:
  - targets: ['localhost:9104']      #部落客的mysqld_exporter安裝在本地,如果安裝在其他機器使用IP即可,9104是mysqld_exporter的端口号
    labels:
      instance: db1                     #名稱,根據自己愛好取就行了

- job_name: redis
static_configs:
  - targets: ['localhost:9121']      #部落客的redis_exporter安裝在本地,如果安裝在其他機器使用IP即可,9121是redis_exporter的端口号
    labels:
      instance: redis1                     #名稱,根據自己愛好取就行了
#添加完成後:wq儲存退出      

啟動prometheus服務

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service      

這裡遇到了重新開機失敗的情況,經過多次嘗試終于找到問題,由于是yml格式,對縮進格式要求非常嚴格,要保證添加的配置-job_name和原來已有的保持同級,處理過程為:

檢查prometheus.service檔案配置目錄是否正确,确認沒有問題

執行​

​prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml​

​後看到啟動prometheus服務詳情資訊發現其格式有誤,這裡真的很難發現問題。

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

圖檔中的錯誤資訊為:

level=error ts=2019-12-20T07:22:15.646Z caller=main.go:736 err=“error loading config from “/software/installs/prometheus/cfg/prometheus.yml”: couldn’t load configuration (–config.file=”/software/installs/prometheus/cfg/prometheus.yml"): parsing YAML file /software/installs/prometheus/cfg/prometheus.yml: yaml: line 40: did not find expected key"

格式問題處理完成後,再使用上述指令重新開機prometheus服務就沒有問題了。

具體格式如下,紅框内縮進格式一定要保持一緻:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

檢視prometheus運作狀态

systemctl status prometheus.service      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

Prometheus自帶有簡單的UI, http://ip:9090/targets

如果通路不了,且使用的是阿裡雲伺服器,請到阿裡雲控制台安全組開放9090端口,開啟9090端口後通路結果如下:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

安裝node_exporter

node_exporter也是需要go的環境,安裝在被監控的裝置上(本文是都安裝在同一台機器)

下載下傳node_exporter安裝包 ​​傳送門​​

下載下傳安裝node_exporter及環境配置

确定要下載下傳的安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

cd /software/pkgs
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

#解壓到prometheus目錄下
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /software/installs/prometheus/

mv /software/installs/prometheus/node_exporter-0.18.1.linux-amd64 /software/installs/prometheus/node_exporter   #重命名
cd /software/installs/prometheus/node_exporter   #進入解壓後的檔案
mkdir bin -p
mv node_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/node_exporter   #改變node_exporter所屬使用者及使用者組

#設定環境變量
vim /etc/profile

#末尾加入如下内容
export NODE_EXPORTER_HOME=/software/installs/prometheus/node_exporter
export PATH=$NODE_EXPORTER_HOME/bin:$PATH
#添加後确認無誤:wq儲存并退出

source /etc/profile   #重新加載環境變量      

建立node_exporter.service的 systemd unit 檔案

vim /usr/lib/systemd/system/node_exporter.service

#加入如下内容
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/node_exporter/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且檢查無誤後:wq儲存并退出      

啟動node_exporter服務

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service      

檢視node_exporter運作狀态

systemctl status node_exporter.service      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

如果通路http://ip:9090/targets看不到node服務節點,且使用的是阿裡雲伺服器,請到阿裡雲控制台安全組開放9100端口。

注意事項

如果不想使用.service檔案處理服務啟動,或找不到添加啟動服務檔案的目錄,可以使用如下方式啟動并設定背景運作:

#啟動服務并設定背景運作
cd /software/installs/prometheus/node_exporter /bin

nohup node_exporter &   #啟動node_pxporter并背景運作,推薦cd到目錄下再運作,這樣nohup的日志就會存在目前目錄,如果在系統根目錄下運作,所有的nohup.out日志檔案會混淆

ps -ef | grep mysqld_exporter #檢查程序的方式檢視是否運作成功,如果沒有運作成功就去掉nohup直接運作檢視一下錯誤原因      

安裝mysqld_exporter

mysqld_exporter也是需要go的環境,安裝在被監控的裝置上(本文是都安裝在同一台機器)

下載下傳mysqld_exporter安裝包 ​​傳送門​​

下載下傳安裝mysqld_exporter及環境配置

确定要下載下傳的安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

cd /software/pkgs

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
#解壓到prometheus目錄下
tar zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /software/installs/prometheus

mv /software/installs/prometheus/mysqld_exporter-0.12.1.linux-amd64 /software/installs/prometheus/mysqld_exporter   #重命名
cd /software/installs/prometheus/mysqld_exporter   #進入解壓後的檔案
mkdir {bin,cfg} -p
mv mysqld_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/mysqld_exporter #改變mysqld_exporter所屬使用者及使用者組

#設定環境變量
vim /etc/profile

#末尾加入如下内容
export MYSQLD_EXPORTER_HOME=/software/installs/prometheus/mysqld_exporter
export PATH=$MYSQLD_EXPORTER_HOME/bin:$PATH
#添加後确認無誤:wq儲存并退出

source /etc/profile   #重新加載環境變量      

建立mysqld_exporter.service的 systemd unit 檔案

vim /usr/lib/systemd/system/mysqld_exporter.service

#加入如下内容
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/mysqld_exporter/bin/mysqld_exporter --config.my-cnf=/software/installs/prometheus/mysqld_exporter/cfg/.my.cnf
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且檢查無誤後:wq儲存并退出      

添加mysqld_exporter服務的mysql使用者

mysqld_exporter需要連接配接到Mysql,是以需要Mysql的權限,我們先為它建立使用者并賦予所需的權限。

mysql -uroot -p密碼
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' identified by 'mysql_monitor';
mysql> GRANT SELECT ON *.* TO 'mysql_monitor'@'localhost';      

建立.my.cnf檔案

vim /software/installs/prometheus/mysqld_exporter/cfg/.my.cnf

#加入如下内容
[client]
user=mysql_monitor
password=mysql_monitor
#添加完成後:wq儲存并退出      

啟動mysqld_exporter服務

systemctl daemon-reload
systemctl enable mysqld_exporter.service
systemctl start mysqld_exporter.service      

檢視mysqld_exporter運作狀态

systemctl status mysqld_exporter.service      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

如果通路http://ip:9090/targets看不到mysql服務節點,且使用的是阿裡雲伺服器,請到阿裡雲控制台安全組開放9104端口。

注意事項

如果不想使用.service檔案處理服務啟動,或找不到添加啟動服務檔案的目錄,可以使用如下方式啟動并設定背景運作:

#啟動服務并設定背景運作
cd /software/installs/prometheus/mysql_exporter/bin

nohup mysqld_exporter -config.my-cnf=../cfg/.my.cnf &   ##啟動mysqld_exporter并背景運作,推薦cd到目錄下再運作,這樣nohup的日志就會存在目前目錄,如果在系統根目錄下運作,所有的nohup.out日志檔案會混淆

ps -ef | grep mysqld_exporter #檢查程序的方式檢視是否運作成功,如果沒有運作成功就去掉nohup直接運作檢視一下錯誤原因      

安裝redis_exporter

下載下傳redis_exporter安裝包 ​​傳送門​​

下載下傳安裝redis_exporter及環境配置

确定要下載下傳的安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

cd /software/pkgs

wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz

#解壓到prometheus目錄下
tar zxvf redis_exporter-v1.3.5.linux-amd64.tar.gz -C /software/installs/prometheus/

mv /software/installs/prometheus/redis_exporter-v1.3.5.linux-amd64 /software/installs/prometheus/redis_exporter   #重命名
cd /software/installs/prometheus/redis_exporter   #進入解壓後的檔案
mkdir {bin,cfg} -p
mv redis_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/redis_exporter   #改變redis_exporter所屬使用者及使用者組

#設定環境變量
vim /etc/profile

#末尾加入如下内容
export REDIS_EXPORTER_HOME=/software/installs/prometheus/redis_exporter
export PATH=$REDIS_EXPORTER_HOME/bin:$PATH
#添加後确認無誤:wq儲存并退出

source /etc/profile   #重新加載環境變量      

建立redis_exporter.service的 systemd unit 檔案

vim /usr/lib/systemd/system/redis_exporter.service

#加入如下内容
[Unit]
Description=redis_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/redis_exporter/bin/redis_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且檢查無誤後:wq儲存并退出      

啟動mysqld_exporter服務

systemctl daemon-reload
systemctl enable redis_exporter.service
systemctl start redis_exporter.service      

檢視mysqld_exporter運作狀态

systemctl status redis_exporter.service      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

如果通路http://ip:9090/targets看不到redis服務節點,且使用的是阿裡雲伺服器,請到阿裡雲控制台安全組開放9121端口。

注意事項

如果不想使用.service檔案處理服務啟動,或找不到添加啟動服務檔案的目錄,可以使用如下方式啟動并設定背景運作:

#啟動服務并設定背景運作
cd /software/installs/prometheus/redis_exporter/bin

nohup ./redis_exporter exporter redis://localhost:6379 &   #啟動redis_exporter并背景運作,推薦cd到目錄下再運作,這樣nohup的日志就會存在目前目錄,如果在系統根目錄下運作,所有的nohup.out日志檔案會混淆

ps -ef | grep redis_exporter  #檢查程序的方式檢視是否運作成功,如果沒有運作成功就去掉nohup直接運作檢視一下錯誤原因      

安裝配置成果:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

安裝Grafana

下載下傳Grafana安裝包 ​​傳送門​​

下載下傳安裝Grafana及環境配置

确定要下載下傳的安裝包後,右鍵複制連結位址,在終端使用wget進行下載下傳,操作指令如下:

cd /software/pkgs

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

#安裝grafana,無需指定安裝目錄,預設即可,否則可能會由于依賴等問題導緻安裝失敗
yum localinstall grafana-6.5.2-1.x86_64.rpm      

設定grafana服務開機自啟動及開啟服務

systemctl daemon-reload
systemctl enable grafana-server.service
systemctl start grafana-server.service      

檢視mysqld_exporter運作狀态

systemctl status grafana-server.service      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

登入grafana圖形化界面

通路grafana網頁: http://ip:3000/login ,預設使用者名“admin”預設密碼“admin”,登入後重置密碼。

如果通路http://ip:3000/login失敗,且使用的是阿裡雲伺服器,請到阿裡雲控制台安全組開放3000端口。

不知道是我操作的問題還是其他原因,登入後修改密碼提示未認證,修改密碼後登入不跳轉,我強制重新整理之後又自動登入了,疑惑!

登入後界面:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

配置grafana-node_exporter儀表版

  • 添加data sources,點選添加選擇prometheus即可
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  • Name預設Prometheus,URL填寫上面配置的prometheus位址http://ip:9090,其他預設,儲存即可
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  • 在Dashboards頁面導入Prometheus Status模闆,這裡選擇導入官網的模闆
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  • 導入Prometheus儀表版,Dashboards–Manage–import
  • 在 Granfana.com-Dashboard中填寫8919,點選load即可。(https://grafana.com/dashboards 中可以直接搜尋prometheus,copy ID to Clipboard,grafana官網提供了大量的儀表闆模闆可以使用)
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  • 點選“import”,執行導入,效果如下
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

配置grafana-mysqld_exporter儀表版

導入Prometheus儀表版,Dashboards–Manage–import。方式同上

在 Granfana.com-Dashboard中填寫7362,點選load即可。(https://grafana.com/dashboards 中可以直接搜尋MySQL Overview,copy ID to Clipboard,grafana官網提供了大量的儀表闆模闆可以使用)。方式同上

修改儀表版名稱和選擇“prometheus”為Prometheus即可(如果這裡提示沒有資料庫,就是前面的data sources沒有添加好需要重新檢查)

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

進入儀表闆就可以在儀表版看到相應的監控

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

配置grafana-redis_exporter儀表版

導入Prometheus儀表版,Dashboards–Manage–import

在 Granfana.com-Dashboard中填寫2751,點選load即可。(https://grafana.com/dashboards 中可以直接搜尋Prometheus Redis,copy ID to Clipboard,grafana官網提供了大量的儀表闆模闆可以使用)

修改儀表版名稱和選擇“prom”為Prometheus即可(如果這裡提示沒有資料庫,就是前面的data sources沒有添加好需要重新檢查)

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

進入儀表闆就可以在儀表版看到相應的監控(redis無密碼)

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

安裝Altermanager(Altermanager監控告警)

第一種:使用grafana自帶的報警功能

  • 配置釘釘報警通知
  1. 配置釘釘機器人

    打開要通知的釘釘群->群設定->點選“智能群助手”

    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    點選“添加機器人”
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    選擇自定義:
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    點選“添加”按鈕,輸入機器人名稱,選擇安全設定後點選“完成”
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    注意,由于請求實作的原因,必須選擇ip位址段,隻有填寫的IP位址請求才會被接受,否則後面的測試将不會收到消息,也就是說ip位址必須包含grafana安裝的位址。
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  2. grafana添加報警通知設定
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
    警報發送的是一個URL位址,這裡需要注意一下,需要修改為自己的grafana位址。
vim /etc/grafana/grafana.ini
# 修改為自己grafana服務的通路位址
domain = 39.98.134.170
root_url = http://ip:3000      

修改完成後,儲存并退出,然後重新開機grafana服務:

systemctl daemon-reload
systemctl restart grafana-server      

如果釘釘收不到報警消息,關閉發送圖檔開關試試。

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

配置郵件報警通知

這裡使用qq郵箱

登入qq賬戶,點選“設定”、“賬戶”,開啟服務,開啟郵件服務後,qq郵件服務端口是465:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

同時,點選“生成授權碼”,根據提示發送短信并在該頁面擷取授權碼,複制下來以備使用:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

修改grafana郵箱配置

vim /usr/share/grafana/conf/grafana.ini      
CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

修改完成後,儲存并退出,然後重新開機grafana服務:

systemctl daemon-reload
systemctl restart grafana-server      

去grafana添加郵件報警

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送

添加完成後,點選“send test”,就會接收到報警測試郵件:

CentOS7+Prometheus+Grafana+Altermanager監控告警+釘釘通知+郵件推送
  • 配置企業微信報警通知

    公司沒有使用企業微信,這裡暫留,以後用到再完善。

繼續閱讀