Centos7下搭建Prometheus+Grafana监控

Prometheus 监控

Prometheus 监控系统的架构包括以下组件:

Prometheus Server:

        Prometheus 服务器是监控系统的核心组件,负责收集、存储和处理指标数据。它定期从各种数据源(如 Exporter、Agent 等)拉取指标数据,并将其存储在本地的时序数据库中。Prometheus 服务器还提供了强大的查询语言(PromQL),用于对数据进行实时查询和分析。

Exporter:

        Exporter 是用于从不同数据源中收集指标数据的组件。Prometheus 社区提供了许多官方 Exporter,如 Node Exporter(用于收集主机级别的系统指标)、Blackbox Exporter(用于进行健康检查)、MySQL Exporter(用于监控 MySQL 数据库)等。此外,还有许多第三方 Exporter 可用于监控各种不同类型的应用程序和服务。


Push Gateway:

        Push Gateway 是一个中间件组件,用于接收短暂性作业(如批处理任务、临时服务等)生成的指标数据,并将其暂时存储在内存中,以便被 Prometheus 服务器拉取。这使得 Prometheus 能够监控短暂性作业,而无需这些作业一直在线。

Alertmanager:

        Alertmanager 是用于处理和发送警报的组件。它与 Prometheus 集成,负责管理警报规则、接收来自 Prometheus 服务器的警报通知,并根据配置的策略进行处理,如抑制重复警报、分组、静默等,然后将警报发送到各种通知渠道(如电子邮件、Slack 等)。

存储:

        Prometheus 使用本地磁盘存储时序数据库,以存储收集到的指标数据。这使得 Prometheus 能够快速高效地查询历史数据,并支持灵活的数据保留策略。此外,Prometheus 还支持与远程存储系统(如 InfluxDB、Google Cloud Storage 等)集成,以实现长期存储。

Grafana:

        尽管 Grafana 不是 Prometheus 的一部分,但它经常与 Prometheus 一起使用,用于创建仪表盘、图表和报表,以实时展示和分析监控数据。Grafana 提供了丰富的可视化功能,使用户能够直观地了解系统的运行状态和性能指标

整个 Prometheus 监控系统的架构设计灵活且模块化,可以根据具体的需求和场景进行定制和扩展。通过合理配置和组合各种组件,可以构建一个高效、稳定且功能丰富的监控解决方案,帮助用户实时监控和管理其 IT 基础架构和应用程序。

准备

  •     两台虚拟机
    192.168.100.125  Prometheus端192.168.100.126  node端
  •     开放防火墙端口

 更改防火墙

   在两台机器执行,请运行以下命令以开放端口

    firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=22/tcp --permanentfirewall-cmd --zone=public --add-port=3000/tcp --permanentfirewall-cmd --zone=public --add-port=9115/tcp --permanentfirewall-cmd --zone=public --add-port=9090/tcp --permanentfirewall-cmd --zone=public --add-port=9100/tcp --permanentfirewall-cmd --reload
  • 1、打开 SELinux 的配置文件
vi /etc/selinux/config
  • 2、在打开的配置文件中,找到SELINUX这一行。这一行可能设置为enforcing(强制模式)或permissive(宽容模式)。如果你想要将 SELinux 设置为宽容模式,确保这一行的值是permissive
SELINUX=permissive
  • 3、保存并关闭文件。如果你使用的是 vi 编辑器,按Esc,然后输入:wq并按Enter来保存并退出。
  • 4、为了让新的 SELinux 配置生效,你需要重启你的系统:
reboot
  • 5、或者,你也可以尝试使用setenforce命令临时将 SELinux 设置为宽容模式,但这只是临时的,重启后 SELinux 会恢复到配置文件中的设置:
setenforce 0

一、Prometheus 部署

Prometheus:

        Prometheus 是一种开源的系统监控和警报工具包。它最初由 SoundCloud 开发,现已成为 CNCF(云原生计算基金会)的一部分。Prometheus 具有多维数据模型和灵活的查询语言,可实时收集和存储各种系统指标,如 CPU 使用率、内存使用率、磁盘空间、网络流量等。它支持通过 HTTP 等多种方式进行数据抓取,并能够对数据进行长期存储和分析。


以下在 Prometheus 端执行

  • 1、下载wget
yum install wget
  • 2、在线下载
