云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测

news2024/9/28 14:33:22

背景

如果没有监控,那么最好的情况是没有问题发生,最糟糕的情况则是问题发生了但没有被发现。——《Prometheus监控实战》

去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是 docker-compose 在单台机器上部署若依微服务 ruoyi-cloud 项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。今天这篇文章主要是记录下搭建 PrometheusGrafana 监控系统的过程,并通过 node-exporter 实现对部署微服务的主机状态进行监控。

首先了解下 PrometheusGrafana 的功能,简述如下。

  • Prometheus: 古希腊掌管监控的神,负责数据采集处理及存储(确切地说,数据采集大部分来源于各类exporter,比如我们马上看到的node-exporter,用于从主机上采集数据);此外借助周边工具可实现告警功能(由Alertmanager提供)。Prometheus主要是一个基于拉取的系统,但它也支持接收推送到网关的事件。

  • Grafana: 古希腊掌管数据可视化的神,负责对时序数据的前端展示。数据可视化既是一门非常强大的分析和解释技术,也是一种令人惊叹的学习工具。指标及其可视化通常很难解释。人们在查看可视化图像时,往往会幻想出并不存在的事物间的联系:从随机数据中找到有意义的模式。这通常会导致从相关性到因果关系的突然飞跃,而数据的颗粒度或分辨率、表示数据的方式以及数据的规模可能会进一步加剧这种飞跃。

Note:如果是生产环境部署,建议使用 Kubernetes 环境管理所有容器。

虚机资源

共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。

主机名IP说明
svc192.168.44.168服务节点
ops192.168.44.169监控节点

基本选用当前最新版本,即将安装的 PrometheusGrafana 版本信息如下:

  • Prometheus版本:v2.54.1
  • Grafana版本:11.2.0

系统环境

[root@ops ~]# uname -a
Linux ops 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@ops ~]# cat /proc/version
Linux version 5.10.0-182.0.0.95.oe2203sp3.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Sat Dec 30 13:10:36 CST 2023

ops节点:docker-compose安装Prometheus与Grafana

在这里的 docker-compose 服务中选择当前最新版本,并采用最小化配置:明确了容器名称,指定镜像的版本信息,配置端口映射、配置与数据挂载目录等。

2024-09-29-PrometheusVersion.jpg
2024-09-29-GrafanaVersion.jpg

  • [root@ops monitoring]# vi docker-compose.yml
version : '3.8'
services:
  prometheus:
    container_name: ops-prometheus
    image: prom/prometheus:v2.54.1
    ports:
      - '9090:9090'
    command: '--config.file=/etc/prometheus/config.yml'
    volumes:
      - './prometheus/conf/prometheus.yml:/etc/prometheus/config.yml'
      - './prometheus:/prometheus'

  grafana:
    container_name: ops-grafana
    image: grafana/grafana:11.2.0
    ports:
      - '3000:3000'
    volumes:
      - './grafana/data:/var/lib/grafana'

通过命令: docker-compose up -d 完成镜像拉取、并启动 PrometheusGrafana 服务。

Note: 如果遇到报错信息,可以先给目录及文件赋权限。

chmod 777 -R /opt/monitoring/prometheus
chmod 777 -R /opt/monitoring/grafana/data

验证安装结果

先通过 docker ps 查看容器状态。

[root@ops ~]# docker ps
CONTAINER ID   IMAGE                     COMMAND                   CREATED       STATUS       PORTS                                       NAMES
0daa011e5706   grafana/grafana:11.2.0    "/run.sh"                 6 hours ago   Up 6 hours   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   ops-grafana
a90c10c14ef0   prom/prometheus:v2.54.1   "/bin/prometheus --c…"   6 hours ago   Up 3 hours   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   ops-prometheus

然后通过浏览器查看 PrometheusGrafana 服务的页面。

  • http://192.168.44.169:9090
  • http://192.168.44.169:3000

