Prometheus监控系统部署及应用

news2024/9/20 15:07:22

        Prometheus 由 Go 语言编写而成,采用 Pu11 方式获取监控信息,并提供了多维度的数据模型和灵活的査询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过KubernetesCons1、DNS 等多种方式动态获取监控对象。在数据采集方面,借助 Go 语言的高并发特性,单机 Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机 Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。

一、Prometheus的架构介绍

1.起源

        Prometheus 起源于 Soundcloud ,因为微服务迅速发展,导致实例数量以几何倍数递增,不得不考虑设计一个符合以下几个功能的监控系统:

  • 多维数据模型,可以按照实例,服务,端点和方法之类的维度随意对数据进行切片和切块。
  • 操作简单,可以随时随地部署监控服务,甚至在本地工作站上,而无需设置分布式存储后端或重新配置环境。
  • 可扩展的数据收集和分散的架构,以便于可以可靠的监控服务的许多实例,独立团队可以部署独立的监控服务。
  • 转化为一种查询语言,可以利用数据模型进行有效的警报和图形展示。

        但是,当时的情况是,以上的功能都分散在各个系统之中,直到2012年 Soundcloud 某位大神启动了一个孵化项目,Soundcloud 才把所有功能集合到一起,这时也就有了 Prometheus。 Prometheus是用 Go 语言编写,从一开始就是开源的。 尽管一直很低调,一开始还是获得了很多粉丝与贡献者; 2016年 Prometheus 成为继 Kubernetes 之后,成为 CNCF(cloud Native computing Foundation)第二个成员。

2.什么是 Prometheus

        Prometheus 具有足够的通用性,可以监控各个级别的实例:你自己的应用程序、第三方服务、主机或网络设备等等。此外 Prometheus 特别适用于监控动态云环境和 Kubernetes 云原生环境。

        但是也需要注意的是 Prometheus 并不是万能的,目前并没有解决下面的一些问题:

  • 日志和追踪(Prometheus 只处理指标,也称为时间序列)
  • 基于机器学习或 AI 的异常检测
  • 水平扩展、集群化的存储

3.Prometheus 的运行原理

        通过 Http 协议周期性抓取被监控组件的状态。输出被监控组件信息的 Http 接口称为 exporter。常用组件大部分都有 exporter 可以直接使用,比如 haproxy,Nginx,MySQL,Linux 系统信息(磁盘、内存、CPU、网络等)

4.Prometheus组件构成

Prometheus生态系统由多个组件构成,其架构如下图所示:

(1)Prometheus server

        服务核心组件,采用 pu11 方式收集数据, 通过 http 协议传输。并存储时间序列数据

(2)Exporters/Jobs

        负责收集不支持 Instrumentation 的目标对象的性能数据,并通过 HTTP 接口供 PrometheusServer 获取。

(3)Node-Exporter

        用于收集各 node 节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。

(4)Kube-state-Metrics

        为 prometheus 采集 k8s 资源数据的 exporter,通过监听 APIServer 收集 kubernetes 集群内资源对象的状态指标数据,例如 pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。 需要注意的是 kube-state-metrics 只是简单的提供一个metrics 数据,并不会存储这些指标数据,所以可以使用 Prometheus 来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个replicas?现在可用的有几个?多少个 Pod是running/stopped/terminated 状态?Pod 重启了多少次?有多少 job 在运行中。

(5)cadvisor

        用来监控容器内部使用资源的信息,比如CPU、内存、网络 I/0、磁盘 I/0。

(6)blackbox-exporter

        监控业务容器存活性。

(7)Service Discovery

        服务发现,Prometheus 支持多种服务发现机制:文件,DNS,Consul,Kubernetes,openstackEC2等等。基于服务发现的过程并不复杂,通过第三方提供的接口,Prometheus 查询到需要监控的Target列表,然后轮训这些 Target 获取监控数据。

(8)Alertmanager

        是一个独立的告警模块,从 Prometheus server 端接收到 alerts 后,会进行去重、分组, 并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉等。

(9)Pushgateway

        类似一个中转站,Prometheus 的 server 端只会使用 pu11 方式拉取数据,但是某些节点因为某些原因只能使用 push 方式推送数据,那么它就是用来接收 push 而来的数据并暴露给 Prometheus 的server 拉取的中转站。 可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后Prometheus server 统一从Pushgateway 拉取数据