wget https://github.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz或者更快--wget https://githubfast.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz
  • 3、解压到/usr/local/,再重命名
    tar -xzvf prometheus-2.37.2.linux-amd64.tar.gz -C /usr/localcd /usr/localmv prometheus-2.37.2.linux-amd64 prometheus
  • 4、查看Prometheus 版本
    cd /usr/local/prometheus./prometheus  --version

        检查 prometheus.yml 格式的命令(一定要在/usr/local/prometheus 目录下执行)

    cd /usr/local/prometheus./promtool check config prometheus.yml
  • 5、创建 prometheus 本地 TSDB 数据存储目录
mkdir -p /var/lib/prometheus
  • 6、使用systemctl 管理 Prometheus
 vi /usr/lib/systemd/system/prometheus.service[Unit]Description=PrometheusDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleUser=rootExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycleExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
  • 7、设置 Prometheus 开机启动
    systemctl enable prometheussystemctl start prometheus
  • 8、查看prometheus 服务状态
systemctl status prometheus
  • 9、访问Prometheus 的网页界面
浏览器输入 http://你的 ip 地址:9090

二、node-exporter 部署

Node Exporter:

        Node Exporter 是 Prometheus 生态系统中的一个组件,用于收集主机级别的系统指标。它是一个轻量级的代理,定期收集主机的 CPU、内存、磁盘、网络等指标,并将其暴露为 Prometheus 可以拉取的格式。Node Exporter 使得 Prometheus 能够监控和记录服务器的性能指标,从而实现对整个基础架构的实时监控和分析。


以下在 node 端执行

  • 1、给被监控的机器下载和解压 node-exporter
yum install wget -y
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
tar -zvxf node_exporter-1.4.0.linux-amd64.tar.gz   -C /usr/local/
cd /usr/local
mv node_exporter-1.4.0.linux-amd64 node_exporter如果下载慢试试wget https://githubfast.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
  • 2、systemctl 管理 node_exporter
vi /usr/lib/systemd/system/node_exporter.service[Unit]Description=node_exporterDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleUser=rootExecStart=/usr/local/node_exporter/node_exporterExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
  • 3、设置开机启动
    systemctl enable node_exportersystemctl start node_exporter

以下在 prometheus 端执行

  • 4、在prometheus 主机添加 node 节点监控

        在 prometheus Server 配置文件中添加被监控的机器

 vi  /usr/local/prometheus/prometheus.yml添加- job_name: "node1"static_configs:- targets: ['被监控的计算机IP:9100']
  • 5、检查prometheus.yml 格式(一定要在 /usr/local/prometheus 目录下执行)
    cd /usr/local/prometheus/usr/local/prometheus/promtool check config prometheus.yml
  • 6、热加载 prometheus 配置
curl  -X POST http://127.0.0.1:9090/-/reload
  • 7、访问Prometheus 的网页界面,查看 node 节点已经被监控

  •  8、查看http metrics 采集指标

        http://被监控的计算机 IP:9100/metrics,查看从 exporter 具体能抓到的数据

  •  9、node_exporter 的 PromQL 查询语句

一些 PromQL 如下

  • 1、获取系统信息
node_uname_info
  • 2、获取系统 uptime 时间
sum(time() - node_boot_time_seconds)by(instance)
  • 3、系统启动时间
node_boot_time_seconds
  • 4、系统当前时间
time()
  • 5、CPU 核数
count(node_cpu_seconds_total{mode='system'}) by (instance)
  • 6、计算 CPU 使用率
(1 - sum(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total[1m])) by (instance) ) * 100
  • 7、计算内存使用率
(1- (node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_MemFree_bytes) / node_memory_MemTotal_bytes) * 100
  • 8、查看节点总内存
node_memory_MemTotal_bytes/1024/1024/1024
  • 9、计算磁盘使用率
    (1 - node_filesystem_avail_bytes{fstype=~"ext4|xfs"} /node_filesystem_size_bytes{fstype=~"ext4|xfs"}) * 100
  • 10、磁盘 IO

        磁盘读 IO 使用

sum by (instance) (rate(node_disk_reads_completed_total[5m]))

        磁盘写 IO 使用

sum by (instance) (rate(node_disk_writes_completed_total[5m]))
  • 11、网络带宽

        下行带宽

sum by(instance) (irate(node_network_receive_bytes_total{device!~"bond.*?|lo"}[5m]))

        上行带宽

