日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB监控及报警

發(fā)布時(shí)間:2023/12/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB监控及报警 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載請(qǐng)注明出處:https://www.cnblogs.com/shining5/p/11142357.html

MongoDB監(jiān)控及報(bào)警

Prometheus是由SoundCloud開(kāi)發(fā)的開(kāi)源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(kù),其使用go語(yǔ)言開(kāi)發(fā)。基本原理是通過(guò)HTTP協(xié)議周期性抓取被監(jiān)控組件的狀態(tài),任意組件只要提供對(duì)應(yīng)HTTP接口就可以接入監(jiān)控。Prometheus服務(wù)端產(chǎn)生告警向Altermanager發(fā)送告警。

Grafana是一個(gè)開(kāi)源的度量分析和可視化套件,常用于可視化基礎(chǔ)設(shè)施和應(yīng)用程序分析的時(shí)間序列數(shù)據(jù)。

監(jiān)控

目標(biāo):可視化顯示MongoDB的運(yùn)行狀態(tài)。
工具:Grafana,Prometheus
因?yàn)間rafana本身數(shù)據(jù)源沒(méi)有mongodb,所以中間加上Prometheus來(lái)對(duì)mongodb進(jìn)行監(jiān)控。

服務(wù)端組件:
Prometheus #服務(wù)端
Grafana #前端展示

客戶(hù)端組件:
node_exporter
mongodb_exporter

步驟

安裝go環(huán)境

$ yum install go $ go version go version go1.6.3 linux/amd64

安裝Prometheus

$ wget https://github.com/prometheus/prometheus/releases/download/v2.11.0-rc.0/prometheus-2.11.0-rc.0.linux-amd64.tar.gz $ tar xvf prometheus-2.11.0-rc.0.linux-amd64.tar.gz -C /usr/local/ $ ln -sv /usr/local/prometheus-2.11.0.linux-amd64/ /usr/local/prometheus $ cd /usr/local/prometheus

備注:下載2.0以上版本,否則讀取規(guī)則的時(shí)候報(bào)錯(cuò)

修改配置文件
將監(jiān)管的ip地址添加到prometheus.yml中

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'mongo1'static_configs:- targets: ['10.13.72.26:9001'] - job_name: 'node'static_configs:- targets: ['10.13.72.26:9100']

其中'10.13.72.26:9001'是mongodb_exporter監(jiān)聽(tīng)端口,后面安裝mongodb_exporter會(huì)提到

啟動(dòng)服務(wù)

nohup ./prometheus --web.enable-lifecycle &

備注:啟動(dòng)時(shí)添加–web.enable-lifecycle可以自動(dòng)加載配置文件,可以通過(guò)?curl -X POST http://localhost:9090/-/reload?重新加載配置

prometheus內(nèi)置列一個(gè)web界面,可以通過(guò)http://install_host:9090訪(fǎng)問(wèn)。在Status->Targets頁(yè)面中,我們可以看到配置的mongo1,狀態(tài)為Down,說(shuō)明未檢測(cè)到數(shù)據(jù)。如何解決呢?需要安裝好node_exporter,mongodb_exporter狀態(tài)才會(huì)變?yōu)閁p

安裝node_exporter

node_exporter服務(wù)端agent,用go語(yǔ)言編寫(xiě),主要用于采集系統(tǒng)數(shù)據(jù),如cup,內(nèi)存,負(fù)載,磁盤(pán),網(wǎng)絡(luò)等信息。
啟動(dòng)后監(jiān)聽(tīng)9100端口。

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-amd64.tar.gz $ tar xvf node_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local/ $ nohup /usr/local/node_exporter-0.14.0.linux-amd64/node_exporter &

安裝mongodb_exporter

wget https://github.com/dcu/mongodb_exporter/releases/mongodb_exporter-linux-amd64 nohup ./mongodb_exporter-linux-amd64

啟動(dòng)后占用9001端口

安裝grafana

wget https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm sudo yum localinstall grafana-6.2.5-1.x86_64.rpm

啟動(dòng)后默認(rèn)占用3000端口

sudo service grafana-server start

grafana顯示mongodb數(shù)據(jù)

步驟1: 打開(kāi)grafana前端頁(yè)面http://install_host:3000

步驟2:在Data Sources添加數(shù)據(jù)源


步驟3: Create dashboard

import一個(gè)已經(jīng)做好的表盤(pán)

