prometheus监控机器CPU、内存、磁盘,接口可用性探测监控并异常报警_prometheus告警主机、cpu、内存-程序员宅基地

技术标签: 可用性测试  prometheus  

实现监控机器CPU、内存、磁盘,接口可用性探测监控并异常报警

所需组件:prometheus+blackbox_exporter+alertmanager+prometheus-webhook-dingtalk+node_exporter+grafana

组件说明:

prometheus 监控端
blackbox_exporter http探测端
alertmanager 告警端
prometheus-webhook-dingtalk 钉钉告警组件
node_exporter 采集端
grafana 展示端

组件部署:

prometheus:

下载地址:

https://github.com/prometheus/prometheus/releases/download/

部署步骤:

tar -zxvf prometheus-2.25.0.linux-amd64.tar.gz
mv prometheus-2.25.0.linux-amd64 prometheus

启动命令:

vi /usr/lib/systemd/system/prometheus.service

添加:
[Unit]
Description=https://prometheus.io/

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --log.format=json

[Install]
WantedBy=multi-user.target
启动:systemctl start prometheus.service

配置文件:

/usr/local/prometheus/prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 172.16*.*:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
    - "/etc/prometheus/*.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

#linux主机监控
  - job_name: '172.21.*.*'
    static_configs:
    - targets: ['172.21.*.*:9100']




  - job_name: 'http_duogan'
    metrics_path: /probe
    params:
      module: [http_2xx]  # 仅检查返回2xx状态码的响应i
    scrape_interval: 3m  # 设置探测频率为3分钟
    scrape_timeout: 30s  # 设置探测超时时间为30秒
    static_configs:
      - targets:
          - 'https://www.digitalpole.shujijian.com/multi/alive/alive'
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 172.16.*.*:9115  # 使用Blackbox Exporter进行探测


# redis监控
  - job_name: "redis"
    static_configs:
      - targets: ["172.16.*.*:9121"]


#mysql 监控
  - job_name: 'mysql_monitor'
    static_configs:
      - targets: ['172.21.*.*:9104']
#es监控

  - job_name: 'es_monitor'
    static_configs:
      - targets: ['172.16.*.*:9114']


/etc/prometheus/java.yml 接口探测告警规则

groups:
  - name: http_alerts_duogan
    rules:
      - alert: 系统接口探测异常!
        expr: probe_success{job="http_duogan"} == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "{
   { $labels.instance }}  系统接口探测异常!"
          description: "{
   { $labels.instance }}  系统接口探测异常,接口状态为不可用!"





/etc/prometheus/duogan.yml cpu、内存、磁盘告警规则

groups:
- name: test
  rules:
  - alert: CPU使用率告警
    expr:  1 - avg(irate(node_cpu_seconds_total{mode="idle",job!~"(IDC-GPU|hw-nodes-prod-ES|nodes-test-GPU|nodes-dev-GPU)"}[30m])) by (instance) > 0.8
    for: 1m  
    labels:
      level: warning
    annotations:
      summary: "{
   { $labels.instance }} CPU使用率告警 "
      description: "{
   {$labels.instance}} CPU使用率超过80%(当前值: {
   { $value }} )"

  - alert: CPU使用率告警 
    expr: 1 - avg(irate(node_cpu_seconds_total{mode="idle",job=~"(IDC-GPU|hw-nodes-prod-ES)"}[30m])) by (instance) > 0.75
    for: 1m
    labels:
      level: warning
    annotations:
      summary: "{
   { $labels.instance }} CPU负载告警 "
      description: "{
   {$labels.instance}} CPU使用率超过75%(当前值: {
   { $value }})"

  - alert:  内存使用率告警
    expr:  (1-node_memory_MemAvailable_bytes{job!="IDC-GPU"} /  node_memory_MemTotal_bytes{job!="IDC-GPU"}) * 100 > 80
    labels:
      level: critical
    annotations:
      summary: "{
   { $labels.instance }} 可用内存不足告警"
      description: "{
   {$labels.instance}} 内存使用率已达80% (当前值: {
   { $value }})"

  - alert:  内存使用率告警
    expr:  (1-node_memory_MemAvailable_bytes{job!="IDC-GPU"} /  node_memory_MemTotal_bytes{job!="IDC-GPU"}) * 100 > 75
    labels:
      level: critical
    annotations:
      summary: "{
   { $labels.instance }} 可用内存不足告警"
      description: "{
   {$labels.instance}} 内存使用率已达75% (当前值: {
   { $value }})"



  - alert:  磁盘使用率告警
    expr: 100 - (node_filesystem_avail_bytes{fstype=~"ext4|xfs", mountpoint !~ "/var/lib/[kubelet|rancher].*" } / node_filesystem_size_bytes{fstype=~"ext4|xfs", mountpoint !~ "/var/lib/[kubelet|rancher].*"}) * 100 > 80
    labels:
      level: warning
    annotations:
      summary: "{
   { $labels.instance }} 磁盘使用率告警"
      description: "{
   {$labels.instance}} 磁盘使用率已超过80% (当前值: {
   { $value }})"

  - alert:  磁盘使用率告警
    expr: 100 - (node_filesystem_avail_bytes{fstype=~"ext4|xfs", mountpoint !~ "/var/lib/[kubelet|rancher].*" } / node_filesystem_size_bytes{fstype=~"ext4|xfs", mountpoint !~ "/var/lib/[kubelet|rancher].*"}) * 100 > 75
    labels:
      level: warning
    annotations:
      summary: "{
   { $labels.instance }} 磁盘使用率告警"
      description: "{
   {$labels.instance}} 磁盘使用率已超过75% (当前值: {
   { $value }})"