sum by(instance) (irate(node_network_transmit_bytes_total{device!~"bond.*?|lo"}[5m]))

三、blackbox_exporter 探针

Blackbox Exporter:

        Blackbox Exporter 也是 Prometheus 生态系统中的一个组件,专门用于对网络服务进行探测和监控。它可以执行 HTTP、TCP、ICMP 等类型的健康检查,并记录响应时间、状态码等信息。Blackbox Exporter 可以用于监控 Web 服务、数据库、消息队列等各种网络应用,并及时发现并报告它们的健康状态和可用性问题。


部署 blackbox_exporter

  • 1、给被监控的计算机下载 blackbox_exporter
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gztar -zvxf blackbox_exporter-0.22.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv blackbox_exporter-0.22.0.linux-amd64  blackbox_exporter下载慢尝试:wget https://githubfast.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz
  • 2、查看 blackbox_exporter 版本信息
    cd /usr/local/blackbox_exporter./blackbox_exporter  --version
  • 3、systemctl 管理 blackbox_exporter
 vi /usr/lib/systemd/system/blackbox_exporter.service[Unit]Description=blackbox_exporterAfter=network.target[Service]User=rootType=simpleExecStart=/usr/local/blackbox_exporter/blackbox_exporter --config.file=/usr/local/blackbox_exporter/blackbox.ymlExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
  • 4、启动、开机启动 blackbox_exporter
    systemctl start blackbox_exporter && systemctl enable blackbox_exporterps -ef | grep blackbox_exporter
  • 5、http访问测试(blackbox_exporter 默认监听 9115 端口)
http://被监控的计算机IP:9115

  •  6、blackbox_exporter 配置文件

        blackbox_exporter 的配置文件无特殊需求使用默认配置即可

cat  /usr/local/blackbox_exporter/blackbox.yml

以下在 Prometheus 端操作

        在 prometheus.yml 中添加 blackbox_exporter 的配置, 要注意 yml 文件的语法规范

vi /usr/local/prometheus/prometheus.yml
        ICMP 监控主机存活状态的配置
 #icmp ping 监控- job_name: crawler_statusmetrics_path: /probeparams:module: [icmp]static_configs:- targets: ['223.5.5.5','114.114.114.114']labels:instance: node_statusgroup: 'icmp-node'relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 安装blackbox_expoter的ip地址:9115
        TCP 监控端口的配置
#监控tcp端口- job_name: tcp_portmetrics_path: /probeparams:module: [tcp_connect]file_sd_configs:- files: ['/usr/local/prometheus/conf.d/tcp_port/*.yml']refresh_interval: 10srelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 安装blackbox_expoter的ip地址:9115
        HTTP GET 监控的配置
# http get  监控- job_name: http_getmetrics_path: /probeparams:module: [http_2xx]file_sd_configs:- files: ['/usr/local/prometheus/conf.d/http_get/*.yml']refresh_interval: 10srelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 安装blackbox_expoter的ip地址:9115

上面三段配置都在写 prometheus.yml 里面

编辑 tcp 监控 targets 文件

        上一个配置指定了配置文件,在这里新建文件

    mkdir -p /usr/local/prometheus/conf.d/tcp_portvi /usr/local/prometheus/conf.d/tcp_port/tcp_port.yml

        写入并改写要监控的 ip 和端口号

    - targets: ['192.168.100.126:80','192.168.100.126:22']labels:group: 'tcp port'
编辑 http_get 监控 targets 文件
    mkdir -p /usr/local/prometheus/conf.d/http_getvi /usr/local/prometheus/conf.d/http_get/http_get.yml

        写入要监控的内容

- targets:- http://192.168.100.126:80/labels:name: 'http_get'

        重新启动 Prometheus

systemctl restart prometheus

四、配置 Prometheus Rule 告警规则

  • 1、创建rule 告警目录
mkdir -p /usr/local/prometheus/rules/
  • 2、编辑rule 配置文件
