云原生之运维监控实践-使用Telegraf、Prometheus与Grafana实现对InfluxDB服务的监测

ops/2024/11/20 23:18:18/

背景

如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》

去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当时使用的是 docker-compose 在单台机器上部署若依微服务 ruoyi-cloud 项目;在这个基础上,作为演示项目,我们计划实现对所有基础组件和微服务的监控。之前记录了搭建 PrometheusGrafana 监控系统的过程。今天这篇文章主要是记录下对 InfluxDB 的监测,用到的 exporter 是: TelegrafTelegraf 是一个开源的、插件驱动的服务器代理,用于收集、处理、和发送各种性能数据。它是 InfluxData 的一部分,常用于与 InfluxDB 结合使用,但也支持输出到其他存储系统,如 PrometheusGraphiteOpenTSDBElasticSearch 等。。

虚机资源

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

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

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

系统环境

[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

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

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

Telegraf_33">svc节点:docker-compose安装Telegraf

有了 PrometheusGrafana 的基础环境,我们来实现对 InfluxDB 状态的监控:通过 Telegraf 快速采集 InfluxDB 运行数据并以 Prometheus 格式提供,供 Prometheus 进行采集和分析。

Telegraf 是一个高效且灵活的指标收集代理,它支持从多种来源收集数据并将其转发到多个输出目标。无论是服务器监控、应用性能监控,还是云服务、容器和网络设备的监控, Telegraf 都能够满足需求,并且具有极低的性能开销。通过其插件架构, Telegraf 提供了很高的可扩展性和灵活性,非常适合用于现代的监控和 Observability 系统中。

Telegraf_39">安装Telegraf

在需要监测的主机上,编辑 docker-compose.yml 文件,增加安装 Telegraf 配置。

  • [root@svc monitoring]# vi docker-compose.yml
version: '3'
services:ops-telegraf:image: telegraf:1.19.3container_name: ops-telegrafrestart: unless-stoppedports:- "9273:9273"volumes:- "./telegraf/conf/telegraf.conf:/etc/telegraf/telegraf.conf"
  • telegraf.conf
    通过 http://192.168.44.168:8086/debug/vars 获取 InfluxDB 的基础信息,并配置了用户认证信息。此外,还添加了关于CPU、内存、磁盘、IO等系统参数抓取配置。
[[outputs.prometheus_client]]listen = ":9273"[[inputs.influxdb]]urls = ["http://192.168.44.168:8086/debug/vars"]username = "admin"password = "you-guess"[[inputs.cpu]]## Whether to report per-cpu stats or notpercpu = true## Whether to report total system cpu stats or nottotalcpu = true## If true, collect raw CPU time metrics.collect_cpu_time = false# Read metrics about disk usage by mount point
[[inputs.disk]]## By default, telegraf gather stats for all mountpoints.## Setting mountpoints will restrict the stats to the specified mountpoints.# mount_points = ["/"]## Ignore some mountpoints by filesystem type. For example (dev)tmpfs (usually## present on /run, /var/run, /dev/shm or /dev).ignore_fs = ["tmpfs", "devtmpfs"]# Read metrics about disk IO by device
[[inputs.diskio]]## By default, telegraf will gather stats for all devices including## disk partitions.## Setting devices will restrict the stats to the specified devices.# devices = ["sda", "sdb"]## Uncomment the following line if you need disk serial numbers.# skip_serial_number = false[[inputs.mem]][[inputs.swap]][[inputs.processes]][[inputs.kernel]][[inputs.system]]

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

修改Prometheus配置

Prometheus 配置中增加对svc主机上 InfluxDB 运行状态的抓取配置。

scrape_configs:- job_name: 'ops-telegraf'scrape_interval: 15sstatic_configs:- targets:- 192.168.44.168:9273 

重启 Prometheus 容器。

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

验证telegraf安装结果

  • 浏览器验证metrics端点

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

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

2024-11-17-1-<a class=InfluxDBIndex.jpg" />

Grafana_141">配置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"确认连接成功。
  • 查看现成的仪表板

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

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

2024-11-17-2-<a class=InfluxDBImport.jpg" />

InfluxDB_165">InfluxDB监控效果

2024-11-17-3-<a class=InfluxDBDashboard.jpg" />

小总结

If you can’t measure it, you can’t improve it!

没有度量就没有改进,实际上,监控系统有以下两个客户:技术,业务。上述内容即是对技术组件的监控,方便技术方面的改进与优化。
本文记录了在 Docker 环境下通过 PrometheusGrafana 实现对 InfluxDB 服务的监控。具体步骤包括在服务节点上使用 docker-compose 安装 telegraf ,配置 Prometheus 抓取 InfluxDB 的监控数据,并在 Grafana 中配置数据源和导入现成的监控仪表板,以实现对时序数据库服务的性能监控和可视化。

Reference

  • 使用docker-compose部署时序数据库InfluxDB1.8.4
  • 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.ppmy.cn/ops/135351.html

相关文章

[数组二分查找] 0209. 长度最小的子数组

文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 2. 题目大意 描述&#xff1a;给定一个只包含正整数的数组 nums 和一个正整数 target。 要求&#xff1a;找出数组中满足和大于等…

windows C#-编写 C# LINQ 查询(上)

介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的。 但是在编译代码时&#xff0c;查询语法必须转换为针对 .NET 公共语言运行时 (CLR) 的方法调用。 这些方法调用会调用标准查询运算符(名称为 Where、Select、GroupBy、Join、Max 和 Average …

Python绘制雪花

文章目录 系列目录写在前面技术需求完整代码代码分析1. 代码初始化部分分析2. 雪花绘制核心逻辑分析3. 窗口保持部分分析4. 美学与几何特点总结 写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4…

199. 二叉树的右视图【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 199. 二叉树的右视图 一、题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 二…

Node.js 版本管理的最终答案 Volta

文章目录 特点安装Unix系统安装Windows系统安装 常用命令volta fetchvolta installvolta uninstallvolta pinvolta listvolta completionsvolta whichvolta setupvolta runvolta help 建议 目前对于前端项目的node 版本&#xff0c;我们一般会在项目 package.json 的 engines 字…

lua调用C语言函数,在函数中进行类型检查

使用lua_is*函数族进行检查&#xff08;除了lua_type之外的另一种方式&#xff09; Lua C API提供了一系列lua_is*函数&#xff0c;如lua_isnumber、lua_isstring、lua_isboolean等&#xff0c;用于检查栈上元素的类型。示例代码如下&#xff0c;假设我们有一个C函数&#xff0…

Deep-Live-Cam -面部交换、视频深度伪造

文章目录 一、关于 Deep-Live-Cam免责声明 二、安装&#xff08;Windows/Nvidia&#xff09;安装&#xff08;手动&#xff09;基本安装&#xff08;CPU&#xff09; GPU加速&#xff08;可选&#xff09;CUDA执行提供商&#xff08;Nvidia&#xff09;CoreML执行提供商&#x…

Linux系统Centos设置开机默认root用户

目录 一. 教程 二. 部分第三方工具配置也无效 一. 教程 使用 Linux 安装Centos系统的小伙伴大概都知道&#xff0c;我们进入系统后&#xff0c;通常都是自己设置的普通用户身份&#xff0c;而不是 root 超级管理员用户&#xff0c;导致我们在操作文件夹时往往爆出没有权限&am…