(10)Grafana

        是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。

5.Prometheus 的特性

(1)提供多维度数据模型和灵活的査询语言:通过将监控指标关联多个Tag,来将监控数据进行任意维度的组合;提供 HTTP 查询接口;可以很方便的结合 Grafana等组件展示数据


(2)支持服务器节点的本地存储,通过 prometheus 自带的时序数据库,可以完成每秒千万级的数据存储。不仅如此,在保存大量历史数据的场景中,prometheus 还可以对接第三方时序数据库如 OpenTSDB等


(3)定义了开放指标数据标准,以基于 HTTP 的 Pu11 方式采集时序数据,只有实现了 prometheus 监控数据格式的监控数据才可以被 prometheus 采集:并支持以 Push 方式向中间网关推送时序数据,能更灵活地应对各种监控场景。

(4)支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集。prometheus 目前已经支持 Kubernetes、consul 等多种服务发现机制,可以减少运维人员的手动配置环节。


(5)支持多种多样的图表和界面展示,比如 Grafana 等。

6.Prometheus 的工作流程

(1)配置监控目标:在 Prometheus 配置文件中定义监控目标及其相应的指标。

(2)拉取指标数据:Prometheus 会定期从监控目标拉取指标数据,并将数据存储到本地存储中。

(3)存储指标数据:Prometheus 会使用一种自定义的时间序列数据库(TSDB)存储指标数据,以便进行分析和查询。
(4)分析指标数据:Prometheus 提供了一个表达式语言,可以基于时间序列数据进行数据处理和分析操作,比如计算归一化指标、统计分位数、处理异常值等。
(5)查询指标数据:Prometheus 提供了一个基于 HTTP 的査询 API,可以用来执行査询操作和获取查询结果,获取到的查询数据可以通过图表和仪表盘的方式进行展示。

7.Grafana 介绍

        Grafana 是一款用 Go 语言开发的开源数据可视化工具,可以做数据监控和说几句统计,带有告警功能。其特点如下:

  • 可视化:快速和灵活的客户端图形具有多种选项,面板插件为许多不同的方式可视化指标和日志。
  • 报警:可视化地为最重要的指标定义警报规则,Granfana将持续评估他们,并发送通知。
  • 通知:警报更改状态时,他会发出通知,接受电子邮件通知。
  • 动态仪表盘:使用模板变量创建动态和可重用的仪表盘,这些模板变量作为下拉菜单出现在仪表板顶部。
  • 混合数据源:在同一个图中混合不同的数据源,可以根据每个查询指定数据源,这甚至适用于自定义数据源。
  • 注释:注释来自不同数据源图标,将鼠标悬停在事件上可以显示完整的事件元数据和标记。
  • 过滤器:过滤器允许您动态创建新的键~值,这些过滤器将自动应用于该数据源的所有查询。

二、Prometheus 的安装

1.资源配置

2.部署Prometheus

Prometheus 的安装包可以前往官网下载:https://prometheus,io/download/

(1)Prometheus 的安装
[root@localhost ~]# hostnamectl set-hostname prometheus
[root@localhost ~]# bash
[root@prometheus ~]# setenforce 0
[root@prometheus ~]# systemctl stop firewalld
[root@prometheus ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@prometheus ~]# vim /etc/selinux/config 
[root@prometheus ~]# tar zxvf prometheus-2.48.0.linux-amd64.tar.gz 
prometheus-2.48.0.linux-amd64/
prometheus-2.48.0.linux-amd64/prometheus
prometheus-2.48.0.linux-amd64/promtool
prometheus-2.48.0.linux-amd64/LICENSE
prometheus-2.48.0.linux-amd64/consoles/
prometheus-2.48.0.linux-amd64/consoles/node-overview.html
prometheus-2.48.0.linux-amd64/consoles/node-disk.html
prometheus-2.48.0.linux-amd64/consoles/prometheus-overview.html
prometheus-2.48.0.linux-amd64/consoles/prometheus.html
prometheus-2.48.0.linux-amd64/consoles/node.html
prometheus-2.48.0.linux-amd64/consoles/node-cpu.html
prometheus-2.48.0.linux-amd64/consoles/index.html.example
prometheus-2.48.0.linux-amd64/console_libraries/
prometheus-2.48.0.linux-amd64/console_libraries/menu.lib
prometheus-2.48.0.linux-amd64/console_libraries/prom.lib
prometheus-2.48.0.linux-amd64/prometheus.yml
prometheus-2.48.0.linux-amd64/NOTICE
[root@prometheus ~]# mv prometheus-2.48.0.linux-amd64 /usr/local/prometheus
[root@prometheus prometheus]# ln -s /usr/local/prometheus/prometheus /usr/local/bin
[root@prometheus prometheus]# ln -s /usr/local/prometheus/promtool /usr/local/bin
[root@prometheus prometheus]# prometheus --version
prometheus, version 2.48.0 (branch: HEAD, revision: 6d80b30990bc297d95b5c844e118c4011fad8054)
  build user:       root@26117804242c
  build date:       20231116-04:35:21
  go version:       go1.21.4
  platform:         linux/amd64
  tags:             netgo,builtinassets,stringlabels