blackbox_exporter:

下载地址:

https://github.com/prometheus/blackbox_exporter/

部署步骤:

tar -zxvf blackbox_exporter-0.24.0.linux-amd64.tar.gz
mv blackbox_exporter-0.24.0.linux-amd64 blackbox_exporter

启动命令:

nohup ./blackbox_exporter --config.file=blackbox.yml &

配置文件:

/usr/local/blackbox_exporter/blackbox.yml

modules:
  http_2xx:
    prober: http
    http:
      preferred_ip_protocol: "ip4"
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  grpc:
    prober: grpc
    grpc:
      tls: true
      preferred_ip_protocol: "ip4"
  grpc_plain:
    prober: grpc
    grpc:
      tls: false
      service: "service1"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
      - send: "SSH-2.0-blackbox-ssh-check"
  irc_banner:
    prober: tcp
    tcp:
      query_response:
      - send: "NICK prober"
      - send: "USER prober prober prober :prober"
      - expect: "PING :([^ ]+)"
        send: "PONG ${1}"
      - expect: "^:[^ ]+ 001"
  icmp:
    prober: icmp
  icmp_ttl5:
    prober: icmp
    timeout: 5s
    icmp:
      ttl: 5

alertmanager:

下载地址:

https://github.com/prometheus/alertmanager

部署步骤:

tar -zvf alertmanager-0.25.0.linux-amd64.tar.gz
mv alertmanager-0.25.0.linux-amd64.tar.gz alertmanager

启动命令:

nohup ./alertmanager &

配置文件:

/usr/local/alertmanager/alertmanager.yml

route:
  group_by: ['alertname']
  group_wait: 30s    #当传入的警报创建了一组新的警报时,请至少等待多少秒发送初始通知。默认30s
  group_interval: 5m  #发送一次告警后,等待多久再发送同组新增的告警。默认5m
  repeat_interval: 10m  #如果警报已成功发送,请等待多少小时以重新发送警报。默认4h
  receiver: 'webhook1'
receivers:
- name: 'webhook1'
  webhook_configs:
  - url: 'http://172.16.*.*:8060/dingtalk/webhook1/send'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

prometheus-webhook-dingtalk:

下载地址:

https://github.com/timonwong/prometheus-webhook-dingtalk

部署步骤:

tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

mv prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz prometheus-webhook-dingtalk

启动命令:

nohup ./prometheus-webhook-dingtalk --config.file=config.example.yml &

配置文件:

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

## Request timeout
# timeout: 5s

## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true

## Customizable templates path
templates:
   - contrib/templates/*.tmpl

## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
#default_message:
#  title: '{
   { template "legacy.title" . }}'
#  text: '{
   { template "legacy.content" . }}'

## Targets, previously was known as "profiles"
targets:
  webhook1:
   #钉钉机器人地址
    url: https://oapi.dingtalk.com/robot/send?access_token=05989278
    # secret for signature
    secret: 钉钉机器人se
  webhook2:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
  webhook_legacy:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
    # Customize template content
    message:
      # Use legacy template
      title: '{
   { template "legacy.title" . }}'
      text: '{
   { template "legacy.content" . }}'
  webhook_mention_all:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
    mention:
      all: true
  webhook_mention_users:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx
    mention:
      mobiles: ['156xxxx8827', '189xxxx8325']

钉钉告警模版:

/usr/local/prometheus-webhook-dingtalk/contrib/templates/default.tmpl

...
...
{
   {/* Firing */}}

{
   { define "default.__text_alert_list" }}{
   { range . }}

**触发时间:** {
   { dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

**摘要:** {
   { .Annotations.summary }}

**描述:** {
   { .Annotations.description }}

**监控:** [grafana](http://grafana_ip:8000/grafana/d/GuJ5DHMnz/fu-wu-qi-jian-kong-tu-biao?orgId=1)

**详情:**
{
   { range .Labels.SortedPairs }}{
   { if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {
   { .Name }}: {
   { .Value | markdown | html }}
{
   { end }}{
   { end }}
{
   { end }}{
   { end }}

{
   {/* Resolved */}}

{
   { define "default.__text_resolved_list" }}{
   { range . }}

**触发时间:** {
   { dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

**解除时间:** {
   { dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}

**摘要:** {
   { .Annotations.summary }}

**监控:** [grafana](http://grafana_ip:8000/grafana/d/GuJ5DHMnz/fu-wu-qi-jian-kong-tu-biao?orgId=1)

**详情:**
{
   { range .Labels.SortedPairs }}{
   { if and (ne (.Name) "severity") (ne (.Name) "summary") }}> - {
   { .Name }}: {
   { .Value | markdown | html }}
{
   { end }}{
   { end }}
{
   { end }}{
   { end }}
...
...

node_exporter:

下载地址:

https://github.com/prometheus/node_exporter

部署步骤:

tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64.tar.gz node_exporter

启动命令:

systemctl start node_exporter.service

添加

[Unit]
Description=node_exporter
After=network.target

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动:systemctl start node_exporter.service

配置文件:

无配置文件

grafana:

下载地址:

http://www.rpmfind.net/linux/rpm2html/search.php?query=grafana&submit=Search+…&system=&arch=

部署步骤:

yum install -y initscripts fontconfig
yum install -y grafana-7.5.7-2.el8.x86_64.rpm

启动命令:

systemctl start grafana-server.service

启动后访问地址:ip:3000初始用户名和密码都是admin
第一次登陆需要修改密码

添加prometheus数据源:Configuration -> Data Sources ->add data source -> Prometheus

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45779793/article/details/131932963

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文