grafana+promethrus+springboot监控

572 阅读2分钟

摘要:本文主要介绍了基于Docker Swarmgrafana+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

image.png

新增数据源

image.png

image.png

  • prometheus的数据来源配置

下面以springboot项目作为一个案例,其他的监控,后续新增,配置文件新增下面配置

image.png

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…

image.png

需要做一点修改,兼容这个图表

image.png

修改为如下

image.png

保存后就可以显示监控大屏了

image.png