(2)注册Prometheus的系统服务
[root@prometheus ~]# vim /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 --web.listen-address=:9090

[Install]
WantedBy=multi-user.target
(3)启动服务
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl enable --now prometheus

3.访问测试

(1)访问Prometheus首页

http://192.168.10.108:9090/

(2)查看被监控端的状态

点击stats-Targets

(3)查看详细监控信息

http://192.168.10.108:9090/metrics

三、部署node_exporter

        Exporter 是 Prometheus 的指标数据收集组件。它负责从目标 Jobs 收集数据,并把收集到的数据转换为 Prometheus 支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server 端发送数据,而是等待 Prometheus Server 主动抓取,node-exporter 默认的抓取 url 地址:http://ip:9100/metrics

1.agent 服务器端(被监控端)安装 node exporter

(1)安装node exporter
[root@localhost ~]# hostnamectl set-hostname agent01
[root@localhost ~]# bash
[root@agent01 ~]# setenforce 0
[root@agent01 ~]# vim /etc/selinux/config 
[root@agent01 ~]# systemctl stop firewalld
[root@agent01 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
root@agent01 ~]# tar zxvf node_exporter-1.7.0.linux-amd64.tar.gz 
node_exporter-1.7.0.linux-amd64/
node_exporter-1.7.0.linux-amd64/LICENSE
node_exporter-1.7.0.linux-amd64/node_exporter
node_exporter-1.7.0.linux-amd64/NOTICE
[root@agent01 ~]# mv node_exporter-1.7.0.linux-amd64 /usr/local/node_exporter
(2)添加服务为系统服务
[root@agent01 ~]# vim /usr/lib/systemd/system/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
(3)启动
[root@agent01 ~]# systemctl daemon-reload
[root@agent01 ~]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
[root@agent01 ~]# systemctl start node_exporter
(4)查看端口
[root@agent01 ~]# netstat -anpt | grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      2503/node_exporter

备注:windows主机的exporter程序监听的9182端口

2.在Prometheus服务端配置文件添加监控项

(1)进入Prometheus配置文件添加target
[root@prometheus ~]# vim /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:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.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"]
  - job_name: 'agent'
    static_configs:
      - targets: ['192.168.10.101:9100','192.168.10.102:9100','192.168.10.50:9182']

备注
        Linux 主机的exporter 进程监听的是 TCP 9100 端口,windows 主机的exporter 进程监听的TCP9182 端口。

