Docker版Prometheus持久化监控node_exporter&Container
Prometheus-server下载地址:https://github.com/prometheus/prometheus/releases/download/v2.40.2/prometheus-2.40.2.linux-amd64.tar.gz
cadvisor下载地址:https://github.com/google/cadvisor/releases/download/v0.47.2/cadvisor-v0.47.2-linux-amd64
node_exporter下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
Prometheus主配置文件:
cat /usr/local/prometheus/config/prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ["localhost:9090"]
- job_name: 'all_auto_discovery_node_exporter'
file_sd_configs:
- files:
- /app/prometheus-server/config/all_node_exporter.yml
refresh_interval: 5s
- job_name: 'cadvisor'
file_sd_configs:
- files:
- /app/prometheus-server/config/cadvisor.yml
refresh_interval: 5s
自动发现配置文件:
cat /usr/local/prometheus/config/all_node_exporter.yml
- targets:
- 10.0.4.15:9100
labels:
country: 中国上海
Cloud_Vendors: Tencent_Cloud
- targets:
- 10.0.4.13:9100
labels:
country: 中国上海
Cloud_Vendors: Tencent_Cloud
cat /usr/local/prometheus/config/cadvisor.yml
- targets:
- 10.5.0.180:8080
- 10.5.0.181:8080
- 10.5.0.182:8080
构建Prometheus-Server&cadvisor镜像:
Prometheus-Server Dockerfile:
FROM centos:7.9.2009
ADD prometheus-2.40.2.linux-amd64.tar.gz /app/
RUN mv /app/prometheus-2.40.2.linux-amd64 /app/prometheus-server
COPY all_node_exporter.yml /app/prometheus-server/config/
COPY prometheus.yml /app/prometheus-server/config/
EXPOSE 9090
CMD ["/app/prometheus-server/prometheus", "--config.file=/app/prometheus-server/config/prometheus.yml","--storage.tsdb.retention=30d","--web.enable-admin-api"]
参数解释
#Prometheus主配置文件: /usr/local/prometheus/config/prometheus.yml
#开启API服务 --web.enable-admin-api
#监控数据保存30天 --storage.tsdb.retention=30d
cadvisor Dockerfile:
FROM centos:7.9.2009
LABEL cadvisor v0.47.2
COPY cadvisor-v0.47.2-linux-amd64 /usr/bin/cadvisor
RUN chmod +x /usr/bin/cadvisor
ENTRYPOINT ["/usr/bin/cadvisor"]
启动Prometheus-Server容器
docker run -d \
-p 9090:9090 \
--name qwx-prometheus \
--restart=always \
-v /usr/local/prometheus/config/all_node_exporter.yml:/app/prometheus-server/config/all_node_exporter.yml \
-v /usr/local/prometheus/config/prometheus.yml:/app/prometheus-server/config/prometheus.yml \
-v /usr/local/prometheus/config/cadvisor.yml:/app/prometheus-server/config/cadvisor.yml \
-v /usr/local/prometheus/data/:/data/ \
qwx/prometheus:2.40.2
参数解释
- docker run:启动一个 Docker 容器。
- -d:以守护进程模式运行容器。
- -p 9090:9090:将容器的 9090 端口映射到主机的 9090 端口。
- --name qwx-prometheus:为容器指定名称。
- --restart=always:容器退出后自动重启。
- -v /usr/local/prometheus/config/all_node_exporter.yml:/app/prometheus-server/config/all_node_exporter.yml:将主机的 /usr/local/prometheus/config/all_node_exporter.yml 文件挂载到容器的 /app/prometheus-server/config/all_node_exporter.yml 文件。
- -v /usr/local/prometheus/config/prometheus.yml:/app/prometheus-server/config/prometheus.yml:将主机的 /usr/local/prometheus/config/prometheus.yml 文件挂载到容器的 /app/prometheus-server/config/prometheus.yml 文件。
- -v /usr/local/prometheus/config/cadvisor.yml:/app/prometheus-server/config/cadvisor.yml:将主机的 /usr/local/prometheus/config/cadvisor.yml 文件挂载到容器的 /app/prometheus-server/config/cadvisor.yml 文件。
- -v /usr/local/prometheus/data/:/data/:将主机的 /usr/local/prometheus/data/ 目录挂载到容器的 /data/ 目录。
- qwx/prometheus:2.40.2:使用 qwx/prometheus:2.40.2 镜像创建容器。
启动容器cadvisor容器
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--userns=host \
--privileged \
--device=/dev/kmsg \
cadvisor:v0.47.2
参数解释:
- --volume=/:/rootfs:ro:将主机的根目录挂载到容器的根目录,并以只读模式挂载。
- --volume=/var/run:/var/run:ro:将主机的 /var/run 目录挂载到容器的 /var/run 目录,并以只读模式挂载。
- --volume=/sys:/sys:ro:将主机的 /sys 目录挂载到容器的 /sys 目录,并以只读模式挂载。
- --volume=/var/lib/docker/:/var/lib/docker:ro:将主机的 /var/lib/docker 目录挂载到容器的 /var/lib/docker 目录,并以只读模式挂载。
- --volume=/dev/disk/:/dev/disk:ro:将主机的 /dev/disk/ 目录挂载到容器的 /dev/disk/ 目录,并以只读模式挂载。
- --publish=8080:8080:将容器的 8080 端口映射到主机的 8080 端口。
- --detach=true:以守护进程模式运行容器。
- --name=cadvisor:为容器指定名称。
- --userns=host:使用主机的用户命名空间。
- --privileged:授予容器特权权限。
- --device=/dev/kmsg:将主机的 /dev/kmsg 设备挂载到容器的 /dev/kmsg 设备。
- cadvisor:v0.47.2:使用cadvisor:v0.47.2 镜像创建容器。
启动node_exporter
tar zxvf node_exporter-1.4.0.linux-amd64.tar.gz -C /usr/local/ && mv /usr/local/node_exporter-1.4.0.linux-amd64 /usr/local/node_exporter && cd /usr/local/node_exporter && nohup ./node_exporter &>>/var/log/node_exporter.log &
备份监控数据:
每30天做一次快照备份:
0 0 0 * * curl -XPOST http://localhost:9090/api/v1/admin/tsdb/snapshot
仅登录用户可评论,点击 登录