百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

新一代 Cron-Job分布式任务调度平台 部署指南

ccwgpt 2025-05-14 12:13 18 浏览 0 评论

官方文档链接:部署文档

项目官网:Cron-Job 分布式任务调度平台

Gitee仓库:cron-job: cron-job,定时任务,分布式,任务调度平台,简单易用,超低延迟,支持用户权限管理,多语言客户端,多租户接入,分布式任务调度平台

GitHub仓库:GitHub - HoraceDH/cron-job: cron-job,定时任务,分布式,任务调度平台,简单易用,超低延迟,支持用户权限管理,多语言客户端,多租户接入,分布式任务调度平台


一、环境要求

  • OS:支持Linux、Windows、MacOS,文中以CentOS为例。
  • Java:1.8+,官方用的是:1.8.0_391,64位。
  • MySQL:5.7+,官方用的是: 5.7.35-log Source distribution。


二、发行版下载地址

  • 下载发行版
  • GitHub:https://github.com/HoraceDH/cron-job/releases
  • Gitee:https://gitee.com/HoraceDH/cron-job/releases
  • 解压文件,这里以gitee仓库为例,下载最新的版本,解压后会得到如下文件内容:
  • cronjob-examples:示例代码,可直接运行
  • 包含原生Java版本的 example-executor
  • SpringBoot版本的 example-executor-starter
  • cronjob-managerui:管理后台UI
  • cronjob-scheduler:调度器,负责任务调度的服务端
  • mysql.sql:完整的数据库初始化脚本

三、初始化数据库

  • 初始化SQL,找到mysql.sql文件,进入到MySQL命令行中,执行以下命令即可完成初始化,其中path替换为自己的路径:
source /path/mysql.sql
  • 成功后,会产生cron-job库,并包含如下表:

四、调度器服务端部署

1. 部署第一台实例

1.1 修改配置文件

  • 文件路径etc/application.properties:
############# 调度器配置 #############
# 用于标识实例的唯一性
server.id=1
############# 调度器配置 #############

############# 数据源配置 #############
database.url=jdbc:mysql://localhost:3306/cron-job?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
database.username=horace
database.password=SGJIWkjfdsof923847
############# 数据源配置 #############

############# Tomcat配置 #############
# Tomcat服务配置
server.port=9527
############# Tomcat配置 #############
  • 主要修改以下配置:
  • server.id:用于标识实例的唯一性,每个实例必须唯一。
  • server.port:服务端口,如果在同个机器部署,则需要修改端口,保证端口不冲突。
  • database.url:数据库连接地址。
  • database.username:数据库用户名。
  • database.password:数据库密码。

1.2 启动第一台实例

  • 执行命令:
sh start.sh
  • 查看日志输出,以下表示启动成功,有错则需要看日志排错,日志路径logs/app.log:
2025-02-18 17:28:24.427 INFO  [background-preinit]o.h.v.i.util.Version - HV000001: Hibernate Validator 6.2.0.Final
2025-02-18 17:28:24.432 INFO  [main]c.h.c.s.SchedulerMain - Starting SchedulerMain using Java 1.8.0_391 on HoraceiMacProMax.local with PID 4420 (/Users/horace/Downloads/cron-job-v1.0.1/cronjob-scheduler/cronjob-scheduler-1.0.1.jar started by horace in /Users/horace/Downloads/cron-job-v1.0.1/cronjob-scheduler)
2025-02-18 17:28:24.432 INFO  [main]c.h.c.s.SchedulerMain - No active profile set, falling back to 1 default profile: "default"
2025-02-18 17:28:25.276 INFO  [main]o.s.b.w.e.t.TomcatWebServer - Tomcat initialized with port(s): 9527 (http)
2025-02-18 17:28:25.283 INFO  [main]o.a.c.h.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9527"]
2025-02-18 17:28:25.284 INFO  [main]o.a.c.c.StandardService - Starting service [Tomcat]
2025-02-18 17:28:25.284 INFO  [main]o.a.c.c.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.65]
2025-02-18 17:28:25.399 INFO  [main]o.a.c.c.C.[.[.[/] - Initializing Spring embedded WebApplicationContext
2025-02-18 17:28:25.399 INFO  [main]o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 932 ms
2025-02-18 17:28:25.822 INFO  [main]c.a.d.p.DruidDataSource - {dataSource-1} inited
2025-02-18 17:28:26.338 INFO  [main]c.h.c.s.s.i.SchedulerServiceImpl - find router strategy handler, name:randomRouterStrategyHandlerImpl, handler:cn.horace.cronjob.scheduler.strategy.RandomRouterStrategyHandlerImpl@431e86b1
2025-02-18 17:28:26.339 INFO  [main]c.h.c.s.s.i.SchedulerServiceImpl - find router strategy handler, name:shardingRouterStrategyHandlerImpl, handler:cn.horace.cronjob.scheduler.strategy.ShardingRouterStrategyHandlerImpl@5f36c8e3
2025-02-18 17:28:26.430 INFO  [scheduler-thread-1]c.h.c.s.s.i.StatisticsServiceImpl - start statistics, startDate:null, endDate:Tue Feb 18 17:25:00 CST 2025
2025-02-18 17:28:26.432 INFO  [scheduler-thread-1]c.h.c.s.s.i.StatisticsServiceImpl - end statistics, count:0, startDate:null, endDate:Tue Feb 18 17:25:00 CST 2025
2025-02-18 17:28:26.661 INFO  [main]o.a.c.h.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9527"]
2025-02-18 17:28:26.684 INFO  [main]o.s.b.w.e.t.TomcatWebServer - Tomcat started on port(s): 9527 (http) with context path ''
2025-02-18 17:28:26.693 INFO  [main]c.h.c.s.SchedulerMain - Started SchedulerMain in 2.551 seconds (JVM running for 3.136)
2025-02-18 17:28:36.421 INFO  [scheduler-thread-1]c.h.c.s.s.i.StatisticsServiceImpl - start statistics, startDate:null, endDate:Tue Feb 18 17:25:00 CST 2025
2025-02-18 17:28:36.423 INFO  [scheduler-thread-1]c.h.c.s.s.i.StatisticsServiceImpl - end statistics, count:0, startDate:null, endDate:Tue Feb 18 17:25:00 CST 2025

2. 部署第N台实例

  • 拷贝一份cronjob-scheduler,作为第N台实例,按照第一台实例的方式修改配置文件即可。
  • 如若部署更多实例,按照第一台实例的做法,依次部署即可,注意修改server.id以及相关配置。

五、管理后台UI部署

1. 存放静态资源

管理后台UI可以在发布包中找到cronjob-managerui目录,将cronjob-managerui放到合适的目录下,该目录就是打包后的前端文件。

2. Nginx配置

参照如下模板配置即可,注意修改对应的信息:

upstream cron_job.server {
    # 配置多个调度器地址,用于负载均衡
    server 127.0.0.1:9527;
    server 127.0.0.1:9528;
}

server {
    listen  80;
    server_name 127.0.0.1;
    error_log   logs/127.0.0.1.error.log   error;
    access_log  logs/127.0.0.1.access.log  main;

    # 管理后台UI静态资源
    location / {
        # 用于配合ant.design browserHistory 使用
        try_files   $uri $uri/index.html /index.html;
        root    /Users/horace/Downloads/cron-job-v1.0.1/cronjob-managerui;
        index   index.html;
    }

    # 管理后台API接口
    location /manager-api {
        proxy_pass  http://cron_job.server;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_set_header    Host              $http_host;
        proxy_set_header    X-Real-IP         $remote_addr;
    }

    # 开放API接口
    location /openapi {
        proxy_pass  http://cron_job.server;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_set_header    Host              $http_host;
        proxy_set_header    X-Real-IP         $remote_addr;
    }
}

3. 启动Nginx

访问http://127.0.0.1,实际访问地址根据自身部署的站点情况调整,实际生产部署需要配置域名。

4. 登录任务调度平台

看到如下页面时,说明部署成功,输入账号密码 admin/admin 进入系统:

六、启动示例工程

1. 进入目录

进入
cronjob-examples/example-executor目录,并执行如下命令:

sh start.sh

2. 检查执行器日志

出现以下表示启动成功,其中cron job executor register success表示执行器注册成功,cron job task register success执行器任务注册成功。

2025-02-18 17:59:40.855 INFO  [main]c.h.c.e.s.TaskService - found cron job task, TaskConfig{tenant='horace', method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', name='普通测试任务', appName='example-executor', appDesc='普通示例执行器', tag='common', remark='', cron='* * * * * ? ', routerStrategy=1, expiredStrategy=2, expiredTime=180000, failureStrategy=2, timeout=10000, maxRetryCount=5, failureRetryInterval=5000}
2025-02-18 17:59:40.868 INFO  [cron-job-http-server]o.eclipse.jetty.util.log - Logging initialized @448ms to org.eclipse.jetty.util.log.Slf4jLog
2025-02-18 17:59:40.944 INFO  [cron-job-http-server]o.e.jetty.server.Server - jetty-9.4.48.v20220622; built: 2022-06-21T20:42:25.880Z; git: 6b67c5719d1f4371b33655ff2d047d24e171e49a; jvm 1.8.0_391-b13
2025-02-18 17:59:40.968 INFO  [cron-job-http-server]o.e.jetty.server.session - DefaultSessionIdManager workerName=node0
2025-02-18 17:59:40.969 INFO  [cron-job-http-server]o.e.jetty.server.session - No SessionScavenger set, using defaults
2025-02-18 17:59:40.970 INFO  [cron-job-http-server]o.e.jetty.server.session - node0 Scavenging every 600000ms
2025-02-18 17:59:40.978 INFO  [cron-job-http-server]o.e.j.s.h.ContextHandler - Started o.e.j.s.ServletContextHandler@688910fd{/,null,AVAILABLE}
2025-02-18 17:59:40.992 INFO  [cron-job-http-server]o.e.j.s.AbstractConnector - Started ServerConnector@69735139{HTTP/1.1, (http/1.1)}{192.168.16.51:8527}
2025-02-18 17:59:40.992 INFO  [cron-job-http-server]o.e.jetty.server.Server - Started @572ms
2025-02-18 17:59:40.992 INFO  [cron-job-http-server]c.h.c.e.h.HttpServer - cron job web server started, address:192.168.16.51:8527
2025-02-18 17:59:41.343 INFO  [scheduler-thread-1]c.h.c.e.s.OpenApiService - cron job executor register success, serverAddress:http://127.0.0.1, params:ExecutorRegisterParams{tenant='horace', appName='example-executor', appDesc='普通示例执行器', hostName='HoraceiMacProMax.local', tag='common', version='Java-1.0.1', address='192.168.16.51:8527'}, result:MsgObject{code=0, msg='', data=null}
2025-02-18 17:59:42.407 INFO  [scheduler-thread-1]c.h.c.e.s.OpenApiService - cron job task register success, address:192.168.16.51:8527, result:MsgObject{code=0, msg='', data=null}

3. 启动任务

  • 登录管理后台,点击任务管理,点击启动任务,即可开始任务的调度。

4. 查看调度日志

可以看到,任务的调度很准时!

2025-02-18 18:03:51.000 INFO  [executor-task-5]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791224381441, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873031000, receivedDispatcherTime=1739873028002, params=''}
2025-02-18 18:03:52.000 INFO  [executor-task-1]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791241158657, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873032000, receivedDispatcherTime=1739873029002, params=''}
2025-02-18 18:03:53.000 INFO  [executor-task-2]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791257935873, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873033000, receivedDispatcherTime=1739873030005, params=''}
2025-02-18 18:03:54.000 INFO  [executor-task-3]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791274713089, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873034000, receivedDispatcherTime=1739873031002, params=''}
2025-02-18 18:03:55.000 INFO  [executor-task-4]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791291490305, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873035000, receivedDispatcherTime=1739873032002, params=''}
2025-02-18 18:03:56.000 INFO  [executor-task-5]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791299878913, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873036000, receivedDispatcherTime=1739873033002, params=''}
2025-02-18 18:03:57.000 INFO  [executor-task-1]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791308267521, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873037000, receivedDispatcherTime=1739873034002, params=''}
2025-02-18 18:03:58.000 INFO  [executor-task-2]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791325044737, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873038000, receivedDispatcherTime=1739873035002, params=''}
2025-02-18 18:03:59.000 INFO  [executor-task-3]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791341821953, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873039000, receivedDispatcherTime=1739873036002, params=''}
2025-02-18 18:04:00.000 INFO  [executor-task-4]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791350210561, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873040000, receivedDispatcherTime=1739873037002, params=''}
2025-02-18 18:04:01.000 INFO  [executor-task-5]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791358599169, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873041000, receivedDispatcherTime=1739873038002, params=''}
2025-02-18 18:04:02.000 INFO  [executor-task-1]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791366987777, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873042000, receivedDispatcherTime=1739873039002, params=''}
2025-02-18 18:04:03.000 INFO  [executor-task-2]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791375376385, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873043000, receivedDispatcherTime=1739873040002, params=''}
2025-02-18 18:04:04.000 INFO  [executor-task-3]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791383764993, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873044000, receivedDispatcherTime=1739873041002, params=''}
2025-02-18 18:04:05.000 INFO  [executor-task-4]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791400542209, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873045000, receivedDispatcherTime=1739873042002, params=''}
2025-02-18 18:04:06.000 INFO  [executor-task-5]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791408930817, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873046000, receivedDispatcherTime=1739873043002, params=''}
2025-02-18 18:04:07.000 INFO  [executor-task-1]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791417319425, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873047000, receivedDispatcherTime=1739873044002, params=''}
2025-02-18 18:04:08.000 INFO  [executor-task-2]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791425708033, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873048000, receivedDispatcherTime=1739873045002, params=''}
2025-02-18 18:04:09.000 INFO  [executor-task-3]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791434096641, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873049000, receivedDispatcherTime=1739873046002, params=''}
2025-02-18 18:04:10.000 INFO  [executor-task-4]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791434100737, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873050000, receivedDispatcherTime=1739873047002, params=''}
2025-02-18 18:04:11.000 INFO  [executor-task-5]c.h.c.e.t.DemoCronTask - task handler..., params:TaskParams{page=1, total=1, taskLogId=6334722791450873857, taskId=6334721498112069633, method='cn.horace.cronjob.examples.tasks.DemoCronTask.handle', exeType=0, cron='* * * * * ?', tag='common', executionTime=1739873051000, receivedDispatcherTime=1739873048002, params=''}

