当前位置: 首页 > news >正文

从零开始搭建Prometheus+grafana服务器组件监控系统

服务器及相关组件监控

本文档主要记录了常用企业级服务器及各种组件的监控手段和监控部署方案,使企业可以实时感知服务器组件的健康状态,并在服务器或组件出现异常时及时做出反应。

本方案采用的Prometheus+grafana的方式实现对服务器及各种组件的监控,以下内容将会带你从零开始,一步步搭建整个监控方案。监控对象包括:服务器监控(cpu、内存、磁盘等指标)、mysql监控、redis监控、kafka监控、clickhouse监控、docker容器等常用组件的监控。

为便于维护,本方案几乎所有用到的组件均采用docker进行部署,需要服务器上安装部署好了docker环境,包括dockerdocker-compose

基础环境安装部署

基础环境总共包含Prometheusalertmanagergrafana三个组件,其中,Prometheus组件主要用于采集各监控对象的各项指标,并将其入库(Prometheus本身就是一个数据库),alertmanager作为Prometheus组件的一个补充模块,负责接收来自Prometheus组件的阈值告警信息,并将其状态推送到指定的告警组件,包括但不限于邮件webhook告警等,而grafana作为一个展示界面,可以非常灵活的展示各个指标的相关参数数据,包括但不限于各种趋势图、饼图等。

在这里插入图片描述

下面我将给大家展示这3个组件搭建部署方法,以及使用方法。

Prometheus安装部署

Prometheus官方有对应的docker镜像,通过docker镜像进行部署,不仅部署起来方便,还会使系统整体上更加整洁,便于后期的维护。直接拉去对应的镜像,并将其封装打包用docker-compose进行维护即可。具体操作如下:

  1. 官网获取最新Prometheus相关版本,访问Prometheus官网,点击跳转到docker界面获取下载链接
    在这里插入图片描述


    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    进入界面,得到当前最新版本镜像,如下图:

    在这里插入图片描述


    在这里插入图片描述

  2. 服务器直接拉去该镜像即可

docker pull prom/prometheus:v2.47.2

在这里插入图片描述
在这里插入图片描述


  1. 创建Prometheus应用目录和相关配置文件

在安装目录下创建prometheus目录,并且在目录中创建启动文件docker-compose.yml和配置文件prometheus.yml,另外创建prometheus_data目录用于外挂到启动容器,以便Prometheus数据本地落盘.

    mkdir prometheuscd prometheustouch docker-compose.yml prometheus.ymlmkdir -m 777 prometheus_data

在这里插入图片描述


docker-compose.yml文件内容如下:

version: '2.4'
services:prometheus:image: prom/prometheus:v2.47.2container_name: prometheushostname: prometheusrestart: alwaysvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus_data:/prometheusports:- "9090:9090"cpus: 4

prometheus.yml文件内容如下:

global:scrape_interval:     1mevaluation_interval: 1m
alerting:alertmanagers:- static_configs:- targets:#- 255.255.255.255:9093rule_files:- "rules/*.yml"scrape_configs:
#监控Prometheus自身- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']
  1. 启动应用并验证
docker-compose up -d

浏览器访问服务器9090端口若页面可以正常加载,表明安装成功
在这里插入图片描述


  1. 停止应用并封装
docker-compose down
docker save prom/prometheus:v2.47.2 | gzip > prometheus.image.tgz

在这里插入图片描述
封装完成后,直接将整个Prometheus目录拷贝到生产环境启动即可。

启动命令如下:
shell docker load -i prometheus.image.tgz docker-compose up -d

alertmanager安装部署

同样的方法,从docker界面点击可以看到alertmanager最新的版本镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
直接拉取最新镜像即可实现

docker pull prom/alertmanager:v0.26.0

在这里插入图片描述

创建alertmanager.yml文件,内容设置告警模式为webhook并指定告警url,内容如下:

global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 1hreceiver: 'webhook'
receivers:- name: 'webhook'webhook_configs:- url: 'http://<告警url>'inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

修改docker-compose.yml文件,添加alertmanager应用启动信息,具体如下:

version: '2.4'
services:prometheus:image: prom/prometheus:v2.47.2container_name: prometheushostname: prometheusrestart: alwaysvolumes:- ./prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus_data:/prometheusports:- "9090:9090"cpus: 4alertmanager:image: prom/alertmanager:v0.26.0container_name: prom_alertmanagerhostname: alertmanagerrestart: alwaysdepends_on:- prometheusports:- "9093:9093"volumes:- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml- ./alertmanager:/alertmanager

启动应用

docker-compose down && docker-compose up -d

在这里插入图片描述

浏览器访问alertmanager应用首页
在这里插入图片描述

grafana安装部署

grafana组件作为可视化工具,提供了丰富的可视化界面,同时还有丰富的开源社区,可以下载到很多优质的可视化panel,极大的方便了系统运维人员。

为方便后期运维,grafana的安装方法同样采用docker进行安装,具体步骤如下:

  1. 获取最新镜像并拉取,访问docker官方仓库,搜索grafana,复制最新镜像并从服务器上拉取
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

拉取镜像 ```shell docker pull grafana/grafana:10.2.0 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/d26dbb3016f548948aa3f0bbb1fdcfeb.png#pic_center)
  1. 创建应用目录并配置应用启动文件
mkdir grafana
cd grafana
mkdir data
touch docker-compose.yml

在这里插入图片描述

docker-compose.yml文件内容如下:

version: '3'
services:app:image: "grafana/grafana:10.2.0"user: "root"network_mode: "host"restart: alwaysvolumes:- ./data:/var/lib/grafana
  1. 启动应用并访问首页
docker-compose up -d

在这里插入图片描述


在这里插入图片描述

grafana默认账号密码: admin/admin,登录后可以选择跳过不修改密码。

  1. 将Prometheus数据源导入grafana

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 导入相关监控模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

至此,服务器组件监控的基础环境搭建完成。

服务器监控

服务器监控需要安装部署node-exporter组件,可以直接本地部署,也可以通过容器进行部署,推荐使用容器进行部署。

  1. 从官网上下载node-exporter应用的镜像包,直接通过docker-compose进行启动。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 创建应用并配置docker-compose.yml启动文件
    在这里插入图片描述

  3. 拉取镜像并启动应用

拉取镜像

docker-compose pull

拉取镜像前,需要quay.io添加到docker服务器的配置文件的insecure-registries参数中,否则会拉取失败
在这里插入图片描述
在这里插入图片描述

启动应用

docker-compose up -d

在这里插入图片描述

  1. 配置Prometheus采集策略,修改prometheus.yml文件,将对应node的api端口添加到配置文件中并重启应用

通过docker inspect <容器id>可以查看容器监听端口
在这里插入图片描述
在这里插入图片描述

prometheus.yml配置文件中添加配置:

#监控虚拟机主机状态- job_name: 'node'static_configs:- targets: ['<服务器ip>:9100']

在这里插入图片描述

  1. 重启Prometheus
docker-compose down && docker-compose up -d

在这里插入图片描述

  1. Prometheus查看采集数据

在这里插入图片描述


至此,表明数据已经在正常采集

  1. 将对应告警策略rules添加到Prometheus,使得当服务器出现故障时,Prometheus自动触发相关告警

添加prometheus_rules目录用于存放所有rules文件

mkdir prometheus_rules

添加prometheus_rules/nodes.yml文件,文件内容如下:

groups:- name: 服务器自监控rules:- alert: 服务器状态expr: up{job='node'} == 0for: 60slabels:severity: errorannotations:summary: '【服务器故障】导致无法正常访问时,服务器可能已经出现宕机,需要立即处理!!!'description: '当前节点:{{ $labels.instance }} ' - alert: 服务器CPU使用率expr: round((1 - avg(rate(node_cpu_seconds_total{mode='idle'}[2m])) by (instance))*100, 0.01) > 85for: 300slabels:severity: errorannotations:summary: '【服务器】CPU使用率大于85%,需要立即关注!!!' description: '当前节点:{{ $labels.instance }},当前值{{ $value }}% '- alert: 服务器内存使用率expr: round(((node_memory_MemTotal_bytes{job="node"} - node_memory_MemAvailable_bytes{job="node"} )/node_memory_MemTotal_bytes{job="node"})*100, 0.01) > 85for: 300slabels:severity: errorannotations:summary: '【服务器】内存使用率大于85%,需要立即关注!!!' description: '当前节点:{{ $labels.instance }},当前值{{ $value }}% '- alert: 服务器磁盘使用率expr: round(((node_filesystem_size_bytes{mountpoint="/opt"} - node_filesystem_free_bytes{mountpoint="/opt"}) / node_filesystem_size_bytes{mountpoint="/opt"}) * 100, 0.01) > 85for: 60s labels:severity: errorannotations:summary: '【服务器】数据盘使用率大于85%,需要立即关注!!!' description: '当前节点:{{ $labels.instance }},数据盘挂载: {{ $labels.mountpoint }};当前值{{ $value }}% '- alert: 服务器进程数expr: node_procs_running > 800for: 60s labels:severity: errorannotations:summary: '【服务器】当前进程数大于800,需要立即关注!!!' description: '当前节点:{{ $labels.instance }};当前值{{ $value }} '- alert: 服务器文件句柄数expr: round(node_filefd_allocated / node_filefd_maximum * 100, 0.01) > 10for: 60s labels:severity: errorannotations:summary: '【服务器】句柄数使用率超过10%,请及时关注!!!' description: '当前节点:{{ $labels.instance }};当前值{{ $value }}% '

修改docker-compose.yml启动文件,将prometheus_rules挂载到容器中
在这里插入图片描述

  1. 重启Prometheus
docker-compose down && docker-compose up -d

在这里插入图片描述

  1. Prometheus页面查看rules规则
    在这里插入图片描述


    可以看到部分异常指标已经被监控并且告警出来,通过webhook应用(一般定制实现,本应用有flask实现,非官方组件,由个人开发,仅供测试使用)后台的log发现告警信息已经推送至对应的webhook应用。
    在这里插入图片描述


    在这里插入图片描述

  2. 登录grafana官网,下载node对应监控dashboard文件并配置相关数据源

搜索dashboard
在这里插入图片描述

下载导入dashboard
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,服务器组件监控到此结束,更多玩法可以自行到官方查阅文档

其他组件监控

其他组件的监控可以与服务器监控类型可以到prometheus官网下载并配置对应exporter组件,将其配置到Prometheus的采集列表中(修改prometheus.yml文件),配置Prometheus告警阈值rules(添加prometheus_rules文件)后方可实现对相关组件的监控。
在这里插入图片描述

相关文章:

从零开始搭建Prometheus+grafana服务器组件监控系统

服务器及相关组件监控 本文档主要记录了常用企业级服务器及各种组件的监控手段和监控部署方案&#xff0c;使企业可以实时感知服务器组件的健康状态&#xff0c;并在服务器或组件出现异常时及时做出反应。 本方案采用的Prometheusgrafana的方式实现对服务器及各种组件的监控&am…...

智能水厂运行与调控3D模拟仿真在线展示提高整个系统的协同效应

水厂在生活中的重要性不可忽视。它们提供清洁、安全的水源&#xff0c;满足人们饮用、洗浴、烹饪等基本需求&#xff0c;保障公共卫生&#xff0c;预防疾病传播;同时&#xff0c;水厂也促进经济发展&#xff0c;为工业生产和农业灌溉提供保障&#xff0c;吸引和支持企业的投资和…...

ts声明文件

1 背景 对于为第三方模块/库写声明文件之前&#xff0c;我们需要知道第三方模块/库&#xff0c;是否需要声明文件&#xff0c;或者是否已有声明文件。 若第三方模块/库&#xff0c;是ts编写且无声明文件&#xff0c; 可以使用--declaration配置选项来生成&#xff1b;可以在命…...

JPA联合主键使用

在实际工作中&#xff0c;我们会经常遇到联合主键的情况&#xff0c;所以我用简单例子列举JPA两种实现联合主键的方式。 1、如何通过IdClass 实现联合主键 第一步:新建一个UserInfoID类&#xff0c;里面是联合主键 Data Builder NoArgsConstructor AllArgsConstructor publi…...

【计算机毕设经典案例】基于微信小程序的图书管理系统

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 &#x1f449;IT源码社-SpringBoot优质案例推荐&#x1f448; &#x1f449;IT源码社-小程序优质案例…...

如何制作rpm离线安装包

如何制作rpm离线安装包 在内网环境中使用rpm安装zabbix-agent-6.4.6时&#xff0c;发现rpm无法下载依赖 1.准备一个可以连接外网的纯净centos7环境 防止本地已有的依赖不会被重复下载 docker pull centos:7docker stop mycentos7 docker rm mycentos72.启动centos7并挂载一…...

golang中快速用melody搭建轻量的websocket服务

在Go中&#xff0c;可以使用gin和melody库来搭建一个轻量级的WebSocket服务。gin是一个流行的Web框架&#xff0c;而melody是一个用于处理WebSocket的库。以下是一个简单的示例代码&#xff0c;演示了如何使用gin和melody搭建WebSocket服务&#xff1a; package mainimport (&…...

​Profinet转EtherNET/IP从站连接欧姆龙plc与西门子200smart通讯的配置方法​

本案例是200smart plc与欧姆龙plc进行通讯的方法&#xff0c;远创智控YC-PNM-EIP网关可以读写全系列西门子 PLC 数据。一般不需要 PLC 里做特殊的设置。只需要把 PLC 的变量地址配置到网关中&#xff0c;网关就可以读取指定地址的数据或者写数据到指定的地址。 PLC 通过网线连接…...

elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

背景 el-table组件中&#xff0c;可以通过勾选某条数据来创建单据&#xff0c;但是有些数据没有权限使用&#xff0c;就需要禁用掉勾选的功能&#xff0c;然后当鼠标悬浮在这一行的时候&#xff0c;展示类似于toolTip的提示框。 除了当鼠标悬浮在某一行&#xff0c;展示类似于…...

Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

本项目所有源码和依赖资源都在文章顶部链接&#xff0c;有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板获取业务数据并写入该 word 模板&#xff0c;生成新的 word 文档将新生成的 word 文档转换为 pdf 格式对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的…...

Spring Boot进阶(93):体验式教程:手把手教你整合Spring Boot和Zipkin

&#x1f4e3;前言 分布式系统开发中&#xff0c;服务治理是一个比较重要的问题。为了更好地实现服务治理&#xff0c;需要解决服务跟踪问题&#xff0c;即如何对分布式系统中的服务进行监控和追踪。本文将介绍如何使用Zipkin进行服务跟踪&#xff0c;并结合Spring Boot进行整合…...

Lvs +keepalivede : 高可用集群

keepalived为Ivs应运而生的高可用服务。Ivs的调度器无法做高可用&#xff0c;于是keepalived这个软件。 实现的是调度器的高可用。 但是: keepalived不是专为Ivs集群服务的&#xff0c;也可以做其他代理服务器的高可用。 lvs的高可用集群&#xff1a;主调度器和备调度器&…...

得物 Redis 设计与实践yu

一、前言 自建 Redis 系统是得物 DBA 团队自研高性能分布式 KV 缓存系统&#xff0c;目前管理的 ECS 内存总容量超过数十TB&#xff0c;数百多个 Redis 缓存集群实例&#xff0c;数万多个 Redis 数据节点&#xff0c;其中内存规格超过 1T 的大容量集群多个。 自建 Redis 系统采…...

优咔科技创新连接方案助力高质量5G车联服务

上海优咔网络科技有限公司 CEO 闫楠 【摘要】本文就智能网联汽车对高质量5G车联服务的需求背景和行业趋势进行了分析&#xff0c;主要介绍采用5G双SIM卡的创新连接方案&#xff0c;重点讲述双SIM卡联网的端到端体系架构和技术方案&#xff0c;并就优咔科技全方位支撑行业领先车…...

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

Hive 常用DML操作

本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038 1.加载文件数据到表 1.1 语法 LOAD DATA [LOCAL] INPATH filepath [OVERWRITE] INTO TABLE</...

centos部署tomcat

Java Downloads | Oracle 上面是下载网址 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台&#xff0c;安全域管理和Tomcat阀 简单来说&#xff1a;Tomcat…...

【Spark】配置参数关系-重要

并行度数量 并行度指所有Executor可以同时执行的Task数&#xff0c; 每个Executor中的一个Core&#xff08;线程&#xff0c;虚拟核数&#xff09;同时只能执行一个Task&#xff0c; 所以 最大并行度 Executor数量 * 每个Executor的Core数&#xff1b; eg&#xff1a;资源配…...

[Qt之“MMM dd yyyyhh:mm:ss“]时间格式

这是时间格式字符串&#xff0c;用于表示日期和时间的显示格式。具体解释如下&#xff1a; “MMM”&#xff1a;表示月份的缩写&#xff0c;例如Jan、Feb、Mar等。“dd”&#xff1a;表示日期的两位数&#xff0c;例如01、02、03等。“yyyy”&#xff1a;表示年份的四位数&…...

SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 宾馆客房管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统…...

GetQzonehistory:如何用Python一键永久保存你的QQ空间所有说说

GetQzonehistory&#xff1a;如何用Python一键永久保存你的QQ空间所有说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;QQ空间承载了无数人的青春记忆和珍贵瞬…...

高效解决幻兽帕鲁存档迁移难题:专业GUID替换工具实战指南

高效解决幻兽帕鲁存档迁移难题&#xff1a;专业GUID替换工具实战指南 【免费下载链接】palworld-host-save-fix Fixes the bug which forces a player to create a new character when they already have a save. Useful for migrating maps from co-op to dedicated servers a…...

如何3分钟搞定Windows与Office激活:开源KMS工具终极指南

如何3分钟搞定Windows与Office激活&#xff1a;开源KMS工具终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统未激活的水印烦恼吗&#xff1f;Office软件频繁弹出的激活…...

机器学习势函数与反向蒙特卡洛在GeO2玻璃中程有序结构建模中的对比研究

1. 项目概述与核心问题 在材料模拟领域&#xff0c;我们常常面临一个经典困境&#xff1a;如何从有限的实验数据中&#xff0c;构建出既符合物理规律又贴近真实情况的三维原子结构模型&#xff1f;这个问题在非晶态材料&#xff0c;尤其是像二氧化锗&#xff08;GeO2&#xff0…...

JMeter四层断言体系:从HTTP协议到业务语义的全链路校验

1. 为什么JMeter的断言不是“加个检查框”就完事了&#xff1f;很多人第一次在JMeter里点开“添加 → 断言 → 响应断言”&#xff0c;填上一个期望值&#xff0c;跑完线程组一看“绿色对勾”&#xff0c;就以为接口测试闭环完成了。我带过三届测试新人&#xff0c;90%都在这个…...

软件工程中机器学习应用的研究、评审与教学实践反思

1. 项目概述&#xff1a;当软件工程研究者遇上机器学习实践作为一名在软件工程领域摸爬滚打了十几年的从业者&#xff0c;我亲眼见证了机器学习技术从实验室的“黑科技”逐渐演变为我们工具箱里的“常规武器”。从最初用简单的决策树做代码缺陷预测&#xff0c;到如今复杂的深度…...

BetterGI原神自动化工具:5分钟快速上手指南,解放你的游戏时间

BetterGI原神自动化工具&#xff1a;5分钟快速上手指南&#xff0c;解放你的游戏时间 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条…...

如何用roop-unleashed实现零门槛AI换脸:三分钟制作专业级视频的完整指南

如何用roop-unleashed实现零门槛AI换脸&#xff1a;三分钟制作专业级视频的完整指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要制作令人惊艳的AI换…...

5大实用技巧彻底解决网易云音乐NCM格式转换难题

5大实用技巧彻底解决网易云音乐NCM格式转换难题 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的情况&#xff1a;在网易云音乐下载的音乐文件只能在特定平台播放&#xff0c;换个设备就无法使用&#xff1f;这…...

LangGraph+Spark智能代理框架:可视化编排大数据机器学习工作流

1. 项目概述与核心价值 如果你是一名数据科学家或机器学习工程师&#xff0c;每天都要和TB甚至PB级别的数据打交道&#xff0c;那么对Apache Spark一定不会陌生。它凭借其内存计算和弹性分布式数据集&#xff08;RDD&#xff09;的设计&#xff0c;确实让大规模数据处理的速度提…...