Prometheus监控系统安装

news/2025/11/4 17:36:05/文章来源:https://www.cnblogs.com/goujinyang/p/19190641

 

 Prometheus是基于go语言开发的。 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,可以支持多种语言客户端

Prometheus下载:https://prometheus.io/download/

image

 

 1、安装Prometheus

~]# wget https://github.com/prometheus/prometheus/releases/download/v2.37.6/prometheus-2.37.6.linux-amd64.tar.gz
~]# tar xf prometheus-2.37.6.linux-amd64.tar.gz -C /approot1/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:- 192.168.53.180:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"- "conf/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: 'node-exporter'file_sd_configs:- files:- 'conf/json/node-exporter-*.json'- job_name: 'redis-exporter'file_sd_configs:- files:- 'conf/json/redis-exporter-*.json'- job_name: 'mysql-exporter'file_sd_configs:- files:- 'conf/json/mysql-exporter-*.json'- job_name: 'nginx-exporter'file_sd_configs:- files:- 'conf/json/nginx-exporter-*.json'- job_name: 'blackbox-exporter'metrics_path: /probeparams:module: [tcp_connect]file_sd_configs:- files:- 'conf/json/blackbox-exporter-*.json'relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 192.168.53.181:9006     # Blackbox Exporter 的 IP:端口- job_name: 'jmx-exporter'file_sd_configs:- files:- 'conf/json/jmx-exporter-*.json'- job_name: 'docker-exporter'file_sd_configs:- files:- 'conf/json/docker-exporter-*.json'- job_name: 'api-exporter'scrape_interval: 15smetrics_path: /actuator/prometheusfile_sd_configs:- files:- 'conf/json/api-exporter-*.json'

 

告警规则配置文件:

普通告警模板:
https://awesome-prometheus-alerts.grep.to/rules#host-and-hardware

k8s告警模板:
https://awesome-prometheus-alerts.grep.to/rules#kubernetes

[root@k8s-master1 prometheus-2.37.6.linux-amd64]# mkdir -p conf/{json,rules}
[root@k8s-master1 prometheus-2.37.6.linux-amd64]# cd conf/rules/
[root@k8s-master1 prometheus-2.37.6.linux-amd64]# vim node-rule.yml
node-rule.yml
    groups:- name: examplerules:- alert: HighNginxServerRequestsexpr: sum(irate(nginx_server_requests{instance="181-nginx", code="2xx"}[5m])) by (code)>1000for: 2slabels:severity: criticalannotations:summary: "High Nginx Server Requests"description: "在最近2s钟时间,nginx服务请求数达到了1000次"- name: 物理节点状态-监控告警rules:- alert: 物理节点cpu使用率expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 10for: 2slabels:severity: ccriticalannotations:summary: "{{ $labels.instance }}cpu使用率过高"description: "{{ $labels.instance }}的cpu使用率超过10%,当前使用率[{{ $value }}],需要排查处理" - alert: 物理节点内存使用率expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 > 20for: 2slabels:severity: criticalannotations:summary: "{{ $labels.instance }}内存使用率过高"description: "{{ $labels.instance }}的内存使用率超过20%,当前使用率[{{ $value }}],需要排查处理"- alert: InstanceDownexpr: up == 0for: 2slabels:severity: criticalannotations:   summary: "{{ $labels.instance }}: 服务器宕机"description: "{{ $labels.instance }}: 服务器延时超过2分钟"- alert: 物理节点磁盘的IO性能expr: 100-(avg(irate(node_disk_io_time_seconds_total[1m])) by(instance)* 100) < 60for: 2slabels:severity: criticalannotations:summary: "{{$labels.mountpoint}} 流入磁盘IO使用率过高!"description: "{{$labels.mountpoint }} 流入磁盘IO大于60%(目前使用:{{$value}})"- alert: 入网流量带宽expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400for: 2slabels:severity: criticalannotations:summary: "{{$labels.mountpoint}} 流入网络带宽过高!"description: "{{$labels.mountpoint }}流入网络带宽持续5分钟高于100M. RX带宽使用率{{$value}}"- alert: 出网流量带宽expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400for: 2slabels:severity: criticalannotations:summary: "{{$labels.mountpoint}} 流出网络带宽过高!"description: "{{$labels.mountpoint }}流出网络带宽持续5分钟高于100M. RX带宽使用率{{$value}}"- alert: TCP会话expr: node_netstat_Tcp_CurrEstab > 1000for: 2slabels:severity: criticalannotations:summary: "{{$labels.mountpoint}} TCP_ESTABLISHED过高!"description: "{{$labels.mountpoint }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"- alert: 磁盘容量expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 80for: 2slabels:severity: criticalannotations:summary: "{{$labels.mountpoint}} 磁盘分区使用率过高!"description: "{{$labels.mountpoint }} 磁盘分区使用大于80%(目前使用:{{$value}}%)"

 