vi /usr/local/prometheus/rules/rules.ymlgroups:- name: http_status_coderules:- alert: probe_http_status_codeexpr: probe_http_status_code != 200for: 1mlabels:severity: criticalannotations:summary: "{{ $labels.instance }} 状态码异常"description: "{{ $labels.instance }} 网站访问异常!!! (value: {{ $value }})"- name: icmp_ping_statusrules:- alert: icmp_ping_statusexpr: probe_icmp_duration_seconds{phase="rtt"}  == 0for: 1mlabels:severity: criticalannotations:summary: "主机 {{ $labels.instance }} ICMP异常"description: "{{ $labels.instance }} ICMP异常!!!(value: {{ $value }})"value: '{{ $value }}'##延迟高- name:  link_delay_highrules:- alert: link_delay_highexpr: probe_icmp_duration_seconds{phase="rtt"}  >0.005for: 1mlabels:severity: criticalannotations:summary: " {{ $labels.instance }} 延迟高!"description: "{{ $labels.instance }} 延迟高!!!(value: {{ $value }})"
  • 3、检查 rule 文件格式(一定要在/usr/local/prometheus/rules 目录下执行)
    cd /usr/local/prometheus/rules/usr/local/prometheus/promtool  check rules  rules.yml
  • 4、在Prometheus 主机配置文件中引入 rule 告警目录
vi  /usr/local/prometheus/prometheus.yml

找到 rule_files 那一行,改为

rule_files: ['/usr/local/prometheus/rules/*.yml']
  • 5、重新启动 Prometheus
systemctl restart prometheus
  • 6、访问Prometheus 前端页面查看 Rules
  •  7、查看 Alerts

五、安装 Grafana

Grafana:

        Grafana 是一款开源的数据可视化和监控平台,可以与 Prometheus 等多种数据源集成。它提供了丰富的图表、仪表盘和警报功能,使用户能够直观地展示和分析监控数据。Grafana 支持灵活的查询语言和可定制的仪表盘布局,可以满足各种不同场景下的监控需求,并为用户提供实时的数据可视化和分析能力。

 wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.2.2-1.x86_64.rpmyum install grafana-enterprise-9.2.2-1.x86_64.rpm
  • 1、启动Grafana 服务
    systemctl enable grafana-serversystemctl start grafana-server
访问   地址:http://Prometheus:3000
默认账号密码:admin/admin第一次登录后会要求更改密码


  •  2、配置 Prometheus



         进入 Grafana 后,添加数据源:

  • 3、配置显示模板



     最终就能看到配置后的结果

 后续进入的话,可以从菜单>Dashboards 进入

Grafana dashboards官网地址

Grafana dashboards | Grafana Labs

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

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

相关文章

MyBatis-Plus(为简化开发而生)

一、MyBatis-Plus概述 官网: baomidou.com MyBatis-Plus(简称 MP) 在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 (1)单表操作 不需要编写sql语句,封装方法,…

深入解析 C++11 的 `std::atomic`:误区、性能与实际应用

在现代 C 开发中,std::atomic 是处理多线程同步时的重要工具之一。它通过提供原子操作保证了线程安全,但在实际使用时却隐藏着许多不为人知的陷阱和性能影响。本篇文章将带你深入理解 std::atomic 的使用方式、潜在问题,以及如何正确应用于多…

芋道源码,芋道sql,yudao,yudao-vue-pro拒绝割韭菜

芋道的开发指南实际上只需要小小的操作就可以观看啦 为了避免被割韭菜 我们可以使用插件去进行解锁文档 项目地址 otomayss/free-yd (github.com)[这里是图片002]https://github.com/otomayss/free-yd

Mac软件推荐

