摘要:本文主要介绍了基于Docker Swarm
的grafana+promethrus+cadvisor
的监控方案,如果是基于Docker
的监控方案,只需要更改docker-stack.yml
相关配置即可。
Grafana
配置
创建
grafana
文件夹,在该文件夹下面创建docker-stack.yml
version: "3"
services:
cadvisor:
image: grafana/grafana:latest
ports:
- 3000:3000
networks:
- huzhihui
deploy:
replicas: 1
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
networks:
huzhihui:
external: true
启动
grafana
运行命令docker stack deploy -c docker-stack.yml grafana
prometheus
配置
创建
prometheus
文件夹,然后在文件夹下面创建conf
文件夹来存配置,创建docker-stack.yml
prometheus.yml
配置文件(在conf
文件下)
scrape_configs:
# Make Prometheus scrape itself for metrics.
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'docker'
static_configs:
- targets: ['192.168.137.130:8080','192.168.137.131:8080']
- job_name: 'springboot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.137.2:8080']
# Create a job for Docker Swarm containers.
- job_name: 'dockerswarm'
dockerswarm_sd_configs:
- host: unix:///var/run/docker.sock
role: tasks
relabel_configs:
# Only keep containers that should be running.
- source_labels: [__meta_dockerswarm_task_desired_state]
regex: running
action: keep
# Only keep containers that have a `prometheus-job` label.
- source_labels: [__meta_dockerswarm_service_label_prometheus_job]
regex: .+
action: keep
# Use the prometheus-job Swarm label as Prometheus job label.
- source_labels: [__meta_dockerswarm_service_label_prometheus_job]
target_label: job
- 创建
docker-stack.yml
文件
version: "3"
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./conf/:/etc/prometheus/
networks:
- huzhihui
deploy:
replicas: 1
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
networks:
huzhihui:
external: true
启动
prometheus
运行命令docker stack deploy -c docker-stack.yml prometheus
cadvisor
配置
创建
cadvisor
文件夹,然后创建docker-stack.yml
version: "3"
services:
cadvisor:
image: google/cadvisor
volumes:
- /var/run/docker.sock:/var/run/docker.sock,ro
- /:/rootfs,ro
- /var/run:/var/run
- /sys:/sys,ro
- /var/lib/docker:/var/lib/docker,ro
command:
- '-docker_only'
ports:
- 8080:8080
networks:
- huzhihui
deploy:
mode: global
restart_policy:
condition: on-failure
networks:
huzhihui:
external: true
启动
cadvisor
运行命令docker stack deploy -c docker-stack.yml cadvisor
集成说明
打开
grafana
配置数据源,先登录进去,默认用户名和密码都是admin
新增数据源
prometheus
的数据来源配置
下面以
springboot
项目作为一个案例,其他的监控,后续新增,配置文件新增下面配置
springboot
项目配置
#pom文件新增如下配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
application.yml
新增配置
management:
endpoints:
web:
exposure:
include: "*"
启动服务,新增
springboot
项目监控图表,推荐采用这个grafana.com/grafana/das…
需要做一点修改,兼容这个图表
修改为如下
保存后就可以显示监控大屏了