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

news2024/10/6 20:28:44

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.告警效果测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1522916.html

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

相关文章

HTML语法基础

1.HTML是什么 HTML是超文本标记语言,标准通用标记语言下的一个应用。 “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分&…

如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序

返回目录:OpenCV系列文章目录(持续更新中......) 前一篇:OpenCV4.9.0在windows系统下的安装 后一篇: 警告: 本教程可以包含过时的信息。 我在这里描述的所有内容都将适用于 OpenCV 的C\C接口。我首先假…

在centos8中部署Tomcat和Jenkins

参考链接1:tomcat安装和部署jenkins_jenkins和tomcat-CSDN博客 参考链接2:--配置开机启动tomcat文件 x​​​​​​超详细:Centos8安装Tomcat并配置开机自动启动_centos设置tomcat开机自启-CSDN博客文章浏览阅读4.4k次,点赞4次&…

爱奇艺 CTR 场景下的 GPU 推理性能优化

01 背景介绍 GPU 目前大量应用在了爱奇艺深度学习平台上。GPU 拥有成百上千个处理核心,能够并行的执行大量指令,非常适合用来做深度学习相关的计算。在 CV(计算机视觉),NLP(自然语言处理)的模型…

判断一个时间序列中每个元素的年份是否为闰年

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断一个时间序列中 每个元素的年份是否为闰年 Series.dt.is_leap_year 选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.Series(pd.date_range("2024-03-17",…

ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令

目录 一.四种栈 1.满增栈:进栈(先移动指针再入栈,指针往地址增大的方向移动);出 栈(先出栈,栈指针往地址减小的地方移动)。 2.满减栈:进栈(先移动指针再入…

android studio设置flutter和dart的sdk配置

提示没有配置dart sdk的时候,其实只需要配置一下flutter的sdk就可以了,因为flutter的安装包里面包含了dart的sdk: 按照提示选中这个flutter的安装包路径就可以了: 并且需要开启windows的开发者开关:start ms-settings:…

【代码随想录】【回溯算法】补day25:组合总和,电话号码的总和

组合总和 def backtracking2(self, n: int, k: int, startindex: int, targetsum, sum):# 递归的终止条件if sum > targetsum:returnif len(self.path) k and sumtargetsum:self.result.append(self.path[:]) # 结果拷贝return self.result# for i in range(startindex,n1…

Java Web项目—餐饮管理系统Day06-套餐管理(一)

文章目录 1. 需求分析与实体类准备2. 依据菜品分类或者名字进行查询的请求(需求B)3. 新增套餐 1. 需求分析与实体类准备 如上图为新增套餐的界面, 它包含了套餐的一些基本信息, 例如名称、价格等, 同时还有套餐分类(因此这里需要一个查询所有套餐分类的请求处理方法, 需求A). 以…

layui table列表重载后保持进度条位置不变

使用layui的table表格组件时,当我们操作了某行的修改后,刷新了页面,进度条则跳回到最上面。 除了layui高版本应该内置有方法解决了此问题,但是低版本需要另外想办法解决。 具体解决方式如下: 1.在编辑操作成功前&am…

量子磁场测量“碰上”脑科学,未磁科技无创脑功能成像系统研发成功

从微观的神经元活动到宏观的认知行为,脑科学探索着人类最神秘、最复杂的领域之一。在这个过程中,科研人员、医生和创业者们扮演着至关重要的角色。他们不仅致力于揭示大脑的奥秘,更将科研成果转化为实际应用,推动脑科学领域的进步…

【SQL Server】实验七 数据完整性

1 实验目的 掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。掌握完整性约束的运行检查机制。掌握参照完整性的级联删除和修改方法。掌握正确设计关系模式完整性约束的方法。 2 实验内容 2.1 掌握实体完整性约束的创建和使用方法 创建表时定义由一个属性组成…

宜搭faas服务器获取accessToken

可以用faas服务器的OpenAPIUtil.getCustomAccessTokenThenCache(Client ID,Client Secret)就可以获取 至于获取这个Client ID,Client Secret 就需要在钉钉开放平台创建一个应用 然后在这个应用的基础信息里面有 注意的是:如果需要…

Rust 程序设计语言学习——所有权

这一节主要来学习 Rust 语言的其他特性,所有权、引用与借用、Slice 类型。 1 所有权 Rust 的核心功能(之一)是所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。 所有程序…

Rancher操作手册(v2.7.5-rc1)

1.登录 访问地址:10.66.55.132使用账号和密码登录。初始的页面是英文版本,可以点击左下方改为简体中文 登录成功后可以看到现有的集群。右上角可以进行新集群的创建和导入已有集群。点击箭头所指的蓝色集群名称可以进入集群。 2.集群仪表盘 进入到集…

【leetcode】长度最小的子数组, test ok

题目 代码实现 #include <iostream> #include <vector> using namespace std;class Solution { public:int minSubArrayLen(int s, vector<int>& nums) {int n = nums.size();if (n == 0) {return 0;}int ans = INT_MAX;int start = 0, end = 0;int…

Github 2024-03-17 php开源项目日报 Top9

根据Github Trendings的统计,今日(2024-03-17统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目9Blade项目2Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次关…

Redis远程连接本机——Docker

1. Docker拉取redis镜像并创建容器 1.1 拉取redis镜像 如果要指定redis版本&#xff0c;需要使用redis:&#xff08;版本&#xff09;&#xff0c;不写默认最新版本 docker pull redis1.2 创建容器并挂载配置文件 创建一个redis目录&#xff0c;并在其创建一个conf目录和一个d…

tomcat 实现会话绑定

Tomcat 后端服务器实现 Session ID会话保持 基础架构&#xff1a; 7-6 代理服务器nginx配置 7-3 tomcat 服务器 7-5 同理 测试&#xff1a; 此时刷新&#xff0c;会话ID一直在变&#xff0c;这样不好 如何解决呢&#xff1f; 不好的是确定ip之后&#xff0c;会一直在一台机上…

蓝桥杯单片机快速开发笔记——PWM

一、原理分析 使用定时器输出PWM&#xff08;脉宽调制&#xff09;信号是通过微控制器的定时器模块来生成一种周期性的脉冲信号&#xff0c;通过控制脉冲的高电平时间&#xff08;占空比&#xff09;来控制输出信号的平均功率。以下是生成PWM信号的基本原理概述&#xff1a; 定…