四、 Prometheus:使用Exporter监控Windows和Linux以及配置加密认证
创始人
2025-05-30 03:59:54

在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。

为了采集主机的监控样本数据,在主机上安装了一个Node Exporter程序,该程序对外暴露了一个用于获取当前监控样本数据的HTTP访问地址。这样的一个程序称为Exporter,Exporter的实例称为一个Target。Prometheus通过轮询的方式定时从这些Target中获取监控数据样本,并且存储在数据库当中。

Exporter可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。

也可以实现自定义的Exporter程序,符合标准即可。广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:

Exporter来源

Exporter来源:社区提供和用户自定义

node_exporter监控Linux 、mysqld_exporter监控MySQL、 windows_exporter监控windows,其他exporter可以访问EXPORTERS AND INTEGRATIONS:Exporters and integrations | Prometheus

  • 社区提供

Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。下表列举一些社区中常用的Exporter:

范围

常用Exporter

数据库

MySQL Exporter, Redis Exporter, MongoDB Exporter, MSSQL Exporter等

硬件

Apcupsd Exporter,IoT Edison Exporter, IPMI Exporter, Node Exporter等

消息队列

Beanstalkd Exporter, Kafka Exporter, NSQ Exporter, RabbitMQ Exporter等

存储

Ceph Exporter, Gluster Exporter, HDFS Exporter, ScaleIO Exporter等

HTTP服务

Apache Exporter, HAProxy Exporter, Nginx Exporter等

API服务

AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter等

日志

Fluentd Exporter, Grok Exporter等

监控系统

Collectd Exporter, Graphite Exporter, InfluxDB Exporter, Nagios Exporter, SNMP Exporter等

其它

Blockbox Exporter, JIRA Exporter, Jenkins Exporter, Confluence Exporter等

  • 用户自定义

除了直接使用社区提供的Exporter程序以外,还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。

Exporter的运行方式

从Exporter的运行方式上来讲,可以分为:

  • 独立使用

以已经使用过的Node Exporter为例,由于操作系统本身并不直接支持Prometheus,同时用户也无法通过直接从操作系统层面上提供对Prometheus的支持。因此,用户只能通过独立运行一个程序的方式,通过操作系统提供的相关接口,将系统的运行状态数据转换为可供Prometheus读取的监控数据。 除了Node Exporter以外,比如MySQL Exporter、Redis Exporter等都是通过这种方式实现的。 这些Exporter程序扮演了一个中间代理人的角色。

  • 集成到应用中

为了能够更好的监控系统的内部运行状态,有些开源项目如Kubernetes,ETCD等直接在代码中使用了Prometheus的Client Library,提供了对Prometheus的直接支持。这种方式打破的监控的界限,让应用程序可以直接将内部的运行状态暴露给Prometheus,适合于一些需要更多自定义监控指标需求的项目。

Windows Exporter

Windows Exporter 由 Prometheus Community 维护,官方地址是:https://github.com/prometheus-community/windows_exporter。是一个采集 Windows 机器指标的采集器。支持 Windows Server 2008R2 以上版本或者 Windows 7 以上版本。Windows Exporter 在发布的是时候提供了两种格式的文件,分别是 *.exe 和 *.msi 。

Windows Exporter 每个版本都提供一个 .msi 安装程序。安装程序将 windows_exporter 设置为 Windows 服务,并在 Windows 防火墙中创建一个异常。在使用的时候可以选择任意一种格式来进行安装。

下载

下载地址:Releases · prometheus-community/windows_exporter · GitHub

https://download.csdn.net/download/zhouruifu2015/87579035

安装

查看服务

 

访问Windows Exporter监控指标

windows_exporter默认端口是9182,在浏览器输入:localhost:9182即可访问。

这个列表是 Windows Exporter 支持采集的指标,有一些指标是启动后缺省会打开的,有一些是需要手动打开,具体参考:https://github.com/prometheus-community/windows_exporter

使用配置文件启动Exporter,Windows Exporter 支持使用 --config.file 参数来指定一个 YAML 格式的文件作为配置文件来启动,比如: .\windows_exporter.exe --config.file=config.yml .这个配置文件支持配置要采集的内容,日志、等内容。

scrape_configs配置windows exporter

重启prometheus即可查看已经配置好的exporter

重启后

Node Exporter

下载地址https://github.com/prometheus/node_exporter/releases

https://download.csdn.net/download/zhouruifu2015/87579035

为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。可以使用Node Exporter。Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从Download | Prometheus获取最新的node exporter版本的二进制包。

解压到目录:/usr/local/bin/

服务配置脚本

cat >> /etc/rc.d/init.d/node_exporter <$LOGFILE &"echo $(pidofproc $PROGNAME) >$LOCKFILEecho
}stop() {echo -n "Shutting down $PROGNAME: "killproc $PROGNAMErm -f $LOCKFILEecho
}case "$1" instart)start;;stop)stop;;status)status $PROGNAME;;restart)stopstart;;reload)echo "Sending SIGHUP to $PROGNAME"kill -SIGHUP $(pidofproc $PROGNAME)#!/bin/bash;;*)echo "Usage: service node_exporter {start|stop|status|reload|restart}"exit 1;;
esac
EOF

添加可执行权限:chmod +x node_exporter

运行node exporter

service node_exporter start

绑定端口的方式启动,一个机器上可以运行多个node_exporter

./node_exporter --web.listen-address 127.0.0.1:9100

./node_exporter --web.listen-address 127.0.0.1:9200

./node_exporter --web.listen-address 127.0.0.1:10000

启动成功后,查看端口

netstat -anplt|grep 9100

访问Node Exporter可以看到以下页面

多个node_exporter的状态

如果访问不了页面,查看主机防火墙是否关闭

初始Node Exporter监控指标

 

访问http://localhost:9100/metrics,可以看到当前node exporter获取到的当前主机的所有监控数据,如下所示:

每一个监控指标之前都会有一段类似于如下形式的信息:

# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125

其中HELP用于解释当前指标的含义,TYPE则说明当前指标的数据类型。在上面的例子中node_cpu的注释表明当前指标是cpu0上idle进程占用CPU的总时间,CPU占用时间是一个只增不减的度量指标,从类型中也可以看出node_cpu的数据类型是计数器(counter),与该指标的实际含义一致。又例如node_load1该指标反映了当前主机在最近一分钟以内的负载情况,系统的负载情况会随系统资源的使用而变化,因此node_load1反映的是当前状态,数据可能增加也可能减少,从注释中可以看出当前指标类型为仪表盘(gauge),与指标反映的实际含义一致。

部分监控指标:

  • node_boot_time:系统启动时间
  • node_cpu:系统CPU使用量
  • nodedisk*:磁盘IO
  • nodefilesystem*:文件系统用量
  • node_load1:系统负载
  • nodememeory*:内存使用量
  • nodenetwork*:网络带宽
  • node_time:当前系统时间
  • go_*:node exporter中go相关指标
  • process_*:node exporter自身进程相关运行指标

scrape_configs配置node exporter

为了能够让Prometheus Server能够从当前node exporter获取到监控数据,这里需要修改Prometheus配置文件。编辑prometheus.yml并在scrape_configs节点下添加以下内容:

绑定完后访问Prometheus web服务

 

其中“1”表示正常,反之“0”则为异常。

Prometheus 对 Node_Exporter TLS加密认证

在 Promethues 的监控体系中,社区中一直存在的一个观点是,Metrics 不包含过于私密的信息。所以可以看到大多数的 /metrics 接口都是直接暴露出来的,没什么特别的安全措施。但随着 Prometheus 在生产中的大量应用,安全问题变得更加重要。

为 Prometheus 与监控目标之间的连接启用 TLS。但由于各类 exporter 并不原生支持 TLS 连接,所以通常情况下会选择配合反向代理来完成。这种方式能满足需求,但未免复杂了些。近期 Prometheus 对其安全模型做了修改,从Node Exporter开始到后续其他的组件,都将支持 TLS 和 basic auth, 同时也列出了最新的安全基准(默认情况下都支持 TLS v1.2 及以上)

  • 修改下prometheus.yml配置文件
- job_name: 'node_exporter'basic_auth:username: adminpassword: ******************scheme: httpstls_config:ca_file: node_exporter.crtinsecure_skip_verify: true  # 跳过不安全认证file_sd_configs:
- files
- ‘targets.json’static_configs:- targets: ['localhost:9090']

相关内容

热门资讯

《徐霞客游记》中两次提及的报恩... 从大理市区到鸡足山虽然有点远,但这座曾被徐霞客在他的游记中两次提及的报恩寺的吸引力也是显而易见的。不...
水产品抽检不合格率达4%,生鲜... 近一年来,有不少细心的消费者发现,各大生鲜App的海鲜专区出现了名称前有标注“安心”的水产。 通过“...
“懒人热红酒”刷屏社交平台,蜜... 最近,一款“懒人版”热红酒火上热搜: 买一杯蜜雪冰城棒打鲜橙(热饮),倒入红酒即可得。相关话题浏览量...
抖音2025文旅报告揭晓!万岁... 12月24日抖音生活服务发布《2025文旅数据报告》郑州入选全国十大热门旅游城市洛阳、开封跻身全国十...
首届中国(河南)毛肚产业发展大... 毛肚作为火锅品类中的标志性食材,其产业发展备受关注。12月27日,第一届中国(河南)毛肚产业发展大会...