监控平台prometheus+grafana+snmp_explorer+blackbox_exporter+alertmanager
一、背景介绍
公司需要监控交换机和IP设备,能够放在展示屏幕,及时发出告警信息。网上有很多监控软件,prometheus系列已经能够满足我们需求。prometheus功能强大,本次只用到一部功能。咱们先把基本的部署安装好,后续各种参数,还需要继续去研究。唯一不好的是,需要配置很多命令,对初学者和非技术人员,存在一定门槛,但这也形成比较高的自由度。
二、部署环境
服务器:
12核32G
操作系统
CentOS Linux release 7.6
注意点
建议部署前,关闭系统防火墙,后期调试完毕,再添加放行端口。
三、结构图
Grafana作为展示界面,Prometheus作为核心,调用snmp_explorter和blackbox_explorter监控模块,使用Alertmanager作为报警模块,形成一个完整的结构。

四、部署步骤
1、prometheus核心
下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz
解压安装文件
tar -xf prometheus-2.37.0.linux-amd64.tar.gz
新建用户组
groupadd -r prometheus
新建用户加入组
useradd -r -g prometheus -d / -s /sbin/nologin -c "prometheus user" prometheus
创建目录
mkdir /etc/prometheus
mkdir /home/prometheus
迁移文件夹
cp prometheus-2.37.0.linux-amd64/prometheus /usr/local/bin/
迁移配置文件夹
cp prometheus-2.37.0.linux-amd64/prometheus.yml /etc/prometheus/
赋予权限
chown -R prometheus:prometheus /etc/prometheus
chown -R prometheus:prometheus /home/prometheus/
创建启动脚本
vi /usr/lib/systemd/system/prometheus.service
点击查看代码
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/home/prometheus \
--storage.tsdb.retention=15d \
--web.read-timeout=5m \
--web.max-connections=10 \
--query.max-concurrency=20 \
--query.timeout=2m \
--web.enable-lifecycle
Restart=on-failure
[Install]
WantedBy=multi-user.target
调试命令
systemctl enable prometheus
systemctl start prometheus
systemctl restart prometheus
systemctl status prometheus
检查服务是否启动
netstat -anlptu|grep :9090
tcp6 0 0 ::1:49954 ::1:9090 ESTABLISHED 16429/prometheus
验证
打开设备ip端口
http://192.168.0.212:9090
2、grafana模块
Grafana作为展示平台
下载安装
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.6-1.x86_64.rpm
sudo yum install grafana-enterprise-9.0.6-1.x86_64.rpm
调试
sudo /sbin/chkconfig --add grafana-server
启动
sudo service grafana-server start
验证
打开设备ip端口,默认账号admin,密码admin
http://192.168.0.212:3000
3、snmp_explorer模块
snmp_explorer作为获取snmp参数的模块。
下载
wget https://github.com/prometheus/snmp_exporter/releases/download/v0.19.0/snmp_exporter-0.19.0.linux-amd64.tar.gz
解压
tar -xf snmp_exporter-0.19.0.linux-amd64.tar.gz
创建目录
mkdir /opt/snmp_exporter
复制
mv snmp_exporter-0.19.0.linux-amd64 /opt/snmp_exporter
设置开机启动
/etc/systemd/system/snmp_exporter.service
点击查看代码
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/opt/snmp_exporter/snmp_exporter --config.file=/opt/snmp_exporter/snmp.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
验证
打开设备ip端口
http://192.168.0.212:9116
4、blackbox_exporter模块
blackbox_exporter作为获取ping模块,包含DNS/SSL证书/TCP/端口检测
下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.15.1/blackbox_exporter-0.15.1.linux-amd64.tar.gz
解压
tar xf blackbox_exporter-0.15.1.linux-amd64.tar.gz
新建目录
mkdir /opt/blackbox_exporter
复制
mv blackbox_exporter-0.15.1.linux-amd64 /opt/blackbox_exporter
设置开机启动
/etc/systemd/system/blackbox_exporter.service
点击查看代码
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/opt/blackbox_exporter/blackbox_exporter-0.15.1.linux-amd64/blackbox_exporter --config.file=/opt/blackbox_exporter/blackbox_exporter-0.15.1.linux-amd64/blackbox.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
验证
打开设备ip端口
http://192.168.0.212:9115
5、alertmanager模块
alertmanager作为告警模块,邮件、钉钉企业微信都可以设置。
下载
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
解压
tar -xf alertmanager-0.21.0.linux-amd64.tar.gz
新建目录
vi /opt/alertmanager
复制
mv alertmanager-0.21.0.linux-amd64 /opt/alertmanager
设置开机启动
/etc/systemd/system/alertmanager.service
点击查看代码
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--data.retention=24h --web.listen-address=0.0.0.0:9093 \
--cluster.listen-address=0.0.0.0:9094 \
--cluster.advertise-address=0.0.0.0:9094
Restart=on-failure
[Install]
WantedBy=multi-user.target
验证
这个功能需要调试了参数,才能验证效果
五、效果测试
以上作为安装和验证单一功能的调试,属于基础版本,调试核心的配置,把各自的功能关联起来。
常用命令与路径
| 平台 | 常用命令 | 用途 |
|---|---|---|
| prometheus | /etc/prometheus/prometheus.yml | 配置文件 |
| curl -X POST http://127.0.0.1:9090/-/reload | 热重启 | |
| systemctl restart prometheus | 重启 | |
| systemctl status prometheus | 状态 | |
| netstat -ntlp | 查看服务状态 | |
| snmp_exporter | /opt/snmp_exporter/snmp.yml | 配置文件 |
| systemctl restart snmp_exporter | 重启 | |
| systemctl status snmp_exporter | 状态 | |
| blackbox_exporter | /opt/blackbox_exporter/blackbox_ecporter/blackbox.yml | 配置文件 |
| systemctl restart blackbox_exporter | 重启 | |
| systemctl status blackbox_exporter | 状态 | |
| grafana | /etc/grafana/grafana.ini | 配置文件 |
| service grafana-server restart | 重启 | |
| service grafana-server status | 状态 |
模块关联
prometheus+snmp_exporter
在prometheus配置文件,设置snmp_exporter的地址127.0.0.1:9116,关联成功。
点击查看代码
- job_name: 'network-switch'
scrape_interval: 100s
scrape_timeout: 80s
static_configs:
- targets: ['10.10.0.254']
metrics_path: /snmp
params:
module: [if_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9116
验证:重启服务后,打开prometheus网页http://192.168.0.212:9090 点击Status-Targets,可以看到相关的数据已经展示。

prometheus+blackbox_exporter
在prometheus配置文件,设置snmp_exporter的地址127.0.0.1:9115,关联成功。
点击查看代码
- job_name: "IPPing"
scrape_interval: 40s
scrape_timeout: 20s
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 10.10.0.248
- 10.60.0.25
- 192.168.0.23
labels:
group: 核心设备
blackbox: 'Ping'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
验证:重启服务后,打开prometheus网页http://192.168.0.212:9090 点击Status-Targets,可以看到相关的数据已经展示。

prometheus+grafana
打开grafana网页版,设置-Data sources,选择Prometheus,输入prometheus地址,即可关联成功。

验证:重启服务后,打开grafana网页http://192.168.0.212:3000 点击Dashboards-browse,创建监控图。
前期可以使用模板,参考一些,个人建议熟悉命令后,自己自定义调试。
模板-Dashboards-+Import,输入模板编号。
模板编号:12489
11169

prometheus+alertmanager_exporter
六、模块调试
snmp_exporter调试
Prometheus调用snmp_exporter模块获取到的信息,通过刚才的关联,提供给Prometheus使用,grafana读取Prometheus的snmp_exporter。所以,关键第一步是调试好snmp_exporter模块。
1、交换机设备设置
在交换机添加团体字
snmp-agent community read cipher kkroot
snmp-agent sys-info version v2c
2、在Prometheus配置文件添加交换机IP地址
点击查看代码
- job_name: 'network-switch'
scrape_interval: 100s
scrape_timeout: 80s
static_configs:
- targets: ['10.10.0.254']
3、使用snmp_exporter验证是否能获取到交换机的snmp信息
方法1、使用网页端
登录http://192.168.0.212:9116 输入10.10.0.254,等待获取信息。

等待一会,获取以下信息

方法2、在服务器使用snmpwalk检查
snmpwalk -v 2c -c kkroot 10.10.0.254

4、验证
获取Inbound方向流量
(这些参数是根据刚才网页端得到的snmp里面的信息,调试出来的参数)
rate(ifInOctets{instance="10.10.0.254", ifName="GigabitEthernet0/0/23"}[5m]) * 8 / 1000000

blackbox_exporter调试
思路与刚才的snmp_exporter一样,可以自行思考下,比较简单
1、在Prometheus配置文件添加监控设备的IP地址
点击查看代码
- job_name: "IPPing"
scrape_interval: 40s
scrape_timeout: 20s
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 10.10.0.248
2、使用blackbox_exporter验证是否能获取到Ping的IP信息。
登录http://192.168.0.212:9115/ 点击10.10.0.248的信息

可以查询到监控返回的信息

3、展示
probe_duration_seconds{group="核心设备"} * 1000

alertmanager调试
在prometheus配置文件,设置alertmanager的地址127.0.0.1:9093,开启rule_files规则关联成功。
点击查看代码
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9093
rule_files:
- "rules/*.rules"
# - "second_rules.yml"
1、添加邮箱告警方式
点击查看代码
[root@monitor ~]# cat /opt/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
smtp_smarthost: 'c1.xxxxxx.net:25'
smtp_from: '111@kkroot.com'
smtp_auth_username: '111@kkroot.com'
smtp_auth_password: 'kkroot1234'
route: #配置警告发送,接受规则
group_by: ['alertname'] #根据标签分组
group_wait: 2m #发送告警等待时间,为了合并相同告警一起发送
group_interval: 5m #发送告警间隔时间
repeat_interval: 30m #重复告警时间,控制发送告警频率
receiver: 'web.hook'
receivers:
- name: 'web.hook'
email_configs:
- to: "kkkkkkk@qq.com"
html: '{{template "email.to.html" .}}'
send_resolved: true
headers: {Subject: "监控告警"}
- to: "qqqqqqqq@qq.com"
html: '{{template "email.to.html" .}}'
send_resolved: true
headers: {Subject: "监控告警"}
2、设置规则
点击查看代码
[root@monitor rules]# pwd
/etc/prometheus/rules
[root@monitor rules]# cat icmp.rules
groups:
- name: icmp_rules
rules:
- alert: Ping监控
expr: probe_success == 0
for: 5m
labels:
serverity: error
annotations:
summary: "设备离线"
3、验证效果
打开promethus平台,点击Alerts可看到规则。关掉10.10.0.248主机,可收到监控邮件。

七、故障处理
1、prometheus目标主机提示文本太长
修改超时时间,注意有空格
scrape_interval: 40s
scrape_timeout: 20s
监控平台prometheus+grafana+snmp_explorer+blackbox_exporter+alertmanager的更多相关文章
- Docker监控平台prometheus和grafana,监控redis,mysql,docker,服务器信息
Docker监控平台prometheus和grafana,监控redis,mysql,docker,服务器信息 一.通过redis_exporter监控redis 1.1 下载镜像 1.2 运行服务 ...
- Docker 监控平台Prometheus
Prometheus 是一个强大的监控平台,提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案. 官方网站:https://prometheus.io
- Spring Boot Metrics监控之Prometheus&Grafana(转)
欢迎来到Spring Boot Actuator教程系列的第二部分.在第一部分中,你学习到了spring-boot-actuator模块做了什么,如何配置spring boot应用以及如何与各样的ac ...
- 机房ping监控 smokeping+prometheus+grafana
一.前言 1.本监控方案主要由smokeping+promethues+grafana组成.smokeping主要数据采集,promethues作为数据存储,grafana数据展示 2.其实smoke ...
- 监控实战Prometheus+Grafana
这期的分享是监控实战,其实不想写这篇的,因为网上相关的文章也挺多的,但是出于光说不练都是假把式,而且也想告诉你:当帅气的普罗米修斯(Prometheus)遇到高颜值的格拉法纳(Grafana)究竟会擦 ...
- 机房ping监控 smokeping+prometheus+grafana(续) 自动获取各省省会可用IP
一.前言 1.之前的文章中介绍了如何使用smokeping监控全国各省的网络情况:https://www.cnblogs.com/MrVolleyball/p/10062231.html 2.由于之前 ...
- 【k8s 硬盘监控】prometheus grafana
设置监控哪块盘: https://www.bountysource.com/issues/50160777-disk-space-usage-depcited-in-grafana-correct h ...
- Prometheus(一):Prometheus+Grafana 安装配置
一.基础环境 系统 IP 监控主机 CentOS 7 192.168.56.200 被监控主机 CentOS 7 192.168.56.201 二.Prometheus服务端安装 以下操作皆在监控主机 ...
- 基于Prometheus和Grafana的监控平台 - 环境搭建
相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics. Logging - 用于记录离散的事件.例如,应用程序的调试信息或错误信息.它是我们诊断问题的依据. ...
- 基于Prometheus和Grafana的监控平台 - 运维告警
通过前面几篇文章我们搭建好了监控环境并且监控了服务器.数据库.应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或 ...
随机推荐
- TiDB上百T数据拆分实践
背景 提高TiDB可用性,需要把多点已有上百T TiDB集群拆分出2套 挑战 1.现有需要拆分的12套TiDB集群的版本多(4.0.9.5.1.1.5.1.2都有),每个版本拆分方法存在不一样 2.其 ...
- ESXI 7.0封装网卡驱动
前段时间配置的All In One 主机,由于华擎H410M-ITX/AC主板的板载网卡为intel I219-V,在安装ESXI后网卡无法驱动.查询之后发现原来ESXI7.0.2的版本不含该网卡驱动 ...
- Git Rebase和Merge的用法
title: Git Rebase和Merge的用法 categories: 后端 tags: - Git Rebase和Merge是什么? merge和rebase的作用都是合并两个分支,其区别在于 ...
- Android Volley 基本使用
Android Volley 基本使用 本篇主要介绍 Google 给Android 平台提供的 Volley 一个 Http请求库 , 齐射! 1.概述 Volley是Google 提供的一个小巧的 ...
- Strapi入门记--01创建项目,账户,测试表,测试接口
Strapi 是什么 中文文档地址 Strapi 是一个开源的无头 CMS,开发人员可以自由选择他们喜欢的工具和框架,并允许编辑使用他们的应用程序的管理面板来管理和分发他们的内容.基于一个插件系统,S ...
- 使用pyenv对python进行版本控制—很好用
相对于python自带的virtualenv来说,pyenv的使用要便利些,更不用说自带的插件python-virtualenv,创建虚拟环境就更为方便了,其实最让我心水的功能是创建的虚拟环境,进入设 ...
- drf基础:1、web应用模式、API接口、接口测试工具
drf入门 一.web应用模式 web的应用模式共分为两种,前后端不分离.前后端分离 1.前后端混合 之前所写的bbs项目就是前后端不分离,后端人员在开发过程中使用模板语法,前后端都由一个人员 ...
- pycharm编辑器下载与使用
pycharm编辑器下载与使用 一.pycharm编辑器 1.pycharm编辑器 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具.比如调 ...
- 【OpenWRT】增加第三方开源库 - 二维码开源库 zbar
序言 第一次开始写博客,在日常学习和工作当中 CSDN 给我帮助很大,因此我也在 CSDN 奉献自己的经验,借此回馈 CSDN 对我的帮助,希望自己的经验可以帮助需要的人,也方便自己后续复习之用,同时 ...
- chatGPT 桌面版安装教程
概述 标题党了,首先声明 ChatGPT 官方没有桌面版,目前市面上很多的桌面应用也在是浏览器上包了一层,而且大多做的比较粗糙,不太好用,所以都不太推荐. 作为一名骨灰级的程序员,ChatGPT 的重 ...