基于Prometheus监控SpringBoot应用,以xxl-job-admin为例

「我们中国的最伟大最永久,而且最普遍的“艺术”是男人扮女人。」

— 鲁迅 《最艺术的国家》一九三三年四月二日
随机引文生成自fortunes-zh包
(femboy也算种男人扮女人吧)

头图参数:

parameters

(extremely detailed CG unity 8k wallpape:1.1), (masterpiece:1.2), (best quality:1.1), (ultra detailed:1.1), (highres:1.1), (best illustration:1.1), (best shadow:1.1),
(colorful Graffiti wall, strong wind, night, neon:1.3), straight-on,
(solo, femboy, teenage:1.3),
(absurdly long blonde hair, colored inner hair:1.2), (one side up:1.3),
(flat chest:1.3), (slender, glamor:1.2),
(very long sleeves, hands in sleeves, labcoat off shoulders, bright green strapless camisole, Low-rise short shorts, midriff:1.3),
(single hand on hips, greet:1.2), (leaning forward:0.88),
happy, light smille, full-face blush, clear eyes, pupils sparkling, looking at viewer,
<lora:add_detail:0>,
Negative prompt: (worst quality, low quality:1.4), (missing limb, extra limbs:1.2), (poorly drawn face:1.2),
verybadimagenegative_v1.3, badhandv4, negative_hand-neg,
(medium breasts, large breasts, huge breasts, cleavage:1.3)
bad anatomy, bad proportions,
(adult, aged up:1.2),
unclear eyes,
Steps: 70, Sampler: Euler a, CFG scale: 5, Seed: 1584099565, Size: 960x544, Model hash: cca17b08da, Model: darkSushiMixMix_225D, Denoising strength: 0.4, Clip skip: 2, Hires resize: 1920x1080, Hires steps: 10, Hires upscaler: SwinIR_4x, Lora hashes: "add_detail: 7c6bad76eb54"

本文默认使用以下环境与包:

  • Ubuntu 22.04.3 LTS
  • prometheus-2.43.0
  • grafana-9.4.7
  • xxl-job-2.4.1-SNAPSHOT

1. 获取xxl-job并引入io.micrometer包

xxl-job是一个开源项目,可以在这里获取。首先将xxl-job克隆到本地:

git clone https://github.com/xuxueli/xxl-job.git

接下来需要编辑pom.xml文件来引入io.micrometer包,文件位置如右图所示。

在文件的dependencies标签下加入新的dependency标签,写入如下包引入。

关于这个包的相关说明以及详细点的其他埋点方式可以看他们的官方网站

                <!-- prometheus -->
                <dependency>
                        <groupId>io.micrometer</groupId>
                        <artifactId>micrometer-registry-prometheus</artifactId>
                </dependency>

接下来需要编辑右图位置的SpringBoot配置文件,在里面加入Metrics的相关配置:

### 这是xxl项目自带的配置
server.servlet.context-path=/xxl-job-admin

### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false

### prometheus setting
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.include=prometheus,health,info,metric

management.health.probes.enabled=true
management.endpoint.health.show-details=always
management.endpoint.prometheus.enabled=true

2. 打包项目并使用其自带的Dockerfile打包为docker镜像,导入初始sql,并启动xxl-job-admin容器

接下来,使用mvn package命令下载包并将项目打包为jar包,然后使用docker build命令将xxl-job-admin项目打包为docker镜像。

此处默认环境中有部署于本地的mysql(或是mariadb),如无请自行部署。

# 在项目根目录下
# 如果服务器在国内,记得切换maven源
mvn package

# 在项目根目录/xxl-job-admin目录下
cd xxl-job-admin
# 镜像名可以自定,使用XXL_JOB_IMAGE_NAME参数来修改
docker build -t ${XXL_JOB_IMAGE_NAME:=xxljob:add-metrics} .

# 导入xxl项目默认的初始sql
# 需要注意以下命令中的mysql账号密码都使用**代替了,使用时请改成自己的
mysql -u ** -p ** < ../doc/db/tables_xxl_job.sql

# 如果上面未修改SpringBoot配置,那么也可以加在docker启动命令中
docker run -d -p 8999:8080 --restart always -e JAVA_OPTS="-Xmx256m -Xms128m" -e PARAMS="--spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=** --spring.datasource.password=** --xxl.job.accessToken=**" --name xxljob  \-m 1g ${XXL_JOB_IMAGE_NAME:=xxljob:add-metrics}

3. 在prometheus中写入对应的配置,并使用grafana可视化

prometheus和grafana的部署可以观看这篇文章

在prometheus配置里写入如下配置:

# xxl的SpringBoot配置里已经配置了根目录为/xxl-job-admin了,所以监控地址需要加上这个路径
# host和端口根据上面配置的来
  - job_name: "springboot"
    metrics_path: "/xxl-job-admin/actuator/prometheus"
    static_configs:
      - targets:
        - localhost:8999

完成后,重启prometheus读取配置。

然后使用grafana来可视化收集到的信息,这里使用的Dashboard为SpringBoot APM Dashboard

可以看到,可收集的信息还是挺多的。

4. 参考文献

  1. 如何加入Prometheus的监控中去? #1970 — GitHub

已发布

分类

,

来自