从零开始搭建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文件)后方可实现对相关组件的监控。
在这里插入图片描述

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

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

相关文章

使用VisualStudio生成类图结构图for高效阅读代码

使用VisualStudio高效阅读代码 前言相关准备导入工程利用VisualStudio生成类图&#xff0c;结构体调用关系利用EnterpriseArchitect(EA)画时序图 前言 目前市面上代码阅读的IDE工具非常丰富&#xff0c;也各有千秋。由于工作经历原因&#xff0c;研发机经历过windows、Mac、Li…

67 跳跃游戏 II

跳跃游戏 II 题解1 贪心1 正向题解2 贪心2 反向题解3 DP 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 &…

数据库分库分表的原则

目录 1、数据库分库分表是什么 2、为什么要对数据库分库分表 3、何时选择分库分表 4、⭐分库分表遵循的原则 5、分库分表的方式 6、数据存放在表和库中的规则&#xff08;算法&#xff09; 7、分库分表的架构模式 8、分库分表的问题 小结 1、数据库分库分表是什么 数…

Android JNI/NDK 入门从一到二

1. 前言 最基础的创建JNI接口的操作&#xff0c;可以直接看这篇文章 : 第一个Android JNI工程&#xff0c; 本文会基于掌握创建JNI接口的操作的基础之上&#xff0c;来入门JNI/NDK。 2. 在JNI中打印日志 2.1 添加log模块 记得CMake中有log模块&#xff0c;不然编译不过 ta…

SpringBoot日志+SpringMVC+UUID重命名文件+Idea热部署

目录 【SpringBoot日志】 什么是日志&#xff0c;日志的作用 关于日志的基本信息&#xff0c;又有哪些呢&#xff1f; 关于日志的级别 Springboot内置SLF4J【门面模式】 和 logback【日志框架】 在配置文件中可以设置日志级别【以.yml为例】 SpringBoot 持久化的保存日…

OpenCV学习(四)——轨迹栏(调色板与不同通道图像)

轨迹栏 4. OpenCV轨迹栏4.1 轨迹栏作为调色板4.2 轨迹栏显示不同通道图像 4. OpenCV轨迹栏 会用到以下主要两个函数 cv2.createTrackbar(trackbarName, windowName, value, count, onChange)创建轨迹栏 主要参数&#xff1a; trackbarName&#xff1a;轨迹栏名称windowName…

感受webWorker

B站视频 git完整代码 之前遇到的场景 1、vxe表格计算1000多条数极值/算数平方根的时候。 2、大文件上传时计算hashCode时候 一、不使用webWorker 目录结构 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&q…

数组与链表算法-矩阵算法

目录 数组与链表算法-矩阵算法 矩阵相加 C代码 矩阵相乘 C代码 转置矩阵 C代码 稀疏矩阵 C代码 数组与链表算法-矩阵算法 矩阵相加 矩阵的相加运算较为简单&#xff0c;前提是相加的两个矩阵对应的行数与列数必须相等&#xff0c;而相加后矩阵的行数与列数也是相同的。…

鼎鑫鸿鄴引入“能源互联网+”理念 打造共赢

近年来&#xff0c;随着全球能源消耗的不断增长和环境问题的日益突出&#xff0c;清洁能源转型成为全球共同关注的话题。中国作为全球最大的能源消费国&#xff0c;也在积极推动能源结构的优化和清洁能源的发展。鼎鑫鸿鄴新能源科技有限公司在推动清洁能源转型方面制定了一系列…

Linux内核代码中常用的数据结构

Linux内核代码中广泛使用了数据结构和算法&#xff0c;其中最常用的两个是链表和红黑树。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链表所包含的元素可以动态创建并插入和删除。 链表的每个元素都是离散…

el-table添加固定高度height后高度自适应

0 效果 1 添加自定义指令 新建目录src/directive/el-table 在el-table目录下新建文件adaptive.js import { addResizeListener, removeResizeListener } from element-ui/src/utils/resize-event// 设置表格高度const doResize async(el, binding, vnode) > {// 获取表格…

S32K144芯片焊接完成后使用S32DS初次下载无法下载解决方法

一、问题现象如下&#xff0c;S32DS Debug下报错 二、原因&#xff0c;原厂芯片出厂时的FLASH Memory的安全机制是激活的&#xff0c;仿真器是可以连上&#xff0c;但是没法读取Flash Memory的内容 三、解决方法 参考图示&#xff0c;解锁后即可正常Debug

深入理解Java中的转义字符

最近在学习《两周自制脚本语言》这本书&#xff0c;在词法分析的一些复杂的正则中用到了大量的转义字符’\&#xff0c;比如正则字符串中包含了这个部分\\\\\"你知道它是匹配什么的么&#xff1f; 反斜杠在字符串和正则表达式中都有特殊作用。今天让我们来深入理解一下Ja…

数据分享 I 地级市人口和土地使用面积基本情况

数据地址&#xff1a; 地级市人口和土地使用面积基本情况https://www.xcitybox.com/datamarketview/#/Productpage?id394 基本信息. 数据名称: 地级市人口和土地使用面积基本情况 数据格式: ShpExcel 数据时间: 2021年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据…

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

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

『力扣刷题本』:移除链表元素

一、题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&a…

在spring boot+vue项目中@CrossOrigin 配置了允许跨域但是依然报错跨域,解决跨域请求的一次残酷经历

首先&#xff0c;说一下我们的项目情况&#xff0c;我们项目中后端有一个过滤器&#xff0c;如果必须要登录的接口路径会被拦下来检查&#xff0c;前端要传一个token&#xff0c;然后后端根据这个token来判断redis中这个用户是否已经登录。 if (request.getMethod().equals(&qu…

css 三栏布局的实现?

目录 前言 用法 代码 理解 高质量图片 1. 左侧栏 - 导航菜单 2. 中间栏 - 主要内容 3. 右侧栏 - 小部件和广告 布局的响应式设计 三栏布局在前端页面设计中是一个常见的布局方式&#xff0c;通常包含左侧、中间和右侧三个部分。这种布局方式在多种场景中都很受欢迎&am…

解决Windows出现找不到mfcm90u.dll无法打开软件程序的方法

今天&#xff0c;我非常荣幸能够在这里与大家分享关于mfc90u.dll丢失的5种解决方法。在我们日常使用电脑的过程中&#xff0c;可能会遇到一些软件或系统错误&#xff0c;其中之一就是mfc90u.dll丢失。那么&#xff0c;mfc90u.dll究竟是什么文件呢&#xff1f;接下来&#xff0c…

【表面缺陷检测】钢轨表面缺陷检测数据集介绍(2类,含xml标签文件)

一、介绍 钢轨表面缺陷检测是指通过使用各种技术手段和设备&#xff0c;对钢轨表面进行检查和测量&#xff0c;以确定是否存在裂纹、掉块、剥离、锈蚀等缺陷的过程。这些缺陷可能会对铁路运输的安全和稳定性产生影响&#xff0c;因此及时进行检测和修复非常重要。钢轨表面缺陷…