2024-09-29-PrometheusInstall.jpg

2024-09-29-GrafanaInstall.jpg

Note: Grafana 的默认用户名为:admin;密码:admin。登录成功后建议先修改密码。

svc节点:docker-compose安装node_exporter

有了 PrometheusGrafana 的基础环境,我们来实现对部署微服务的主机状态进行监控:node_exporter是用于收集主机(服务器)性能指标的标准工具,它能够提供关于CPU、内存、磁盘、网络等各类系统资源的详细信息。

在需要监测的主机上,编辑 docker-compose.yml 文件。

2024-09-29-NodeExporterVersion.jpg

  • [root@svc monitoring]# vi docker-compose.yml
version: '3'
services:
  node_exporter:
    container_name: ops-node-exporter
    image: prom/node-exporter:v1.8.2
    ports:
      - "9101:9100"
    restart: unless-stopped

通过命令: docker-compose up -d 完成镜像拉取、并启动 node-exporter 服务。

修改Prometheus配置

Prometheus 配置中增加对svc主机的抓取配置。

  • [root@ops monitoring]# vi ./prometheus/conf/prometheus.yml
scrape_configs:
  - job_name: 'ops-node'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.44.168:9100']

重启 Prometheus 容器。

[root@ops monitoring]# docker restart ops-prometheus

验证node-exporter安装结果

  • 浏览器验证metrics端点

浏览器访问http://192.168.44.168:9100/metrics

  • Prometheus控制台验证node相关的指标

2024-09-29-NodeExporterIndex.jpg

配置Grafana对主机状态的可视化

浏览器访问http://192.168.44.169:3000。

  • 配置数据源
  1. 点击左侧菜单中的"Add new connection"。
  2. 选择或搜索"Data Sources"。
  3. 点击"Add data source"并选择"Prometheus"。
  4. 在"HTTP"部分输入Prometheus地址,eg:http://192.168.44.169:9090
  5. 点击"Save & Test"确认连接成功。

2024-09-29-DataSource1.jpg
2024-09-29-DataSource2.jpg

  • 查看现成的仪表板

https://grafana.com/grafana/dashboards/这个页面是 Grafana 的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana 仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 Node Exporter ,结果中有个 Node Exporter Full ,点击进去可以查看详细的UI效果,复制仪表板的id,此处是1860。

  • 导入现成的仪表板
  1. 在右侧菜单中点击"New"按钮,然后选择"Import"。
  2. 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是1860(Node Exporter Full Dashboard)。
  3. 点击"Load",随后选择已配置好的数据源。
  4. 点击"Import"完成导入。

2024-09-29-GrafanaImport.jpg

2024-09-29-NodeExporter1860.jpg

监控效果

2024-09-29-NodeExporterGrafana.jpg

小总结

本文记录了在 Docker 环境下使用 docker-compose 部署 PrometheusGrafana 监控系统的过程,并通过 node-exporter 实现对主机状态的监控。文章介绍了 PrometheusGrafana 的主要功能,提供了具体的安装步骤、配置文件示例、以及验证和可视化的操作指南。通过这些步骤可以在两台虚拟机上成功部署和运行 PrometheusGrafana ,并实现对微服务主机的监控和数据可视化。

没有监控,你将无法了解你的系统环境、进行诊断故障、制定容量计划,也无法向组织提供系统的性能、成本和状态等信息。我们应该频繁地监控应用程序,以获得以下好处:

  • 识别故障或异常;
  • 满足响应时间预期——你绝对希望在用户报告故障之前找到问题;
  • 提供更细颗粒度的数据,以识别性能的问题和趋势。