5. 查看调度详情

至此,全部部署完成!

相关推荐

如何高效实现API接口的自动化测试?

实现API接口的自动化测试是一个多步骤的过程,涉及需求分析、测试用例设计、环境搭建、脚本编写、执行测试、结果分析和持续集成等多个环节。选择合适的工具和框架也是成功的关键。嘿,咱来聊聊实现API接口自动...

总结100+前端优质库,让你成为前端百事通

1年多时间,陆陆续续整理了一些常用且实用的开源项目,方便大家更高效地学习和工作.js相关库js常用工具类「lodash」一个一致性、模块化、高性能的JavaScript实用工具库。「xij...

混合开发到底怎么个混法?(混合开发rn)

引言最近几年混合开发越来越火,从PhoneGap到Cordova到Ionic,再到ReactNative,到Flutter。同时在搜索引擎中诸如IonicVSReactNativeRN和Weex+...

无所不能,将 Vue 渲染到嵌入式液晶屏

该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言之前看了雪碧大佬的将React渲染到嵌入式液晶屏觉得很有意思,R...

【直接收藏】前端 VUE 高阶面试题(一)

说说vue动态权限绑定渲染列表(权限列表渲染)首先请求服务器,获取当前用户的权限数据,比如请求this.$http.get("rights/list");获取到权限数据之后,在列表中...

