1.在监控节点上先创建目录和配置文件
SHELL#!/bin/bash
# 创建所需的目录结构
mkdir -p /monitoring/prometheus
mkdir -p /monitoring/prometheus/targets
mkdir -p /monitoring/grafana/dashboards
mkdir -p /monitoring/data
mkdir -p /monitoring/grafana/provisioning/datasources
# 创建 Prometheus 配置文件
cat > /monitoring/prometheus/prometheus.yml << EOF
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
file_sd_configs:
- files:
- '/monitoring/prometheus/targets/*.yml'
EOF
chmod +x /monitoring/prometheus/prometheus.yml
# 创建 Grafana 数据源配置文件
cat > monitoring/grafana/provisioning/datasources/prometheus-datasource.yml << EOF
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://localhost:9090
access: proxy
isDefault: true
EOF
echo "文件夹和配置文件已创建完成!"
SHELLglobal: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' file_sd_configs: - files: - '/monitoring/prometheus/targets/*.yml' - job_name: 'temperature' file_sd_configs: - files: - '/monitoring/prometheus/targets/*.yml'
运行脚本
SHELLbash create_monitoring_dirs.sh
在监控节点上添加被控节点.yaml文件 目录是/monitoring/prometheus/targets/nodex.yml 其中nodex是某节点面子,内容也需要更改IP项
SHELLcat > /monitoring/prometheus/targets/nodex.yml << EOF - targets: - 'IP:9100' EOF
docker的镜像加速地址
SHELLsudo cat <<EOF > /etc/docker/daemon.json { "registry-mirrors": ["https://docker.laoyugan.com"] } EOF
监控节点起pm容器和grafana容器 启容器的时候会失败退出,因为响应的文件权限需要修改
chmod 777 -R /monitoring/
Prometheus:
SHELLdocker run -d \ --name prometheus \ -p 9090:9090 \ -v /monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ -v /monitoring/prometheus/targets/:/monitoring/prometheus/targets/ \ -v /monitoring/data:/prometheus \ prom/prometheus:latest
grafana :
SHELLdocker run -d --name grafana \ -p 3000:3000 \ -v /monitoring/grafana:/var/lib/grafana \ grafana/grafana:latest
查看容器情况
docker ps -a 来查看docker容器情况

访问IP
来验证是否搭建好(有开防火墙记得放行端口)grafana默认账密是 admin/admin 初次登录会要求修改密码
设置成中文
再设置数据源-Prometheus
再设置面板ID 11074
被监控节点设置监控温度脚本
SHELL#!/bin/bash
OUTPUT_DIR="/temperature/"
OUTPUT_FILE="$OUTPUT_DIR/temperature.prom"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 读取温度数据
TEMP_DATA=$(sensors)
# 提取并格式化温度为 Prometheus 格式
echo "# HELP system_temperature_celsius System temperature in Celsius." > "$OUTPUT_FILE"
echo "# TYPE system_temperature_celsius gauge" >> "$OUTPUT_FILE"
echo "$TEMP_DATA" | grep -E "Core [0-9]+:" | while read -r line; do
# 提取核心编号和温度
CORE=$(echo "$line" | awk '{print $1$2}' | sed 's/://g' | tr '[:upper:]' '[:lower:]')
TEMP=$(echo "$line" | awk '{print $3}' | sed 's/+//g; s/°C//g')
# 写入 Prometheus 格式
echo "system_temperature_celsius{core=\"$CORE\"} $TEMP" >> "$OUTPUT_FILE"
done
加入计划任务 每分钟跑一次
crontab -e
crontab内容
* * * * * /path/to/temperature_monitor.sh
被监控节点node docker启动
shelldocker run -d --name node-exporter \ --net="host" \ --pid="host" \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ -v /run/udev:/run/udev:ro \ -v /temperature:/textfile_collector \ prom/node-exporter:latest \ --web.listen-address="[::]:9100" \ --path.procfs=/host/proc \ --path.sysfs=/host/sys \ --collector.textfile.directory=/textfile_collector
其中 -v /temperature:/textfile_collector \是把主机存放温度输出的目录挂载到docker容器里,本文实例存放在根目录底下/temperature
在被控节点的查询里可以搜索关键词查看温度是否有正确查询
http://IP:9100/metrics
搜索system_temperature_celsius