从技术角度来看,监控(Monitoring)是衡量和管理技术系统的工具和流程。后续我们将对基础环境组件进行监控,包括: MySQLRedisNacosNginxMinIOInfluxDB 等等,同时,我们也要对业务服务进行监控,eg: Spring Boot 技术栈的 ActuatorJVM 。对于许多基础组件, Prometheus 提供了专门的 Exporter 来收集指标数据。

  • MySQL Exporter:可以通过MySQL Exporter收集数据库的性能指标,包括查询时间、连接数、慢查询等;
  • Redis Exporter:使用Redis Exporter来监控Redis的性能指标,如内存使用、命中率、连接数等;
  • Nginx Exporter:通过Nginx的状态模块和相应的Exporter获取请求数、响应时间等数据;
  • MinIO Exporter:使用MinIO的Prometheus端点来监控存储桶的使用情况和请求统计;
  • InfluxDB Exporter:InfluxDB也有相应的Exporter,可以监控其性能指标。

Reference

  • https://github.com/prometheus/prometheus/releases/tag/v2.54.1
  • https://github.com/grafana/grafana/releases/tag/v11.2.0
  • https://github.com/prometheus/node_exporter/releases/tag/v1.8.2
  • https://grafana.com/grafana/dashboards/

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

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

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

相关文章

NutUI 单元测试:从 jest 到 vitest

NutUI Vue 自 3.0 版本起,开始使用 vite 作为项目的构建工具,单元测试工具则依然使用 jest。而后 vite 官方团队开源了 vitest 作为 vite 的首选测试框架和 jest 的替代品。 本文主要介绍 NutUI 从 jest 到 vitest 的迁移过程,以及后续对于单…

电商系统开发全攻略:基于Spring Boot的在线商城

2 相关技术 2.1 Springboot框架介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring…

Go 项目开发常用设计模式

设计模式就某些编码场景下的最佳实践,用来解决常见的软件设计问题。Go 语言不是面向对象语言,但是可以使用结构体、接口等类型实现面向对象语言的特性,想要弄懂设计模式,要熟练的使用 Go 语言接口类型 和结构体类型 设计模式总体上…

关于Chrome浏览器F12调试,显示未连接到互联网的问题

情况说明 最近笔者更新下电脑的Chrome浏览器,在调试前端代码的时候,遇到下面一个情况: 发现打开调试面板后,页面上显示未连接到互联网,但实际电脑网络是没有问题的,关闭调试面板后,网页又能正…

Python 爬虫 根据ID获得UP视频信息

思路: 用selenium库对网页进行获取,然后用bs4进行分析,拿到bv号,标题,封面,时长,播放量,发布时间 先启动webdriver.,进入网页之后,先等几秒,等加…

chatglm本地服务器大模型量化cpu INT4 INT8 half float运行、多卡多GPU运行改这一条指令就行啦!

一、ChatGLM3的几种推演方式 ChatGLM3常规方案的GPU推演中half和float是两种最常用的格式,half格式占13GB显存,float格式占40GB显存。此外还提供了几种GPU量化格式的推演:INT4和INT8量化。 CPU版本的ChatGLM3推演: model Auto…

Java 常用的一些Collection的实现类

Java 常用的一些Collection的实现类 Collection 1.集合基础 Java 集合框架是一个强大的工具,它提供了一套标准化的接口和类,用于存储和操作集合数据。Collection 接口是这个框架的核心,它定义了一系列通用的集合操作。 2.Collection接口方法 …

既然有HTTP协议,为什么还要有RPC?

既然有HTTP协议,为什么还要有RPC? ​ 既然有HTTP协议,为什么还要有RPC? 有点既生瑜何生亮的味道。 第一次接触RPC我就很懵,平时我HTTP协议用得好好的,为什么还需要RPC协议? 于是我去百度&am…

最详细!适合AI大模型零基础入门的学习路线+学习方法+学习资料,全篇干货,建议收藏!

前言 随着ChatGPT的横空出世,大模型时代正式来临。千亿甚至万亿参数的大模型陆续出现,各大企业、高校纷纷推出自己的大模型,这标志着通用智能时代的到来。对于零基础的初学者来说,如何快速入门AI大模型,抓住这个时代的…