Vue采用虚拟DOM的目的是什么?(vue2 虚拟dom)

虚拟DOM更新其实效率并不像大家想象中的那么高,而且React官方也从来没说过虚拟DOM效率有多高,相反React虚拟DOM的实现也不是所有虚拟DOM产品中最好的。但是通过虚拟D...

什么是 JavaScript?(什么是党的旗帜)

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师然冬JavaScript(JS)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。(MDN...

Weex在内涵发现页中的工程实践(weex唯客交易所官网)

React-Native和Weex是目前最为火热的两个客户端跨平台解决方案。从去年2016年9月份开始,IES在抖音产品中应用了ReactNative,中途遇到了很多的问题,尤其是长列表的性能问题一...

新恒汇:公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务

证券日报网讯新恒汇7月3日在互动平台回答投资者提问时表示,公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务。具体请关注公司公告和公开披露信息。(编辑王雪儿)...

“移”科普——什么是物联网?(移动设备物联网物联网应用实例)

物联网(InternetofThings,简称IoT)是指通过互联网将物理世界与数字世界相连接,实现物与物之间的智能互联的网络。它是一种新型的信息通信技术,通过传感器、嵌入式系统、网络技术等手段,...

如何自己搭建一个物联网平台?(自建物联网云平台)

自己搭建一个物联网(IoT)平台需要涉及多个关键步骤,包括硬件设备的选择、软件开发、网络通信、安全性设计以及数据管理。以下是搭建物联网平台的基本流程:1.确定物联网平台架构一个完整的物联网平台通常包...

物联网数据接入篇-应用层 Modbus(5)

前四篇文章讲述的是TCP/IP模型中的网络接口层、网络层、传输层、应用层一,这里到了第四层应用层二。由于协议比较多,就分开篇来介绍。这篇讲Modbus协议,后面再讲MQTT协议、CoAP协议、...

乐鑫ESP32-C5全面量产:行业首款双频Wi-Fi 6的RISC-V SoC

IT之家5月2日消息,乐鑫信息科技4月30日宣布,ESP32-C5现已全面进入量产。ESP32-C5宣称是行业首款2.4&5GHz双频Wi-Fi6的RISC-...

Vue Shop Admin:强大而易用的后台管理系统模板

VueShopAdmin是一个基于Vue.js框架的后台管理系统模板。它具有简洁、易用和美观的特点,非常适合开发人员用于快速构建各种类型的管理系统。这个模板使用了最新的技术,如Vue3、V...

基于Prometheus的自动化巡检(prometheus自动发现详解)

!!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事道路千万条,安全第一条。操作不规范,运维两行泪。前言目前,大部分公司都采用Promet...

取消回复欢迎 发表评论: