Node Export 监控 Linux主机

如何监控服务?


如果要想监控,前提是能获取被监控端指标数据,并且这个数据格式必须遵循Prometheus数据模型,这样才能识别和采集,一般使用exporter提供监控指标数据。
exporter列表: https://prometheus.io/docs/instrumenting/exporters

监控mysql需要安装mysql exporter这个组件,这个组件会连接mysql,从mysq获取到想监控的指标

当你知道要监控哪些服务,那么需要准备相应的exporter组件,准备好之后只要这些组件可以去连接监控的目标,那么启动之后暴露的接口可以在浏览器访问。那么在普罗米修斯配置就会周期性的去采集这些指标写到tsdb数据库当中由grafana去展示

 

node_exporter是什么?


Node Exporter 是用于暴露 *NIX 主机指标的 Exporter,比如采集 CPU、内存、磁盘等信息。采用 Go 编写,不存在任何第三方依赖,所以只需要下载解压即可运行。 

Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。

node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的zabbix-agent。

node_exporter:用于监控Linux系统的指标采集器。

常用指标:

•CPU

• 内存

• 硬盘

• 网络流量

• 文件描述符

• 系统负载

• 系统服务

数据接口:http://IP:9100

使用文档:https://prometheus.io/docs/guides/node-exporter/

GitHub:GitHub - prometheus/node_exporter: Exporter for machine metrics

☸ ➜ curl http://localhost:9100/metrics
......
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 0.01
# HELP node_load15 15m load average.
# TYPE node_load15 gauge
node_load15 0.05
# HELP node_load5 5m load average.
# TYPE node_load5 gauge
node_load5 0.04
# HELP node_memory_Active_anon_bytes Memory information field Active_anon_bytes.
# TYPE node_memory_Active_anon_bytes gauge
node_memory_Active_anon_bytes 8.4393984e+07
# HELP node_memory_Active_bytes Memory information field Active_bytes.
# TYPE node_memory_Active_bytes gauge
node_memory_Active_bytes 1.8167808e+08
# HELP node_memory_Active_file_bytes Memory information field Active_file_bytes.
# TYPE node_memory_Active_file_bytes gauge
node_memory_Active_file_bytes 9.7284096e+07
# HELP node_memory_AnonHugePages_bytes Memory information field AnonHugePages_bytes.
# TYPE node_memory_AnonHugePages_bytes gauge
node_memory_AnonHugePages_bytes 3.5651584e+07
# HELP node_memory_AnonPages_bytes Memory information field AnonPages_bytes.
# TYPE node_memory_AnonPages_bytes gauge
node_memory_AnonPages_bytes 8.159232e+07
# HELP node_memory_Bounce_bytes Memory information field Bounce_bytes.
# TYPE node_memory_Bounce_bytes gauge
node_memory_Bounce_bytes 0
......

该 metrics 接口数据就是一个标准的 Prometheus 监控指标格式,我们只需要将该端点配置到 Prometheus 中即可抓取该指标数据。为了了解 node_exporter 可配置的参数,我们可以使用 ./node_exporter -h 来查看帮助信息:

☸ ➜ ./node_exporter -h
    --web.listen-address=":9100"  # 监听的端口,默认是9100
    --web.telemetry-path="/metrics"  # metrics的路径,默认为/metrics
    --web.disable-exporter-metrics  # 是否禁用go、prome默认的metrics
    --web.max-requests=40     # 最大并行请求数,默认40,设置为0时不限制
    --log.level="info"        # 日志等级: [debug, info, warn, error, fatal]
    --log.format=logfmt     # 置日志打印target和格式: [logfmt, json]
    --version                 # 版本号
    --collector.{metric-name} # 各个metric对应的参数
    ......

我们可以使用 --collectors.enabled参数指定node_exporter收集的功能模块,或者用--no-collector指定不需要的模块,如果不指定,将使用默认配置。

其中最重要的参数就是 --collector.<name>,通过该参数可以启用我们收集的功能模块,node_exporter 会默认采集一些模块,要禁用这些默认启用的收集器可以通过 --no-collector.<name> 标志来禁用,如果只启用某些特定的收集器,基于先使用 --collector.disable-defaults 标志禁用所有默认的,然后在通过指定具体的收集器 --collector.<name> 来进行启用。下图列出了默认启用的收集器: 

 

部署node_exporter


docker部署

下载镜像

docker pull prom/node-exporter

生成容器

docker run -d -p 9100:9100 prom/node-exporter

在这里插入图片描述

 验证是否安装成功——访问URL http://服务器IP:9100/metrics

在这里插入图片描述

二进制部署 

 Node-export也是二进制部署,监控哪台机器就在哪台机器上部署

[root@k8s-master ~]# tar xf node_exporter-1.0.1.linux-amd64.tar.gz 
[root@k8s-master ~]# mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
[root@k8s-master ~]# cd /usr/local/node_exporter/
[root@k8s-master node_exporter]# ls
LICENSE  node_exporter  NOTICE
[root@k8s-master node_exporter]# ./node_exporter 

可以看到将指标暴露出来了 

为了方便管理使用系统服务管理

[root@k8s-master ~]# cat /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.targetcd

