你們必定要先看詳細的理論教程,再開始搭建,這樣報錯後才容易找到突破口
參考文檔html
https://www.cnblogs.com/afterdawn/p/9020129.html https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-prometheus-getting-started-and-practice/ https://www.hi-linux.com/posts/25047.html 參考grafana安裝 https://www.ctolib.com/docs/sfile/prometheus-book/ https://www.ctolib.com/docs/sfile/prometheus-book/quickstart/index.html 理論 詳解教程 https://codegreen.cn/2018/09/28/prometheus-install/#31%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE-alertmanager
Prometheus是由SoundCloud開發的開源監控報警系統和時序列數據庫(TSDB)。Prometheus使用Go語言開發,是Google BorgMon監控系統的開源版本。node
多維度數據模型。
靈活的查詢語言。
不依賴分佈式存儲,單個服務器節點是自主的。
經過基於HTTP的pull方式採集時序數據。
能夠經過中間網關進行時序列數據推送。
經過服務發現或者靜態配置來發現目標服務對象。
支持多種多樣的圖表和界面展現,好比Grafana等。linux
Prometheus Server --- Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。
Push Gateway --- Prometheus數據採集基於Pull模型,當Prometheus Server不能直接與Exporter進行通訊時,可利用PushGateway來進行中轉。即經過PushGateway將內部網絡的監控數據主動Push到Gateway當中,Prometheus Server再採用一樣Pull的方式從PushGateway中獲取監控數據。
Exporter --- 數據採集組件,它並不向中央服務器發送數據,而是等待中央服務器主動前來抓取。其將監控數據採集的端點經過HTTP服務的形式暴露給Prometheus Server,Prometheus Server經過訪問該Exporter提供的Endpoint端點,便可獲取到須要採集的監控數據。
alertmanager --- 若Promtheus Server中發現某監控項知足PromQL中定義的告警規則,則會產生一條告警,並將其交於AlertManager進行管理。在AlertManager中能夠配置各類通知方式,也能夠定義Webhook自定義告警處理方式。AlertManager即Prometheus體系中的告警處理中心。git
--------- ip --------------------------- 安裝軟件 ---------------------
192.168.20.135 | Prometheus、grafana 、alertmanager
192.168.20.137 | node_exporter
------------------------------------------------------------------------------github
wget https://github.com/prometheus/prometheus/releases/tag/v2.1.0/prometheus-2.1.0.linux-amd64.tar.gz tar -xvf prometheus-2.1.0.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/prometheus-2.1.0.linux-amd64 /usr/local/prometheus-2.1
啓動prometheusweb
cd /usr/local/prometheus-2.1 ./prometheus & netstat -tunlp|grep 9090
prometheus server是能夠獲取到本機數據的,可用如下命令查看數據庫
curl localhost:9090/metrics
web頁面json
http://192.168.20.135:9090/targets
node_exporter我安裝在192.168.20.137上,你也能夠安裝在server上,採集server數據。vim
wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0-rc.3/node_exporter-0.16.0-rc.3.linux-amd64.tar.gz tar -xvf node_exporter-0.16.0-rc.3.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/node_exporter-0.16.0-rc.3.linux-amd64/ /usr/local/node_exporter-0.16
啓動node_exporter服務器
cd /usr/local/node_exporter-0.16 ./node_exporter & netstat -tunlp|grep 9100
查看各項監控指標是否有數據了:
curl localhost:9100/metrics
在server端prometheus.yml末尾添加job:
vim /usr/local/prometheus-2.1/prometheus.yml - job_name: 'export_test2' static_configs: - targets: ['192.168.20.137:9100'] labels: instance: 'node2'
重啓prometheus:
killall prometheus cd /usr/local/prometheus-2.1/ ./prometheus
在prometheus的web界面查看:status --> targets
咱們能夠隨便查看一個監控項,看是否獲取到值,也可在Graph下進行數據的查找與曲線圖的展現
grafana與prometheus進行對接,能夠對數據進行更好的展現
wget https://dl.grafana.com/oss/release/grafana-5.4.3.linux-amd64.tar.gz tar -xvf grafana-5.4.3.linux-amd64.tar.gz -C /usr/local/
啓動grafana
cd /usr/local/grafana-5.4.3/bin/ ./grafana-server &
登陸grafana的web頁面
http://192.168.20.135:3000/ admin/admin
Add data source --> http://192.168.20.135:9090 --> Dashboards --> prometheus2.0 --> save&test
下載方法:https://grafana.com/dashboards/405 --> Dashboards -->在如圖搜索框搜索node-exporter-server-metrics -->點擊第一個進去 --> version --> download
在grafana的Dashboard 中導入模板的json文件
同時存在多個job,能夠勾選展現。
此監控模板基於node_exporter 能夠更好的展現多項基本監控項
模板url: https://grafana.com/dashboards/8919
在grafana所在server安裝餅圖插件,並重啓grafana
cd /usr/local/grafana/bin ./grafana-cli plugins install grafana-piechart-panel killall grafana-server ./grafana-server restart &
圖形界面配置
grafana + --> import --> 將以上該模板的url 填到Grafana.com Dashboard中 -->
展現
如下規則定義當job export_test2的node_exporter服務掛掉,即產生一個告警
vim /usr/local/prometheus-2.1/rule.yml groups: - name: alert-rules #告警的分組,後續告警優化時,可經過分組作優化配置 rules: - alert: InstanceStatus #告警規則名稱 expr: up{job="export_test2"} == 0 #1是服務正常 ,0服務掛了 for: 10s #評估等待10s,等待期間報警狀態爲pending labels: #此標籤可用於match以後的通知操做 severity: 'critical' annotations: #描述告警信息 description: 服務器 已宕機 summary: 服務器 運行狀態
在prometheus的配置文件中添加該規則
vim /usr/local/prometheus-2.1/prometheus.yml rule_files: - "/usr/local/prometheus-2.1/rule.yml"
https://github.com/prometheus/alertmanager/releases/download/v0.15.2/alertmanager-0.15.2.linux-amd64.tar.gz tar -xvf alertmanager-0.15.2.linux-amd64.tar.gz -C /usr/local mv /usr/local/alertmanager-0.15.2.linux-amd64 /usr/local/alertmanager-0.15.2
啓動alertmanager
cd /usr/local/alertmanager-0.15.2 ./alertmanager &
在prometheus的配置文件中配置alertmanager地址,讓其知曉alertmanager的地址,以傳送告警信息
vim /usr/local/prometheus-2.1/prometheus.yml alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']
重啓promethous
killall prometheus cd /usr/local/prometheus-2.1/ ./prometheus
測試:
此時關閉192.168.20.137的node_exporter服務
killall node_exporter
查看prometheus的web界面,已經產生告警:
再查看alertmanager已經接收到來自prometheus的告警:
新建alertmanager.yml,因爲要進行發郵件測試,將等待時間和間隔時間設置的很短
vim /usr/local/alertmanager-0.15.2/alertmanager.yml global: #若全部的郵件配置使用相同的SMTP配置,則能夠直接定義全局的SMTP配置 smtp_smarthost: 'smtp.126.com:25' smtp_from: 'xxxx@126.com' smtp_auth_username: 'xxxx@126.com' smtp_auth_password: 'xxx121212' #這是受權碼,不是密碼, smtp_require_tls: false #templates: #默認Alertmanager使用系統自帶的默認通知模板 ,用戶也可在此自定義模板 # - '/alertmanager/template/*.tmpl' route: #頂級路由必須匹配全部報警,由於他要接受全部報警,再分匹配到分支路由上 group_by: ['alertname'] #知足group_by中定義標籤名稱,那麼這些告警將會合併爲一個通知發送給接收器。 group_wait: 1s #同一group的等待時間,在等待時間內當前group接收到了新的告警,這些告警將會合併爲一個通知向receiver發送 group_interval: 5s #同一Gourp發送告警通知的時間間隔 repeat_interval: 20s #在連續告警觸發的狀況下,重複發送告警的時間間隔 receiver: 'default-receiver' routes: #分支路由,可設置不一樣的匹配規則 - receiver: 'default-receiver' match: #匹配告警規則的key:value severity: 'critical' receivers: - name: 'default-receiver' email_configs: - to: '1xxxx@qq.com' send_resolved: true #告警解除發送恢復通知
重啓alertmanager
killall alertmanager cd /usr/local/alertmanager-0.15.2 ./alertmanager &
查看alertmanager的配置是否加載,點擊web頁面的status
查看接收到的郵件報警信息
解除報警後的恢復郵件