快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」

1centos7.x机器上如何安装node-exporter呢?我想利用k8s里部署的prometheus来监控自己pve里一台frp虚机(192.168.1.11)呢?要实现 K8s 中 Prometheus 监控 PVE 里的 CentOS 7 虚拟机(192.168.1.11),分两步:在 CentOS 7 安装 node-exporter → 在 K8s 中配置 Prometheus 抓取该外部节点。
1有k8s环境;
2已经把prometheus应用部署到k8s环境里;关于如何将prometheus应用部署到k8s环境里,请查看我的另一篇文章,获取完整的部署方法!。
《实战-prometheus部署到k8s-2022.4.29(测试成功)》https://onedayxyy.cn/topic/fhkgp

1# 下载最新版(可去 https://prometheus.io/download/ 查最新版本)
2cd /usr/local/bin
3#wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
4#我已存到自己七牛云对象存储里了
5wget https://file.onedayxyy.cn/source/node_exporter-1.9.1.linux-amd64.tar.gz
6
7tar -zxvf node_exporter-1.9.1.linux-amd64.tar.gz
8mv node_exporter-1.9.1.linux-amd64/node_exporter .
9chmod +x node_exporter1vim /etc/systemd/system/node_exporter.service写入:
1[Unit]
2Description=Node Exporter
3After=network.target
4
5[Service]
6User=root
7ExecStart=/usr/local/bin/node_exporter \
8 --web.listen-address=0.0.0.0:9100 \
9 --web.telemetry-path=/metrics
10
11Restart=always
12RestartSec=5
13
14[Install]
15WantedBy=multi-user.target1systemctl daemon-reload
2systemctl start node_exporter
3systemctl enable node_exporter
4systemctl status node_exporter防火墙如果关闭的话,次步骤可忽略。
1firewall-cmd --permanent --add-port=9100/tcp
2firewall-cmd --reload1# 看端口监听
2ss -tulnp | grep 9100
3
4# 看指标(在本机或 K8s 节点上执行)
5curl http://192.168.1.11:9100/metrics能返回文本指标即正常。
假设你用 Prometheus Operator(kube-prometheus-stack) 部署在 monitoring 命名空间。
external-node-exporter.yaml
1apiVersion: v1
2kind: Service
3metadata:
4 name: external-node-exporter
5 namespace: monitoring
6 labels:
7 app: external-node-exporter
8spec:
9 type: ClusterIP
10 ports:
11 - name: metrics
12 port: 9100
13 targetPort: 9100
14 protocol: TCP
15
16---
17apiVersion: v1
18kind: Endpoints
19metadata:
20 name: external-node-exporter
21 namespace: monitoring
22 labels:
23 app: external-node-exporter
24subsets:
25- addresses:
26 - ip: 192.168.1.11 # 你的PVE虚机IP
27 ports:
28 - name: metrics
29 port: 9100 1apiVersion: monitoring.coreos.com/v1
2kind: ServiceMonitor
3metadata:
4 name: external-node-exporter
5 namespace: monitoring
6 labels:
7 release: prometheus # 对应你 helm install 的 release name
8spec:
9 selector:
10 matchLabels:
11 app: external-node-exporter
12 namespaceSelector:
13 matchNames:
14 - monitoring
15 endpoints:
16 - port: metrics
17 interval: 15s
18 path: /metrics
19 scrapeTimeout: 10s1kubectl apply -f external-node-exporter.yaml如果你是直接部署 Prometheus Deployment(非 Operator),修改 prometheus.yml:
1 # 新增:监控集群外机器
2 - job_name: 'external-nodes'
3 static_configs:
4 - targets:
5 - '192.168.1.11:9100' # 外部机器1 frp
6 metrics_path: '/metrics'
7 scheme: 'http'完整配置:
1# prometheus-cm.yaml
2apiVersion: v1
3kind: ConfigMap
4metadata:
5 name: prometheus-config
6 namespace: monitor
7data:
8 prometheus.yml: |
9 global:
10 scrape_interval: 15s
11 scrape_timeout: 15s
12
13 scrape_configs:
14 - job_name: 'prometheus'
15 static_configs:
16 - targets: ['localhost:9090']
17
18 # 新增:监控集群外机器
19 - job_name: 'external-nodes'
20 static_configs:
21 - targets:
22 - '192.168.1.11:9100' # 外部机器1 frp
23 metrics_path: '/metrics'
24 scheme: 'http'
25
26
27
28 - job_name: 'nodes'
29 kubernetes_sd_configs:
30 - role: node
31 relabel_configs:
32 - source_labels: [__address__]
33 regex: '(.*):10250'
34 replacement: '${1}:9100'
35 target_label: __address__
36 action: replace
37 - action: labelmap
38 regex: __meta_kubernetes_node_label_(.+)
39
40 - job_name: 'kubelet'
41 kubernetes_sd_configs:
42 - role: node
43 scheme: https
44 tls_config:
45 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
46 insecure_skip_verify: true
47 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
48 relabel_configs:
49 - action: labelmap
50 regex: __meta_kubernetes_node_label_(.+)
51
52 - job_name: 'kubernetes-apiservers'
53 kubernetes_sd_configs:
54 - role: endpoints
55 scheme: https
56 tls_config:
57 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
58 insecure_skip_verify: true
59 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
60 relabel_configs:
61 - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
62 action: keep
63 regex: default;kubernetes;https1#部署
2kubectl apply -f prometheus-cm.yaml
3
4#查看
5kubectl exec prometheus-648d9cc6b4-5mwjz -nmonitor -- cat /etc/prometheus/prometheus.yml
6
7#热更新
8curl -X POST "http://192.168.1.25:31639/-/reload"
首页左上角切换到external-nodesjob:

Prometheus UI 查看 Targets
pve-frp-vm (或 external-node-exporter) 状态为 UP网络连通性(在 K8s 节点测试)
1curl http://192.168.1.11:9100/metrics不通:检查 防火墙、路由、FRP 穿透是否放行 9100、PVE 网络是否互通。
Grafana 展示
192.168.1.11:9100(或 FRP 映射后的公网地址:端口)。需要我帮你生成 一键安装 node-exporter 的脚本,并根据你的 K8s Prometheus 环境给出可直接 kubectl apply 的完整 YAML 吗?
帮我生成 一键安装 node-exporter 的脚本
下面给你一个 CentOS 7 专用、一键全自动安装 node-exporter 的脚本,复制到服务器上直接运行即可。
次脚本自己未亲自测试,仅仅留存。
1#!/bin/bash
2
3# 定义版本
4VERSION="1.9.1"
5BINARY="node_exporter-${VERSION}.linux-amd64"
6TAR_FILE="${BINARY}.tar.gz"
7DOWNLOAD_URL="https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/${TAR_FILE}"
8
9# 下载并解压
10cd /usr/local/src
11echo "下载 node_exporter ${VERSION}..."
12wget -q --show-progress ${DOWNLOAD_URL}
13
14tar zxf ${TAR_FILE}
15cp ${BINARY}/node_exporter /usr/local/bin/
16chmod +x /usr/local/bin/node_exporter
17
18# 清理
19rm -rf ${BINARY} ${TAR_FILE}
20
21# 创建 systemd 服务
22cat > /etc/systemd/system/node_exporter.service <<EOF
23[Unit]
24Description=Node Exporter
25After=network.target
26
27[Service]
28User=root
29ExecStart=/usr/local/bin/node_exporter \
30 --web.listen-address=:9100 \
31 --web.telemetry-path=/metrics
32
33Restart=always
34RestartSec=5
35LimitNOFILE=65536
36
37[Install]
38WantedBy=multi-user.target
39EOF
40
41# 重载服务并启动
42systemctl daemon-reload
43systemctl enable node_exporter
44systemctl start node_exporter
45
46# 防火墙放行 9100
47if systemctl is-active --quiet firewalld; then
48 firewall-cmd --permanent --add-port=9100/tcp
49 firewall-cmd --reload
50fi
51
52# 检查状态
53echo -e "\n=== node_exporter 安装完成 ==="
54systemctl status node_exporter --no-pager
55
56echo -e "\n测试指标接口:"
57curl -s http://localhost:9100/metrics | head -5😎使用方法
1vi install_node_exporter.sh粘贴上面全部内容,保存退出。
加权限并运行:
1chmod +x install_node_exporter.sh
2./install_node_exporter.sh😎安装完成后验证
1# 查看状态
2systemctl status node_exporter
3
4# 测试指标
5curl http://192.168.1.11:9100/metrics正常返回一堆 metrics 文本就说明可以被 Prometheus 抓取了。
需要我顺便把 K8s 里抓取这个节点的 ServiceMonitor YAML 也给你生成好吗?直接复制就能用。
我的博客主旨:
🍀 个人网站:https://onedayxyy.cn/

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

🍀 微信公众号
《云原生架构师实战》

🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

🍀 知乎
https://www.zhihu.com/people/foryouone

如果你还有疑惑,可以去我的网站查看更多内容或者联系我帮忙查看。
如果你有更好的方式,评论区留言告诉我。谢谢!
好了,本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

结束。
日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白