创建prometheus服务启停程序文件,并启动服务:

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

[Unit]
Description=Prometheus Monitoring
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
ExecStart=/approot1/prometheus/prometheus-2.37.6.linux-amd64/prometheus \--config.file=/approot1/prometheus/prometheus-2.37.6.linux-amd64/prometheus.yml \--web.listen-address=:9090 \--storage.tsdb.path=/approot1/prometheus/prometheus-2.37.6.linux-amd64/data \--storage.tsdb.retention.time=15d
Restart=always[Install]
WantedBy=multi-user.target

重载配置

# systemctl daemon-reload

启动prometheus服务

# systemctl start promethues

配置开机自启动

# systemctl enable prometheus.service 

 

image

2、安装被监控端安装node_exporter(默认系统监控项),可以根据监控需求安装相对应得exporter

   官网下载安装包:https://prometheus.io/download/

安装node_exporter,并启动程序

[root@k8s-node1 ~]# mkdir exporter
[root@k8s-node1 ~]# cd exporter
[root@k8s-node1 exporter]# tar xvf node_exporter-1.1.2.linux-amd64.tar.gz 
[root@k8s-node1 exporter]# cd node_exporter-1.1.2.linux-amd64/
[root@k8s-node1 node_exporter-1.1.2.linux-amd64]# ./node_exporter --web.listen-address=:9004 &

#启动命令说明

./node_exporter #启动node_exporter

--web.listen-address=:9004 #prometheus获取node_exporter数据端口,已指定。
启动之后,通过ps -ef | grep node_exporter 查询是否有相应的进程

创建prometheus自动发现的json文件

文件格式与prometheus.yml中file_sd_configs.files要一致:conf/json/node-exporter-*.json

[root@k8s-master1 ~]# cd /approot1/prometheus/prometheus-2.37.6.linux-amd64/conf/json
[root@k8s-master1 json]# cat node-exporter-test-2025.json 
[{"labels": {"env": "test","name": "k8s-node1","instance": "181-node"},"targets": ["192.168.53.181:9004"]},{"labels": {"env": "test","name": "k8s-node2","instance": "182-node"},"targets": ["192.168.53.182:9004"]}
]

web页面查看监控节点信息,我只有一个节点,182没有启动(只是为了演示多节点的配置)

image

 把182节点信息从node-exporter-test-2025.json删除

image

web页面重新查看

image

image

3、安装grafana

默认得Prometheus页面没有那么直观,安装grafana是为了页面显示更加直观

下载地址1:https://grafana.com/grafana/download?pg=graf&plcmt=deploy-box-1 

下载地址2:https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Package/

[root@k8s-master1 prometheus]# yum install -y ./grafana-9.3.6-1.x86_64.rpm启动grafana
[root@xianchaomaster1 ~]# systemctl start grafana-server  
[root@xianchaomaster1 ~]# systemctl enable grafana-server

默认端口:3000

默认用户名/密码:admin/admin

添加数据源

image

image

导入监控看板

监控面板下载地址:https://grafana.com/grafana/dashboards/

image

image

监控面板labels添加说明:

面板导入之后可以看到上面有以下信息:

interval  环境  主机名  节点

这写内容是读取的node-exporter-test-2025.json文件中的labels内容

image

如果不知道labels中的key是什么可以打开面板的json文件搜索,比如:

环境:

image

主机名:

image

然后再去修改node-exporter-test-2025.json,配置对应的labels就可以了

4、配置发送告警服务alertmanager

Alertmanager下载地址:https://github.com/prometheus/alertmanager/releases

开启163邮箱smtp

image

新增授权密码

安装alertmanager

[root@k8s-master1 prometheus]# tar xvf alertmanager-0.25.0.linux-386.tar.gz
[root@k8s-master1 prometheus]# cd alertmanager-0.25.0.linux-386/
[root@k8s-master1 alertmanager-0.25.0.linux-386]# cp alertmanager.yml{,.bak}
[root@k8s-master1 alertmanager-0.25.0.linux-386]# vim alertmanager.yml

alertmanager.yml

