监控系统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

相关文章

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg