MongoDB監控及報警

轉載請注明出處:https://www.cnblogs.com/shining5/p/11142357.html

MongoDB監控及報警

Prometheus是由SoundCloud開發的開源監控報警系統和時序列數據庫,其使用go語言開發。基本原理是通過HTTP協議周期性抓取被監控組件的狀態,任意組件只要提供對應HTTP接口就可以接入監控。Prometheus服務端產生告警向Altermanager發送告警。

Grafana是一個開源的度量分析和可視化套件,常用于可視化基礎設施和應用程序分析的時間序列數據。

監控

目標:可視化顯示MongoDB的運行狀態。
工具:Grafana,Prometheus
因為grafana本身數據源沒有mongodb,所以中間加上Prometheus來對mongodb進行監控。

服務端組件:
Prometheus #服務端
Grafana #前端展示

客戶端組件:
node_exporter
mongodb_exporter

步驟

安裝go環境

$ 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以上版本,否則讀取規則的時候報錯

修改配置文件
將監管的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監聽端口,后面安裝mongodb_exporter會提到

啟動服務

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

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

prometheus內置列一個web界面,可以通過http://install_host:9090訪問。在Status->Targets頁面中,我們可以看到配置的mongo1,狀態為Down,說明未檢測到數據。如何解決呢?需要安裝好node_exporter,mongodb_exporter狀態才會變為Up

安裝node_exporter

node_exporter服務端agent,用go語言編寫,主要用于采集系統數據,如cup,內存,負載,磁盤,網絡等信息。
啟動后監聽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

啟動后占用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 

啟動后默認占用3000端口

sudo service grafana-server start

grafana顯示mongodb數據

步驟1: 打開grafana前端頁面http://install_host:3000

步驟2:在Data Sources添加數據源


步驟3: Create dashboard

import一個已經做好的表盤

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

improt此表盤


效果圖

報警

Prometheus的報警分為兩部分,通過在Prometheus服務端設置告警規則,Prometheus服務端產生報警向Alertmanager發送報警。Alertmanager管理這些報警,通過電子郵件,PagerDuty和HipChat等方法發送通知。

設置報警及通知的步驟:
* 配置Alertmanager
* 配置Prometheus對Alertmanager訪問
* 配置ruler報警規則

我們的需求是能將報警信息發送到企業微信中。
* 注冊企業微信賬號(不需要企業認證)
* 創建第三方應用如Prometheus,填寫應用信息(此應用的配置信息用于altermanager.yml配置及接收報警信息)

下載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

創建或修改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***'

參數說明:

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

啟動altermanager

nohup ./altermanager &

修改prometheus配置文件

增加如下配置

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

創建rules.yml文件

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

停止node_explorer,企業微信就會收到消息
備注:起初困擾我的是如何設置rules,后來發現Prometheus的前端頁面可以直接執行query,將規則設置好后,可以在頁面中執行,如圖:

規則配置

