使用docker形式部署prometheus+alertmanager+钉钉告警

news2024/11/16 23:54:32

一、拉取所需要的镜像

docker pull prom/node-exporter
docker pull grafana/grafana 
docker pull prom/prometheus 
docker pull prom/alertmanager 

其中

prom/node-exporter:用于收集主机系统信息和指标的

grafana/grafana:是一个用于可视化和分析监控指标的开源平台。

prom/prometheus:是一个开源的监控系统,用于收集和存储时间序列数据,并提供基于数据的查询、报警和可视化功能。

prom/alertmanager:是 Prometheus 的告警管理器,用于处理和路由来自 Prometheus 服务器的告警通知。

二、容器启动

(1)启动node-exporter
 docker run --name node-exporter -d -p 9100:9100 -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /:/rootfs:ro prom/node-exporter

(2)启动alertmanager

在启动alertmanager之前,可以自己编写一个alertmanager.yml文件,然后使用卷挂载到该容器内部。

# 创建挂载目录
mkdir /opt/alertmanager
cd /opt/alertmanager/
# 编写该文件
vim alertmanager.yml
alertmanager.yml
global:
  resolve_timeout: 5m

route: # 告警路由配置,定义如何处理和发送告警
  receiver: webhook
  group_wait: 30s
  group_interval: 1m
  repeat_interval: 5m #告警间隔时间5分钟
  group_by: [alertname]
  routes:
  - receiver: webhook
    group_wait: 10s

receivers: # 告警接收者配置,定义如何处理和发送告警
- name: webhook
  webhook_configs:
  - url: http://192.168.110.45:8060/dingtalk/webhook1/send  # 告警 Webhook URL,钉钉服务url
    send_resolved: true # 是否发送已解决的告警。如果设置为 true,则在告警解决时发送通知
启动
docker run --name alertmanager -d -p 9093:9093 -v /opt/alertmanager/:/etc/alertmanager/ --name alertmanager prom/alertmanager
(3)启动grafana
docker run --name grafana  -d -p 3000:3000 --name=grafana grafana/grafana
(4)启动prometheus

在启动prometheus之前,可以自己编写一个prometheus.yml文件,然后使用卷挂载到该容器内部。

# 创建挂载目录
mkdir /opt/prometheus
cd /opt/prometheus/
# 编写该文件
vim prometheus.yml

prometheus.yml文件

global:
  scrape_interval:     60s
  evaluation_interval: 60s
# Alertmanager配置
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["192.168.110.45:9093"] # 告警服务地址
# rule配置
rule_files:
  - "/etc/prometheus/rules.yml"  #挂载在容器中的路径
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['192.168.110.45:9090'] # 采取prometheus指标数据
        labels:
          instance: prometheus
  - job_name: linux
    static_configs:
      - targets: ['192.168.110.45:9100'] # 采取本地指标数据,该服务和端口node_exporter容器已经暴露
        labels:
          instance: localhost

将prometheus和alertmanager进行关联,在prometheus目录下创建一个rules.yml文件的告警规则

root@ai:/opt/prometheus# pwd
/opt/prometheus
root@ai:/opt/prometheus# cat rules.yml
groups:
  - name: host_monitoring
    rules:
      - alert: 内存报警
        expr: netdata_system_ram_MiB_average{chart="system.ram",dimension="free",family="ram"} < 800
        for: 2m
        labels:
          team: node
        annotations:
          Alert_type: 内存报警
          Server: '{{$labels.instance}}'
          explain: "内存使用量超过90%,目前剩余量为:{{ $value }}M"

      - alert: CPU报警
        expr: netdata_system_cpu_percentage_average{chart="system.cpu",dimension="idle",family="cpu"} < 20
        for: 2m
        labels:
          team: node
        annotations:
          Alert_type: CPU报警
          Server: '{{$labels.instance}}'
          explain: "CPU使用量超过80%,目前剩余量为:{{ $value }}"

      - alert: 磁盘报警
        expr: netdata_disk_space_GiB_average{chart="disk_space._",dimension="avail",family="/"} < 4
        for: 2m
        labels:
          team: node
        annotations:
          Alert_type: 磁盘报警
          Server: '{{$labels.instance}}'
          explain: "磁盘使用量超过90%,目前剩余量为:{{ $value }}G"

      - alert: 服务告警
        expr: up == 0
        for: 2m
        labels:
          team: node
        annotations:
          Alert_type: 服务报警
          Server: '{{$labels.instance}}'
          explain: "netdata服务已关闭"

注意:因为我们是使用挂载的方式将配置文件投射到容器中,相应的文件路径也要发生变化。
比如在prometheus.yaml文件中:rule_files: [“/etc/prometheus/rules.yml”] 的路径就要填写为容器内该文件存放的路径。

启动

docker run --name prometheus -d -p 9090:9090 -v /opt/prometheus:/etc/prometheus prom/prometheus

