亲爱的读者们👋
欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀
Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪
在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆
目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯
这是一段精彩旅程,期待你的加入!🎉
文章目录
- 一、windows_exporter概述📘
- 二、安装windows_exporter💾
- 2.1 访问windows_exporter官方网站 🌐
- 2.2 选择适合的版本🔍
- 2.3 下载windows_exporter⬇️
- 2.4 运行windows_exporter🚀
- 三、windows_exporter指标和配置详解📖
- 3.1 windows_exporter的Collectors
- 3.2 windows_exporter.exe
- 四、实战演练:生产环境搭建指南🔨
- 4.1 创建config.yml文件
- 4.2 将windows_exporter集成到Prometheus配置中✂️
- 4.3 启动windows_exporter.service🔌
- 4.4 查看服务是否正常启动🔍
- 相关资料下载地址📚
一、windows_exporter概述📘
定义
windows_exporter是一个开源的监控工具,专门为Windows操作系统设计。它的主要作用是收集Windows系统的各种运行指标,并将这些指标转换成Prometheus可以理解的格式,以便Prometheus进行数据的抓取、存储和分析。
功能
系统指标收集:能够全面收集Windows系统的各类运行指标,如CPU使用率、内存占用情况、磁盘IO性能、网络流量统计等。
数据格式转换:将这些收集到的系统指标转换成Prometheus可以识别和抓取的格式,确保数据的兼容性。
模块化设计:通过不同的收集器模块来专门负责收集特定类型的系统信息,这种设计提高了软件的扩展性和可维护性。
安全性保障:支持通过HTTPS协议和基本认证来确保数据传输的安全性,防止未授权访问和敏感数据泄露。
灵活配置:用户可以根据自己的需求,通过配置文件灵活地启用或禁用特定的指标收集器,以满足不同的监控需求。
应用场景
服务器性能监控:对于运行Windows的服务器,管理员可以利用windows_exporter实时监控服务器的性能指标,如CPU、内存、磁盘和网络等的使用情况,以确保服务器稳定运行并及时发现潜在问题。
混合环境监控:在同时包含Linux和Windows的混合环境中,使用windows_exporter可以实现对Windows系统的统一监控,便于管理员进行跨平台的性能分析和故障排除。
自动化运维与告警:配合Prometheus和Alertmanager,windows_exporter可以帮助实现自动化的性能告警,当系统指标超过预设阈值时,及时通知管理员进行处理。
DevOps与CI/CD支持:在DevOps流程和持续集成与持续交付(CI/CD)环境中,windows_exporter提供的实时监控数据可以帮助团队快速定位性能瓶颈,优化软件开发和部署流程。
容量规划:根据consul_exporter收集的历史数据,可以进行更准确的容量规划和预测,以满足未来的业务需求。
二、安装windows_exporter💾
注意事项和常见问题
1.管理员权限:确保以管理员身份登录Windows系统进行安装,以保证有足够的权限进行必要的系统配置。
2.下载来源:应从官方渠道或可信赖的资源下载windows_exporter安装包,以确保安全性。
3.安装目录:默认情况下,windows_exporter会安装到C:\Program Files (x86)\windows_exporter目录,但也可以根据需要更改安装路径。
4.端口配置:windows_exporter默认监听9182端口,需要确保该端口未被其他应用程序占用,并且防火墙设置允许外部访问(如果需要从远程监控)。
5.配置指标:windows_exporter默认收集一系列系统指标,但用户可能需要根据实际需求调整这些指标。
2.1 访问windows_exporter官方网站 🌐
- 打开浏览器,访问windows_exporter的官方下载页面,通常位于Github网站的子目录下:https://github.com/prometheus-community/windows_exporter/releases
2.2 选择适合的版本🔍
- 在下载页面,你将看到不同操作系统的windows_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择windows_exporter-x.x.x-amd64.exe(其中x.x.x是版本号)。
2.3 下载windows_exporter⬇️
- 点击所选版本的下载链接,将windows_exporter的二进制包下载到你的本地计算机。
2.4 运行windows_exporter🚀
- 运行windows_exporter。在windows下,你可以使用运行exe、msi文件。如果一切正常,你应该能在终端看到windows_exporter的启动日志。
# 仅启用服务收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled "service" --collector.service.services-where "Name='windows_exporter'"
# 仅启用进程收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled "process" --collector.process.include="firefox.+"
三、windows_exporter指标和配置详解📖
- 黑色:作为默认文本颜色。
- 绿色:表示常规配置项
- 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
- 蓝色:不重要的配置项 / 建议不开启
- 红色:表示关键信息和警告 / 最好开启
注意:
- 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
- 2.以下配置参数介绍是基于windows_exporter-0.25.0-amd64版本说明的,其它版本会有不同。
3.1 windows_exporter的Collectors
- ad
收集与Active Directory相关的指标,如监控用户登录次数,帮助管理员了解用户活动的频率和模式。同时,它也跟踪失败的登录尝试,这是安全审计的重要部分,可以及时发现潜在的未经授权的访问尝试。此外,它还收集组策略错误,这些错误可能会影响用户环境或系统配置 - adcs
收集监控与证书服务相关的指标,如证书颁发、吊销和验证等活动的统计信息。通过持续监控这些信息,我们能够深入评估证书服务的整体健康状况和实时性能。这些详尽的数据不仅为我们提供了服务运行状态的实时反馈,还是保障服务高可用性和优越性能的重要参考。此外,利用这些监控数据,我们可以针对性地调整和优化证书服务的配置,从而进一步提升其处理效率和响应速度,确保提供稳定、高效的证书服务 - adfs
收集联合身份验证服务的性能指标,如令牌请求的数量、处理时间等,根据adfs的监控数据,可以优化令牌的发放策略,减少不必要的验证步骤,提高用户体验和服务响应速度 - cache
收集Windows系统的缓存性能,包括缓存命中率、缓存大小以及缓存中的对象数量等,通过调整缓存策略,如增加缓存大小或优化缓存替换算法,可以提高缓存命中率和系统性能 - cpu
收集CPU相关的性能指标。包括CPU使用时间、CPU使用率、上下文切换次数等,根据CPU的监控数据,可以优化应用程序的代码和算法,减少不必要的CPU占用 - cpu_info
收集关于 CPU 的详细信息,如型号、核心数、线程数等,根据CPU的详细信息,可以合理配置系统的任务调度和资源分配策略,以充分发挥CPU的性能优势 - cs
收集与计算机系统相关的信息,如系统启动时间、系统调用次数等,有助于了解系统的整体运行状况 - container
收集Windows容器相关的信息,如容器的运行状态、资源使用情况等,根据容器的监控数据,可以合理调整容器的资源配置和调度策略,以提高容器的运行效率和资源利用率 - dfsr
收集分布式文件系统复制的状态和性能。包括复制进度、错误计数、已复制和待复制的文件数量等,定期检查 DFS Replication 的状态,根据监控数据调整复制策略,如复制频率、带宽限制等,以优化网络资源的利用 - dhcp
收集与动态主机配置协议相关的数据,如DHCP 服务的运行状态、已分配的 IP 地址数量、地址池的使用情况等,监控 DHCP 服务的稳定性,确保客户端能够顺利获取 IP 地址,根据 IP 地址的分配情况,及时调整地址池的大小和范围,以满足网络扩展的需求 - dns
收集域名系统(DNS)的性能指标,包括DNS 查询的响应时间、解析成功率、错误率等,分析 DNS 查询的响应时间,优化 DNS 服务器的配置,提高解析速度,监控 DNS 解析的成功率和错误率,及时发现并解决潜在的问题 - exchange
收集与Microsoft Exchange服务器相关的指标。这包括邮件流量、用户连接数、队列长度等,监控 Exchange 服务器的性能指标,确保邮件服务的稳定性和高性能。根据监控数据调整邮件队列的大小和邮件传递的策略,以提高邮件处理的效率 - fsrmquota
收集和监控文件服务器资源管理器(FSRM)的配额使用情况。FSRM是Windows Server中用于管理文件服务器上的存储配额、文件屏蔽、存储报告等功能的组件。通过这个collector,可以了解配额的使用情况,防止磁盘空间被过度使用 - hyperv (Hyper-V)
收集与Hyper-V虚拟化技术相关的性能指标。包括虚拟机的运行状态、CPU和内存使用情况、磁盘和网络I/O等 - iis
收集Internet Information Services (IIS)的性能指标。可以提供关于网站访问量、请求响应时间、错误计数、带宽使用情况等数据,分析 IIS 的性能指标,优化网站的配置和部署策略,监控网站的访问量和响应时间,及时发现并解决性能瓶颈。 - logical_disk
收集与逻辑磁盘相关的性能指标,如磁盘空间使用率、读写速度、IOPS(每秒输入/输出操作数)等 - logon
收集和监控Windows系统的登录活动,包括用户登录次数、登录失败尝试等,分析登录活动的数据,及时发现异常登录行为并采取措施。根据登录失败尝试的次数和模式,调整账户锁定策略和密码策略以提高安全性 - memory
收集与内存使用相关的数据。包括物理内存的使用情况,如已用内存、可用内存、缓存内存等。这些数据有助于监控系统的内存使用情况,以便及时发现内存泄漏或过度使用的情况。 - mscluster_cluster
收集与Microsoft Cluster Service相关的集群级别的指标。提供关于集群状态、节点成员资格以及集群事件的信息,有助于确保集群的稳定性和高可用性。 - mscluster_network
收集与集群网络通信相关的数据。提供网络延迟、吞吐量以及网络连接状态等信息,有助于诊断网络相关的问题。 - mscluster_node
收集集群中各个节点的性能指标。可以提供节点的状态、负载情况以及与其他节点的通信状态等信息,有助于了解集群中各个节点的健康状况。 - mscluster_resource
收集集群中资源的使用情况。资源可以是物理或逻辑实体,如磁盘、IP地址等。这个collector可以提供资源的状态、依赖关系以及故障转移等信息,有助于确保资源的正确配置和高可用性。 - msmq
收集与Microsoft Message Queuing服务相关的性能指标。MSMQ是Windows中的一个消息队列服务,用于在应用程序之间进行异步通信。这个collector可以提供关于队列长度、消息处理速度以及错误计数等信息,有助于确保消息传递的可靠性和性能 - mssql
收集与Microsoft SQL Server相关的性能指标。包括查询响应时间、数据库大小、事务处理速度等。通过这些数据,可以监控数据库的性能和健康状况,及时发现并解决潜在的问题 - netframework_clrexceptions
收集.NET Framework中的公共语言运行时(CLR)异常信息,提供关于应用程序中发生的异常类型、数量和频率的数据 - netframework_clrinterop
收集与CLR互操作性(Interop)相关的数据。包括与COM对象、平台调用(P/Invoke)等相关的指标。有助于了解.NET应用程序与外部系统或组件的交互情况 - netframework_clrjit
收集关于CLR的即时编译器(JIT)的信息,JIT负责将中间语言(MSIL)代码编译成本机代码以提高执行效率,Collector可以提供关于JIT编译活动的数据,如编译次数、编译时间等 - netframework_clrloading
收集CLR的加载器活动,包括程序集、类和方法的加载与卸载。有助于了解应用程序的启动性能、内存占用和动态行为 - netframework_clrlocksandthreads
收集关于CLR中的锁和线程的信息。可以提供线程创建、销毁、同步和锁争用等方面的数据。对于分析和优化多线程.NET应用程序的性能至关重要 - netframework_clrmemory
收集CLR的内存使用情况,包括堆内存、垃圾回收等。有助于发现和预防内存泄漏、优化垃圾回收策略等 - netframework_clrremoting
收集关于CLR远程处理(Remoting)的信息。Remoting是.NET中用于在不同进程或机器之间进行通信的技术。这个Collector可以提供关于远程对象调用、通道和端点的数据 - netframework_clrsecurity
收集CLR的安全相关信息,如代码访问安全性(CAS)策略的执行等。有助于确保.NET应用程序的安全性,并发现和预防潜在的安全风险 - net
负责收集与网络相关的指标,监控当前活动的网络连接状态、网络流量、TCP/UDP统计,包括本地和远程地址、连接状态,跟踪网络接口的入站和出站流量,有助于识别网络瓶颈,提供TCP和UDP连接的各种统计信息,如重传次数、连接时间等 - os
收集操作系统层面的指标,如CPU使用率、内存占用、磁盘空间使用情况等。评估系统整体性能和健康状况的基础指标 - process
收集运行中的进程信息,包括进程数、CPU和内存占用等。有助于识别资源消耗过大的进程或潜在的异常进程 - remote_fx
收集与RemoteFX相关的性能指标,如GPU使用情况、压缩效率等 - scheduled_task
收集Windows计划任务的状态和执行情况。有助于确保计划任务按时执行,以及监控任务执行过程中的任何异常 - service
收集Windows服务的信息,包括服务的状态(运行、停止等)和性能数据。确保系统服务的稳定性和可用性至关重要 - smb
收集与Server Message Block(SMB)协议相关的数据,该协议用于Windows系统中的文件和打印服务 - smtp
收集Windows系统上SMTP服务的状态和性能,监控SMTP服务的运行状态,包括服务的可用性、邮件发送和接收的成功率以及任何错误或异常。通过这些指标,管理员可以确保邮件服务的稳定性和性能,并及时解决任何出现的问题 - system
提供关于系统整体状态的综合信息,可能包括启动时间、系统资源使用情况等 - tcp
收集与TCP连接相关的统计信息,如连接数、错误计数等 - teradici_pcoip
收集与Teradici PCoIP协议相关的信息。PCoIP是一种专为远程桌面传输设计的协议,常用于虚拟机或远程工作场景中 - time
收集与时间相关的系统信息。提供当前系统时间、时区设置以及可能的时间同步状态等。 - thermalzone
监控系统的热区或温度传感器数据,可能包括CPU、GPU或其他硬件的温度读数,有助于预防过热和硬件损坏 - terminal_services
收集与终端服务(如远程桌面服务)相关的数据,包括活动会话数、用户登录信息等,有助于了解远程访问的使用情况和性能 - textfile
允许用户通过文本文件提供自定义指标,读取指定文本文件中的指标数据,并将其作为Prometheus指标暴露出来 - vmware_blast
收集与VMware Blast协议相关的信息。VMware Blast是一种用于优化远程桌面和应用程序传输的协议,可能包括连接状态、性能指标等,有助于监控和优化VMware环境中的远程访问体验 - vmware
收集与VMware虚拟化环境相关的信息,涵盖虚拟机状态、资源使用情况、性能数据等
3.2 windows_exporter.exe
- –web.listen-address
用于设置windows_exporter监听的地址和端口。例如,0.0.0.0:9182表示监听所有网络接口的第9182端口。 - –telemetry.path
用于设置暴露给Prometheus的metrics的路径。默认情况下,这通常是/metrics。如果你需要改变这个路径,可以使用这个参数。 - –telemetry.max-requests
设置同时处理的最大HTTP请求数量。这有助于控制windows_exporter的并发处理能力,避免过载。 - –collectors.enabled
通过这个参数,你可以指定哪些收集器(collectors)是启用的。收集器负责从不同的Windows性能计数器或其他源收集数据。你可以列出你想要启用的收集器,用逗号分隔。 - –collectors.print
如果设置为true,这个选项会在启动时将所有可用的收集器打印到控制台。这有助于了解哪些收集器是可用的,并帮助你配置–collectors.enabled参数。 - –scrape.timeout-margin
设置在Prometheus抓取数据时的额外超时时间。这可以确保在Prometheus的抓取超时之前,windows_exporter有足够的时间来收集和准备数据。 - –web.config.file
指定一个包含Web服务器配置的文件路径。这可以让你自定义Web服务器的行为,比如TLS设置等。 - –config.file
指定一个配置文件,其中可以定义各种收集器的配置。这允许你更细粒度地控制哪些性能计数器被收集,以及如何收集。 - –config.file.insecure-skip-verify
如果配置文件是通过HTTPS获取的,并且服务器使用的是自签名证书,将此选项设置为true将跳过SSL证书的验证。这通常不推荐,因为它降低了安全性,但在某些测试环境中可能是必要的。
四、实战演练:生产环境搭建指南🔨
4.1 创建config.yml文件
- 可以使用 YAML 配置文件启动collector,创建一个config.yml文件
collectors:
enabled: cpu,cs,net,service
collector:
service:
services-where: "Name='windows_exporter'"
log:
level: warn
4.2 将windows_exporter集成到Prometheus配置中✂️
将windows_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加windows_exporter的配置。告诉Prometheus将采集localhost:9182的数据。
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "windows_exporter"
static_configs:
- targets: ["localhost:9182"]
4.3 启动windows_exporter.service🔌
- 将 [defaults] 与 - -collectors.enabled参数一起使用,会随所有默认收集器一起扩展
.\windows_exporter.exe --config.file="config.yml" --collectors.enabled "[defaults],process,container"
4.4 查看服务是否正常启动🔍
- 浏览器访问127.0.0.1:9182/metrics可获取到metrics数据
相关资料下载地址📚
- 官方文档: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