前言

本文主要记录Prometheus和Grafana的部署和应用


一、部署Prometheus

1.拉取镜像

docker pull prom/prometheus 最新版本

2.准备挂载文件及目录

# /opt/prometheus/data目录,准备用来挂载放置prometheus的数据
# /opt/prometheus/config目录,准备用来放置prometheus的配置文件
# /opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /opt/prometheus/{
   data,config,rules}
# 授权相关文件夹权限
chmod -R 777 /opt/prometheus/data
chmod -R 777 /opt/prometheus/config
chmod -R 777 /opt/prometheus/rules

3.准备配置文件

# 配置文件
cat > /opt/prometheus/config/prometheus.yml << \EOF
global:
  # 数据采集间隔
  scrape_interval:     45s
  # 告警检测间隔
  evaluation_interval: 45s

# 告警规则
rule_files:
  # 这里匹配指定目录下所有的.rules文件
  - /prometheus/rules/*.rules
# 采集配置
scrape_configs:
  # 采集项(prometheus)
  - job_name: 'prometheus'
    static_configs:
      # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
      - targets: ['localhost:9090']
EOF
# 查看一下配置文件
cat /opt/prometheus/config/prometheus.yml

4.启动容器

# 创建网络,后续Grafana连接Prometheus通过容器网络访问
docker network create monitoring
# 启动prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://47.105.39.189:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run --name prometheus -d \
    -p 9090:9090 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/prometheus/data:/prometheus/data \
    -v /opt/prometheus/config:/prometheus/config \
    -v /opt/prometheus/rules:/prometheus/rules \
    prom/prometheus:latest --network monitoring --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle

5.验证服务是否正常

在这里插入图片描述默认地址:http://localhost:9090

二、部署Grafana

1.拉取镜像

docker pull grafana/grafana 最新版本

2.准备挂载目录及文件

# /opt/grafana/data目录,准备用来挂载放置grafana的数据
# /opt/grafana/plugins目录,准备用来放置grafana的插件
# /opt/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /opt/grafana/{
   data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 /opt/grafana/data
chmod -R 777 /opt/grafana/plugins
chmod -R 777 /opt/grafana/config

3.准备配置文件

# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:9.3.2
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp

# 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini

4.修改插件的镜像地址

# 使用阿里镜像源
plugin_url = https://mirrors.aliyun.com/grafana/plugins/{id}/{version}/download 

在这里插入图片描述

5.启动容器

# 启动prometheus
# 环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
# 环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
#         grafana-clock-panel代表时间插件
#         grafana-simple-json-datasource代表json数据源插件
#         grafana-piechart-panel代表饼图插件
docker run -d \
    -p 3000:3000 \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/grafana/data:/var/lib/grafana \
    -v /opt/grafana/plugins/:/var/lib/grafana/plugins \
    -v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
    -e "GF_SECURITY_ADMIN_PASSWORD=admin" \
    -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
    grafana/grafana:latest --network monitoring

6.验证服务

在这里插入图片描述默认用admin/admin登录

6.创建Prometheus数据源

在这里插入图片描述使用容器名建立连接
在这里插入图片描述保存

7.创建仪表盘

在这里插入图片描述
可以自己创建也可以导入,我这里直接导入一个标准的SpringBoot3仪表盘https://grafana.com/grafana/dashboards/20727
在这里插入图片描述

8.如果需要中文,在grafana.ini里面切换语言

在这里插入图片描述设置中文版 default_language = zh-Hans

三、项目集成

1.添加依赖

        <!-- spring-boot-actuator依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- prometheus依赖 -->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

2.修改配置文件

#端点配置
management:
  endpoints:
    web:
      exposure:
        include: "health,info,prometheus" # 暴露prometheus端点
      base-path: /actuator
  metrics:
    tags:
      application: ${spring.application.name}  # 添加应用标签
  prometheus:
    metrics:
      export:
        enabled: true # 允许prometheus端点
  endpoint:
    prometheus:
      access: unrestricted # 允许所有访问

3.启动项目

4.修改Prometheus的收集配置

#端点配置
management:
  endpoints:
    web:
      exposure:
        include: "health,info,prometheus" # 暴露prometheus端点
      base-path: /actuator
  metrics:
    tags:
      application: ${spring.application.name}  # 添加应用标签
  prometheus:
    metrics:
      export:
        enabled: true # 允许prometheus端点
  endpoint:
    prometheus:
      access: unrestricted # 允许所有访问

5.修改Prometheus配置文件

在这里插入图片描述

6.最终展示

在这里插入图片描述


总结

本文主要记录Prometheus和Grafana的部署和应用

更多推荐