集成 Spring Boot Admin
创建 Spring Boot Admin Server
- 创建新工程,引入以下依赖:
1 | <dependency> |
在应用启动类上添加注解
@EnableAdminServer
,代码如下:1
2
3
4
5
6
7
8
9
public class MonitorApplication {
public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}
}application.yml
配置如下:1
2
3
4
5
6server:
port: 8081
spring:
application:
name: op-monitor
创建 Spring Boot Admin Client
在 client 工程中引入以下依赖:
1
2
3
4<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>在
application.yml
中添加以下配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18spring:
application:
name: op-admin
boot:
admin:
client:
url: http://localhost:8081
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
logfile:
enabled: true
Spring Boot Admin 监控示例
启动 server 与 client 两个工程之后,访问 http://localhost:8081/,即可看到以下信息:
集成 Prometheus
Docker 容器
编写配置文件
1
2
3
4
5
6
7
8
9
10
11
12scrape_configs:
# 可随意指定
- job_name: 'spring'
# 多久采集一次数据
scrape_interval: 15s
# 采集时的超时时间
scrape_timeout: 10s
# 采集的路径
metrics_path: '/actuator/prometheus'
# 采集服务的地址,设置成 Spring Boot 应用所在服务器的具体地址
static_configs:
- targets: [ 'host.docker.internal:8080' ]拉取 Docker 镜像并创建容器
1
2
3
4
5
6
7
8docker run -d `
--network op_net `
--hostname prometheus `
--name prometheus `
-p 9090:9090 `
-v /d/Workspace/IdeaProjects/onepiece/op-alliance/op-env:/etc/prometheus `
prom/prometheus `
--config.file=/etc/prometheus/prometheus.yml
Spring Boot 工程
- 在工程中引入以下依赖:
1 | <dependency> |
- 开放 Prometheus 端点:
1
2
3
4
5management:
endpoints:
web:
exposure:
include: "prometheus"
Prometheus 监控示例
启动 Docker 容器及 Spring Boot 工程之后,访问 http://localhost:9090/,即可看到以下信息:
集成 Grafana
Docker 容器
拉取 Docker 镜像并创建容器:
1 | docker run -d ` |
Spring Boot 工程
添加以下配置属性:
1 | management: |
Grafana 配置
- 登录
启动 Docker 容器及 Spring Boot 工程之后,访问 http://localhost:3000/,即可看到登录界面:
初始账号密码:admin/admin
添加数据源
下载 Dashboard Json
访问Grafana Labs,搜索 JVM (Micrometer)(4701),下载 Json 数据。导入 Dashboard Json
监控示例
监控 Mysql
拉取 mysqld-exporter 镜像并启动容器
1
2
3
4
5
6
7docker run -d `
--network op_net `
--hostname mysqld-exporter `
--hostname mysqld-exporter `
-p 9104:9104 `
-e DATA_SOURCE_NAME="root:root@(host.docker.internal:3306)/" `
prom/mysqld-exporter补充 prometheus.yaml
1
2
3
4
5
6scrape_configs:
- job_name: 'mysql'
static_configs:
- targets: ['host.docker.internal:9104']
labels:
instance: mysql创建 MySQL Overview Dashboard
监控 Redis
拉取 redis_exporter 镜像并启动容器
1
2
3
4
5
6
7docker run -d `
--network op_net `
--hostname redis_exporter `
--hostname redis_exporter `
-p 9121:9121 `
oliver006/redis_exporter `
--redis.addr redis://host.docker.internal:6379补充 prometheus.yaml
1
2
3
4scrape_configs:
- job_name: 'redis'
static_configs:
- targets: [ 'host.docker.internal:9121' ]创建 Redis Exporter Dashboard
监控 RabbitMQ
启用 rabbitmq_prometheus 插件
1
2
3docker exec -it rabbitmq bash
rabbitmq-plugins list
rabbitmq-plugins enable rabbitmq_prometheus创建 RabbitMQ-Overview Dashboard