通过管道和共享存储映射实现进程通信

1.IPC方法 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区&a…

物联网智能项目全面解析

目录 引言 一、物联网概述 1.1 什么是物联网 1.2 物联网的历史与发展 二、物联网智能项目分类 三、关键组件与技术 3.1 传感器和执行器 3.2 连接技术 3.3 数据处理与分析 3.4 用户界面 四、物联网智能项目案例分析 4.1 智能家居 4.2 智慧城市 4.3 工业物联网 4.4…

孩子英语不好,能学编程吗?

随着编程教育的普及,越来越多的家长开始关注孩子的编程学习。然而,不少家长提出了这样的疑问:“孩子的英语不好,是否还能学编程?”毕竟,编程语言是基于英语的,代码中也充斥着大量的英语单词和短…

数据结构-3.6.队列的链式实现

队列可以理解为单链表的阉割版&#xff0c;相比单链表而言&#xff0c;队列只有在添加和删除元素上和单链表有区别 一.队列的链式实现&#xff1a; 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> ​ typedef struct LinkNode //链式队列结点 {int data;st…

【韩顺平Java笔记】第1章

0-1可以看视频&#xff0c;下面记录主要内容 2. 就业方向 Java基础又叫JavaSE&#xff0c;Java有三个主要的就业方向&#xff1a; JavaEE软件工程师&#xff1a;电商&#xff0c;团购&#xff0c;众筹&#xff0c;sns&#xff08;社交网络&#xff09;&#xff0c;教育&…

纠删码参数自适应匹配问题ECP-AMP实验方案(一)

摘要 关键词&#xff1a;动态参数&#xff1b;多属性决策&#xff1b;critic权重法&#xff1b;DBSCA聚类分析 引言 云服务存储系统是一种基于互联网的数据存储服务&#xff0c;它可以为用户提供大规模、低成本、高可靠的数据存储空间。云服务存储系统的核心技术之一是数据容…

winsoft公司Utils组件功能简介

Winsoft Utils Library 2.3 是一个为 Delphi 和 C Builder&#xff08;版本 7 到 12 Athens&#xff09;设计的实用工具库。它提供了一系列组件和类&#xff0c;旨在简化和增强开发过程。以下是一些主要功能和特点&#xff1a; 1.组件集合&#xff1a;包含多种实用组件&#x…

AB plc设备数据 转profinet IO项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集AB PLC数据 2 5 用PROFINET IO协议转发数据 4 6 案例总结 7 1 案例说明 设置网关采集AB PLC数据把采集的数据转成profinet IO协议转发给其他系统。 2 VFBOX网关工作原理 VFBOX网关是协议转换网关&#xff0…

如果再回到从前——备忘录模式

文章目录 如果再回到从前——备忘录模式如果再给我一次机会……游戏存进度备忘录模式备忘录模式基本代码游戏进度备忘 如果再回到从前——备忘录模式 如果再给我一次机会…… 时间&#xff1a;5月6日18点  地点&#xff1a;小菜、大鸟住所的客厅  人物&#xff1a;小菜、…

Sharding-JDBC笔记03-分库分表代码示例

文章目录 一、水平分库1. 将原有order_db库拆分为order_db_1、order_db_22. 分片规则修改分片策略standardcomplexinlinehintnone 3. 插入测试4. 查询测试5. 使用分库分片键查询测试总结 二、公共表1. 创建数据库2. 在Sharding-JDBC规则中修改3. 数据操作4. 字典操作测试5. 字典…

Linux线程-POSIX信号量与锁以及条件变量

POSIX信号量 POSIX没有元素这个概念相比于SYSTEM-V更简洁&#xff0c;POSIX不一定适用老版本&#xff1b;二者都是系统范畴&#xff0c;都需要手动删除&#xff0c;POSIX相关函数属于线程库&#xff0c;所有编译时需要末尾加上-lpthread选项 POSIX POSIX有名信号量 主要用于进…