Docker 部署 Prometheus
1.下载镜像
1.Prometheus
docker pull prom/prometheus
2.Node Exporter【负责收集 host 硬件和操作系统数据。它将以容器方式运行在所有 host 上】
docker pull prom/node-exporter
2.部署Node Exporter
docker run -d --name=node-exporter \ -v "/proc:/host/proc" \ -v "/sys:/host/sys" \ -v "/:/rootfs" \ --net=host \ prom/node-exporter \ --path.procfs /host/proc \ --path.sysfs /host/sys \ --path.rootfs=/rootfs \ --collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
注意:
1.这里我们使用了 --net=host,这样 Prometheus Server 可以直接与 Node Exporter 通信
2.在Docker容器中运行Prometheus Node Exporter,并希望它报告Docker容器主机上文件系统的文件系统空间使用信息,要从Docker容器中的Node Exporter发出主机文件系统信息,容器需要将主机的/
路径绑定挂载到容器路径,如/rootfs
。然后,需要使用命令行参数--path.rootfs=/rootfs
启动节点导出器,以便它知道在哪里可以找到文件系统。
3.部署Prometheus
1.新建配置文件
mkdir -p /mnt/docker/prometheus cd /mnt/docker/prometheus/ vi prometheus.yml
global: # 设置抓取数据的时间间隔,间隔设置为每15秒一次。默认为每1分钟。 scrape_interval: 15s # 设定抓取数据的超时时间,默认为10s scrape_timeout: 15s # 设置规则刷新,每15秒刷新一次规则。默认值为每1分钟。 evaluation_interval: 60s # 监控报警配置(需要额外安装 alertmanager组件) alerting: alertmanagers: - static_configs: # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口 #- targets: ["localhost:9093"] # 报警规则文件 rule_files: #- '/home/deploy/alertmanager/rules/*.yml' # 普罗米修斯与抓取模块交互的接口配置 scrape_configs: # 一定要全局唯一, 采集 Prometheus 自身的 metrics - job_name: prometheus # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] labels: instance: prometheus - job_name: linux static_configs: - targets: ['192.168.1.109:9100'] labels: instance: localhost
2.部署
docker run -d -p 9090:9090 \ -v /mnt/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ -v "/etc/localtime:/etc/localtime" \ --name prometheus \ --net=host \ --restart always \ prom/prometheus