Mac软件推荐 截图SnipasteXnipBob 快捷启动Raycast 系统检测Stats 解压缩The UnarchiverKeka(付费) 视频播放IINA 视频下载Downie(付费) 屏幕刘海TopNotchMediaMate(付费)NotchDrop(付费&#x…

车站值班员题库

1. 联系用手信号显示十、五、三车距离信号中的“三车”(约33m)信号时,昼间的显示方式为展开的绿色信号旗单臂平伸下压 ( 一 )次。J442 2. 联系用手信号显示股道号码时,昼间右臂向上直伸&#xff0c…

BI中场战事:国外厂商退,国产厂商进

从沉睡的黄金到经济的新宠,数据要素正上演华丽转身。 近年来,数字经济的长驱向前,离不开数据要素价值释放所带来的持续动力。作为第五大生产要素,数据要素的价值释放需要从数据采集、传输到存储、治理,再到分析和可视…

2024年华中杯数学建模C题基于光纤传感器的平面曲线重建算法建模解题全过程文档及程序

2024年华中杯数学建模 C题 基于光纤传感器的平面曲线重建算法建模 原题再现 光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器技术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号,其基本原理是当外界环境参数发生变化时&#xff0c…

【H2O2|全栈】MySQL的基本操作(三)

目录 前言 开篇语 准备工作 案例准备 多表查询 笛卡尔积 等值连接 外连接 内连接 自连接 子查询 存在和所有 含于 分页查询 建表语句 结束语 前言 开篇语 本篇继续讲解MySQL的一些基础的操作——数据字段的查询中的多表查询和分页查询,与单表查询…

从单体到微服务:如何借助 Spring Cloud 实现架构转型

一、Spring Cloud简介 Spring Cloud 是一套基于 Spring 框架的微服务架构解决方案,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。 Spring Cloud 提供了诸如服务发现、配置管理、负载均衡、断路器、消息总线…

yarn : 无法加载文件 C:\Users\L\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁

关于执行安装yarn命令后执行yarn -v报错: 先确认执行安装yarn命令是否有误 # 安装yarn npm install yarn -g 终端输入set-ExecutionPolicy RemoteSigned 当然如果yarn -v仍然执行失败,考虑使用管理员方式运行IDEA, 注:如上操作…

java全栈day12-后端Web实战(IOC+DI)

前言:前面的基础知识了解后进入实战篇,从以下四个方面进行准备 一、开发规范 1.1前后端分离开发 前言回顾 二、Restful风格 引言:前端与后端在进行交互的时候,所使用的url风格叫Restful。 2.1概述 小结 2.2环境准备 2.2.1apif…

链式设计模式——装饰模式和职责链模式

一、装饰模式 1、概述 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 ConcreteComponent :是定义了一个具体的对象,可以给这个对象添加一些职责;Decorator :装饰抽象…

Java——容器(单例集合)(上)

一 容器介绍 容器,是用来容纳物体、管理物体。生活中,我们会用到各种各样的容器。如锅碗瓢盆、箱子和包等 程序中的“容器”也有类似的功能,用来容纳和管理数据。比如,如下新闻网站的新闻列表、教育网站的课程列表就是用“容器”来管理 视频…

word poi-tl 表格功能增强,实现表格功能垂直合并

目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加(插件实现)MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中,word文档需要垂直合并表格&…

GPT系列模型简要概述

GPT-1:(0.117B参数量,0.8B words预训练数据) 动机: 在RNN和Transformer之间,选择了后者。 和《All your need is Attention》翻译模型的Encoder-Decoder架构相比,只保留Decoder,因此去掉了Cross…

汽车升级到底应不应该设置“可取消“功能

最近,汽车OTA(Over-the-Air)升级频频成为车主讨论的热点。有些车主反映,一些升级增加了实用功能,而另一些却让体验变得复杂甚至带来不便。于是,大家不禁发问:汽车升级功能究竟应不应该允许“可取…

单片机 PCB 设计要点

一、引言 单片机作为现代科技的重要组成部分,其 PCB 设计至关重要。本文将详细介绍单片机 PCB 设计的要点和流程,帮助读者更好地掌握这一关键技术。 在电子世界的浩瀚星海中,单片机无疑是现代科技中一颗闪烁的明珠。作为掌握嵌入式系统的基…

Ubuntu中配置交叉编译工具的三条命令的详细研究

关于该把下面的三条交叉编译配置语句加到哪里,详情见 https://blog.csdn.net/wenhao_ir/article/details/144326545 的第2点。 现在试解释下面三条交叉编译配置语句: export ARCHarm export CROSS_COMPILEarm-buildroot-linux-gnueabihf- export PATH$…

wlanapi.dll丢失怎么办?有没有什么靠谱的修复wlanapi.dll方法

在遇到各种系统文件错误当中,其中之一就是“wlanapi.dll文件丢失”的问题。这种问题通常发生在Windows操作系统上,特别是当系统试图执行与无线网络相关的任务时。wlanapi.dll是一个重要的系统文件,它负责处理Windows无线网络服务的许多功能。…

Python之因子分析详细步骤

1.数学原理 1.1数学模型 1.2正交因子模型假设 注意:下面的推导都是基于这一假设。因此,这里的模型都是属于正交因子模型。 1.3正交因子模型的协方差结构 1.4各类方差贡献的介绍 在1.3正交因子模型的协方差结构中,我们介绍了“方差贡献”&…