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.mzph.cn/news/448480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈三种特殊进程:孤儿进程,僵尸进程和守护进程

昨天学了进程控制&#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;如果没有找到这样…

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

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;转载此文后&#xff0c;网友在评论中提到还有其它方法&#xff0c;不过目前个人尚在研究中&#xff0c;有兴趣的朋友们也可…

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

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 vscode 中对 git 进行了集成&#xff0c;很多操作只需点击就能操作&#xff0c;无需写一些 git 指令。 不过这就需要你对 vscode 进行配…

处理bugs心法

1. 前提 第一层&#xff1a;遇到异常首先必须告诉自己&#xff0c;冷静&#xff0c;不要慌。&#xff08;一看到Bug就心慌&#xff0c;那么武功就施展不了了&#xff09; 2. 入门级 第二层&#xff1a;遇到Bug&#xff0c;第一潜意识看输出异常的信息的&#xff08;控制台输出&…

解决 VS Code 保存时候自动格式化

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 不知道从哪个版本起&#xff0c;VS code 保存会自动格式化。 以前都是altshiftF格式化的&#xff0c;现在一保存就格式化&#xff0c;而…

12种食物最养男人 10种食物最养女人 太值得收藏了

据统计&#xff0c;男性10大死因中有4项与饮食有关&#xff0c;包括癌症、脑血管疾病、心脏病和糖尿病。以下12种食品对男性健康有益&#xff0c;建议男性多多摄取。 男人需要的十种养生食物 No.1西红柿 西红柿的酸味能促进胃液分泌&#xff0c;帮助消化蛋白质等&#xff…

ES 基础

1. ES 基础一网打尽 1.1 ES定义 ESelaticsearch简写&#xff0c; Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。 Elasticsear…

为什么 那么多 前端开发者都想学 Vue.js

根据JavaScript 2017 前端库状况调查 Vue.js是开发者最想学的前端库。我在这里说明一下我为什么认为这也是和你一起通过使用 Vue 构建一个简单的 App 应用程序的原因。 我最近曾与 Evan You&#xff0c;Chris Fritz&#xff0c;Sarah Drasner&#xff0c;和 Adam Jahr 做了一个…

进程间通信之管道通信

两个程序之间传递数据的一种简单方法是使用popen和pclose。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen函数允许一个程序将另一个程序作为新进程来启动&#xff0c;并可以传递数据给它或者通过它接收数据…

vue 各组件 使用 Demo

环境搭建 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 假设你已经通读vue官方文档&#xff08;文档都没读一遍&#xff08;至少&#xff09;&#xff0c;那不建议动手撸码&#xff…

Dropbox推独立应用,公司估值已达100亿美元

摘要&#xff1a;Dropbox刚获得5亿美元的新一轮融资&#xff0c;其估值已高达100亿美元&#xff0c;现在又推出针对云服务的独立应用Carousel&#xff0c;不久之后&#xff0c;还会有应用陆续推出&#xff0c;随着美国前国务卿赖斯的加盟&#xff0c;Dropbox在云市场的表现异常…

SQL经典面试题(二)

有3个表S&#xff0c;C&#xff0c;SCS&#xff08;SNO&#xff0c;SNAME&#xff09;代表&#xff08;学号&#xff0c;姓名&#xff09; //主键&#xff1a;SNO //多个人&#xff0c;多门课 3张表 &#xff0c;SC 关系表C&#xff08;CNO&#xff0c;CNAME&#xff0c;…

开源当自强:我们不是“便宜货”

之前人们争相使用开源软件&#xff0c;无非是因为它便宜、好用、易得&#xff0c;不过根据最新的开源软件调查显示&#xff0c;人们使用开源软件最主要的原因还是看重它的高质量。 成本低是很过公司参与开源项目的最主要原因之一&#xff0c;而现在他们视开源是一条通往创新、省…

python内建函数和工厂函数的整理

内建函数参阅&#xff1a; https://www.cnblogs.com/pyyu/p/6702896.html 工厂函数&#xff1a; 本篇博文比较粗糙&#xff0c;后续会深入整理转载于:https://www.cnblogs.com/qiang-upc/p/11155786.html

显卡天梯图:2014最新显卡性能天梯图

随着电脑游戏的推广&#xff0c;很多用户都喜欢上了电脑网络游戏&#xff0c;所以组装电脑用户在装机的时候&#xff0c;会考虑电脑配置的游戏性能&#xff0c;要提高电脑配置游戏性能首要条件就是显卡性能要强&#xff0c;如果显卡性能不佳&#xff0c;那么其它方面性能再强&a…

【显卡天梯图】2014年最新显卡天梯图 – 【迄今最全系列显卡】

【显卡天梯图】2014年最新显卡天梯图 – 【迄今最全系列显卡】 随着电脑游戏的推广&#xff0c;很多用户都喜欢上了电脑网络游戏&#xff0c;所以组装电脑用户在装机的时候&#xff0c;会考虑电脑配置的游戏性能&#xff0c;要提高电脑配置游戏性能首要条件就是显卡性能要强&am…