【Prometheus和Grafana的Docker部署和项目使用】
·
Prometheus和Grafana的Docker部署和项目使用
前言
本文主要记录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的部署和应用
更多推荐
所有评论(0)