Prometheus+Grafana+Onealert

Prometheus(由go語言(golang)開發)是一套開源的監控&報警&時間序列數據庫的組合。適合監控docker容器。

基于時間序列的數值數據的容器監控解決方案。

按照時間順序記錄系統、設備狀態變化的數據被稱為時序數據

優勢

  易于管理

  輕易獲取服務內部狀態

  高效靈活的查詢語句

  支持本地和遠程存儲

  采用http協議,默認pull模式拉取數據,也可以通過中間網關push數據

  支持自動發現

  可擴展

  易集成

grafana 將Prometheus收集到的數據以圖形化展現

通過grafana+onealert實現報警

模擬項目---對遠程機器進行監控

實現7*24小時監控

報警分級

一級 電話通知

二級 微信通知

三級 郵件通知

完成報警處理機制

異地集中監控

實驗環境準備

grafana服務器一臺,prometheus服務器一臺,被監控服務器一臺

初始化服務器

設置好IP后,修改/etc/hosts

172.16.30.217 prometheus

172.16.30.222 grafana

172.16.30.223 agent

1 #!/bin/bash

2 for li in `cat ip.txt`

3 do

4? ? echo "lianjie $li..."

5? ? sshpass -p saka ssh -o "StrictHostKeyChecking=no" root@$li mv /etc/hosts /etc/hosts.bk

6? ? scp /etc/hosts root@$li:/etc/

7 done

時間同步

由于連接了外網,使用了外網的NTP server 在此只做時間檢查

#!/bin/bash

for li in `cat ip.txt`

do

sshpass -p saka ssh -o StrictHostKeyChecking=no root@$li date

done

prometheus安裝

tar -xvf prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local

mv prometheus-2.5.0.linux-amd64 prometheus

cd prometheus

./prometheus --config.file="/usr/local/prometheus/prometheus.yml" & //執行后臺安裝

ss -natlp | grep 9090 //測試端口占用情況

ip:9090 即可看到prometheus的自帶界面

默認監控自己

監控項有搜索提示

監控遠程主機

在被監控的主機上安裝組件(所有需要監控的機器都需要安裝)

監控不同的服務需要不同的組件,比如mysqld_exporter

安裝node_exporter(主要監控系統信息)

tar -xvf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local

mv node_exporter-0.16.0.linux-amd64 node_exporter

cd node_exporter

nohup ./node_exporter & //永久運行node_exporter

查看是否運行

lsof -i:9100 //node_exporter 默認監聽9100端口

通過ip:9100/metrices 來查看監控的數據

回到prometheus服務器的配置文件中添加被監控機器的地址段

vim prometheus.yml

- job_name: 'agent1'

? static_configs:

? - targets: ['172.16.30.223:9100'] //嚴格控制縮進

改完后重啟服務

回到prometheus服務器的監控頁面,已經可以看到添加的被監控主機

監控mysqld_exporter

解壓安裝

安裝mysql(start enable)

lsof -i:3306 //查看是否運行

創建mysql賬號,只允許本機訪問

grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123';

刷新權限

flush privileges;

完成之后,需要去添加配置文件來給prometheus登錄Mysql來拉取數據

vim /usr/local/mysqld_exporter/.my.cnf

[client]

user=mysql_monitor

password=123

運行mysqld_exporter

nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf & //添加參數,指明配置文件路徑

ss -natlp | grep 9104 //確認已啟動

到網頁中查看是否已搜集到數據

回到prometheus服務器的配置文件中添加被監控機器的地址段

? - job_name: 'agent1_mariadb'

static_configs:

- targets: ['172.16.30.223:9104']

修改完成后重啟prometheus服務,在web上已經能看到監控的targets

grafana圖形工具

grafana是開源的度量分析和可視化工具,可以通過將prometheus采集的數據分析,查詢,然后進行可視化的展示,并實現報警。監聽3000端口

安裝

rpm -ivh grafana-5.3.4-1.x86_64.rpm

systemctl start grafana-server

systemctl enable grafana-server

通過Ip:3000進入 grafana測試頁面,默認用戶名密碼均為admin,第一次登陸后需要更改密碼

與prometheus關聯

添加數據源

點擊頁面中的add data source添加prometheus服務器的信息

點+給數據源做圖形展示

可以通過兩種方式來篩選監控數據

1.{instance="IP:PORT"}

2.{job="JOB NAME"} //job name在prometheus的配置文件中

通過grafana監控mysql數據

需要安裝模板并修改配置文件

修改配置文件

vim /etc/grafana/grafana.ini

[dashboards.json]

enabled = true //開啟json

path = /var/lib/grafana/dashboards //模板路徑

cd /var/lib/grafana/dashboards后

git clone https://github.com/percona/grafana-dashboards.git //下載模板

cp -r grafana-dashboards/dashboards/ /var/lib/grafana? //把模板拉出來

systemctl restart grafana-server

在grafana中導入json 文件

頁面中存在上傳頁面

選擇上傳mysql_overview.json

//上傳后沒有數據,因為沒設置數據源

//設置數據源

//默認名字為Prometheus,之前的名字叫prometheus_data

//一覺睡醒grafana沒采集到數據,prometheus報錯no data points 發現3臺機器時間不同步,重新校時 ntpdate cn.ntp.org.cn 所有機器保證時間同步

更改dashboards界面 https://grafana.com/grafana/dashboards?

編號9276比較酷炫,是收集系統信息的,需要node_exporter

grafana+onealert實現報警

prometheus報警需要alertmanager組件,且報警規則需要手動添加,并不友好,所以使用grafana+onealert實現報警

onealert需要注冊

https://caweb.aiops.com/#/? //頁面有創建提示

在grafana中配置webhook url

在grafana中創建Notification channel 類型為webhook

鏈接地址不能填錯

將webhook Notification Channel添加到grafana Alert中

在grafana dashboards中添加報警觸發條件

cat /dev/urandom | md5sum

//目前未付費狀態 只能微信推送或者釘釘 //綁定微信后已經可以從郵箱和微信推送獲取報警信息

dpkg-reconfigure openssh-server重新生成ssh配置文件

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。