Telegraf监控客户端调研笔记(2)-CPU、MEM、DISK、IO相关指标采集

性能评估 之 disk IO 一、磁盘性能指标 1、IOPS 随机IO效率的主要影响因子 2、KB per IO 顺序IO效率的主要影响因子 二、IO评估指标 1、vmstat Block in /out 设置的bi+bo参考值为1000,如果超过1000,而且vmstat cpu wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。 2、IOwait time 阅读详情
AI摘要

本文详细调研了Telegraf对系统资源监控的配置,包括CPU、内存、硬盘和硬盘IO的指标采集。CPU和内存的配置较为直观,硬盘IO的监控可以通过配置忽略不需要的文件系统类型。对于硬盘使用率和inode剩余量等关键指标进行了说明。此外,介绍了如何通过PromQL计算类似iostat的指标,如IO使用率、队列长度和等待时间。最后,讨论了服务端支持QL能力的重要性。

这是系列文章,之前的文章如下:

Telegraf大家有了基本了解了,但是能否用好,未必喽,今天我着重调研了一下Telegraf对CPU、内存、硬盘相关指标的采集,大部分指标还算容易理解,硬盘IO相关的有点麻烦,好,下面开始介绍。

CPU

CPU相关的指标比较简单,配置也比较简单,在inputs.cpu这个section,具体如下:

# Read metrics about cpu usage[[inputs.cpu]]  ## Whether to report per-cpu stats or not  percpu = true  ## Whether to report total system cpu stats or not  totalcpu = true  ## If true, collect raw CPU time metrics  collect_cpu_time = false  ## If true, compute and report the sum of all non-idle CPU states  report_active = false

percpu默认设置为true,表示每个core都采集,建议维持默认配置,totalcpu默认为true,表示采集整体情况,平时配置告警策略就靠这个呢,所以要维持默认配置true,collect_cpu_time表示采集cpu耗费的时间,因为已经采集了各种percent指标了,time相关的感觉没有必要,可以不用打开,维持false配置,report_active相当于要采集cpu使用率,但是默认是false,建议改成true,有些人还是习惯用util的视角看待cpu使用情况。

MEM

内存相关的指标更简单,默认配置里啥都没有,如下:

[[inputs.mem]]  # no configuration看来作者觉得内存相关的指标没啥需要配置的。具体采集的时候,就是把/proc/meminfo中的数据都拿出来解析上报了,就这样就好,没啥要改的,如果觉得有些指标不想上报,这里介绍给大家一个技巧,每个input插件下都可以配置一些通用的过滤规则,过滤field或者tag,比如这里我不想采集inactive这个指标,那可以这么配置:
# Read metrics about memory usage[[inputs.mem]]  # no configuration  fielddrop = ["inactive"]

fielddrop就表示要干掉某些field,与之相反的是fieldpass,表示只保留哪些,而且支持通配符,假设我只想采集percent和total相关的指标,就可以用fieldpass+通配符来解决:

# Read metrics about memory usage[[inputs.mem]]  # no configuration  fieldpass = ["*percent", "*total"]

这个例子可能不具备生产意义,主要是用于演示,大家了解即可。

DISK

这个采集插件主要是采集磁盘使用率相关的指标,配置如下:​​​​​​​

# Read metrics about disk usage by mount point[[inputs.disk]]  ## By default stats will be gathered for all mount points.  ## Set mount_points will restrict the stats to only the specified mount points.  # mount_points = ["/"]
  ## Ignore mount points by filesystem type.  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

这个ignore_fs可以屏蔽掉一些不想采集的文件系统类型,很有价值,mount_points这个感觉用的会比较少,大部分情况是希望自动探测所有分区的,mount_points的作用注释说的很清楚了,不再赘述。

我们测试一下看看有哪些指标:​​​​​​​

[root@10-255-0-34 telegraf-tmp]# ./usr/bin/telegraf --config etc/telegraf/telegraf.conf --test --input-filter disk2021-11-06T10:29:05Z I! Starting Telegraf 1.20.2> disk,device=vda1,fstype=xfs,host=10-255-0-34,mode=rw,path=/ free=34200436736i,inodes_free=20858317i,inodes_total=20970992i,inodes_used=112675i,total=42938118144i,used=8737681408i,used_percent=20.34947451282508 1636194546000000000

