亲爱的读者们👋
欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀
Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪
在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆
目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯
这是一段精彩旅程,期待你的加入!🎉
文章目录
- 一、node_exporter概述📘
- 二、安装node_exporter💾
- 2.1 访问node_exporter官方网站 🌐
- 2.2 选择适合的版本🔍
- 2.3 下载node_exporter⬇️
- 2.4 解压安装包📂
- 2.5 运行node_exporter🚀
- 三、node_exporter指标和配置详解📖
- 3.1 node_exporter.service默认开启的collector
- 3.2 node_exporter.service默认未开启的collector
- 3.3 node_exporter.service自定义采集器
- ARP 收集器
- Bcache 收集器
- CPU 收集器
- 磁盘收集器
- 网络类
- ethtool、netclass、netdev、netstat采集器的区别?
- ethtool收集器
- 网络类(netclass)
- 网络类(netdev)
- 网络类(netstat)
- 文件系统和路径
- hwmon(硬件监控)
- IPVS 收集器
- NTP 收集器
- 文件系统和路径
- perf收集器
- 电源供应类(powersupplyclass)
- qdisc收集器
- qdisc收集器监控是什么?
- 相关采集配置
- RAPL(运行平均功率限制)
- Runit 服务目录
- 软中断(softirq)统计
- Supervisord 监控
- 系统控制(sysctl)收集器
- systemd 服务监控
- 磁带统计(tapestats)收集器
- 文本文件收集器
- vmstat收集器
- 四、实战演练:生产环境搭建指南🔨
- 4.1 创建普通用户管理node_exporter👤
- 4.2 解压node_exporter.tar.gz📦
- 4.3 将node_exporter集成到Prometheus配置中✂️
- 4.4 更改node_exporter软件包名称✂️
- 4.5 编辑node_exporter.service文件📝
- 4.6 启动node_exporter.service🔌
- 4.7 查看服务是否正常启动🔍
- 相关资料下载地址📚
一、node_exporter概述📘
定义
node_exporter是Prometheus的一个指标数据收集组件,它可以将不同数据源的指标转化为Prometheus可以收集和监控的格式。简单来说,它就是一个用于采集和导出主机(节点)上系统和硬件信息的开源软件。
功能
node_exporter运行在被监控的主机上,通过访问各种系统文件、调用系统命令或者使用某些库来获取主机的运行信息。
这些信息随后被转换成Prometheus的时序数据格式,并通过一个HTTP端点暴露给Prometheus服务器。
Prometheus服务器通过定期轮询这个HTTP端点来获取数据,并将其存储在内部的时序数据库中,供后续的分析、告警和可视化使用。
node_exporter能够收集各种系统指标,如CPU使用率、内存使用情况、磁盘空间、网络统计、系统负载以及进程和线程信息等。这些信息对于系统管理员、运维团队和开发人员来说都是非常有价值的,可以用来监测系统的性能、识别潜在的问题。
与传统的监控代理不同,node_exporter并不主动推送数据到中央服务器,而是等待Prometheus服务器主动来抓取数据。其默认的抓取URL地址为http://ip:9100/metrics。
应用场景
当你需要对类UNIX内核的操作系统(如Linux)进行硬件和系统级别的监控时,可以使用node_exporter。它特别适用于需要收集和分析主机层面运行指标的场景,如服务器性能调优、故障排除、容量规划等。
在容器化环境(如Kubernetes)中,node_exporter也是非常重要的监控组件,因为它能够提供节点级别的详细指标,帮助管理员了解每个节点的资源使用情况和性能状态。
与其他监控指标的关联
node_exporter收集的指标可以与Prometheus中的其他指标进行关联分析,从而提供更全面的系统运行状态视图。例如,通过分析CPU使用率、内存占用和磁盘I/O等数据,可以帮助定位性能瓶颈或预测潜在的硬件故障。
此外,通过使用Prometheus的查询语言PromQL,用户可以灵活地查询和分析这些指标,并设置警报规则以在特定条件下触发警报,确保系统的可用性和性能。
node_exporter可以收集的指标类型
- CPU相关指标:包括CPU核心数、各个核心的负载、CPU使用率以及CPU中断等。
- 内存相关指标:涉及内存总量、已使用内存、可用内存以及swap空间的使用情况。
- 磁盘相关指标:提供硬盘总量、已使用空间、可用空间以及磁盘使用率等信息。
- 网络相关指标:收集网络连接、进程、系统负载等信息,如TCP连接数量、系统负载等。
- 文件系统相关指标:展示每个文件系统的总量、已使用空间和可用空间等。
- 其他指标:根据配置和系统的不同,Node Exporter还可能收集温度、硬件状态等其他相关信息。
二、安装node_exporter💾
注意事项和常见问题
1.权限问题:在安装node_exporter之前,应确保当前用户具有足够的权限来执行相关的安装命令。在Linux或UNIX系统中,可能需要使用sudo命令来以管理员权限运行安装脚本,否则可能会遇到权限拒绝的错误。
2.防火墙和安全组设置:node_exporter默认监听在9100端口。如果你的服务器启用了防火墙或安全组策略,请确保该端口是对外开放的,以便Prometheus服务器能够从这个端口抓取metrics数据。
如果是在云服务提供商处托管的服务器,还需要在云平台的安全组或网络ACL中配置相应的入站规则。
3.配置文件和服务管理:虽然node_exporter通常不需要复杂的配置文件,但如果是通过systemd等服务管理器来管理node_exporter服务,则需要确保服务配置文件(如/etc/systemd/system/node_exporter.service)正确设置,并且服务能够正确启动和停止。
4.日志和错误排查:如果在安装或运行过程中遇到问题,首先查看node_exporter的日志输出,通常可以通过journalctl -u node_exporter命令来查看通过systemd管理的服务的日志。
注意检查是否有任何错误信息或警告,这些信息可以帮助你定位并解决问题。
5.版本兼容性:在安装node_exporter之前,请确认它与你的操作系统以及Prometheus的版本是否兼容。不同版本的node_exporter可能支持不同的metrics或具有不同的配置选项。
6.安装路径和权限:选择一个合适的安装路径来存放node_exporter的二进制文件和配置文件。确保该路径对于运行node_exporter的用户是可读写的,并且具有足够的磁盘空间。
7.启动参数:根据需要,可以通过命令行参数来调整node_exporter的行为,例如指定监听的端口、启用或禁用特定的collectors等。确保你了解这些参数并正确设置它们。
2.1 访问node_exporter官方网站 🌐
- 访问Prometheus的官方下载页面或GitHub上的node_exporter发布页面,找到适合Linux系统的node_exporter版本进行下载:https://prometheus.io/download/#node_exporter
2.2 选择适合的版本🔍
- 在下载页面,你将看到不同操作系统的node_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择node_exporter-x.x.x.linux-amd64.tar.gz(其中x.x.x是版本号)。
2.3 下载node_exporter⬇️
- 点击所选版本的下载链接,将node_exporter的二进制包下载到你的本地计算机。
2.4 解压安装包📂
- 将下载的node_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为node_exporter-x.x.x.linux-amd64的目录,其中包含node_exporter的二进制文件和其他相关文件。
tar -xzf node_exporter-x.x.x.linux-amd64.tar.gz
2.5 运行node_exporter🚀
- 进入解压后的目录,并运行node_exporter服务器。在Linux下,你可以使用如下命令。这样就使用默认的配置文件node_exporter.yml启动了node_exporter服务器。如果一切正常,你应该能在终端看到node_exporter的启动日志。
cd node_exporter-x.x.x.linux-amd64./node_exporter --web.listen-address 0.0.0.0:9100
三、node_exporter指标和配置详解📖
- 黑色:作为默认文本颜色。
- 绿色:表示常规配置项
- 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
- 蓝色:不重要的配置项 / 建议不开启
- 红色:表示关键信息和警告 / 最好开启
注意:
- 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
- 2.以下配置参数介绍是基于node_exporter 1.8.0版本说明的,其它版本会有不同。
3.1 node_exporter.service默认开启的collector
- - -[no-]collector.arp
收集 ARP(地址解析协议)缓存条目的统计信息。包括主机上的 ARP 表项的数量、状态等。需要监控或诊断与 ARP 缓存相关的问题时,可以启用此收集器 - - -[no-]collector.bcache
收集关于 bcache(块缓存)设备的统计信息。Bcache 是一个 Linux 内核块层缓存,用于提高磁盘 I/O 性能。使用 bcache 作为存储解决方案时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.bonding
收集关于 Linux bonding 接口的统计信息。Bonding 允许你将多个网络接口组合成一个逻辑接口,以提供冗余和/或增加带宽。配置并使用了网络接口 bonding 时,可以启用此收集器来监控 bonding 接口的状态和性能。 - - -[no-]collector.btrfs
收集关于 Btrfs 文件系统的统计信息。Btrfs 是一个具有许多高级功能的 Linux 文件系统。使用 Btrfs 文件系统时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.conntrack
收集关于连接跟踪(conntrack)的统计信息。Conntrack 用于跟踪网络连接的状态,特别是在使用如 iptables 这样的防火墙工具时。需要监控连接跟踪表的使用情况或调试网络相关问题时,可以启用此收集器。 - - -[no-]collector.cpu
收集关于 CPU 使用率、上下文切换等的统计信息。几乎在所有场景中都需要启用此收集器,以监控主机的 CPU 使用情况。 - - -[no-]collector.cpufreq
收集关于 CPU 频率调整(cpufreq)的统计信息。这包括当前 CPU 频率、可用的频率范围等。需要监控或调优 CPU 频率以平衡性能和功耗时,可以启用此收集器。 - - -[no-]collector.diskstats
收集磁盘 I/O 统计信息,包括每个磁盘的读写次数、扇区传输数、I/O 时间等。需要监控磁盘性能,如读取和写入速度、I/O 等待时间等时,应启用此收集器。 - - -[no-]collector.dmi
收集 DMI(Desktop Management Interface)数据,包括系统硬件信息,如制造商、产品名称、序列号等。需要获取主机硬件详细信息时,可以启用此收集器。 - - -[no-]collector.edac
收集 EDAC(Error Detection And Correction)错误统计信息,用于监控内存和其他系统组件的错误。需要监控和诊断内存或其他组件的错误时,应启用此收集器。 - - -[no-]collector.entropy
收集系统熵池的信息,熵池用于生成随机数。需要监控随机数生成器的性能或可用性时,可以启用此收集器。 - - -[no-]collector.fibrechannel
收集 Fibre Channel 网络接口的信息和统计数据。使用 Fibre Channel 网络技术时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.filefd
收集文件描述符的使用情况统计信息,包括打开的文件数和类型。需要监控进程打开文件描述符的数量或类型时,可以启用此收集器。 - - -[no-]collector.filesystem
收集文件系统的挂载点、类型、容量、使用情况等统计信息。当需要监控磁盘空间使用情况、文件系统类型等时,应启用此收集器。当需要监控服务器或硬件设备的温度、电压等参数时,可以启用此收集器。 - - -[no-]collector.hwmon
收集硬件监控传感器的数据,如温度、电压、风扇速度等。需要监控服务器或硬件设备的温度、电压等参数时,可以启用此收集器。 - - -[no-]collector.infiniband
收集 Infiniband 网络接口的信息和统计数据。使用 Infiniband 网络技术时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.ipvs
收集 Linux IPVS(IP Virtual Server)负载均衡的统计信息。使用 IPVS 进行负载均衡时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.mdadm
收集关于 Linux mdadm(Multiple Devices administrator)软件 RAID 阵列的信息和统计数据。使用 mdadm 管理 RAID 阵列时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.meminfo
收集系统内存使用情况的详细统计信息,包括总内存、可用内存、缓存等。几乎在所有场景中都需要启用此收集器,以监控主机的内存使用情况。 - - -[no-]collector.netclass
提供一个高级的网络设备视图,可以聚合和分组多个网络接口。需要对网络设备进行分组或聚合时,可以启用此收集器。 - - -[no-]collector.netdev
收集每个网络接口的详细统计信息,如接收和发送的数据包数、字节数等。需要监控每个网络接口的流量和性能时,应启用此收集器。 - - -[no-]collector.netstat
收集网络连接的统计信息,如 TCP、UDP 连接的状态和数量。需要监控网络连接的状态和数量时,可以启用此收集器。 - - -[no-]collector.nfs
收集 NFS(Network File System)客户端的统计信息。当使用 NFS 客户端时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.nfsd
收集 NFS(Network File System)服务器(nfsd)的统计信息。当运行 NFS 服务器时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.nvme
收集 NVMe(Non-Volatile Memory Express)固态硬盘的统计信息。当使用 NVMe 固态硬盘时,可以启用此收集器来监控其性能和状态。 - - -[no-]collector.os
收集关于操作系统的信息,如操作系统名称、版本等。需要监控或记录主机操作系统信息时,可以使用此收集器。 - - -[no-]collector.powersupplyclass
收集关于电源供应的信息,如电池状态、UPS 状态等。需要监控服务器的电源供应状态,特别是电池和 UPS 时,可以使用此收集器。 - - -[no-]collector.pressure
收集系统压力信息,如 I/O 压力、内存压力等。需要了解系统的资源压力情况,以便进行调优或扩展时,可以使用此收集器。 - - -[no-]collector.rapl
收集关于 RAPL(运行平均功率限制)的信息,用于监控 CPU 和其他组件的功耗。需要监控服务器的功耗和能效时,可以使用此收集器。 - - -[no-]collector.schedstat
收集调度器统计信息,包括进程切换次数、上下文切换次数等。需要深入了解系统的调度行为和性能时,可以使用此收集器。 - - -[no-]collector.selinux
收集关于 SELinux(安全增强型 Linux)的状态和策略信息。使用 SELinux 并需要监控其状态或策略时,可以使用此收集器。 - - -[no-]collector.sockstat
收集套接字统计信息,包括打开的套接字数量、类型等。需要监控网络套接字的使用情况时,可以使用此收集器。 - - -[no-]collector.softnet
收集与 Linux 内核软中断处理相关的统计信息。需要了解网络软中断的处理情况,以便进行调优时,可以使用此收集器。 - - -[no-]collector.stat
收集各种系统统计信息,如进程数量、中断次数等。需要获取系统的全面统计信息时,可以使用此收集器。 - - -[no-]collector.tapestats
收集磁带驱动器的统计信息。使用磁带备份解决方案并需要监控磁带驱动器时,可以使用此收集器。 - - -[no-]collector.textfile
允许用户从文本文件中读取指标。这可以用于集成非标准指标或来自其他系统的指标。需要将非标准指标或来自其他系统的指标集成到 Prometheus 监控中时,可以使用此收集器。 - - -[no-]collector.thermal_zone
收集关于热区的温度信息,这通常与硬件监控相关。需要监控服务器的温度状况,特别是当涉及到硬件过热警告时,可以使用此收集器。 - - -[no-]collector.time
收集关于系统时间和时钟的信息。需要监控或诊断与时钟和时间相关的问题时,可以使用此收集器。 - - -[no-]collector.timex
收集关于 Linux 内核 timex 子系统的统计信息,该系统负责调整和维护系统时钟。需要深入了解系统时钟的调整和维护情况时,可以使用此收集器。 - - -[no-]collector.udp_queues
收集关于 UDP 套接字队列的统计信息。需要监控 UDP 套接字队列的使用情况时,可以使用此收集器。 - - -[no-]collector.uname
收集与 uname 命令相似的系统信息,如内核版本、主机名等。需要快速获取主机的基本信息时,可以使用此收集器。 - - -[no-]collector.vmstat
收集虚拟内存统计信息,如进程、内存、分页、块 IO、陷阱和 CPU 活动等。需要深入了解系统的虚拟内存使用情况,以便进行调优或诊断性能问题时,可以使用此收集器。 - - -[no-]collector.watchdog
收集关于硬件看门狗的信息,看门狗通常用于在系统崩溃时自动重启。使用硬件看门狗并需要监控其状态时,可以使用此收集器。 - - -[no-]collector.xfs
收集关于 XFS 文件系统的统计信息。使用 XFS 文件系统并需要监控其性能时,可以使用此收集器。 - - -[no-]collector.zfs
收集关于 ZFS 文件系统的统计信息。使用 ZFS 文件系统并需要监控其性能时,可以使用此收集器。
3.2 node_exporter.service默认未开启的collector
- - -[no-]collector.buddyinfo
收集关于 Linux 内核伙伴分配器的信息,用于内存分配。了解系统内存分配的情况,特别是当需要诊断内存分配相关的问题时。 - - -[no-]collector.cgroups
收集关于 cgroup(控制组)的信息,cgroup 用于限制、记录和隔离进程组所使用的物理资源(如 CPU、内存、磁盘 I/O 等)。监控容器或虚拟机的资源使用情况,或进行资源隔离和限制。部署docker 的话建议开启 - - -[no-]collector.cpu_vulnerabilities
检查 CPU 是否存在已知的漏洞或安全风险,并收集相关信息。需要确保主机的安全性时,可以启用此收集器来检查 CPU 是否存在已知的漏洞。 - - -[no-]collector.drbd
收集关于 DRBD(分布式复制块设备)的信息,DRBD 是一种用于高可用性的块级复制解决方案。使用 DRBD 进行存储复制和故障转移时。 - - -[no-]collector.drm
收集关于 Direct Rendering Manager(DRM)的信息,DRM 用于管理图形硬件。监控图形硬件的状态和性能。 - - -[no-]collector.ethtool
使用 ethtool 工具收集关于网络接口的信息和统计数据。获取网络接口的详细配置和性能数据。 - - -[no-]collector.interrupts
收集系统中断的信息和统计数据。了解系统中断的使用情况,特别是在诊断性能问题时。 - - -[no-]collector.ksmd
收集关于 ksmd(内核同页合并守护进程)的信息,用于管理匿名内存页。需要监控内存管理或调优相关性能时。 - - -[no-]collector.lnstat
收集关于本地网络套接字的信息和统计数据。监控本地网络套接字的使用情况。 - - -[no-]collector.logind
收集关于 systemd-logind 的信息,用于管理用户会话。当需要监控用户会话或登录活动时。 - - -[no-]collector.meminfo_numa
收集关于 NUMA(非统一内存访问)架构的内存信息。在多核处理器和 NUMA 架构的服务器上监控内存使用情况。 - - -[no-]collector.mountstats
收集关于挂载文件系统的统计信息。监控文件系统挂载的性能和状态。 - - -[no-]collector.network_route
收集关于网络路由表的信息。了解主机的网络路由配置。 - - -[no-]collector.ntp
收集关于 NTP(网络时间协议)客户端或服务器的统计信息。监控时间同步的状态和性能。 - - -[no-]collector.perf
使用 Linux perf 工具收集性能数据。进行高级性能分析和调优。 - - -[no-]collector.processes
收集关于进程的信息和统计数据。监控进程的数量、状态和资源使用情况。 - - -[no-]collector.qdisc
收集关于队列规则(qdisc)的信息和统计数据,qdisc 用于控制网络接口上的数据包队列。监控网络队列的性能和配置。 - - -[no-]collector.runit
收集关于 runit 初始化系统的服务状态信息。使用 runit 作为初始化系统时。 - - -[no-]collector.slabinfo
收集关于内核 slab 缓存的信息,slab 缓存用于存储内核对象。了解内核对象缓存的使用情况,特别是在调优或诊断内存相关问题时。 - - -[no-]collector.softirqs
收集关于软中断的信息和统计数据。了解软中断的处理情况,特别是在调优网络性能时。 - - -[no-]collector.supervisord
收集关于 supervisord 进程监控工具的信息。当使用 supervisord 管理进程时。 - - -[no-]collector.sysctl
收集通过 sysctl 接口可访问的内核参数信息。了解内核配置和调优参数。 - - -[no-]collector.systemd
收集关于 systemd 初始化系统和其管理的服务的信息。监控 systemd 服务的状态和性能。 - - -[no-]collector.tcpstat
收集关于 TCP 连接和队列的详细信息。深入了解 TCP 连接的性能和状态。 - - -[no-]collector.wifi
收集关于 WiFi 接口的信息和统计数据(注意:这不是标准的 node_exporter 收集器)。监控 WiFi 接口的性能和状态。 - - -[no-]collector.xfrm
收集关于 IPsec XFRM(IP 安全协议)框架的信息和统计数据。当使用 IPsec 进行网络加密和身份验证时。 - - -[no-]collector.zoneinfo
收集关于 NUMA 架构的内存区域(zone)的信息。在 NUMA 架构的服务器上深入了解内存区域的使用情况。
3.3 node_exporter.service自定义采集器
注意:开启自定义采集器前一定要启用collector才行。
ARP 收集器
- - -collector.arp.device-include=COLLECTOR.ARP.DEVICE-INCLUDE
允许你通过正则表达式来指定哪些 ARP 设备应该被包含在监控中。与 --collector.arp.device-exclude 是互斥的,意味着如果你指定了 device-include,则 device-exclude 将被忽略。 - - -collector.arp.device-exclude=COLLECTOR.ARP.DEVICE-EXCLUDE
允许你通过正则表达式来指定哪些 ARP 设备应该从监控中排除。与 --collector.arp.device-include 是互斥的,意味着如果你指定了 device-exclude,则 device-include 将被忽略。 - - -[no-]collector.arp.netlink
决定 ARP 收集器是否应该使用 netlink 接口来收集统计信息,而不是读取 /proc/net/arp 文件。Netlink 是一种 Linux 内核与用户空间进程之间的通信机制,通常比读取文件更实时和高效。- –collector.arp.netlink:启用 netlink 收集方式。
- –no-collector.arp.netlink:禁用 netlink 收集方式,使用 /proc/net/arp 文件。
Bcache 收集器
- - -[no-]collector.bcache.priorityStats
决定是否暴露优先级统计信息。这些统计信息可能需要更多的计算资源来收集。- –collector.bcache.priorityStats:启用暴露优先级统计信息。
- –no-collector.bcache.priorityStats:禁用暴露优先级统计信息。
CPU 收集器
- - -[no-]collector.cpu.guest
启用或禁用 node_cpu_guest_seconds_total 指标,该指标跟踪虚拟机中运行的 CPU 时间。- –collector.cpu.guest:启用该指标。
- –no-collector.cpu.guest:禁用该指标。
- - -[no-]collector.cpu.info
启用或禁用 cpu_info 指标,该指标提供 CPU 的详细信息。- –collector.cpu.info:启用该指标。
- –no-collector.cpu.info:禁用该指标。
- - -collector.cpu.info.flags-include=COLLECTOR.CPU.INFO.FLAGS-INCLUDE
允许你通过正则表达式(REGEXP)来指定哪些 CPU 标志(flags)应该被包含在 cpu_info 指标中。/proc/cpuinfo 文件中的 flags 字段包含了 CPU 支持的各种功能和指令集。如果不指定该参数或正则表达式不匹配任何 flags,那么默认情况下会包含所有 flags。- 示例:如果你只对包含“avx”或“sse”字符串的CPU标志感兴趣,你可以设置正则表达式为:
--collector.cpu.info.flags-include='avx|sse'
- - -collector.cpu.info.bugs-include=COLLECTOR.CPU.INFO.BUGS-INCLUDE
允许你通过正则表达式来指定哪些 CPU 错误(bugs)应该被包含在 cpu_info 指标中。尽管 /proc/cpuinfo 文件中通常不包含 bugs 字段(除非 CPU 确实有已知的错误),但如果有的话,这个参数就能派上用场。如果不指定该参数或正则表达式不匹配任何 bugs,那么默认情况下可能不包含任何 bugs 信息(取决于 node_exporter 的实现和 CPU 的实际情况)。
磁盘收集器
-
- -collector.diskstats.device-include=COLLECTOR.DISKSTATS.DEVICE-INCLUDE
通过正则表达式(REGEXP)来指定哪些磁盘设备应该被包含在监控中。/proc/diskstats 文件包含了系统中所有磁盘设备的统计信息,但这个参数允许你仅收集特定设备的统计信息。 -
- -collector.diskstats.device-exclude=“^(z?ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$”
通过正则表达式来指定哪些磁盘设备应该从监控中排除。它通常用于过滤掉那些你不需要监控的磁盘设备,如 RAM 磁盘、循环设备(loop devices)等。给出的默认正则表达式 “^(z?ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$” 是用来排除多种常见类型的设备,包括:- RAM 磁盘(如 ram0, zram0 等)
- 循环设备(如 loop0, loop1 等)
- 软盘设备(如 fd0)
- 传统的 IDE/SCSI 硬盘设备(如 hda, hdb, sda, sdb 等)
- NVMe 设备(如 nvme0n1p1)
网络类
ethtool、netclass、netdev、netstat采集器的区别?
1. ethtool采集器
功能:
ethtool采集器主要用于查询和更改以太网卡参数,如速度、双工、自协商等。它还可以读取和设置网卡驱动的一些私有参数,以及提供网卡诊断信息。ethtool采集器可以获取网卡的统计信息,如接收和发送的数据包数量、错误计数等。
性能:
ethtool的性能主要取决于网卡驱动和硬件支持。它通常不会消耗大量的系统资源,因为大部分操作都是直接与网卡驱动和硬件进行交互。
应用场景:
ethtool采集器适用于需要诊断和管理网络接口性能的场景,如检查网卡的当前设置、诊断网络问题、调优网络性能等。
2. netclass采集器
功能:
netclass采集器提供了对网络设备的高级视图,可以聚合多个网络接口的统计信息,或根据某些标准对网络设备进行分组。它支持使用netlink接口收集统计信息,相比直接读取文件更为高效和实时。
性能:
由于netclass可能涉及对网络设备的分组和聚合,因此在处理大量网络接口或复杂网络配置时,可能会比netdev采集器消耗更多的计算资源。但netlink接口的使用可以提高性能。
应用场景:
netclass采集器适用于需要对网络设备进行分组或聚合的场景,如根据地理位置、业务类型或网络层次结构对网络设备进行分组。它也适用于需要实时监控网络性能的场景。
3. netdev采集器
功能:
netdev采集器专注于收集每个网络接口的详细统计信息,如接收和发送的数据包数量、字节数、错误数等。这些信息对于诊断网络问题和调优网络性能非常有用。
性能:
netdev采集器通过读取/proc/net/dev文件来获取网络接口统计信息。在处理大量网络接口时,可能会受到文件I/O性能的限制。但通常情况下,其性能足以满足大多数应用场景的需求。
应用场景:
netdev采集器适用于需要监控每个网络接口性能的场景,如检查特定接口的流量、错误率或丢包率。它也适用于需要对网络设备进行故障排除的场景。
4. netstat采集器
功能:
netstat采集器用于显示网络连接、路由表、接口统计等网络相关信息。它可以提供实时的网络状态监测和分析功能,帮助用户诊断和解决各种网络问题。
性能:
netstat采集器的性能主要取决于系统内核和网络接口的数量。由于它提供了丰富的网络状态信息,因此在某些情况下可能会消耗一定的系统资源。但通常情况下,其性能表现良好。
应用场景:
netstat采集器适用于需要监控和分析网络状态的场景,如查看所有活动连接、监听端口、特定端口的使用情况、网络接口统计信息等。它也适用于诊断网络故障和调优网络性能的场景。
ethtool收集器
- - -collector.ethtool.device-include=COLLECTOR.ETHTOOL.DEVICE-INCLUDE
指定哪些网络设备应该被包含在内以进行数据采集。例如,如果你只想监控以eth开头的设备,可以设置此参数为eth.*。注意,这个参数与device-exclude是互斥的,即不能同时设置。 - - -collector.ethtool.device-exclude=COLLECTOR.ETHTOOL.DEVICE-EXCLUDE
与device-include相反,它用于指定哪些网络设备应该被排除在数据采集之外。例如,如果你想排除所有以lo开头的设备(通常是本地回环接口),可以设置此参数为lo.*。与device-include参数互斥,即这两个参数不能同时使用。 - - -collector.ethtool.metrics-include="."
用于指定哪些ethtool的统计信息(或称为度量、指标)应该被包含在内以进行数据采集。默认情况下,该参数设置为.,意味着默认会包含所有的统计信息。如果你想仅包含某些特定的统计信息,你可以修改这个正则表达式。例如,如果你只对包含“error”或“drop”的统计信息感兴趣,可以设置此参数为.(error|drop).。
网络类(netclass)
- - -collector.netclass.ignored-devices=“^$”
指定哪些网络设备不被网络类收集器收集,"^$"这个正则表达式表示不匹配任何设备,因此默认情况下不会忽略任何设备。如果您想忽略某些特定的网络设备,可以修改这个正则表达式来匹配那些设备的名称。 - - -[no-]collector.netclass.ignore-invalid-speed
可选参数,用于指定是否忽略速度无效的网络设备。如果设置为 --collector.netclass.ignore-invalid-speed,则收集器会忽略那些速度无效的设备。如果设置为 --no-collector.netclass.ignore-invalid-speed,则不会忽略这些设备。在某些情况下,网络设备可能无法正确报告其速度,这可能导致收集到的数据不准确。通过这个选项,您可以选择是否忽略这些设备以避免不准确的数据。 - - -[no-]collector.netclass.netlink
可选参数,用于指定是否使用 netlink 接口来收集网络统计数据,而不是从 /proc/net/dev 文件中读取。netlink 是一个在 Linux 内核和用户空间程序之间进行通信的机制。如果设置为 --collector.netclass.netlink,则收集器将使用 netlink 来获取数据,这通常比从 /proc/net/dev 读取数据更高效和准确。如果设置为 --no-collector.netclass.netlink,则收集器将回退到使用 /proc/net/dev 文件。 - - -[no-]collector.netclass_rtnl.with-stats
可选参数,用于控制是否暴露每个网络设备的统计数据。如果设置为 --collector.netclass_rtnl.with-stats,则收集器将提供每个网络设备的详细统计数据,这实际上可能替代了 netdev 收集器的功能。如果设置为 --no-collector.netclass_rtnl.with-stats,则不会暴露这些详细的统计数据。
网络类(netdev)
- - -collector.netdev.device-include=COLLECTOR.NETDEV.DEVICE-INCLUDE
允许你指定一个正则表达式,用于匹配应该被包含(即被监控)的网络设备。它用于匹配网络设备的名称或标识符,从而决定哪些设备应该被监控。例如,如果你只想监控名称以“eth”开头的网络设备,你可以设置device-include=^eth.*。注意:与device-exclude参数是互斥的,即你不能同时使用它们。如果你同时指定了device-include和device-exclude,通常工具会报错或者只有一个选项生效。 - - -collector.netdev.device-exclude=COLLECTOR.NETDEV.DEVICE-EXCLUDE
与device-include相反,这个参数允许你指定一个正则表达式,用于匹配应该被排除(即不被监控)的网络设备。如果你知道某些设备不需要监控,或者它们的监控数据不重要,你可以使用这个选项来排除它们。例如,如果你想排除所有以“lo”开头的设备(通常是本地回环接口),你可以设置device-exclude=^lo.*。注意:与device-include参数是互斥的,即你不能同时使用它们。如果你同时指定了device-include和device-exclude,通常工具会报错或者只有一个选项生效。 - - -[no-]collector.netdev.address-info
这个参数控制是否收集每个网络设备的地址信息。如果启用(即不包含no-前缀),则工具会收集并导出每个网络设备的IP地址和其他相关信息。如果禁用(即包含no-前缀),则不会收集这些信息。 - - -[no-]collector.netdev.enable-detailed-metrics
这个参数决定是否启用更详细的Linux网络设备统计信息。启用时(即不包含no-前缀),将使用提供详细统计信息的(可能与其他系统不兼容的)指标名称。禁用时(即包含no-前缀),将使用更通用的、兼容性更好的指标。 - - -[no-]collector.netdev.netlink
这个参数控制是否使用netlink接口来收集网络设备统计信息,不是从/proc/net/dev文件中读取。如果启用(即不包含no-前缀),则通过netlink来获取实时的网络设备状态和信息。如果禁用(即包含no-前缀),则从/proc/net/dev文件中读取信息,这通常是默认的统计信息来源。
网络类(netstat)
- - -collector.netstat.fields=“^(.(InErrors|InErrs)|Ip_Forwarding|Ip(6|Ext)(InOctets|OutOctets)|Icmp6?(InMsgs|OutMsgs)|TcpExt(Listen.|Syncookies.*|TCPSynRetrans|TCPTimeouts|TCPOFOQueue)|Tcp_(ActiveOpens|InSegs|OutSegs|OutRsts|PassiveOpens|RetransSegs|CurrEstab)|Udp6?_(InDatagrams|OutDatagrams|NoPorts|RcvbufErrors|SndbufErrors))$”
用于指定要收集的网络统计字段的正则表达式。正则表达式用于匹配和过滤出感兴趣的网络统计信息字段。在这个例子中,正则表达式匹配了一系列的TCP、UDP和ICMP等网络协议的统计信息,如接收和发送的数据包数量、错误数、TCP连接状态等。这些字段的选择是为了提供对网络健康状况和性能的全面监控。
文件系统和路径
- - -collector.filesystem.mount-points-exclude=“^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)”
- 用于指定文件系统收集器(collector)应该排除的挂载点。正则表达式 ^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/) 定义了一系列要排除的路径模式。
- 具体来说,这个正则表达式会排除以下路径:
- /dev:通常包含设备文件。
- /proc:一个虚拟文件系统,提供了进程和系统信息。
- /run/credentials/.+:任何在 /run/credentials 下的路径,这通常包含敏感的凭据信息。
- /sys:一个虚拟文件系统,提供了内核和硬件信息。
- /var/lib/docker/.+:Docker 相关的文件系统挂载点,通常不需要常规监控。
- /var/lib/containers/storage/.+:其他容器存储相关的挂载点。
- ($|/) 表示字符串应该以这些特定路径结束或者后面紧跟着一个斜杠(即表示目录)
- - -collector.filesystem.fs-types-exclude=“^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$”
- 用于指定文件系统收集器应该排除的文件系统类型。正则表达式列出了一系列文件系统类型,这些类型将不会被监控或收集数据。
- 具体排除的文件系统类型包括:
- autofs:自动挂载文件系统。
- binfmt_misc:用于支持不同的二进制格式。
- bpf:BPF(Berkeley Packet Filter)文件系统。
- cgroup2?:cgroup v1 或 v2 文件系统,用于资源控制。
- configfs、debugfs、devpts、devtmpfs 等:这些都是特殊用途或虚拟文件系统。
- fusectl:FUSE(Filesystem in Userspace)控制文件系统。
- hugetlbfs:大页面文件系统。
- iso9660:CD-ROM文件系统。
- 以及其他一些特殊或虚拟文件系统类型。
hwmon(硬件监控)
- - -collector.hwmon.chip-include=COLLECTOR.HWMON.CHIP-INCLUDE
允许用户通过正则表达式(REGEXP)来指定哪些 hwmon 芯片应该被包含进数据收集中。hwmon 是 Linux 系统中用于访问硬件监控数据的子系统,它可以提供温度、电压、风扇速度等信息。当你设置了 --collector.hwmon.chip-include 参数,系统只会收集那些芯片名称与提供的正则表达式匹配的数据。例如,如果你只想收集名称中包含 “coretemp” 的芯片数据,你可以设置 --collector.hwmon.chip-include=coretemp。需要注意的是,这个参数与 --collector.hwmon.chip-exclude 是互斥的,即它们不能同时使用。 - –collector.hwmon.chip-exclude=COLLECTOR.HWMON.CHIP-EXCLUDE
允许用户通过正则表达式来指定哪些 hwmon 芯片应该被排除在数据收集之外。与 chip-include 相反,当你设置了 --collector.hwmon.chip-exclude 参数,系统将会忽略那些芯片名称与提供的正则表达式匹配的数据。对于排除那些不需要监控或者已知会产生误导信息的芯片非常有用。例如,如果你想排除所有名称中包含 “dummy” 的芯片,你可以设置 --collector.hwmon.chip-exclude=dummy。同样地,这个参数与 --collector.hwmon.chip-include 是互斥的。
IPVS 收集器
- - -collector.ipvs.backend-labels=“local_address,local_port,remote_address,remote_port,proto,local_mark”
用于配置 Prometheus 的 node_exporter 中的 IPVS (IP Virtual Server) collector,这个 collector 负责收集与 Linux Virtual Server (LVS) 的 IPVS 相关的指标。IPVS 是一种高性能的负载均衡解决方案,在 Linux 内核中实现。- 1.local_address: 本地地址,即负载均衡器的地址,它表示 IPVS 所在的服务器地址。
- 2.local_port: 本地端口,负载均衡器上用于接收请求的端口。
- 3.remote_address: 远程地址,即真实服务器的地址,后端真实提供服务的服务器地址。
- 4.remote_port: 远程端口,后端服务器上提供服务的端口。
- 5.proto: 协议类型,如 TCP、UDP 等,表示后端服务所使用的网络协议。
- 6.local_mark: 本地标记,用于标记特定的 IPVS 服务或连接,有助于在复杂的网络环境中进行流量控制或分类。
NTP 收集器
- - -collector.ntp.server=“127.0.0.1”
指定了要使用的NTP服务器的地址。在这个例子中,设置为本地回环地址(127.0.0.1),通常用于测试或当NTP服务器就在本地机器上时。 - - -collector.ntp.server-port=123
设置了连接到NTP服务器时要使用的UDP端口号。123是NTP服务的标准端口。 - - -collector.ntp.protocol-version=4
数指定了NTP协议的版本。NTP版本4是当前的标准版本,提供了更高的精度和安全性。 - - -[no-]collector.ntp.server-is-local
这是一个布尔选项,用于确认collector.ntp.server地址是否不是公共的NTP服务器。如果服务器是本地的,这个选项可能有助于优化某些性能或安全性设置。 - - -collector.ntp.ip-ttl=1
这个参数设置了在发送NTP查询时使用的IP TTL(Time To Live)值。TTL决定了数据包在网络中可以经过的路由器数量。设置为1通常意味着数据包不会离开本地网络。 - - -collector.ntp.max-distance=3.46608s
设置了到根(即最顶层的时间服务器)的最大累积距离。这是衡量时间服务器准确性的一个重要指标,表示从本地服务器到最可靠的时间源之间的“距离”。 - –collector.ntp.local-offset-tolerance=1ms
设置了本地时钟和本地NTP守护进程时间之间的可容忍偏移量。如果两者之间的差异超过这个阈值,系统可能会认为存在时间同步问题。
文件系统和路径
- - -path.procfs=“/proc”
/proc 是 Linux 系统中一个特殊的虚拟文件系统,称为 proc 文件系统(或 procfs)。它包含了大量关于系统硬件、内核、进程等信息的文件。通过这个路径,监控工具可以读取各种系统状态和运行信息,如 CPU 使用情况、内存使用情况、网络状态等。配置此参数是为了让监控工具知道从哪里获取这些信息。 - - -path.sysfs=“/sys”
/sys 是另一个虚拟文件系统,称为 sysfs。它提供了一个窗口来查看和修改内核对象、属性和连接。sysfs 主要用于与内核中的设备、驱动和模块进行交互,获取系统硬件的详细信息。配置此参数允许监控工具访问这些信息。 - - -path.rootfs=“/”
rootfs 通常指的是系统的根文件系统,它包含了操作系统的主要文件和目录。在这里,“/” 表示根目录,即文件系统的顶层目录。监控工具可能需要访问根文件系统来收集关于磁盘使用、文件和目录状态等信息。配置此参数是为了指定根文件系统的位置。 - - -path.udev.data=“/run/udev/data”
udev 是一个动态设备管理器,用于管理设备节点、符号链接和udev规则。/run/udev/data 是 udev 存储其数据库和相关数据的默认位置。监控工具可能需要访问这些信息来了解系统中设备的状态和变化。配置此参数是为了指定 udev 数据的存储位置。
perf收集器
- - -collector.perf.cpus=“”
指定应从哪些CPU收集perf(性能)指标。如果不指定,则默认收集所有CPU的指标。 - - -collector.perf.tracepoint=COLLECTOR.PERF.TRACEPOINT
指定应收集的perf跟踪点。跟踪点是Linux内核中预定义的事件,可以在这些事件发生时触发特定的动作。通过这个参数,你可以指定你关心的特定事件。 - - -[no-]collector.perf.disable-hardware-profilers
一个布尔选项,用于启用或禁用硬件性能分析器。如果设置为–collector.perf.disable-hardware-profilers,则硬件性能分析器将被禁用。 - - -collector.perf.hardware-profilers=COLLECTOR.PERF.HARDWARE-PROFILERS
指定应收集的硬件性能分析器。硬件性能分析器通常用于监视CPU的硬件级性能指标,如缓存命中、分支预测等。 - - -[no-]collector.perf.disable-software-profilers
一个布尔选项,用于启用或禁用软件性能分析器。如果设置为–collector.perf.disable-software-profilers,则软件性能分析器将被禁用。 - - -collector.perf.software-profilers=COLLECTOR.PERF.SOFTWARE-PROFILERS
指定应收集的软件性能分析器。软件性能分析器通常用于监视软件级别的性能指标,如页面错误、上下文切换等。 - - -[no-]collector.perf.disable-cache-profilers
一个布尔选项,用于启用或禁用缓存性能分析器。如果设置为–collector.perf.disable-cache-profilers,则缓存性能分析器将被禁用。 - - -collector.perf.cache-profilers=COLLECTOR.PERF.CACHE-PROFILERS
指定应收集的缓存性能分析器。缓存性能分析器通常用于监视CPU缓存的性能指标,如缓存命中、缓存未命中等。
电源供应类(powersupplyclass)
- - -collector.powersupply.ignored-supplies=“^$”
指定应被电源供应类收集器忽略的电源供应设备的正则表达式。在这个例子中,"^$"是一个正则表达式,它实际上不匹配任何电源供应设备名称,因此默认情况下不会忽略任何设备。你可以根据需要修改这个正则表达式来忽略特定的电源供应设备。
qdisc收集器
qdisc收集器监控是什么?
qdisc收集器监控是Linux系统中网络流量控制的一个关键组件,主要涉及对网络数据包的排队和调度进行监控。以下是关于qdisc收集器监控的详细解释:
- 核心组件:qdisc(队列规则)是Linux流量控制系统的核心。它实际上是一个附加在网络接口上的排队规则,也可以看作是一个调度器。每个网络接口都会有一个这样的调度器,它负责根据特定的规则重新排列进入队列的数据包顺序。
- 数据包的分类与排队:qdisc可以根据不同的需求对数据包进行分类。分类后的数据包会按照一定的规则被放入相应的队列中等待发送。这种分类和排队机制有助于实现更精细化的网络流量控制。
- 流量控制策略:通过qdisc,可以实现多种流量控制策略,如限制(shaping)、调度(scheduling)、策略(policing)和丢弃(dropping)。这些策略有助于管理网络带宽,确保关键应用和服务能够获得所需的网络资源。
- 监控与调优:qdisc收集器监控不仅可以实时观察网络流量的状态,还可以帮助系统管理员识别和解决网络拥塞、延迟和其他性能问题。通过监控qdisc的运作情况,管理员可以对网络配置进行调优,以提高网络性能和可靠性。
- 无类与分类队列规则:qdisc分为无类队列规则和分类队列规则。无类队列规则对所有进入网络设备的数据流统一对待,而分类队列规则则可以根据不同的需求对数据包进行更细致的分类处理。
- - -collector.qdisc.fixtures=“”
用于指定qdisc(队列规则)收集器的端到端测试所使用的测试装置(test fixtures)。测试装置通常用于设置测试环境,确保测试的一致性和可重复性。如果测试需要特定的网络配置或模拟数据,可以通过这个参数来指定。
相关采集配置
- - -collector.qdisc.device-include=COLLECTOR.QDISC.DEVICE-INCLUDE
允许用户指定一个正则表达式,用于匹配应该包含在内的qdisc设备。这意味着只有匹配该正则表达式的设备才会被qdisc收集器监控。此参数与device-exclude是互斥的,即不能同时使用。如果只想监控以eth开头的网络接口,可以设置此参数为^eth.*。 - - -collector.qdisc.device-exclude=COLLECTOR.QDISC.DEVICE-EXCLUDE
与device-include相反,这个参数允许用户指定一个正则表达式,用于匹配应该被排除在外的qdisc设备。任何匹配该正则表达式的设备都不会被qdisc收集器监控。此参数与device-include是互斥的。如果想排除所有以lo开头的设备(通常是本地回环接口),可以设置此参数为^lo.*。
RAPL(运行平均功率限制)
- - -[no-]collector.rapl.enable-zone-label
启用或禁用RAPL(Running Average Power Limit)收集器的区域标签功能。如果启用,会在服务单元指标中包含unit_start_time_seconds
Runit 服务目录
- - -collector.runit.servicedir=“/etc/service”
指定runit服务目录的路径。runit是一个Unix init系统,该参数定义了服务配置文件的存放位置。
软中断(softirq)统计
- - -[no-]collector.stat.softirq
启用或禁用导出每个向量的softirq(软件中断)调用次数。如果启用,收集器将报告softirq相关的统计数据。
Supervisord 监控
- - -collector.supervisord.url=“http://localhost:9001/RPC2”
指定Supervisord的XML RPC端点。Supervisord是一个进程控制系统,这个参数用于配置监控工具如何与Supervisord通信。
系统控制(sysctl)收集器
- - -collector.sysctl.include=COLLECTOR.SYSCTL.INCLUDE
选择要包含的sysctl指标。sysctl用于在运行时读取和修改内核参数,这个参数允许用户指定哪些sysctl值应该被收集。 - - -collector.sysctl.include-info=COLLECTOR.SYSCTL.INCLUDE-INFO
选择要作为信息指标包含的sysctl值。这些值可能不是关键的度量标准,但提供有关系统的额外信息。
systemd 服务监控
- - -collector.systemd.unit-include=“.+”
systemd收集器负责收集与systemd相关的指标,比如systemd服务和单元的状态。".+"意味着包含所有名称的systemd单元。在这里,.代表任意单个字符,+表示前面的字符(在这里是.)可以重复一次或多次。因此,这个正则表达式会匹配任何名称的systemd单元。 - - -collector.systemd.unit-exclude=“.+\.(automount|device|mount|scope|slice)”
用于指定systemd收集器应该排除哪些systemd单元的信息。它会排除名称中包含.automount、.device、.mount、.scope或.slice后缀的单元。这些后缀分别对应不同类型的systemd单元,例如设备、挂载点、作用域和资源切片。正则表达式中的\.表示匹配实际的点字符(.),因为在正则表达式中,点(.)是一个特殊字符,代表任意单个字符,所以需要使用\.来表示字面上的点。 - - -[no-]collector.systemd.enable-task-metrics
是否收集与systemd单元相关的任务(即进程)指标。当启用此标志时(即不包含no-前缀),systemd收集器会收集每个systemd服务单元中的任务(进程)相关信息,例如CPU使用率、内存使用情况等。这些信息可以帮助你更深入地了解服务单元的运行状态和性能。如果禁用此标志(即使用–no-collector.systemd.enable-task-metrics),则不会收集这些任务相关的指标,会减少node_exporter的资源消耗和暴露的指标数量。 - - -[no-]collector.systemd.enable-restarts-metrics
是否收集systemd单元的重启次数指标。启用此标志后,systemd收集器会记录并暴露每个systemd单元的重启次数。这对于监控服务的稳定性和可靠性非常有用,因为频繁的重启可能表明服务存在问题。如果禁用此标志,则不会跟踪和暴露重启次数指标。 - - -[no-]collector.systemd.enable-start-time-metrics
是否收集systemd单元的启动时间指标。当启用此标志时,systemd收集器会记录并暴露每个systemd单元的启动时间。这可以帮助你了解服务从启动到正常运行所需的时间,从而评估服务的性能和响应时间。如果禁用此标志,则不会收集这些启动时间指标。
磁带统计(tapestats)收集器
- - -collector.tapestats.ignored-devices=“^$”
用于配置 tapestats 收集器。tapestats 收集器用于收集和导出与磁带设备相关的统计信息。然而,在某些环境中,你可能不希望收集所有磁带设备的统计信息,或者想要忽略特定的磁带设备。这时,–collector.tapestats.ignored-devices 参数就派上了用场。
文本文件收集器
- - -collector.textfile.directory=“”
允许用户通过创建特定的文本文件来提供自定义的指标,这些指标随后会被 node_exporter 抓取并暴露给 Prometheus。这个参数指定了 node_exporter 应该从哪个目录中读取自定义的文本文件指标。默认为空字符串,这意味着如果不明确设置,文本文件收集器将不会读取任何文件。
详解:用户可以在指定的目录中创建文本文件,这些文件应包含按照 Prometheus 格式编写的指标数据。这样,node_exporter 就可以读取这些文件,并将其中包含的指标数据暴露给 Prometheus。文本文件的命名和格式需要遵循一定的规范,通常是以 .prom 结尾,并包含按照 Prometheus exposition format 编写的指标数据。当这个目录中有新的或更新的文本文件时,node_exporter 会在下一次抓取周期中读取这些文件,并将新的指标数据暴露出来。这个功能非常有用,因为它允许用户在不修改 node_exporter 代码的情况下,轻松添加自定义的指标。
vmstat收集器
- - -collector.vmstat.fields=“^(oom_kill|pgpg|pswp|pg.fault).”
用于指定应从 /proc/vmstat 文件中收集哪些字段。/proc/vmstat 包含了大量关于系统虚拟内存统计的信息。- oom_kill 表示由于系统内存不足而被内核杀死的进程数量。当系统内存不足时,内核会选择一个进程并杀死它,以释放内存供其他进程使用。这个计数器会记录这种情况发生的次数。
- pgpgin:表示从磁盘读入到内存的页面数。pgpgout:表示从内存写入到磁盘的页面数。这两个计数器可以帮助你了解系统的分页活动,即内存与磁盘之间的数据交换情况。
- pgfault:表示页面错误的总次数,包括轻微页面错误(可以从内存中快速解决)和主要页面错误(需要从磁盘读取)pgmajfault:表示需要从磁盘读取的主要页面错误次数。页面错误是当程序尝试访问的内存页面不在物理内存中时发生的。主要页面错误通常意味着性能瓶颈,因为它们涉及到从磁盘读取数据,这通常比从内存中读取要慢得多。
四、实战演练:生产环境搭建指南🔨
4.1 创建普通用户管理node_exporter👤
useradd deploy
4.2 解压node_exporter.tar.gz📦
注意:
我的是x86,所以使用node_exporter-1.8.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构
tar xvf node_exporter-1.8.0.linux-amd64.tar.gz -C /home/deploy/
4.3 将node_exporter集成到Prometheus配置中✂️
将node_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加node_exporter的配置。告诉Prometheus将采集localhost:9100的数据。
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "node_exporter"static_configs:- targets: ["localhost:9100"]
4.4 更改node_exporter软件包名称✂️
mv /home/deploy/node_exporter-1.8.0.linux-amd64 /home/deploy/node_exporter
4.5 编辑node_exporter.service文件📝
cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Export for Prometheus metrics
After=network.target
Documentation=https://prometheus.io/docs/guides/node-exporter/
# 确保网络服务已经启动
Requires=network.target# --no-collector.arp:关闭收集 ARP(地址解析协议)缓存条目的统计信息。包括主机上的 ARP 表项的数量、状态等。需要监控或诊断与 ARP 缓存相关的问题时,可以启用此收集器
# --no-collector.btrfs:关闭收集关于 Btrfs 文件系统的统计信息。Btrfs 是一个具有许多高级功能的 Linux 文件系统。使用 Btrfs 文件系统时,可以启用此收集器来监控其性能和状态。
# --no-collector.cpufreq:关闭收集关于 CPU 频率调整(cpufreq)的统计信息。包括当前 CPU 频率、可用的频率范围等。需要监控或调优 CPU 频率以平衡性能和功耗时,可以启用此收集器。
# --no-collector.dmi:关闭收集 DMI(Desktop Management Interface)数据,包括系统硬件信息,如制造商、产品名称、序列号等。需要获取主机硬件详细信息时,可以启用此收集
# --no-collector.edac:关闭收集 EDAC(Error Detection And Correction)错误统计信息,用于监控内存和其他系统组件的错误。需要监控和诊断内存或其他组件的错误时,应启用此收集器。
# --no-collector.entropy:关闭收集系统熵池的信息,熵池用于生成随机数。需要监控随机数生成器的性能或可用性时,可以启用此收集器。
# --no-collector.fibrechannel:关闭收集 Fibre Channel 网络接口的信息和统计数据。使用 Fibre Channel 网络技术时,可以启用此收集器来监控其性能和状态。
# --no-collector.filefd:关闭收集文件描述符的使用情况统计信息,包括打开的文件数和类型。需要监控进程打开文件描述符的数量或类型时,可以启用此收集器。
# --no-collector.hwmon:关闭收集硬件监控传感器的数据,如温度、电压、风扇速度等。需要监控服务器或硬件设备的温度、电压等参数时,可以启用此收集器。
# --no-collector.infiniband:关闭收集 Infiniband 网络接口的信息和统计数据。使用 Infiniband 网络技术时,可以启用此收集器来监控其性能和状态。
# --no-collector.ipvs:关闭收集 Linux IPVS(IP Virtual Server)负载均衡的统计信息。使用 IPVS 进行负载均衡时,可以启用此收集器来监控其性能和状态。
# --no-collector.mdadm:关闭收集关于 Linux mdadm(Multiple Devices administrator)软件 RAID 阵列的信息和统计数据。使用 mdadm 管理 RAID 阵列时,可以启用此收集器来监控其性能和状态。
# --no-collector.nfs:关闭收集 NFS(Network File System)客户端的统计信息。当使用 NFS 客户端时,可以启用此收集器来监控其性能和状态。
# --no-collector.nfsd:关闭收集 NFS(Network File System)服务器(nfsd)的统计信息。当运行 NFS 服务器时,可以启用此收集器来监控其性能和状态。
# --no-collector.powersupplyclass:关闭收集关于电源供应的信息,如电池状态、UPS 状态等。需要监控服务器的电源供应状态,特别是电池和 UPS 时,可以使用此收集器。
# --no-collector.pressure:关闭收集系统压力信息,如 I/O 压力、内存压力等。需要了解系统的资源压力情况,以便进行调优或扩展时,可以使用此收集器。
# --no-collector.rapl:关闭收集关于 RAPL(运行平均功率限制)的信息,用于监控 CPU 和其他组件的功耗。需要监控服务器的功耗和能效时,可以使用此收集器。
# --no-collector.selinux:关闭收集关于 SELinux(安全增强型 Linux)的状态和策略信息。使用 SELinux 并需要监控其状态或策略时,可以使用此收集器。
# --no-collector.softnet:关闭收集与 Linux 内核软中断处理相关的统计信息。需要了解网络软中断的处理情况,以便进行调优时,可以使用此收集器。
# --no-collector.tapestats:关闭收集磁带驱动器的统计信息。使用磁带备份解决方案并需要监控磁带驱动器时,可以使用此收集器。
# --no-collector.textfile:关闭允许用户从文本文件中读取指标。这可以用于集成非标准指标或来自其他系统的指标。需要将非标准指标或来自其他系统的指标集成到 Prometheus 监控中时,可以使用此收集器。
# --no-collector.thermal_zone:关闭收集关于热区的温度信息,这通常与硬件监控相关。需要监控服务器的温度状况,特别是当涉及到硬件过热警告时,可以使用此收集器。
# --no-collector.vmstat:关闭收集虚拟内存统计信息,如进程、内存、分页、块 IO、陷阱和 CPU 活动等。需要深入了解系统的虚拟内存使用情况,以便进行调优或诊断性能问题时,可以使用此收集器。
# --no-collector.watchdog:关闭收集关于硬件看门狗的信息,看门狗通常用于在系统崩溃时自动重启。使用硬件看门狗并需要监控其状态时,可以使用此收集器。
# --no-collector.zfs:关闭收集关于 ZFS 文件系统的统计信息。使用 ZFS 文件系统并需要监控其性能时,可以使用此收集器。[Service]
Type=simple
User=deploy
Group=deploy
WorkingDirectory=/home/deploy/node_exporter
ExecStart=/home/deploy/node_exporter/node_exporter \
--no-collector.arp \
--no-collector.btrfs \
--no-collector.cpufreq \
--no-collector.dmi \
--no-collector.edac \
--no-collector.entropy \
--no-collector.fibrechannel \
--no-collector.filefd \
--no-collector.hwmon \
--no-collector.infiniband \
--no-collector.ipvs \
--no-collector.mdadm \
--no-collector.nfs \
--no-collector.nfsd \
--no-collector.powersupplyclass \
--no-collector.pressure \
--no-collector.rapl \
--no-collector.selinux \
--no-collector.softnet \
--no-collector.tapestats \
--no-collector.textfile \
--no-collector.thermal_zone \
--no-collector.vmstat \
--no-collector.watchdog \
--no-collector.zfs \
--web.listen-address 0.0.0.0:9100
ExecReload=/bin/kill -HUP
Restart=on-failure
# 在服务重启之前等待的秒数,避免过快重启可能导致的问题
RestartSec=30s
# 设置超时时间,防止服务挂起而不响应
TimeoutStartSec=30s[Install]
WantedBy=multi-user.targetEOF
4.6 启动node_exporter.service🔌
sudo systemctl daemon-reloadsudo systemctl enable --now node_exporter.service
4.7 查看服务是否正常启动🔍
# 查看service服务是否启动
sudo systemctl status node_exporter.service# 查看端口是否存在
sudo ss -ntulp | grep 9100
相关资料下载地址📚
- 官方文档:https://prometheus.io/docs/introduction/overview/
- 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
- 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
- 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt