1、基础环境准备两台或更多的主机
2、关闭selinux vi /etc/selinux/config,修改SELINUX的值为disabled
3、关闭防火墙 systemctl disable firewalld systemctl stop firewalld
4、prometheus官网下载 https://prometheus.io/download/
5、grafana官网下载 https://grafana.com/grafana/download
6、node_exporter下载地址 https://prometheus.io/download/
一、安装配置
我这里下载保存在 /opt目录下,完成如下所示
1、解压、安装prometheus
tar -xzvf prometheus-2.45.0.linux-amd64.tar.gz mv prometheus-2.45.0.linux-amd64 prometheus
2、为prometheus服务创建service并设置开机自动启动 vim /usr/lib/systemd/system/prometheus.service [Unit] Description=prometheus Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=root Group=root ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --web.enable-lifecycle --web.external-url=http://PrometheusIP:9090 Restart=on-failure [Install] WantedBy=multi-user.target 使service生效并且设置开机自启动 systemctl daemon-reload systemctl enable prometheus --now 通过以下地址访问prometheus http://localhost:9090 后续prometheus配置文件有修改可以通过以下命令完成热加载,无须重启服务 curl -X POST http://localhost:9090/-/reload 3、安装grafana 我这里安装最新版本的grafana,大家可以直接通过yum命令下载安装 yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.2-1.x86_64.rpm 启动grafana服务 systemctl daemon-reload systemctl enable grafana-server --now 通过以下地址访问garfana,并且配置相应的数据源 http://localhost:3000
登录界面如下所示,默认账号是admin/admin,第一次登录会要求修改默认密码
登录进入grafana系统后,对数据源进行配置,点击,add your first data source,进入添加数据源页面
进入后,点击Prometheus,进入配置页面
编辑HTTP下的URL,这里填服务器IP+9090端口,所以填:http://localhost:9090
拉到最底部进行保存,如下所示即为保存成功
二、安装被监控主机的node_exporter组件
1、对软件压缩包进行解压,并且将安装包放到自己系统安装目录下,我自己放在/usr/local/目录中
tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz
mv node_exporter-1.6.1.linux-amd64 /usr/local/
2、将安装包中的可执行文件node_exporter拷贝到/usr/local/bin目录中
mv /usr/local/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
3、为node_exporter服务创建service服务
vim /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target
4、为node_exporter设置自动启动并启动服务
systemctl daemon-reload systemctl enable node_exporter --now
修改prometheus配置文件,在文件最后追加以下信息,纳管要监控的主机
vi /opt/prometheus/prometheus.yml - job_name: 'master_prometheus' static_configs: - targets: ['xxx.xxx.xxx.xxx:9100'] 添加多个主机以逗号分隔['xxx.xxx.xxx.xxx:9100','xxx.xxx.xxx.xxx:9100'] 检查配置是否正确,显示SUCCESS说明配置正确 /opt/prometheus/promtool check config /opt/prometheus/prometheus.yml Checking /opt/prometheus/prometheus.yml SUCCESS: /opt/prometheus/prometheus.yml is valid prometheus config file syntax
重启prometheus服务进行相关测试
systemctl restart prometheus
打开如下测试地址
http://prometheus服务器地址:9090/targets
可以看到targets已经增加了对监控主机master_prometheus的监控
三、grafana中添加配置监控模板
如图点击“+”号后,选择import dashboard
如下图,搜索系统默认模板8919,然后点击Load
如果模板ID号导入的方法总是失败,可以去下载JSON文件
https://grafana.com/grafana/dashboards/8919-1-node-exporter-for-prometheus-dashboard-cn-0413-consulmanager/
下载JSON文件后把内容复制到下面的输入框里点load
选择数据源Prometheus-1,点击“Import”
三、安装告警中心消息转发系统PrometheusAlert
Prometheus Alert 是开源的运维告警中心消息转发系统,支持主流的监控系统 Prometheus,日志系统 Graylog
和数据可视化系统 Grafana 发出的预警消息。通知渠道支持钉钉、微信、华为云短信、腾讯云短信、腾讯云电话、阿里云短信、阿里云电话等。
PrometheusAlert 特性
1.支持多种消息来源,目前主要有prometheus、graylog2、graylog3、grafana。
2.支持多种类型的发送目标,支持钉钉、微信、腾讯短信、腾讯语音、华为短信。
3.针对Prometheus增加了告警级别,并且支持按照不同级别发送消息到不同目标对象。
4.简化Prometheus分组配置,支持按照具体消息发送到单个或多个接收方。
5.增加手机号码配置项,和号码自动轮询配置,可固定发送给单一个人告警信息,也可以通过自动轮询的方式发送到多个人员且支持按照不同日期发送到不同人员。
6.增加 Dashboard,暂时支持测试配置是否正确
部署方法 PrometheusAlert 可以部署在本地和云平台上,支持windows、linux、公有云、私有云、混合云、容器和kubernetes。
PrometheusAlert官网:https://github.com/feiyu563/PrometheusAlert
本地部署
1.下载插件
mkdir /data/monitor/prometheusalert/ -p && cd /data/monitor/prometheusalert/
wget https://gh.api.99988866.xyz/https://github.com/feiyu563/PrometheusAlert/releases/download/v4.8.2/linux.zip
2.安装部署
unzip linux.zip
mv linux/* /data/monitor/prometheusalert/
chmod +x /data/monitor/prometheusalert/PrometheusAlert
3.修改prometheusalert配置
vim /data/monitor/prometheusalert/conf/app.conf
#设置插件名字
appname = Prometheus监控
#登录用户名
login_user=root
#登录密码
login_password=admin
#监听地址
httpaddr = "0.0.0.0"
#监听端口
httpport = 8080
#告警消息标题
title=Prometheus告警
#是否开启钉钉告警通道,可同时开始多个通道0为关闭,1为开启
open-dingding=1
#默认钉钉机器人地址
ddurl=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
#是否开启 @所有人(0为关闭,1为开启)
dd_isatall=1
#是否开启飞书告警通道,可同时开始多个通道0为关闭,1为开启
open-feishu=1
#默认飞书机器人地址
fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/xxx-xxxx-xxx-xxx...
4.启动prometheusalert
前台
cd /data/monitor/prometheusalert/
./PrometheusAlert
后台
cd /data/monitor/prometheusalert/
nohup ./PrometheusAlert &
容器部署
docker启动
docker run -d \
-p 18080:8080 \
-e PA_LOGIN_USER=root \
-e PA_LOGIN_PASSWORD=admin \
-e PA_TITLE=Prometheus告警 \
-e PA_OPEN_FEISHU=1 \
-e PA_OPEN_DINGDING=1 \
--name prometheusalert
feiyu563/prometheus-alert:latest
docker-compose文件启动
1.创建prometheusalert配置文件
vim /data/monitor/prometheusalert/config/app.conf(注意下修改对应接收软件的相关信息)
#---------------------↓全局配置-----------------------
appname = PrometheusAlert
#登录用户名
login_user=123
#登录密码
login_password=123
#监听地址
httpaddr = "0.0.0.0"
#监听端口
httpport = 8080
runmode = dev
#设置代理 proxy = http://123.123.123.123:8080
proxy =
#开启JSON请求
copyrequestbody = true
#告警消息标题
title=云监控测试
#日志文件路径
logpath=logs/prometheusalertcenter.log
#是否开启钉钉告警通道,可同时开始多个通道0为关闭,1为开启
open-dingding=1
#默认钉钉机器人地址
ddurl=https://oapi.dingtalk.com/robot/send?access_token=xxxx-xxxx-xxx...
#是否开启 @所有人(0为关闭,1为开启)
dd_isatall=1
#是否开启飞书告警通道,可同时开始多个通道0为关闭,1为开启
open-feishu=1
#默认飞书机器人地址
fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/xxxx-xxxx-xxxx-xxxx...
2.创建服务yml文件
vim /data/monitor/docker-compose-prometheusalert.yml
version: '3'
services:
prometheusalert:
image: feiyu563/prometheus-alert:latest
container_name: prometheusalert
restart: always
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime
- /data/monitor/prometheusalert/config:/app/conf
- /data/monitor/prometheusalert/logs:/app/logs
3.启动
docker-compose -f /data/monitor/docker-compose-prometheusalert.yml up -d
配置prometheusalert接入告警。
1.创建群聊机器人
创建飞书机器人
推送消息的群——设置——机器人——添加机器人——自定义机器人——设置机器人名字,说明——添加——复制webhook地址——完成
创建钉钉机器人
群设置——只能群助手——添加机器人——设置——自定义机器人——设置机器人名称——设置安全(关键字,IP,加签)——完成
2.访问prometheusalert获取webhook地址
(模板管理——自定义模板——飞书模板或钉钉模板)
模板为json语言编写,可通过自己编写json文件模板来自定义模板内容。
示例模板文件:
{{ range $k,$v:=.alerts }}告警状态:【**{{$v.status}}**】
{{if eq $v.status "resolved"}} 【{{$v.labels.alertname}}告警恢复】
所属平台:{{$v.labels.pingtai}}
主机内网IP:[{{$v.labels.instance}}]
恢复模块:[{{$v.labels.job}}]
当前值: {{$v.annotations.value}}
详细信息:{{$v.annotations.summary}} 已恢复正常 {{else}}【{{$v.labels.alertname}}异常告警】
所属平台:{{$v.labels.pingtai}}
告警级别:{{$v.labels.severity}}
主机内网IP:[{{$v.labels.instance}}]
故障模块:[{{$v.labels.job}}]
当前值: {{$v.annotations.value}}
详细信息:{{$v.annotations.description}} {{end}} {{ end }}
3.alertmanager添加prometheusalert配置
vim alertmanager.yml
在告警发送配置中增加如下配置:
webhook_configs:
- url: "prometheusalert_webhook地址1(飞书机器人)"
- url: "prometheusalert_webhook地址2(钉钉机器人)"
4.prometheus添加alertmanager配置
vim prometheus.yml
1
alertmanagers:
- scheme: http
static_configs:
- targets:
- "localhost:9093"
5.告警效果测试