Node Exporter 简介

概述


Node Exporter 简介_第1张图片

Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics 

另外,如果因为环境原因,网络不可达的场景,Prometheus可以使用Pushgateway这个组件推送node-exporter的指标数据到远端Prometheus

node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent

node-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。

功能


node-exporter用于采集类UNIX内核的硬件以及系统指标

Windows系统使用 WMI-exporter

如果是采集NVIDIA的GPU指标,可以使用 prometheus-dcgm

根据不同的类UNIX操作系统,node-exporter采集指标的支持也是不一样的,如:

  • diskstats 支持 Darwin, Linux

  • cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,

GitHub地址:node_exporter

--collectors.enabled 指定node_exporter收集的功能模块

--no-collector 指定不需要的模块

监控节点


Prometheus使用exporter工具来暴露主机和应用程序上的指标,目前有很多可用于各种目的的exporter。现在我们将专注于一个特定的exporter:Node Exporter。

它是用Go语言编写的,提供了一个可用于收集各种主机指标数据(包括CPU、内存和磁盘)的库。它还有一个textfile收集器,允许你导出静态指标,我们很快就会看到这对发送有关节点的信息很有帮助,此外它还可以从批处理作业导出指标。

我们有时会使用术语 节点 来指代主机。 首先选择其中一台Linux 主机,然后下载并安装 Node Exporter 。我们将选择一个 Docker 守护进程主机

配置Node Exporter


可以通过参数来对node_exporter进行配置,使用--help查看完整的参数列表。

你将看到可用参数的列表。默认情况下, node_exporter 在端口 9100 上运行,并在路径 /metrics 上暴 露指标。你可以通过--web.listen-address --web.telemetry-path 参数来设置端口和路径,如下所示:

这会将 node_exporter 绑定到端口 9600 并在路径 /node-metrics 上暴露指标。 这些参数还可以控制启用哪些收集器,许多收集器默认都是启用的 。它们的状态要么是启用要么是禁用,你可以通过使用no- 前缀来修改状态。例如, 暴露/proc/net/arp统计信息的arp收集器默认是 启用的,由参数--collector.arp控制。因此,要禁用此收集器,需要运行如下命令:

配置textfile收集器


我们还想配置一个特定的收集器,即textfile收集器,本章后面将使用它。textfile收集器非常有用,因为它允许我们暴露自定义指标。这些自定义指标可能是批处理或cron作业等无法抓取的,可能是没有exporter的源,甚至可能是为主机提供上下文的静态指标。
收集器通过扫描指定目录中的文件,提取所有格式为 Prometheus 指标的字符串,然后暴露它们以便抓取。
现在让我们设置收集器,首先创建一个目录来保存指标定义文件。

现在在这个目录中创建一个新的指标。刚创建的目录中,指标在以.prom结尾的文件内定义,并且使用Prometheus特定文本格式

启用systemd收集器


这里我们再启用另一个systemd收集器,它记录systemd[1]中的服务和系统状态。这个收集器收集了很多指标,但我们并不想收集systemd管理的所有内容,而只想收集某些关键服务。为了保持简洁,我们可以将特定服务列入白名单,只收集以下服务的指标:
  • docker.service
  • ssh.service
  • rsyslog.service

 它们是Docker守护进程、SSH守护进程和RSyslog守护进程。使用--collector.systemd.unit-whitelist参数进行配置,它会匹配systemd的正则表达式。

运行Node Exporter


最后,可以在其中一个Docker节点上启动node_exporter,如下所示:

                                       启动 Node Exporter 启用textfile收集器和systemd收集器

我们已经为textfile 收集器指定了目录以查找指标,然后启用了 systemd 收集器,并使用正则表达式 白名单过滤待监控的服务。
现在 Node Exporter 正在其中一个 Docker 节点上运行,让我们将其添加到其他节点。总共有 3 个节点,现在使用相同的策略来配置其他两个节点。每个节点的名称和IP 地址是:
  • Docker1138.197.26.39
  • Docker2138.197.30.147
  • Docker3138.197.30.163
现在让我们看看如何抓取刚刚导出的时间序列数据。

抓取Node Exporter


回到Prometheus服务器,让我们配置一个新作业来抓取Node Exporter导出的数据。查看当前prometheus.yml文件和抓取配置中的scrape_configs部分。
                                                                                                                           当前 Prometheus 抓取配置

要获取新数据,需要为配置添加另一个作业。我们打算给新作业起名为 node,并将继续使用static_configs来添加单个目标,而不是使用服务发现。现在让我们添加新作业。
                                                                                                                                                  添加新作业
Node Exporter 简介_第2张图片
可以看到我们添加了名为 node 的新作业。它包含一个 static_configs 块,通过 IP 地址加端口 9100 的方式添加了三个Docker 主机的列表。 Prometheus 假设 Node Exporter 具有默认路径 /metrics ,并且抓取的目
标形式如下:

如果现在使用SIGHUP或重新启动Prometheus服务器,那么我们的配置将被重新加载,并且服务器也会开始抓取。我们很快就会看到时间序列数据开始流入Prometheus服务器。

过滤收集器


Node Exporter可以返回很多指标,也许 你并不想把它们全部收集上来除了通过本地配置来控制Node Exporter在本地运行哪些收集器之外,Prometheus还提供了一种方式来限制收集器从服务器端实际抓取的数据,尤其是在你无法控制正抓取的主机的配置时,这种方式非常有帮助。
Prometheus 通过添加特定收集器列表来实现作业配置
                                                                                                                                                                             过滤收集器

Node Exporter 简介_第3张图片

  - job_name: 'BJ Linux Server'
    basic_auth:
      username: prometheus
      password: 123456
    static_configs:
    - targets: ['192.168.179.99:9100','192.168.179.100:9100']
      labels:
        idc: tongniu
        project: www
    params:
      collect[]:
        - cpu

 这里,我们将被抓取的指标限制在上面的收集器列表中,使用params块中的collect[]列表指定,然后将它们作为URL参数传递给抓取请求。你可以使用Node Exporter实例上的curl命令来对此进行测试。

    - job_name: 'kubernetes-node-exporter'
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__address__]
        regex: '(.*):10250'
        replacement: '${1}:9100'
        target_label: __address__
        action: replace
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      params:
        collect[]:
        - cpu

Node Exporter 简介_第4张图片Node Exporter 简介_第5张图片                                                                                                                                                                                                                    测试收集参数

这将返回 Node Exporter 基本指标, 例如我们在Prometheus服务器上看到的Go指标,以及CPU收集器生成的指标,所有其他指标都将被忽略。 就目前而言,我们会收集Prometheus 服务器上的所有内容。

你可能感兴趣的:(prometheus)