
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
prometheus-docker-sd是一款用于Docker容器的Prometheus服务发现工具。它通过监听Docker守护进程,基于容器标签识别需要监控的容器,并自动生成Prometheus兼容的目标配置文件(docker-targets.json),实现Docker环境下的动态服务发现,无需手动配置Prometheus监控目标。
首先创建必要的网络,确保Prometheus与被监控容器在同一网络中:
bashdocker network create monitoring_ext
以下是包含Prometheus和prometheus-docker-sd的完整docker-compose.yml配置:
yamlversion: '2' services: # Prometheus服务 prometheus: image: "prom/prometheus:v2.25.0" restart: unless-stopped networks: - monitoring_ext expose: - "9090" ports: - "19090:9090" volumes: - ./prometheus/config:/etc/prometheus:ro # Prometheus配置目录 - ./prometheus/data:/prometheus:rw # Prometheus数据目录 - prometheus-docker-sd:/prometheus-docker-sd:ro # 挂载服务发现配置文件目录 command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.path=/prometheus", "--storage.tsdb.retention.time=15d", "--web.console.libraries=/usr/share/prometheus/console_libraries", "--web.console.templates=/usr/share/prometheus/consoles" ] # prometheus-docker-sd服务 prometheus-docker-sd: image: "stucky/prometheus-docker-sd:latest" restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock # 挂载Docker套接字以监听容器事件 - prometheus-docker-sd:/prometheus-docker-sd:rw # 生成的配置文件输出目录 volumes: prometheus-docker-sd: # 用于共享服务发现配置文件的卷 networks: monitoring_ext: external: true name: monitoring_ext # 使用已创建的监控网络
在Prometheus配置文件(prometheus.yml)中添加以下抓取配置,以读取prometheus-docker-sd生成的目标文件:
yamlscrape_configs: - job_name: 'service_discovery' file_sd_configs: - files: - /prometheus-docker-sd/docker-targets.json # 指向生成的目标配置文件
需监控的容器需添加以下标签,prometheus-docker-sd将根据标签生成监控目标:
| 标签名 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
| prometheus-scrape.enabled | 是 | - | 必须设置为"true"以启用监控 |
| prometheus-scrape.job_name | 否 | <容器名称> | Prometheus监控作业名称(对应job标签) |
| prometheus-scrape.hostname | 否 | <容器名称> | 监控目标主机名,当与容器名称不同或需通过公网访问时使用 |
| prometheus-scrape.port | 否 | 9090 | 指标端点端口 |
| prometheus-scrape.scheme | 否 | http | 协议,可选http或https |
| prometheus-scrape.metrics_path | 否 | /metrics | 指标端点路径 |
重要:被监控容器必须与Prometheus在同一网络(monitoring_ext)中,以确保Prometheus能够访问容器的指标端点。
使用docker run运行node-exporter示例
bashdocker run -d \ --name="node-exporter" \ --pid="host" \ -v /:/host:ro \ --network=monitoring_ext \ # 加入监控网络 -l prometheus-scrape.enabled=true \ # 启用监控 -l prometheus-scrape.job_name="node-exporter" \ # 设置作业名称 -l prometheus-scrape.port=9100 \ # node-exporter默认端口 -l prometheus-scrape.metrics_path="/metrics" \ # 指标路径 quay.io/prometheus/node-exporter \ --path.rootfs=/host
使用docker-compose运行node-exporter示例
yamlversion: '2' services: node-exporter: image: prom/node-exporter:latest restart: unless-stopped networks: - internal - monitoring_ext # 加入监控网络 labels: prometheus-scrape.enabled: "true" # 启用监控 prometheus-scrape.job_name: "node-exporter" # 作业名称 prometheus-scrape.port: 9100 # 端口 prometheus-scrape.metrics_path: "/metrics" # 指标路径 volumes: - /proc:/rootfs/proc:ro - /sys:/rootfs/sys:ro - /:/rootfs:ro expose: - "9100" networks: internal: monitoring_ext: external: true name: monitoring_ext # 使用外部监控网络
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务