硬盘使用率重点关注的指标是used_percent和inodes_free,前者表示磁盘使用率,后者表示inode剩余量。

利用上面的例子再介绍一个技巧,上面例子中有个mode=rw的标签,如果这个标签我觉得没用想干掉,应该如何配置呢,用tagexclude,如下:​​​​​​​

# Read metrics about disk usage by mount point[[inputs.disk]]  ## By default stats will be gathered for all mount points.  ## Set mount_points will restrict the stats to only the specified mount points.  # mount_points = ["/"]
  ## Ignore mount points by filesystem type.  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
  tagexclude = ["mode"]

上面的配置达到的效果,就是干掉了mode这个标签,相反的是taginclude,表示只保留某个标签,taginclude感觉场景较少,tagexclude场景应该较多。

DISKIO

截取部分配置如下:​​​​​​​

# 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", "vd*"]

devices这个字段后面可能会用到,大家最好有个印象。

硬盘IO相关的指标主要来自/proc/diskstats这个内核文件,每个字段都采集了,但是真正使用的话,其实不够用,与iostat的输出相比,少了不少内容,比如io.util、队列长度、read和write的await等,这些指标如何计算呢?

下面我们使用promql来输出这些指标,夜莺v5开始,后续版本都拥抱了Prometheus生态,所以无论是配置大盘还是告警规则,都支持promql,相关写法如下(今天刚调研这块,可能拿捏的不准,如有疏漏请读者帮忙指正):

IO使用率(iostat %util)

rate(diskio_io_time[1m])/10

diskio_io_time表示io占用的时间,单位是毫秒,rate之后,表示每秒有多少毫秒用于io,把毫秒换算成秒,即:

rate(diskio_io_time[1m])/1000

这个query表示每秒有多少零点几秒是用于io,即io的时间占比,比率一般用%单位,所以上面的值要再乘以100,即:

rate(diskio_io_time[1m])/1000*100

所以就相当于rate之后除以10即可。

队列长度(iostat avgqu-sz)​​​​​​​

rate(diskio_weighted_io_time[1m])/1000

diskio_weighted_io_time中包含了backlog的时间,用于表示IO队列长度。

每个写请求平均耗费时间(iostat w_await)

rate(diskio_write_time[1m])/rate(diskio_writes[1m])

单位是ms

每个读请求平均耗费时间(iostat r_await)

rate(diskio_read_time[1m])/rate(diskio_reads[1m])

单位是ms

从上面IO相关的指标可以有感受了,如果我们无法控制采集侧(很多时候就是如此),

服务端就必须要支持QL能力!

如果有使用Telegraf+Prometheus的小伙伴可以在生产环境验证一下,对比一下iostat的输出,看看是否正确(值不会和iostat完全一致,采样数据差不多就行)。如有问题欢迎留言反馈~

磁盘I/O %util特别高 阅读详情

相关推荐

Telegraf介绍和使用(安装、使用、内部数据结构-InfluxDB行协议、配置、架构、Glob的使用、插件的集成和实现、集合Prometheus)

Telegraf是一个基于插件的开源指标采集工具。本身是为InfluxDB(一款时序数据库)量身打造的数据收集器,但是它过于优秀,能够将抓取的数据写到很多地方,尤其在时序数据库领域,很多时序数据库都能够与它配合使用。通常,它每隔一段时间抓取一批指标数据(比如机器的CPU使用情况,磁盘的IO,网络情况,MySQL服务端的的会话数等等)并将他们发送到时序数据库、消息队列中或者自定义导出到某个地方。供下游的应用处理(比如报警)。Telegraf也能够对外提供一个服务,等待客户端推送数据。

迷雾总会解 3万+

Linux内核参数梳理

系统 node-exporter指标 说明 采集来源 procs_blocked I/O阻塞中的进程数 /proc/stat procs_running 运行中的进程数 load1 1min内系统平均负载 /proc/loadavg load5 5min内系统平均负载 load15 15min内系统平均负载 filefd_allocated 已分配文件描述符数量 /proc/sys/f...

lonely_geek的博客 2413

Telegraf与Prometheus集成实战:从数据采集到可视化监控

本文详细介绍了如何使用Telegraf作为统一数据采集器与Prometheus集成,实现从系统资源到MySQL、Redis及自定义应用的全栈监控。通过实战配置示例,阐述了如何利用Telegraf的插件化架构简化管理、降低资源开销,并将数据转换为Prometheus格式,最终在Grafana中完成可视化。文章还提供了关键的避坑指南与性能调优建议,帮助构建高效、稳定的监控体系。

weixin_29209805的博客 986

磁盘I/O请求分析

对于磁盘的一次读请求,首先经过虚拟文件系统层(VFS Layer),其次是具体的文件系统层(例如Ext2),接下来是Cache层(Page Cache Layer)、通用块层(Generic Block Layer)、I/O调度层(I/O Scheduler Layer)、块设备驱动层(Block Device Driver Layer),最后是物理块设备层(Block Device Layer)。...............

Biao 2566

时序数据监控实战:基于InfluxDB 2.5、Telegraf与Grafana的TIG栈部署指南

时序数据是指按时间顺序记录的一系列数据点,如服务器性能指标、IoT传感器读数等,其核心价值在于揭示数据随时间变化的趋势与规律。为高效处理这类数据,时序数据库应运而生,它采用专门优化的存储引擎和查询模型,相比传统关系型数据库,在写入吞吐、查询聚合和存储压缩方面具有显著优势。InfluxDB作为领先的时序数据库,其数据模型基于测量、标签和字段,通过标签索引实现高效过滤与分组。结合轻量级数据采集器Telegraf和强大的可视化工具Grafana,构成了业界广泛采用的TIG监控技术栈。该栈通过Telegraf插件化

383

【信息科学与工程学】【通信工程】第一百八十八篇 通信网络中的数学物理01

因素及参数的数学建模与详细配置SDN将控制平面与数据平面分离,控制器负责全局视图与决策。控制器部署问题(Controller Placement Problem, CPP)常用图论建模:给定网络拓扑 G=(V,E),候选控制器位置集合 C⊆V,需选择k个控制器位置,使得交换机到最近控制器的平均时延或最坏时延最小化,同时考虑控制器间同步开销。

weixin_49199313的博客 602

Telegraf时间序列数据采集与监控实战指南

时间序列数据采集是现代监控系统的核心技术,通过高效收集服务器、中间件和业务指标实现系统可观测性。Telegraf作为开源的监控代理工具,采用Go语言编写,具有轻量级、插件化架构特点,支持200+服务的指标采集。其工作原理基于输入-处理-输出管道模型,内置指标过滤和标签处理功能,能有效降低后端存储压力。在技术实现上,Telegraf通过批处理模式和内存优化机制,确保在高负载场景下的稳定运行。典型应用包括基础设施监控、云平台指标采集和业务数据统计,特别适合与InfluxDB、Prometheus等时序数据库配合

weixin_33923762的博客 430

Mac本地部署OpenClaw:从零搭建企业级知识库AI助手

大语言模型(LLM)作为当前人工智能的核心技术,通过其强大的自然语言理解和生成能力,正在深刻改变信息交互方式。其原理是基于海量数据训练的深度神经网络,能够根据上下文预测并生成连贯文本。这一技术的核心价值在于,它能够作为智能中枢,理解和执行复杂指令,从而将通用AI能力转化为解决特定业务问题的生产力。在工程实践中,通过AI Agent框架(如OpenClaw)将LLM与外部工具和知识系统连接,是实现其价值的关键。这涉及到**本地部署**与**私有化**部署,以确保数据安全与成本可控。具体应用场景包括企业知识库问

weixin_33402252的博客 376

ServerAgent与nmon:全栈性能监控实战指南

性能监控是保障分布式系统稳定运行的核心技术,通过采集CPU、内存、磁盘等关键指标实现系统健康状态的可观测性。ServerAgent作为JMeter生态中的轻量级监控工具,采用被动采集设计降低资源消耗,支持从系统资源到进程级的全方位监控。nmon则是Unix/Linux系统的经典监控利器,提供实时交互与后台记录两种工作模式。两者结合可构建覆盖基础设施与应用层的全栈监控方案,特别适合电商大促等高压场景下的性能问题定位。本文通过磁盘IO瓶颈、MySQL连接数超标等典型案例,详解如何通过指标关联分析实现快速故障诊断

weixin_33725239的博客 465

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

网络设备心跳线带宽高导致虚拟化平台不稳定的问题处理

本文记录了网络设备心跳线带宽高导致虚拟化平台不稳定的问题处理一例。

forestqq的博客 2226

TDengine taosKeeper 参考手册:安装配置、Prometheus 集成与监控指标全解析

taosKeeper 是 TDengine `v3.0` 起提供的监控指标导出工具,负责接收 taosd、taosAdapter 等组件上报的运行状态数据,写入独立的监控数据库,并通过 RESTful / Prometheus 接口对外暴露。本文基于 [05-taoskeeper.md](https://link.gitcode.com/i/6bf97c87e052bb22a2dab1f69c93

gitblog_01063的博客 166

电力现货市场出清机制解析:从理论到实践(附节点电价计算实例)

本文深入解析电力现货市场的核心出清机制,重点阐述了节点边际电价的计算原理与实践方法。通过对比系统边际电价、节点边际电价和分区边际电价三种模式,揭示了市场出清价格如何反映电力供需与网络阻塞。文章结合IEEE 30节点系统,提供了基于MATLAB和最优潮流模型的计算实例,详细展示了从构建模型到求解对偶变量以获取节点电价的全过程,为理解电力市场定价机制提供了从理论到实践的完整路径。

whisky的博客 756

Python+ThingSpeak搭建轻量级计算机资源监控器实战指南

系统监控是运维和开发中的基础实践,其核心原理在于通过周期性采集关键性能指标来反映系统运行状态。传统命令行工具如top或htop虽能提供瞬时数据,但缺乏历史趋势追踪能力,难以诊断内存泄漏等缓慢发生的问题。Python凭借其丰富的生态库,如psutil,为跨平台系统信息采集提供了统一、简洁的接口,结合requests等库可轻松实现数据上报。这种技术组合的价值在于,它能以极低的成本和门槛,构建一个轻量、自主可控的监控解决方案,特别适用于个人项目、开发环境或树莓派等场景的长期资源观察。本文即聚焦于利用Python和

weixin_33812433的博客 401

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 526

四足机器人跨楼层轨迹规划:SCAN-Planner-Pure-ROS2开源项目实践指南

在机器人导航领域,路径规划是让机器人从起点安全、高效移动到目标点的核心技术。其原理通常基于环境地图(如占据栅格地图或八叉树地图),通过搜索算法(如A*、RRT*)在配置空间中找到一条无碰撞的可行路径。这项技术的价值在于赋予机器人在复杂、非结构化环境中的自主移动能力,是巡检、救援、物流等应用场景的基石。对于四足机器人而言,其运动能力超越了轮式平台,能在楼梯、斜坡等三维地形中移动,这使得传统的二维规划不再适用,需要专门的三维轨迹规划算法。SCAN-Planner-Pure-ROS2正是这样一个专注于解决四足机器

weixin_30700977的博客 462

TimechoDB协变量预测:数据库内时序预测实战与架构解析

时间序列预测是数据分析与机器学习领域的核心任务,旨在基于历史数据预测未来趋势。其原理在于通过统计或深度学习模型(如ARIMA、LSTM、Transformer)捕捉数据中的时序依赖关系。这项技术的核心价值在于赋能业务决策,实现从被动响应到主动预测的转变,广泛应用于物联网监控、金融风控、资源规划等场景。传统方案常面临数据搬运复杂、特征工程与业务逻辑脱节、线上推理延迟高等挑战。本文聚焦于TimechoDB内置的“协变量预测”能力,它通过将预测引擎(如Transformer模型)深度集成于数据库内部(AINode

weixin_34204722的博客 382

【2026年华为秋招(AI)-2月4日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要:本文包含20道选择题,涵盖机器学习、线性代数、Transformer架构、概率统计等多个领域。题目涉及正交矩阵性质、Transformer注意力机制、聚类距离度量、ReAct框架、Softmax函数、混淆矩阵计算、Flash-Attention优化、位置编码、期望计算、归一化方法、矩阵迭代法、矩阵秩、大模型架构、神经网络推理、泊松流性质、SVM核函数以及聚类算法等知识点。每道题均提供解析,帮助理解核心概念和解题思路。

m0_73659489的博客 125

Tiny AI Agent:面向边缘系统的亚秒级自愈代理

在可观测性体系中,传统监控存在固有延迟链,导致故障响应滞后于恶化进程。系统自愈(System Self-Healing)本质是将决策前移至信号源头,依托轻量级AI模型与实时熵值建模,实现资源感知推理(Resource-Aware Inference)与预监控干预(Pre-Monitoring Intervention)。其技术价值在于突破告警依赖范式,在CPU突增3.7秒、IO队列堆积前800毫秒等亚秒级窗口完成闭环处置。典型应用场景包括Kubernetes边缘节点自治、IoT网关故障抑制、高可用支付网关静

weixin_30448603的博客 361

机器学习扩散模型简介

​ 扩散模型是生成模型,在过去几年中越来越受欢迎,这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界展示了 Diffusion 模型的能力,例如在图像合成方面击败 GAN[6]。最近,从业者将看到DALL-E 2(OpenAI 上个月发布的图像生成模型)中使用的扩散模型。

gongdiwudu的专栏 4260

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

机器学习模型可观测性:从预测服务到健康体检的工程实践

机器学习模型部署后性能衰减是生产环境中的普遍挑战,其根源往往不在算法本身,而在于缺乏对模型运行状态的持续可观测能力。本文围绕模型服务化后的实时监控、特征漂移检测与业务效果反馈三大核心,系统阐述如何构建分层可观测性体系——涵盖请求粒度黄金指标采集、内存高效分布摘要(t-Digest/Count-Min Sketch)、基于事件时间的在线漂移计算,以及延迟label驱动的闭环诊断。内容深度融合模型监控与特征治理,强调‘模型即生命体’的运维范式,为ML工程师提供可落地的稳定性保障方案,适用于金融风控、电商推荐、搜

weixin_34021089的博客 444

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Prometheus-node_disk_io_time_seconds_total

node_disk_io_time_seconds_total

weixin_45691519的博客 1453

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

telegraf收集数据说明

CPU Idel:cpu空任务时间。一般大于70%正常。 Iowait:cpu空闲等待io时间。一般小于30%。 Irq:服务终端时间。在虚拟环境其他操作花费的时间。 Nice:用做nice加权的进程分配的用户态cpu时间比 cpu_usage_user:用户态使用的cpu时间比 cpu_usage_system:系统态使用的cpu时间比 cpu_usage_steal:虚拟机偷取时间 Disk free :(integer, bytes) total :(integer, bytes) used :

海边的风 1713

IO测试工具之fio详解

目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。 fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。 如下是在Linux系统上采用fio工具来对SAN存储进行的IO测试。 1、安装fio 在fio...

weixin_30412013的博客 1771

grafana+influxdb+telegraf监控服务器cpu,内存和硬盘

随便抄了一篇,目前我们的项目也在用,这个是linux和windows通吃的一种监控方案,非常有效,详细和优美,需要监控什么具体的业务内容,自己向influxdb中插入就行了。 监控服务器状态是运维必不可少的一部分, 通常情况, 我们用得比较多的就是graphite, 因为使用python写的, 所以对于大部分运维工程师来讲, 算是比较熟悉的语言. 但graphite毕竟比较老了, 界

神棍之路 7万+

Telegraf 采集 CPU 数据 ,测试派详解

一、配置文件 进入到如下的配置文件 [root@localhost ~]# VIM /etc/telegraf/telegraf.conf [global_tags] [agent] # 收集数据的间隔 interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" # 写入 inflxdb 的时间间隔 flush_i

2386
上一篇: Telegraf监控客户端调研笔记(1)-介绍、安装、初步测试
下一篇: Telegraf监控客户端调研笔记(3)-kernel、system、processes相关指标采集
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值