首页 > 编程语言 >Prometheus(普罗米修斯)监控系统 - 3、操作系统信息监控(node-exporter)

Prometheus(普罗米修斯)监控系统 - 3、操作系统信息监控(node-exporter)

时间:2024-09-11 16:24:48浏览次数:16  
标签:node exporter name kubernetes Prometheus 监控 节点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

下面就以 Ubuntu 系统为例子,部署 node-exporter 并进行监控。


一、部署 node-exporter

若要二进制本地部署运行,请参考 Prometheus node-exporter 文档

这里已 docker 部署为例子,在监控设备上部署 node-exporter ,命令如下:

# 拉取
docker pull prom/node-exporter:v1.8.2
# 运行
docker run -d \
  -p 9100:9100 \
  prom/node-exporter:v1.8.2

二、测试

在浏览器访问 http://<node-exporter_IP>:9100/metrics
若有一大串信息返回,则成功部署 node-exporter


三、加入监控

修改普罗米修斯的 /etc/prometheus/prometheus.rules 文件,追加如下内容并重启服务。

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['<node-exporter_IP>:9100']

在浏览器访问 Prometheus ,点击 “Status” → “Targets” 中若能发现 “node-exporter” 栏,且设备数量对得上,State 为 UP,则代表已接入普罗米修斯监控了。


四、监控进阶

将 K8s 所有 node节点(含新加 k8s 的节点)都自动部署 node-exporter 并进行 Prometheus 监控。

1、Daemonset

写个 Kubernetes 的 daemonset.yaml,并且应用,内容如下

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app.kubernetes.io/component: exporter
    app.kubernetes.io/name: node-exporter
  name: node-exporter
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app.kubernetes.io/component: exporter
      app.kubernetes.io/name: node-exporter
  template:
    metadata:
      labels:
        app.kubernetes.io/component: exporter
        app.kubernetes.io/name: node-exporter
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - key: "dedicated"
        operator: "Equal"
        value: "ceph"
        effect: "NoSchedule"
      - key: "group"
        operator: "Equal"
        value: "gpu"
        effect: "NoSchedule"
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
      - args:
        - --path.sysfs=/host/sys
        - --path.rootfs=/host/root
        - --no-collector.wifi
        - --no-collector.hwmon
        - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
        - --collector.netclass.ignored-devices=^(veth.*)$
        name: node-exporter
        image: prom/node-exporter:v1.8.2
        ports:
          - containerPort: 9100
            protocol: TCP
        resources:
          limits:
            cpu: 250m
            memory: 180Mi
          requests:
            cpu: 102m
            memory: 180Mi
        volumeMounts:
        - mountPath: /host/sys
          mountPropagation: HostToContainer
          name: sys
          readOnly: true
        - mountPath: /host/root
          mountPropagation: HostToContainer
          name: root
          readOnly: true
      volumes:
      - hostPath:
          path: /sys
        name: sys
      - hostPath:
          path: /
        name: root

这个 DaemonSet 是用来在 Kubernetes 集群中每个节点上部署 node-exporter 的,它负责收集每个节点的系统指标并通过 Prometheus 进行监控。它使用 hostNetwork 和挂载主机的文件系统,以便访问节点的相关信息,容器暴露 9100 端口用于指标的导出。

spec.tolerations 部分:
tolerations 的主要作用是允许 node-exporter 在有特定污点(taints)的节点上部署,而这些污点通常会阻止普通的 Pods 被调度到这些节点。
node-role.kubernetes.io/master:
这是用于主节点的污点,通常普通工作负载不会调度到 master 节点上。这条 toleration 允许 node-exporter 在 master 节点上调度和运行,尽管这些节点带有 NoSchedule 污点。
dedicated=ceph:
这条 toleration 允许 node-exporter 被调度到标记为 ceph 的专用节点上,通常这些节点可能是用于 Ceph 分布式存储系统的节点,而其他 Pods 不能调度到这些节点上。
group=gpu:
这条 toleration 是为 GPU 节点准备的,可能是节点配备了 GPU 资源。带有 gpu 污点的节点通常用于机器学习或其他需要 GPU 加速的应用程序。这条规则允许 node-exporter 被调度到这些节点上,收集 GPU 相关的指标。

PS:配置了 K8s 污点默认是不会再在该节点上部署 node-exporter 的,配置 spec.tolerations 是为了能让其自动部署。不需要的可以删掉

2、Prometheus.rules