global:resolve_timeout: 1msmtp_smarthost: 'smtp.163.com:25'smtp_from: '发件人@163.com'smtp_auth_username: '发件人@163.com'smtp_auth_password: '授权码'smtp_require_tls: false
route:group_by: [alertname]group_wait: 10sgroup_interval: 10srepeat_interval: 10mreceiver: default-receiver
receivers:- name: 'default-receiver'email_configs:- to: '收件邮箱'send_resolved: true

global(全局发件参数)

字段     含义
resolve_timeout 1m 警报从 触发→解除 的最大等待时间;1m 表示 1 分钟内若 Prometheus 没标记 resolved,Alertmanager 就认为是“仍着火”
smtp_smarthost 'smtp.163.com:25' 163 邮箱的 SMTP 服务器:端口
• 25 = 明文;
• 465 = SSL;
• 587 = STARTTLS(推荐,防拦截)
smtp_from '发件人@163.com' 发件人(必须是你 163 账号的同域地址)
smtp_auth_username '发件人@163.com' SMTP 登录账号(163 要求 = 发件人)
smtp_auth_password '******************' 163 授权码(不是登录密码!
在 163 邮箱 → 设置 → POP3/SMTP → 生成授权码
smtp_require_tls false 关闭 TLS(25 端口常被拦截/限速,建议改 587 + true

route(路由规则)

字段 含义
group_by [alertname] 同名警报 聚成一条通知(避免轰炸)
group_wait 10s 第一批警报到达后 等 10 秒 看有没有同名警报,一起发
group_interval 10s 同一组 下一次通知的间隔(10s 内不再重复发)
repeat_interval 10m 相同组 若一直未解除,每 10 分钟 再发一次提醒
receiver default-receiver 指向下面 receivers.name 的引用

receivers(收件人列表)

字段  值 含义
name default-receiver  被 route.receiver 引用的名字
email_configs.to  收件人@163.com 最终收件人(可以是任意邮箱
send_resolved true 警报 解除后 也发一封“已恢复”邮件

创建alertmanager.service服务启停控制文件

端口要和prometheus.yml文件中alerting下配置的一致

cat /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=Alertmanager
After=network.target[Service]
User=root
Group=root
ExecStart=/approot1/prometheus/alertmanager-0.25.0.linux-386/alertmanager \--config.file=/approot1/prometheus/alertmanager-0.25.0.linux-386/alertmanager.yml \--storage.path=/approot1/prometheus/alertmanager-0.25.0.linux-386/alertmanager-0.25.0.linux-386/ \--web.listen-address=":9093"
Restart=always
RestartSec=3[Install]
WantedBy=multi-user.target

重载systemd配置并启动服务

systemctl daemon-reload
systemctl start alertmanager
添加开机自启动:
systemctl enable alertmanager

浏览器访问验证:http://192.168.53.180:9093/

image

5、模拟出发告警发送通知

修改rules.yml

      - alert: 磁盘容量
        expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 10

 

告警邮件发送成功

image

 

prometheus UI页面查看也能看到触发告警

image

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

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

相关文章

把24款搜狗拼音热门皮肤转成了fcitx可用的

把24款搜狗拼音热门皮肤转成了fcitx可用的〔下载〕5.8M 将近我的语言模型的两倍了。:-) ssf2fcitx在转换部分.ssf文件时,openssl的库里出错,我怀疑是Qt的问题〔详情〕。 修改版不用Qt,无此问题。 ssf2dir把.ssf文件…

[负数,补码]

早先再CSDN写过一篇文章:最近在看python,再次复习一下: 硬件里只有固定宽度的二进制位,负数不是“单独的东西”,而是用补码(二进制的两补)来编码在同样的位宽里。核心点如下。 两补表示有符号整数用两补表示;最…

centos7安装Elasticsearch Service Sink Connector【CDC实战系列十】

简介:数据同步技术(此处指CDC)发展迅速,目前主流的同步技术是使用Confluen-platform,他基于Kafaka开发,包含你能想到的任何组件。核心是kafka connect,kafka connect 通过两种类型的连接器工作:源连接器——摄…

2025年诚信的PU线条厂家TOP5推荐,PU线条厂家全解析

在室内装饰的精细化浪潮中,PU线条凭借环保、耐用、美观的特质成为空间设计的点睛之笔,而选择诚信可靠的厂家则是品质落地的关键。面对市场上良莠不齐的供应商,如何避开劣质陷阱与适配难题?以下依据产品品质、服务能…

2025年度阀门涂装制造厂排名:5家的阀门创新涂装厂家推荐

石油机械行业作为能源产业链的核心环节,其阀门设备的涂装质量直接决定了油气开采、炼化输送的安全性与耐久性。在高含硫、深海盐雾等极端工况下,传统涂装工艺已难以满足行业对防腐性能、精度控制、生产效率的严苛要求…

Java-143 深入浅出 MongoDB NoSQL:MongoDB、Redis、HBase、Neo4j应用场景与对比 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年代办注册公司哪家口碑好?代办注册公司找哪家?

在创业浪潮席卷全国的当下,注册公司是企业踏入市场的第一步。但繁杂的流程、模糊的政策、隐蔽的风险,让无数创业者望而却步。代办注册公司哪家口碑好?代办注册公司服务找哪家更靠谱?代办注册公司怎么联系到专业团队…

内网即时通讯软件新选择:吱吱企业即时通讯软件的安全与协作一体化

在数字化办公浪潮中,企业即时通讯软件已经成为商业机密的重要载体。对于金融、医疗、科技等数据敏感型企业,以内网形式保证企业通讯安全与协作效率的成为重中之重。吱吱企业即时通讯软件凭借内网通讯、数据私有化以及…

leetcode热题100-49:字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] …

2025年哈尔滨PU线条供应商推荐:靠谱的PU线条企业全解析

在装修装饰行业,PU线条凭借其轻便、美观、耐用等优势,成为众多业主和设计师的材料。但面对市场上琳琅满目的PU线条供应商,如何选择靠谱、口碑好的合作伙伴,成为许多人头疼的问题。本文将为您推荐哈尔滨及周边地区的…

工业CMOS相机的原理及基础知识

我们知道在图像采集和处理的过程,最基本的是要把实物尽量真实地反映到虚拟的图像上。在机器视觉领域,图像采集和处理的过程需要用到工业相机。 工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号…

2025年有效减肥训练机构推荐,瘦身训练课程与间歇性减肥训练企业全解析

在健康意识觉醒的时代,专业减肥训练机构是人们实现体重管理与健康生活的重要伙伴。面对市场上众多减肥训练机构,如何选择靠谱且适合自己的?以下依据不同特色,为你推荐2025年值得关注的有效减肥训练机构,涵盖有效减…

东北区域PU线条设计服务TOP5推荐,PU雕花线条与PU顶角线企业全解析

在装修装饰行业精细化发展的当下,PU线条凭借质轻、防潮、环保等优势,逐渐取代传统石膏线成为空间设计的点睛之笔。而PU线条设计服务的专业性直接决定了终呈现效果——从PU雕花线条的立体肌理到PU顶角线的无缝衔接,都…

2025年北京一对一上门辅导机构年度排名:龙文教育集团一对一上门辅导推荐

在教育个性化需求激增的当下,一对一上门辅导因精准适配学习场景、省时高效提升成绩成为众多家庭的刚需选择。然而市场机构鱼龙混杂,如何避开师资不匹配、服务无保障的坑?以下结合家长真实体验与教学数据,为你盘点2…

2025 年散热器厂家最新推荐榜:涵盖电子 / 插片 / 型材 / 铲齿 / 新能源等多品类,权威测评精选实力企业

引言 随着电子产业向高功率、小型化方向快速发展,散热器作为保障设备稳定运行的核心部件,市场需求持续增长,行业对产品品质与性能的要求也不断提升。为帮助下游企业精准筛选优质供应商,行业协会联合专业测评机构开…

2025 年过滤器厂家最新推荐榜单:品牌综合实力测评发布,五大优质企业脱颖而出润滑油过滤器/自清洗过滤器/全自动除污过滤器/双联过滤器/烛式过滤器厂家推荐

引言 近日,行业权威协会发布 2025 年度过滤器制造商综合测评报告,本次测评覆盖全自动过滤器、油过滤器、海水过滤器等 12 大类产品,从技术实力、产品性能、服务能力、市场口碑四大维度设置 28 项细分指标,通过实地…

docker学习笔记详记 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Windows 11 常规设置

Windows 11 常规设置本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/19190918

浏览器共享存储导致身份标识冲突

在开发心理咨询的项目的时候,出现了困扰很长时间的一个问题,就是用户身份混淆 用户A、B 同一个浏览器 A先登录,B后登录,B登录完,A刷新一下,就变成B的身份了, 反反复复,因为我采用的是Session,在登录之后将用户…

2025年激光干涉仪生产厂家权威推荐榜单:球杆仪/激光雷达/悬臂三坐标测量机源头厂家精选

近年来,随着高端制造业对精度要求的提升,激光干涉仪市场规模显著增长。据行业报告显示,2025年全球激光干涉仪市场年复合增长率预计达4.5%,其中中国市场的贡献率持续攀升。激光干涉仪凭借纳米级分辨率和多维几何量检…