(5)启动webhook-prometheus-dingtalk

该服务不使用docker的方式,而是直接运行已经编译好的二进制文件,然后长期运行在服务器上的方式

1、首先获取钉钉告警机器人的webhook token和加签

2、安装webhook-dingtalk插件

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

tar zxf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 
mkdir -p /usr/local/prometheus/webhook-dingtalk
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64/* /usr/local/prometheus/webhook-dingtalk

3、配置webhook-dingtalk使用systemd管理

cp /usr/local/prometheus/webhook-dingtalk/config.example.yml /usr/local/prometheus/webhook-dingtalk/config.yml
vim /usr/lib/systemd/system/webhook.service

#webhook.service文件内容
[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/prometheus/webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus/webhook-dingtalk/config.yml
User=root

[Install]
WantedBy=multi-user.target

4、Webhook-dingtalk配置钉钉webhook地址,即修改config.yml文件(该配置文件目前为默认的,)

Webhook-dingtalk配置相对比较简单,只改以下三处即可,如下图:
加签秘钥、webhook地址是咱们在钉钉创建机器人时获取的!

vim /usr/local/prometheus/webhook-dingtalk/config.yml

5、添加钉钉报警模板

vim /usr/local/prometheus/webhook-dingtalk/template.tmpl

{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
 
 
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
 
**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }}
 
**告警级别**: {{ .Labels.severity }} 
 
**告警主机**: {{ .Labels.instance }} 
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}

**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }} 
 
**告警级别**: {{ .Labels.severity }}
 
**告警主机**: {{ .Labels.instance }}
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
 
**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
 
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
 
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====侦测到{{ .Alerts.Firing | len  }}个故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
 
{{ if gt (len .Alerts.Resolved) 0 }}
**====恢复{{ .Alerts.Resolved | len  }}个故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
 
 
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

6、启动 && 开机自启

systemctl enable webhook.service --now
systemctl status webhook.service 

7、验证,查看端口是否启动

netstat -anput |grep 8060

三、测试

将node-exporter所在的容器停掉,查看效果

docker stop node-exporter所在的容器id

钉钉查看告警

参考:https://blog.csdn.net/weixin_45310323/article/details/130655840

https://blog.csdn.net/qq_52589631/article/details/131152150

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

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

相关文章

word2vector理论

目录 1.理论 2.公式 3.SkipGram的优化 1.理论 2.公式 3.SkipGram的优化 CBOW的优化, CBOW是用上下文预测中心词. Hirarchical softmax帮助我们最快的找到最大的softmax, 通过建立一个霍夫曼树.

【数据结构】AVL树相关知识详细梳理

1. AVL树的概念 AVL的全称是Adelson-Velsky-Landis&#xff0c;其名称来源于其发明者Adelson、Velsky和Landis&#xff0c; 是平衡二叉树搜索树。 它的出现是由于二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找…

城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例

1 引言 1.1研究背景、目的与意义 1.1.1研究背景 城市轨道交通系统是现代城市的重要交通方式之一&#xff0c;随着城市化进程的加速和人口增长&#xff0c;轨道交通系统的客流量不断增加。因此&#xff0c;轨道交通部门和相关企业需要对客流数据进行实时监测和分析&#xff0…

云数据库RDS MySQL性能测试与对比@2024年09月

原创&#xff1a;orczhouninedata 来源&#xff1a;云数据库技术 在不同的云厂商购买相同规格的MySQL实例(如4vCPU-16GB)&#xff0c;获得的性能相同吗&#xff0c;他们的差异如何&#xff1f;本文继续尝试回答这个问题。 详细数据&#xff1a; 测试结果概述 在本次测试中&…

常见的TTL,RS232,RS485,IIC,SPI,UART之间的联系和区别

简单总结 图片来源 RS232,RS485可参考&#xff0c;IIC&#xff0c;SPI,UART可参考 烧录程序中常听到的一句话就是USB转TTL&#xff0c;但严格来说算是USB传输数据的协议转换成TTL&#xff08;Transistor-Transistor Logic&#xff09;协议传输数据。首先&#xff0c;usb是常见…

电脑资料被拷贝了,能查出来吗?5个方法有效防止电脑泄密!

网络快速发展的背景下&#xff0c;电脑资料的安全问题日益凸显。 一旦电脑资料被非法拷贝&#xff0c;不仅可能导致企业核心机密泄露&#xff0c;还可能对个人隐私造成严重影响。 那么&#xff0c;当电脑资料被拷贝时&#xff0c;我们能否查出来&#xff1f;又该如何有效防止…

【Python】必学!教你如何在日志中隐藏明文密码?看完包会的!(附带免费源码)

前言 在项目开发中&#xff0c;有的时候会遇到一些安全需求&#xff0c;用以提升程序整体的安全性&#xff0c;提高外来非法攻击的门槛&#xff0c;而在日志中隐藏明文密码打印便是最典型的安全需求之一。 在Python中&#xff0c;明文密码往往发生于命令执行参数、debug日志、…

施耐德EcoStruxure Machine SCADA Expert(EMSE)数据监测(十八)

通过EMSE与sql数据库连接,可以实现一些过程数据的监测、存档,实现生产过程的可视化。 1.创建sql数据库表单 新建一个名为Table_Monitor的表单,添加三个元素:Re_Index 序号;Re_Date 时间;Re_Temper 温度(需要监测的数据) 2.EMSE内关联变量 2.1 先创建网格 2.2 选择数据…

unity CustomEditor的基本使用

CustomEditor用来自定义脚本的编辑面板 其基本使用方式 先准备一个类&#xff0c;继承MonoBehaviour 定义一个变量&#xff0c;然后准备一个类&#xff0c;继承自Editor 在CustomEditor中指定要去修改的类型&#xff0c;通过serializedObject.FindProperty(变量名)的方式来获…

Ubuntu下安装向日葵:闪退

下载 https://sunlogin.oray.com/download 初次安装 $ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 正在选中未选择的软件包 sunloginclient。 (正在读取数据库 ... 系统当前共安装有 234281 个文件和目录。) 准备解压 SunloginClient_15.2.0.63064_amd64.deb ..…

Java.动态代理

1.创建一个接口 package Mydynamicproxy1;public interface Star {public abstract String sing(String str);public abstract void dance(String str); }2.创建一个BigStar类&#xff0c;要实现Star这个接口 package Mydynamicproxy1;public class BigStar implements Star{…

甘肃非遗文化网站:Spring Boot开发实战

3 系统分析 当用户确定开发一款程序时&#xff0c;是需要遵循下面的顺序进行工作&#xff0c;概括为&#xff1a;系统分析–>系统设计–>系统开发–>系统测试&#xff0c;无论这个过程是否有变更或者迭代&#xff0c;都是按照这样的顺序开展工作的。系统分析就是分析系…

Java EE中的编码问题及解决方案

Java EE中的编码问题及解决方案 在Java EE开发中&#xff0c;处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码&#xff0c;影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时&#xff0c…

【中级通信工程师】终端与业务(三):电信业务

【零基础3天通关中级通信工程师】 终端与业务(三)&#xff1a;电信业务 本文是中级通信工程师考试《终端与业务》科目第三章《电信业务》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目&#xff0c;有效复习通过率可达90%以上&#xff0c;本文结合了高频考点和近几…

代码随想录算法训练营第十六天|512.找树左下角的值 112. 路径总和 113. 路径总和ii 106.从中序与后序遍历序列构造二叉树

512.找树左下角的值 给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路&#xff1a; 递归三部曲&#xff1a; 参数和返回值&#xff1a;传入节点是参数&#xff0c;返回值是最终值int终止条件&#xff1a;遇到空节点直接返回&#xff0c;或者…

SD2.0 Specification之写保护

文章目录 1 机械开关写保护&#xff08;由主机负责实现效果&#xff09;2 卡内部写保护&#xff08;由卡负责实现&#xff09;3 密码写保护 本文章主要讲解关于SD2.0写保护功能的内容&#xff0c;基础概念和其它内容请参考以下文章。 SD2.0 Specification简述 SD卡支持3种写保护…

论文阅读《Co-clustering for Federated Recommender System》

论文概况 本文是2024 WWW的一篇联邦推荐论文&#xff0c;提出了一个基于特定类别物品相似度来进行聚类的联邦推荐框架。 Introduction 分析了经典聚类技术KMeans在联邦推荐设置中的不足&#xff0c;提出了一种新的共聚类联邦推荐机制CoFedRec&#xff0c;该机制在每个通信回合…

华为NAT ALG技术的实现

双向NAT技术&#xff1a;经过防火墙的2报文源IP地址和目的IP地址都同时被转换&#xff0c;外网发送报文给内网服务器&#xff0c;先转换目的IP地址&#xff0c;然后符合安全策略后&#xff0c;在替换源IP地址&#xff0c;然后将记录写入防火墙会话表&#xff0c;并发送出报文&a…

结构化知识抽取案例

假设我们有一个包含中文电影信息的数据库表 movies&#xff0c;其中包含以下字段&#xff1a; movie_id (电影ID)title (电影标题)year (上映年份)genre (类型)director (导演)rating (评分) 表中的部分数据如下&#xff1a; 知识抽取步骤 数据获取&#xff1a;从数据库中查…

WAF,全称Web Application Firewall,好用WAF推荐

WAF&#xff0c;全称Web Application Firewall&#xff0c;即Web应用防火墙&#xff0c;是一种网络安全设备&#xff0c;旨在保护Web应用程序免受各种Web攻击&#xff0c;如SQL注入、跨站脚本&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等。 WAF通…