普罗米修斯的 /etc/prometheus/prometheus.rules 文件如下:

      - job_name: 'node-exporter'
        kubernetes_sd_configs:
          - role: endpoints
        relabel_configs:
        - source_labels: [__meta_kubernetes_endpoints_name]
          regex: 'node-exporter'
          action: keep
  1. kubernetes_sd_configs
    kubernetes_sd_configs 是 Prometheus 内置的 Kubernetes 服务发现配置。通过此配置,Prometheus 可以自动从 Kubernetes 集群中获取被监控的目标。
    role: endpoints 表示 Prometheus 将会从 Kubernetes 中找到被暴露出来的 Endpoints。Endpoints 是 Kubernetes 中服务的 IP 和端口,表示哪些 Pods 通过某个服务暴露出来。
    这种配置不需要手动指定目标 IP 地址,因为 Prometheus 会自动从 Kubernetes API 中发现所有符合条件的 Pods/服务的地址。
  2. relabel_configs:
    elabel_configs 用来对发现的目标进行过滤和转换。在这里,它的作用是过滤出名字为 node-exporter 的 Endpoints。
    source_labels: [__meta_kubernetes_endpoints_name] 通过 Kubernetes 服务发现的 __meta_kubernetes_endpoints_name 标签提取 Endpoints 的名称。
    regex: ‘node-exporter’ 用于匹配 Endpoints 名字为 node-exporter 的那些服务,只有匹配成功的目标会被 Prometheus 继续监控。
    action: keep 表示保留这些匹配到的目标,丢弃其他不匹配的目标。

3、测试

和上面一样,若能在浏览器访问 Prometheus ,点击 “Status” → “Targets” 中若能发现 “node-exporter” 栏,且设备数量对得上,State 为 UP,则代表已接入普罗米修斯监控了。

其他

报警规则、看板制作、消息推送,由后面的更新的Prometheus+Grafana的部署篇章中会详细说明。

目前,已更新的所有普罗米修斯及其相关篇章:

Prometheus(普罗米修斯)监控系统 - 1、基本原理

Prometheus(普罗米修斯)监控系统 - 2、网络等硬件设备监控(snmp-exporter)

Prometheus(普罗米修斯)监控系统 - 3、操作系统信息监控(node-exporter)

标签:node,exporter,name,kubernetes,Prometheus,监控,节点
From: https://blog.csdn.net/weixin_41004518/article/details/142104643

相关文章

  • 如何使用zabbix内置 key 配置windows服务监控
    原作者:乐维社区原出处:乐维社区原文章链接:https://forum.lwops.cn/article/618windows的服务管理工具中有许多不同类型的服务,包括系统、应用程序、驱动程序、自定义服务等。在监控这些windows服务的时候,我们可以直接使用内置的函数key去进行监控。 Zabbix的内置key(键值)系统是......
  • node安装与使用
    nvm安装使用yum安装node,最新只能安装到0.12.X版本,而自定义安装二进制的又有点麻烦,所以用nvm安装(如果命令下载不下来可以手动下载到服务器上执行)。nvm是一款运行在linxu系统上的node版本管理平台(以下为linux版本不过目前也出了windows版本,具体自己查),安装完成后,记得重新打......
  • 如何在 VPS 上使用 NVM(Node Version Manager)安装 Node.js
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。介绍如果你已经知道Node.js是什么,它是用来做什么的,以及为什么它很酷,那么可以直接跳到安装说明。如果你想更多地了解Node及其生态系统,请继续阅读。对于那些还没有听说......
  • 在Ubuntu 18.04上安装Node.js的方法
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。介绍Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端都使用JavaScript,Node.js使开发更加一致和集成。在本指南中,您将学......
  • 使用kube-prometheus部署k8s监控---超详细(Kubernetes Deployment of Kubernetes Moni
    ......
  • 强!70.3K star ! 推荐一款功能强大、开源、可视化的性能实时监控系统:Netdata
    在当今复杂多变的IT环境中,系统性能的实时监控与分析对于确保业务连续性、系统稳定运行以及快速故障排查至关重要。随着云计算、大数据和微服务架构的普及,对监控系统的要求也日益增高。今天给大家推荐一款性能监控工具为:Netdata。它作为一款开源、实时、轻量级的系统性能监控工......
  • Electron - #005 后端node调用文件打开对话框获取绝对路径传递给前端
    文章目录后端node调用文件打开对话框获取绝对路径传递给前端1目标2步骤2.1src-electron/main.js2.2src-electron/preload.js2.3HelloWorld.vue2.4运行工程后端node调用文件打开对话框获取绝对路径传递给前端1目标后端node调用文件打开对话框获取绝对路径......
  • Python进行监控文件
    `--coding:utf-8--@Time:2024/3/110:02@Author:Rohing@File:监控文件.py@Software:PyCharm`importtimeimportloggingimportfnmatchfromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemEventHandlerlogger=logging.......
  • 推荐10款功能强大的电脑监控软
    随着工作环境和信息安全要求的不断提高,越来越多的企业和个人开始关注电脑监控软件。电脑监控软件能够帮助管理者监控员工工作效率、保护敏感信息、防止数据泄露等。下面,我们将为大家推荐10款功能强大的电脑监控软件,涵盖国内外的知名产品,让您更好地了解和选择适合自己的解决方案......
  • fnm安装及配置,Linux中实现node版本管理
    fnm安装及配置,Linux中实现node版本管理源码:Schniz/fnm:......