磁盤占用規則:node_filesystem_avail{device="/dev/sde1",fstype="ext3",instance="hostip:9100",job="node",mountpoint="/data4"} < 1073741824  (1G)
磁盤使用率:(1-  (node_filesystem_free{fstype=~"ext3|ext4|xfs",mountpoint="/data4"} / node_filesystem_size{fstype=~"ext3|ext4|xfs",mountpoint="/data4"}) ) * 100數據同步:進程存在
mongodb_connections{instance="hostip:9001",job="mongo1",state="available"}==0內存使用率:
((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驗證規則是否準確

./promtool check rules alert_rule_test.yml

報警信息

如圖

轉載于:https://www.cnblogs.com/shining5/p/11142357.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448480.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

umask命令:設置文件的默認權限掩碼

今天接觸到了掩碼&#xff0c;從博客上總結了一些關于掩碼解釋比較全面的分析&#xff0c;和大家分享下。 文件權限是linux系統中的一種安全機制&#xff0c;通過設置不同的權限&#xff0c;可以達到限制用戶操作的目的&#xff0c;有效地保證了文件的完整性。 默認的情況下&…

如何學習開源項目及Ceph的淺析

摘要&#xff1a;開源技術的學習和采用確實存在著一定門檻&#xff0c;然而學習各種開源項目已經成為許多開發者不可回避的工作內容。那么&#xff0c;對于類似OpenStack的大型開源項目&#xff0c;開發者該如何著手&#xff0c;這里我們看章宇的分享。 【編者按】在 上一屆O…

Mybatis 中更新方法: updateByPrimaryKeySelective() 和 updateByPrimaryKey() 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 int updateByPrimaryKeySelective(TbItem record); int updateByPrimaryKey(TbItem record); 上面的是逆轉工程生成的Mapper接口 對應…

SHT知識庫操作要點

1.保存文檔庫模板&#xff1a; 知識庫---設置---文檔庫設置---權限管理---將文檔另存為模板2.設置版本號&#xff1a;知識庫---設置---文檔庫設置---常規設置---版本控制設置3.設置文檔庫權限&#xff1a;列表---設置---文檔庫設置---此文檔庫的權限&#xff08;用戶組讀取列表…

淺談三種特殊進程:孤兒進程,僵尸進程和守護進程

昨天學了進程控制&#xff0c;就這三種特殊的進程研究了一下&#xff0c;其中也借鑒了一些前人總計的經驗。 1、孤兒進程 如果父進程先退出,子進程還沒退出那么子進程將被 托孤給init進程,這里子進程的父進程就是init進程(1號進程).其實還是很好理解的。 // 父進程先子進程退…

設計師為什么要學編程,開發者為什么要學設計?

摘要&#xff1a;設計師和開發者目前正處于互聯網的兩端&#xff0c;看著彼此做不同的工作。如果他們能互相學習對方的技術&#xff0c;那么會協作得更好。 很多開發者認為&#xff0c;設計師應該學會如何編寫代碼&#xff0c;這一點是真的&#xff1a;通過學習&#xff0c;設計…

git 查看遠程倉庫地址

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 就一個命令&#xff1a; git remote -v 如下&#xff1a;

tensorflow之tf.train.exponential_decay()指數衰減法

exponential_decay(learning_rate, global_steps, decay_steps, decay_rate, staircaseFalse, nameNone) 使用方式&#xff1a; tf.tf.train.exponential_decay() 例子&#xff1a; tf.train.exponential_decay(self.config.e_lr, self.e_global_steps&#xff0c;self.config…

wait( )和 waitpid( )

進程一旦調用了wait&#xff0c;就立即阻塞自己&#xff0c;由wait自動分析是否當前進程的某個子進程已經退出&#xff0c;如果讓它找到了這樣一個已經變成僵尸的子進程&#xff0c;wait就會收集這個子進程的信息&#xff0c;并把它徹底銷毀后返回&#xff1b;如果沒有找到這樣…

享受閱讀的十二個好習慣

嚴謹的國際閱讀率比較研究顯示&#xff0c;當下韓國國民人均閱讀量約為每年11本&#xff0c;法國約為8.4本&#xff0c;日本在8.4—8.5本之間。全世界每年閱讀書籍數量排名第一的是猶太人&#xff0c;平均每人一年讀書64本。而中國13億人口&#xff0c;扣除教科書&#xff0c;平…

在 vscode 中使用 Git :拉取、提交、克隆

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS&#xff1a;轉載此文后&#xff0c;網友在評論中提到還有其它方法&#xff0c;不過目前個人尚在研究中&#xff0c;有興趣的朋友們也可…

偶也要去上海Tech一把了

公司組織的&#xff0c;后天去&#xff0c;呵呵&#xff1a;&#xff09;希望能多認識一點博客園的兄弟姐妹轉載于:https://www.cnblogs.com/martinxj/archive/2004/09/14/42930.html

進程控制常用的一些操作

1、獲取進程的id int main0() {printf ("當前進程 ID %d\n", getpid());printf ("當前父進程&#xff1a;%d\n", getppid());printf ("當前用戶&#xff1a; %d\n", getuid());while (1);return 0; }2、fork 和 vfork之前的博客里有&#xf…

vscode 配置 git (配置、暫存、推送、拉取、免密)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 vscode 中對 git 進行了集成&#xff0c;很多操作只需點擊就能操作&#xff0c;無需寫一些 git 指令。 不過這就需要你對 vscode 進行配…

男女之間應該保留多少隱私

究竟&#xff0c;男女朋友之間&#xff0c;應該保留多少個人隱私? 我覺得&#xff0c;如果各自的隱私太多,那么&#xff0c;很難會相信彼此的愛能有多深濃。然而&#xff0c;如果兩個人沒有半點隱私,而且絕對坦誠。 彼此的行為和思想也沒有絲毫隱瞞的話,這種清白赤誠有如標…

處理bugs心法

1. 前提 第一層&#xff1a;遇到異常首先必須告訴自己&#xff0c;冷靜&#xff0c;不要慌。&#xff08;一看到Bug就心慌&#xff0c;那么武功就施展不了了&#xff09; 2. 入門級 第二層&#xff1a;遇到Bug&#xff0c;第一潛意識看輸出異常的信息的&#xff08;控制臺輸出&…

C語言實現簡單的電子通訊錄2

這兩天學完系統調用和標準IO&#xff0c;之前的通訊錄可以進行一些改進&#xff0c;將數據保存到文件中(圖我這里就不發了)。 原理&#xff1a;每次啟動程序時先從預設文件中以只讀的形式讀取保存的通訊錄信息&#xff0c;然后將讀取到的信息導入到結構體中&#xff1b;每次執…

解決 VS Code 保存時候自動格式化

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 不知道從哪個版本起&#xff0c;VS code 保存會自動格式化。 以前都是altshiftF格式化的&#xff0c;現在一保存就格式化&#xff0c;而…

發布在線文檔【軟件=業務+架構+流程+組織.pptx】

10年的技術工作&#xff0c;軟件這個詞對我來說一點都不陌生&#xff0c;但是當我問自己如何理解軟件的&#xff1f;我卻不知道如何回答。軟件&#xff1d;業務&#xff0b;架構&#xff0b;流程&#xff0b;組織&#xff0c;其中公式是借用軟件產品線工程BAPO的概念&#xff0…

12種食物最養男人 10種食物最養女人 太值得收藏了

據統計&#xff0c;男性10大死因中有4項與飲食有關&#xff0c;包括癌癥、腦血管疾病、心臟病和糖尿病。以下12種食品對男性健康有益&#xff0c;建議男性多多攝取。 男人需要的十種養生食物 No.1西紅柿 西紅柿的酸味能促進胃液分泌&#xff0c;幫助消化蛋白質等&#xff…