(2)重启 Prometheus 服务
[root@prometheus ~l# systemctl restart prometheus.service

        重启完浏览器刷新访问 192.168.10.108:9090,打开普罗米修斯的监控页面 status-Targets 查看有没有添加成功。如下图所示。

四、Grafana的部署与应用

1.部署Grafana

(1)安装Grafana
[root@localhost ~]# hostnamectl set-hostname Grafana
[root@localhost ~]# bash
[root@grafana ~]# yum -y install grafana-enterprise-10.2.2-1.x86_64.rpm
(2)启动服务 
[root@grafana ~]# systemctl start grafana-server
[root@grafana ~]# systemctl enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
(3)关闭防火墙 
[root@grafana ~]# systemctl stop firewalld
[root@grafana ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@grafana ~]# setenforce 0
[root@grafana ~]# vim /etc/selinux/config 

2.浏览器访问Grafana 

(1)登录

http://192.168.10.107:3000/login

默认端口为 3000
初始账号和密码都是 admin

(2)设置数据源

第一次登录进入后让你设置新的密码,进入Granfana,点击DATA SOURCRE添加数据源。 

 (2)设置Prometheus为数据源

 

(3)填写连接信息 

(4)在页面底端点击保存并测试的按钮 

 (5)查看添加的数据源

点击“Connections”--->"Data sources",查看已添加的数据源。

3.用导入模块的方式添加Grafana监控面板

(1)在home页面点击添加dashboard 

(2)选择导入模块的方法 

 (3)指定模板 ID

        模板 ID 可以从 Grafana 官网获得,Grafana为用户提供了大量的模板,简化了用户的管理难度。本案例中使用的模板 ID 为 12633,填写好 ID 后点击“Load”按钮。https://grafana.com/grafana/dashboards/

注意:

12633:针对 Linux 的节点进行监控的模板

14694:针对 windows 的节点进行监控的模板

用户也可以选择其他对应的模板进行创建。

(4)选择数据源

在下拉菜单中选择对应的数据源,再点击“Import”按钮进入导入。

(5)导入后查看监控图像

4.自定义dashboard监控面板

(1)在home页面点击添加dashboard

(2)选择“ADD visualization” 方式添加dashboard

visualizaiton:可视化

此方法需要用户手动对dashboard面板进行布局,监控参数也需要用户自行设置。

(2)选择Prometheus数据源

(3)设置查询规则

Metric:选择监控项
Label filters:设置过滤规则,表示要监控哪台主机。

        Instance:表示使用被监控主机的 IP 地址选择

        Job:表示使用主机名进行选择

五、Prometheus告警

1.安装告警组件alertmanager

(1)安装alertmanager
[root@prometheus ~]# tar zxvf alertmanager-0.26.0.linux-amd64.tar.gz 
alertmanager-0.26.0.linux-amd64/
alertmanager-0.26.0.linux-amd64/alertmanager.yml
alertmanager-0.26.0.linux-amd64/NOTICE
alertmanager-0.26.0.linux-amd64/amtool
alertmanager-0.26.0.linux-amd64/alertmanager
alertmanager-0.26.0.linux-amd64/LICENSE
[root@prometheus ~]# mv alertmanager-0.26.0.linux-amd64 /usr/local/alertmanager
 (2)添加alertmanager服务
[root@prometheus ~]# vim /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=alertmanager project
After=network.target

Type=simple
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml --storage.path=/usr/local/alertmanager --web.listen-address=0.0.0.0:9093
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl start alertmanager
[root@prometheus ~]# systemctl enable alertmanager
Created symlink from /etc/systemd/system/multi-user.target.wants/alertmanager.service to /usr/lib/systemd/system/alertmanager.service.

#属性解析:web.listen-address是与prometheus交互的端口

(3)访问alertmanager 的 WEB 页面

alertmanager 的 web 界面使用 9093 的端口,

登录的 url 如下http://192.168.10.108:9093

(5)将alertmanager增加到 prometheus
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml

#修改 targets 对应的地址为 Prometheus 的地址

alerting:
  alertmanagers:
    - static configs:
        - targets:
          - 192.168.10.108:9093
(6)检查 Prometheus 配置文件的语法
[root@prometheus ~]# promtool check config /usr/local/prometheus/prometheus.yml
Checking /usr/local/prometheus/prometheus.yml
SUCCESS:1 rule files found
SUCCESS: /usr/local/prometheus/prometheus.yml is valid prometheus config file syntax
Checking /usr/local/prometheus/rules/hoststats-alert.rules
SUCCEss:3 rules found
(7)重启Prometheus
[root@prometheus ~]# systemctl restart prometheus
[root@prometheus ~]# netstat -anpt | grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN      2125/prometheus     
tcp6       0      0 ::1:56030               ::1:9090                ESTABLISHED 2125/prometheus     
tcp6       0      0 ::1:60742               ::1:9090                TIME_WAIT   -                   
tcp6       0      0 ::1:9090                ::1:56030               ESTABLISHED 2125/prometheus     
tcp6       0      0 192.168.10.108:9090     192.168.10.1:55723      FIN_WAIT2   - 

2.添加邮箱告警媒介

[root@prometheus ~]# vim /usr/local/alertmanager/alertmanager.yml 

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.qq.com:25'
  smtp_from: '3315715079@qq.com'
  smtp_auth_username: '3315715079@qq.com'
  smtp_auth_password: 'sxjusuhrtidwdaej'
  smtp_hello: 'qq.com'
  smtp_require_tls: false

# 路由配置
route:
  group_by: ['alertname', 'cluster']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10s
  receiver: 'email'

# 收信人员
receivers:
- name: 'email'
  email_configs:
  - to: '3315715079@qq.com'
    send_resolved: true

# 规则主动失效措施,如果不想用的话可以取消掉
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

备注:
配置说明
global:
resolve timeout:5m#当告警的状态由"firing"变为"resolve"的以后还要呆多长时间,才宣布告警解除

smtp from:'xxxxxxxxxx@gq.com'         #发件人邮箱
smtp_smarthost:'smtp.qq.com:25        #qq 邮箱 smtp 端口端囗

smtp auth username:xxxxxxxxx@qq.com        #邮箱地址

smtp auth password:"'pcmibkzsdrfefcaha''      #邮箱安全码

smtp require tls:false        #不携带证书请求
smtp hello:'qq.com'

#路由配置

route:
group_by:['alertname']         #告警应该根据那些标签进行分组

                                             #这里匹配的是 key,当相同标签的告警一起来的时候分为同一组

group wait:5s        #一组的告警发出前要等待多少秒,这个是为了把更多的告警一个批次发出去

group interval:5s        #同一组的多批次告警间隔多少秒后,才能发出

repeat interval:5m        #重复的告警要等待多久后才能再次发出去
receiver:email        #指定路由到 email 的路由

#发送配置

receivers:        #定义谁接收告警,(接收路由的告警)

- name : 'email'        #名称对应 route 中的 receiver 参数

  email configs:        #采用邮箱机制

- to: 'XXXXXXXXX@qq.com'        #发送到那里的邮箱

  send resolved:true        #是否发送状态恢复的邮件

[root@prometheus ~]# systemctl restart alertmanager
[root@prometheus ~]# netstat -tunlp | grep alert
tcp6       0      0 :::9094                 :::*                    LISTEN      2165/alertmanager   
tcp6       0      0 :::9093                 :::*                    LISTEN      2165/alertmanager   
udp6       0      0 :::9094                 :::*                                2165/alertmanager 

备注:
alertmanager 进程使用的是 TCP 9094 的端口。

3.配置 prometheus,添加告警规则

[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
rule files:
  - /usr/local/prometheus/rules/*.rules

每个告警规则有五部分组成

  • 名称(alert)
  • 触发条件(expr),这是个PromQL 表达式,例如 CPU 使用率超过 58%,在触发条件被满足之前,告警的状态都是 Inactive
  • 持续时间(for),例如 CPU 使用率超过 58%的时间持续 30 秒,在 30 秒之内,此告警状态为 pending,超过 30 秒就进入 firing 状态
  • 标签(labels),给告警打上标签,在使用时可以根据标签定位到指定告警
  • 注解(annotations),对告警的描述,这些内容可以用来详明告警时刻的详细情况
(1)向 Prometheus 中添加告警规则路径
[root@prometheus ~]# mkdir /usr/local/prometheus/rules
(2)添加告警规则
[root@prometheus ~# vim /usr/local/prometheus/rules/hoststats-alert,rules
groups:
- name: node1_alerts
  rules:
  - alert: HighNodeCpu
    expr: instance:node_cpu:avg_rate1m > 10
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: Hgih Node CPU for 1 hour
      console: This is a Test


  - alert: HostOutOfMemory
    expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: Host out of memory (instance {{ $labels.instance }})
      description: "Node memory is filling up (< 10% left)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"


  - alert: InstanceDown
    expr: up == 0
    for: 10s
    labels:
      severity: critical
    annotations:
      summary: Host {{ $labels.instance }} of {{ $labels.job }} is Down!

        该规则文件总共添加了三条规则,第一个规则是检测 CPU 负载,第二个是内存利用率的检测,第三个是主机 down 的检测。

(2)重启Prometheus
[root@prometheus rules]# systemctl restart prometheus
(3)查看Prometheus 告警页面

(4)关闭掉 agent 端的主机查看 web 界面的告警信息

(5)查看邮箱接收到的异常告警邮件

(6)将主机重新启动起来在

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

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

相关文章

电脑录屏怎么录?录屏软件哪个好,推荐5个视频录制软件免费版!

在当今这个日新月异、高速发展的数字化时代&#xff0c;屏幕录制软件毫无疑问已经成为了我们日常工作和学习中至关重要、不可或缺的得力工具。随着信息技术的不断进步&#xff0c;人们对于信息传播和知识分享的需求日益增长&#xff0c;屏幕录制软件的重要性愈发凸显。无论是教…

OBD服务07--请求当前或上一个完成的驾驶周期中检测到的与排放相关的诊断故障码(DTC)

功能描述 此服务的目的是允许外部测试设备获取在当前或上一个完成的驾驶周期中检测到的“pending”诊断故障码&#xff0c;这些故障码与排放相关的组件/系统有关。服务0x07适用于所有DTC&#xff0c;并且独立于服务0x03。这些数据的主要用途是在车辆维修后和清除诊断信息后&am…

重学SpringBoot3-集成RocketMQ(一)

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成RocketMQ&#xff08;一&#xff09; 环境准备1. 配置项目依赖2. 配置 RocketMQ 信息2.1配置文件2.2导入自动配置类2.3创建Topic 3. 生产者代码示例…

ERP进销存多仓库管理系统源码 带完整的安装代码包以及搭建部署教程

系统概述 ERP进销存多仓库管理系统是一款专为中小企业量身定制的集成化管理软件&#xff0c;它集成了采购管理、销售管理、库存管理、财务管理以及多仓库协同作业等核心模块。通过统一的平台&#xff0c;企业可以实时掌握商品从入库到出库的全过程&#xff0c;实现库存的自动化…

【OpenGL】OpenGL学习笔记(一):绘制三角形、初识VAO和VBO

文章目录 前言绘制目标 前言 最近开始研究用 QT 做开发来学习 OpenGL &#xff0c;想着别学完了就忘了&#xff0c;所以准备新开一个 OpenGL 专栏。开发环境已经搭好了&#xff0c;但是没弄教程&#xff0c;最近比较忙&#xff0c;暂时先把核心代码放过来&#xff0c;先开个草…

微信支付开发-需求整理及需求设计

一、客户要求 1、通过唤醒机器人参与答题项&#xff0c;机器人自动获取题目&#xff0c;用户进行答题&#xff1b; 2、用户答对题数与后台设置的一样或者更多&#xff0c;则提醒用户可以领取奖品&#xff0c;但是需要用户支付邮费&#xff1b; 3、用户在几天之内不能重复领取奖…

分布式新能源的能量管理

在新能源的概念下&#xff0c;可以将其定义为&#xff1a;新能源是指具有一定能量的清洁的可再生能源&#xff0c;它是一种新型的可持续发展的资源和能源。生物质能是借助各类绿色植物的光合作用实现能量转换。地热能主要来源于地球熔岩内部存在的天然热能&#xff0c;海洋能通…

Vue3项目打包报错-内存溢出解决方法

错误&#xff1a;FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 1、安装cross-env和increase-memory-limit 命令行&#xff1a;npm install cross-env increase-memory-limit 2、package.json添加如下内容&a…

胤娲科技:一场前所未有的运维革命

嘿&#xff0c;朋友们&#xff0c;你们有没有想过&#xff0c;如果电信网络里突然来了位“超级大脑”&#xff0c;我们的生活会是啥样&#xff1f; 以前啊&#xff0c;网络一有点小情绪&#xff0c;运维小哥就得像侦探一样&#xff0c;层层抽丝剥茧找问题。但现在&#xff0c;大…

CMU 10423 Generative AI:HW1(编程部分:在GPT-2模型中实现RoPE、GQA)

完整代码和PDF笔记&#xff1a;https://github.com/YM2025/CMU_10423_2024S 文章目录 1 概述Rotary Positional Embeddings (RoPE)Grouped Query Attention (GQA)实验任务 2 项目文件1. requirements.txt2. input.txt3. chargpt.py4. mingpt/a. model.pyb. trainer.pyc. utils.…

从 Postgres 到 ClickHouse:数据建模指南

本文字数&#xff1a;7149&#xff1b;估计阅读时间&#xff1a;18 分钟 作者&#xff1a;Sai Srirampur 本文在公众号【ClickHouseInc】首发 上个月&#xff0c;我们收购了专注于 Postgres CDC 的 PeerDB。PeerDB 使得数据从 Postgres 复制到 ClickHouse 变得既快速又简单。Pe…

iceoryx共享内存通信

共享内存原理 当POSIX系统中的进程启动时,它会被赋予自己的虚拟地址空间。 虚拟地址空间跨越的范围对于不同的进程可能是相同的,但是在特定地址可访问的数据对于每个进程可能是不同的。 在进程的虚拟地址空间内,有许多“内存区域”用于加载或映射数据。这些内存区域通常是…

内存魔术师:精通内存函数的艺术

嘿嘿,家人们,今天咱们来详细剖析C语言中的内存函数,好啦,废话不多讲,开干! 目录 1.memcpy使用与模拟实现 1.1:memcpy的使用 1.2:memcpy的模拟实现 2:memmove的使用与模拟实现 2.1:memmove的使用 2.1.1:memcpy处理重叠空间 2.1.2:memmove处理重叠空间 2.2:memove的模拟实…

【机器学习随笔】基于kmeans的车牌类型分类注意点

kmeans是无监督的聚类算法&#xff0c;可用于数据的分类。本文尝试用kmeans对车牌类型进行分类&#xff0c;记录使用过程中的注意点。 kmeans使用过程中涉及两个大部分&#xff0c;模型与分析。模型部分包括训练模型和使用模型&#xff0c;分析部分主要为可视化分析。两部分的主…

这东西有点上头,不小心刷到天亮了。。。

相信很多每天勤奋刷题的小伙伴已经发现了&#xff0c;面试鸭又又又升级更新了&#xff01; 打开首页就让人眼前一亮&#xff0c;优化了岗位分类导航栏&#xff0c;找起目标题库更轻松了。毕竟鸭鸭目前已经有 6000 道面试题、上百个题库&#xff0c;一不小心就会淹没在浩瀚题海…

如何优化MySql的性能

优化MySQL的性能是一个复杂但至关重要的任务&#xff0c;它涉及到多个层面的调整和优化。以下是一些关键的步骤和策略&#xff0c;可以帮助你提高MySQL数据库的性能&#xff1a; 1. 优化数据库设计 选择合适的数据类型&#xff1a;确保你使用的数据类型是适合你的数据的&#…

Three.js 实战【4】—— 3D地图渲染

初始化场景&准备工作 在vue3threejs当中&#xff0c;初始化场景的代码基本上是一样的&#xff0c;可以参考前面几篇文章的初始化场景代码。在这里进行渲染3D地图还需要用到d3这个库&#xff0c;所以需要安装一下d3&#xff0c;直接npm i即可。 再从阿里云这里提供的全国各…

SQL server 6.5升级到SQL server 2019的方法

背景&#xff1a; 对日项目&#xff0c;客户的旧系统的数据库用的是SQL server 6.5&#xff0c;操作系统是windows NT。新系统要求升级到SQL server 2019&#xff0c;查了下资料发现旧系统的版本实在是太久远了&#xff0c;90年代的。 数据库部分的升级思路是这样的&#xff…

git 更新LingDongGui问题解决

今天重新更新灵动gui的代码&#xff0c;以便使用最新的arm-2d&#xff0c;本来以为是比较简单的一件事情&#xff08;因为以前已经更新过一次&#xff09;&#xff0c;却搞了大半天&#xff0c;折腾不易啊&#xff0c;简单记录下来&#xff0c;有同样遇到问题的同学参考&#x…

AI算法部署方式对比分析:哪种方案性价比最高?

随着人工智能技术的飞速发展&#xff0c;AI算法在各个领域的应用日益广泛。AI算法的部署方式直接关系到系统的性能、实时性、成本及安全性等多个方面。本文将探讨AI算法分析的三种主要部署方式&#xff1a;本地计算、边缘计算和云计算&#xff0c;并详细分析它们的优劣性。 一、…