配置node_exporter

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

从上面的描述中可以看出Exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。

这里为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用Node Exporter 。

node_exporter安装部署

配置hosts文件解析并修改主机名(在Prometheus ,node1,node2都要配置)Prometheus安装文档

[root@locathost ~]#  vim /etc/hosts
192.168.100.100 prometheus
192.168.100.10 node2
192.168.100.9 node2

修改主机名
Prometheus服务器
[root@prometheus ~]# hostnamectl set-hostname prometheus

node1 node2
[root@node1 ~]#   hostnamectl set-hostname node1
[root@node2 ~]#   hostnamectl set-hostname node2

配置时间服务器同步时间

prometheus服务器
[root@prometheus ~]# yum -y install ntp ntpdate
[root@prometheus ~]# sed -i '/^server/s/^/#/g' /etc/ntp.conf
[root@prometheus ~]# cat <>/etc/ntp.conf
 server 127.127.1.0
 fudge 127.127.1.0 stratum 8
 END
[root@prometheus ~]# systemctl enable ntpd --now
[root@prometheus ~]# ntpdate ntp1.aliyun.com

node服务器(node1和node2配置相同再此只拿node1举栗子)
[root@node1 ~]# yum -y install ntpdate
[root@node1 ~]# /usr/sbin/ntpdate 192.168.100.100

下载node_exporter(node1和node2配置相同再此只拿node1举栗子) Prometheus官网

[root@node1 ~]# tar  zxvf node_exporter-1.5.0.linux-amd64.tar.gz 
[root@node1 ~]# mv node_exporter-1.5.0.linux-amd64 /usr/local/exporter

配置系统启动脚本
[root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target

[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/exporter/node_exporter  --web.listen-address=:20001 --collector.systemd  --collector.systemd.unit-whitelist=(sshd|nginx).service  --collector.processes  --collector.tcpstat
[Install] 
WantedBy=multi-user.target

[root@node1 ~]# useradd  -M -s /sbin/nologin prometheus
[root@node1 ~]# chown -R prometheus:prometheus /usr/local/exporter/

[root@node1 ~]# systemctl enable --now node_exporter
[root@node1 ~]# systemctl status node_exporter.service 

[root@node2 ~]# firewall-cmd --add-port=20001/tcp --permanent 
[root@node2 ~]# firewall-cmd --reload 

访问192.168.100.9:20001 192.168.100.10:20001可以看到这个页面

配置node_exporter_第1张图片
配置node_exporter_第2张图片

初始Node Exporter监控指标

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

配置node_exporter_第3张图片

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

  1. # HELP node_cpu Seconds the cpus spent in each mode.

  1. # TYPE node_cpu counter

  1. node_cpu{cpu="cpu0",mode="idle"} 362812.7890625

  1. # HELP node_load1 1m load average.

  1. # TYPE node_load1 gauge

  1. 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自身进程相关运行指标

配置prometheus采集node端信息

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

[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: "node"
  static_configs:
     - targets:
       - "192.168.100.9:20001"
       - "192.168.100.10:20001"

###注意格式!!!

[root@prometheus ~]# systemctl restart prometheus
[root@prometheus ~]# systemctl status prometheus

查看集成

配置node_exporter_第4张图片
配置node_exporter_第5张图片

使用PromQL查询监控数据

Prometheus UI是Prometheus内置的一个可视化管理界面,通过Prometheus UI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。通过Graph面板,用户还能直接使用PromQL实时查询监控数据:

配置node_exporter_第6张图片

PromQL是Prometheus自定义的一套强大的数据查询语言,除了使用监控指标作为查询关键字以为,还内置了大量的函数,帮助用户进一步对时序数据进行处理。例如使用rate()函数,可以计算在单位时间内样本数据的变化情况即增长率,因此通过该函数我们可以近似的通过CPU使用时间计算CPU的利用率:

  1. rate(node_cpu_seconds_total[2m])

配置node_exporter_第7张图片

这时如果要忽略是哪一个CPU的,只需要使用without表达式,将标签CPU去除后聚合数据即可

avg without(cpu) (rate(node_cpu_seconds_total[2m]))

配置node_exporter_第8张图片

你可能感兴趣的:(linux,运维,centos)