编辑
2024-12-18
普罗米修斯监控
00
请注意,本文编写于 514 天前,最后修改于 512 天前,其中某些信息可能已经过时。

目录

Prometheus监控系统
监控节点
被控节点NODE设置

Prometheus监控系统

监控节点

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 "文件夹和配置文件已创建完成!"
SHELL
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' - job_name: 'temperature' file_sd_configs: - files: - '/monitoring/prometheus/targets/*.yml'

运行脚本

SHELL
bash create_monitoring_dirs.sh

在监控节点上添加被控节点.yaml文件 目录是/monitoring/prometheus/targets/nodex.yml 其中nodex是某节点面子,内容也需要更改IP项

SHELL
cat > /monitoring/prometheus/targets/nodex.yml << EOF - targets: - 'IP:9100' EOF

docker的镜像加速地址

SHELL
sudo cat <<EOF > /etc/docker/daemon.json { "registry-mirrors": ["https://docker.laoyugan.com"] } EOF

监控节点起pm容器和grafana容器 启容器的时候会失败退出,因为响应的文件权限需要修改

chmod 777 -R /monitoring/

Prometheus:

SHELL
docker 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 :

SHELL
docker run -d --name grafana \ -p 3000:3000 \ -v /monitoring/grafana:/var/lib/grafana \ grafana/grafana:latest

查看容器情况

docker ps -a 来查看docker容器情况

image.png

访问IP

来验证是否搭建好(有开防火墙记得放行端口)

grafana默认账密是 admin/admin 初次登录会要求修改密码

设置成中文

再设置数据源-Prometheus

再设置面板ID 11074

被控节点NODE设置

被监控节点设置监控温度脚本

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启动

shell
docker 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