https://grafana.com/dashboards/2583
DownloadJSON

improt此表盤(pán)


效果圖

報(bào)警

Prometheus的報(bào)警分為兩部分,通過(guò)在Prometheus服務(wù)端設(shè)置告警規(guī)則,Prometheus服務(wù)端產(chǎn)生報(bào)警向Alertmanager發(fā)送報(bào)警。Alertmanager管理這些報(bào)警,通過(guò)電子郵件,PagerDuty和HipChat等方法發(fā)送通知。

設(shè)置報(bào)警及通知的步驟:
* 配置Alertmanager
* 配置Prometheus對(duì)Alertmanager訪(fǎng)問(wèn)
* 配置ruler報(bào)警規(guī)則

我們的需求是能將報(bào)警信息發(fā)送到企業(yè)微信中。
* 注冊(cè)企業(yè)微信賬號(hào)(不需要企業(yè)認(rèn)證)
* 創(chuàng)建第三方應(yīng)用如Prometheus,填寫(xiě)應(yīng)用信息(此應(yīng)用的配置信息用于altermanager.yml配置及接收?qǐng)?bào)警信息)

下載Alertmanager

wget?https://github.com/prometheus/alertmanager/releases/download/v0.18.0-rc.0/alertmanager-0.18.0-rc.0.linux-amd64.tar.gz

tar -xzvf alertmanager-0.18.0-rc.0.linux-amd64.tar.gz

創(chuàng)建或修改alertmanager.yml

global:resolve_timeout: 2mwechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' route:group_by: ['alertname_wechat']group_wait: 10sgroup_interval: 10sreceiver: 'wechat'repeat_interval: 1h receivers: - name: 'wechat'wechat_configs:- send_resolved: trueto_party: '1'agent_id: '1000002'corp_id: 'w***'api_secret: 'W***'

參數(shù)說(shuō)明:

  • corp_id: 企業(yè)微信賬號(hào)唯一 ID, 可以在我的企業(yè)中查看。
  • to_party: 需要發(fā)送的組。
  • agent_id: 第三方企業(yè)應(yīng)用的 ID(上面步驟創(chuàng)建的應(yīng)用),可以在自己創(chuàng)建的第三方企業(yè)應(yīng)用詳情頁(yè)面查看。
  • api_secret: 第三方企業(yè)應(yīng)用的密鑰,可以在自己創(chuàng)建的第三方企業(yè)應(yīng)用詳情頁(yè)面查看

啟動(dòng)altermanager

nohup ./altermanager &

修改prometheus配置文件

增加如下配置

alerting:alertmanagers:- static_configs:- targets:- localhost:9093 rule_files:- "rules.yml"

創(chuàng)建rules.yml文件

groups: - name: noderules:- alert: server_statusexpr: up{job="node"} == 0for: 15sannotations:summary: "機(jī)器掛了"

停止node_explorer,企業(yè)微信就會(huì)收到消息
備注:起初困擾我的是如何設(shè)置rules,后來(lái)發(fā)現(xiàn)Prometheus的前端頁(yè)面可以直接執(zhí)行query,將規(guī)則設(shè)置好后,可以在頁(yè)面中執(zhí)行,如圖:

規(guī)則配置

磁盤(pán)占用規(guī)則:node_filesystem_avail{device="/dev/sde1",fstype="ext3",instance="hostip:9100",job="node",mountpoint="/data4"} < 1073741824 (1G) 磁盤(pán)使用率:(1- (node_filesystem_free{fstype=~"ext3|ext4|xfs",mountpoint="/data4"} / node_filesystem_size{fstype=~"ext3|ext4|xfs",mountpoint="/data4"}) ) * 100數(shù)據(jù)同步:進(jìn)程存在 mongodb_connections{instance="hostip:9001",job="mongo1",state="available"}==0內(nèi)存使用率: ((node_memory_MemTotal - (node_memory_MemFree+node_memory_Buffers+node_memory_Cached))/node_memory_MemTotal) * 100cpu使用率(100 - (avg by (instance)(irate(node_cpu{mode="idle"}[5m])) * 100))

使用promtool驗(yàn)證規(guī)則是否準(zhǔn)確

./promtool check rules alert_rule_test.yml

報(bào)警信息

如圖

轉(zhuǎn)載于:https://www.cnblogs.com/shining5/p/11142357.html

總結(jié)

以上是生活随笔為你收集整理的MongoDB监控及报警的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。