监控系统prometheus+grafana+发送告警信息

2024-03-17 19:36

本文主要是介绍监控系统prometheus+grafana+发送告警信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.ymlChecking /opt/prometheus/prometheus.ymlSUCCESS: /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.告警效果测试

这篇关于监控系统prometheus+grafana+发送告警信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819932

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序