[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl start node_exporter
[root@k8s-master ~]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.

k8s部署

[root@master prometheus]# cat node-export.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitor
  labels:
    name: node-exporter
spec:
  selector:
    matchLabels:
     name: node-exporter
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
      - name: node-exporter
        image: prom/node-exporter:v0.16.0
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15
        securityContext:
          privileged: true
        args:
        - --path.procfs
        - /host/proc
        - --path.sysfs
        - /host/sys
        - --collector.filesystem.ignored-mount-points
        - '"^/(sys|proc|dev|host|etc)($|/)"'
        volumeMounts:
        - name: dev
          mountPath: /host/dev
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: rootfs
          mountPath: /rootfs
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /


[root@master prometheus]# kubectl get pod -n monitor
NAME                  READY   STATUS    RESTARTS   AGE
node-exporter-75wzb   1/1     Running   0          19m
node-exporter-pgttj   1/1     Running   0          19m
node-exporter-t8zsg   1/1     Running   0          19m

 

 

采集到的数据


[root@master prometheus]# curl http://192.168.100.5:9100/metrics | grep node_cpu_seconds_total
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 380.18
node_cpu_seconds_total{cpu="0",mode="iowait"} 1964.76
node_cpu_seconds_total{cpu="0",mode="irq"} 0
node_cpu_seconds_total{cpu="0",mode="nice"} 0.02
node_cpu_seconds_total{cpu="0",mode="softirq"} 9.72
node_cpu_seconds_total{cpu="0",mode="steal"} 0
node_cpu_seconds_total{cpu="0",mode="system"} 146.12
node_cpu_seconds_total{cpu="0",mode="user"} 215.83
node_cpu_seconds_total{cpu="1",mode="idle"} 354.05
node_cpu_seconds_total{cpu="1",mode="iowait"} 1987.14
node_cpu_seconds_total{cpu="1",mode="irq"} 0
node_cpu_seconds_total{cpu="1",mode="nice"} 0.02
node_cpu_seconds_total{cpu="1",mode="softirq"} 6.77
node_cpu_seconds_total{cpu="1",mode="steal"} 0
node_cpu_seconds_total{cpu="1",mode="system"} 147.74
node_cpu_seconds_total{cpu="1",mode="user"} 216.93
100  106k  100  106k    0     0  8283k      0 --:--:-- --:--:-- --:--:-- 8888k

可以看到每个cpu采集到的指标,下面是负载相关的指标,分别在1m,15m,5m

[root@master prometheus]# curl http://192.168.100.5:9100/metrics | grep node_load
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  106k  100  106k    0     0  7519k      0 --:--:-- --:--:-- --:--:-- 8207k
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 2.31
# HELP node_load15 15m load average.
# TYPE node_load15 gauge
node_load15 2.49
# HELP node_load5 5m load average.
# TYPE node_load5 gauge
node_load5 2.41

监控linux主机


这里配置组名

采用接口和访问http方式不需要配置,默认

  - job_name: 'webserver'
    static_configs:
    - targets: ['192.168.179.99:9100','192.168.179.102:9100']

配置好使用工具对其检查,检查配置文件是否正常

[root@localhost prometheus]# ./promtool check config prometheus.yml 
Checking prometheus.yml
  SUCCESS: 0 rule files found

 启用热加载配置,不重启服务

[root@localhost prometheus]# ps -ef | grep prometheus
[root@localhost prometheus]# kill -HUP 27228

看看 指标是否被采集到了?

Grafana展示


grafana维护了仪表盘,里面存放了许多的仪表盘

使用Grafana展示node_exporter数据指标,仪表盘ID: 9276

这里可以导入你的json文件或者使用grafana仓库里面的

Dashboards | Grafana Labs

这里包含了大量的仪表盘

这两个没有数据,打开编辑里面的promql

 修改为指定的网卡

上面的语句就是普罗米修斯的查询语言

irate(node_network_receive_bytes_total{instance=~'$node',device=~'ens32'}[5m])*8

Grafana通过普罗米修斯的查询语言获取指定的数据

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您想了解如何使用Grafana监控多台Linux主机。下面是一些基本步骤: 1. 安装和配置Prometheus:您需要在其中一台Linux主机上安装和配置Prometheus,以便收集所有Linux主机的指标数据。您可以参考Prometheus官方文档进行安装和配置。 2. 在每台Linux主机上安装和配置Node Exporter:Node Exporter是Prometheus的一个重要组件,它用于收集Linux主机的指标数据。您需要在每个Linux主机上安装和配置Node Exporter。您可以参考Node Exporter官方文档进行安装和配置。 3. 配置Prometheus来收集Node Exporter的指标数据:在Prometheus配置文件中添加以下内容,以便收集每个Linux主机的指标数据: ``` - job_name: 'node' static_configs: - targets: ['<linux_host_ip>:9100', '<linux_host2_ip>:9100'] ``` 注意:您需要将`<linux_host_ip>`和`<linux_host2_ip>`替换为每个Linux主机的IP地址。 4. 安装和配置Grafana:您需要在其中一台Linux主机上安装和配置Grafana。您可以参考Grafana官方文档进行安装和配置。 5. 创建Grafana仪表盘:在Grafana中创建一个仪表盘,以便展示您收集的Linux主机的指标数据。您可以使用Grafana内置的模板,或者创建自定义面板,来展示您感兴趣的指标数据。 6. 在Grafana中配置Prometheus数据源:在Grafana中添加Prometheus数据源的配置,以便从Prometheus收集指标数据。 7. 在Grafana中配置变量:如果您想展示多个Linux主机的指标数据,您可以使用Grafana的变量功能。您可以创建一个变量,然后将其用作查询中的过滤器。这样,您就可以动态地切换不同的Linux主机。 希望以上信息能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值