Note
This release contains breaking changes 1.9.0 is not a drop-in replacement for the 1.8.x jar or image. The runtime, the configuration file, the authorization rules, the collector credential format, the GreptimeDB table schema and several alerting semantics all changed incompatibly. Read this guide in full before you start: how to update to 1.9.0
What's Changed
- [fix] Fixed Prometheus task history charts not working in the Favorites tab by @Duansg in #4014
- [improve] improved version validation documentation content by @Duansg in #4013
- docs: update download page to v1.8.0 by @TJxiaobao in #4015
- [Docs] Release version 1.8.0 documentation by @zqr10159 in #4017
- docs: fix the sidebars i18n and version display, add auto deploy action by @tomsun28 in #4018
- [fix] Fixed template name mismatch issue by @Duansg in #4021
- [Task] Add user account monitoring metrics for MongoDB by @turanalmammadov in #4033
- docs: add H2 database security warning page by @turanalmammadov in #4036
- Revert "[Task] Add user account monitoring metrics for MongoDB" by @Duansg in #4038
- Split hertzbeat-common into core and spring modules by @zqr10159 in #4035
- fix: Add i18n support for setting-drawer component by @miantalha45 in #4006
- [improve] Improve the login page style by @Duansg in #4044
- [fix] fix alertmanager integration issue by @Duansg in #4022
- feat: SOP-driven AI workflows with skills, scheduling, and i18n support by @TJxiaobao in #4016
- docs: update security model desc by @tomsun28 in #4047
- fix: fix home doc deploy action by @tomsun28 in #4029
- Fix typo: occured to occurred by @04cb in #4049
- [feat] Support Apache Doris as time-series storage for both metrics and logs by @Saramanda9988 in #4031
- fix[protocol-sd]: add register center params check by @yuluo-yx in #4048
- [improve] add group convergence strategy name validation by @Duansg in #4050
- [improve] improved interaction styling for the template editor by @Duansg in #4051
- style: apply primary button style to monitor manage action by @Darshan-paul in #4045
- feat[common]: add hertzbeat common protocol entitiy check by @yuluo-yx in #4052
- docs: improve website geo by @tomsun28 in #4053
- [bugfix] correct typo in sureness monitor delete verb definition by @brettgervasoni in #4054
- feat[common]: add protocl entity check by @yuluo-yx in #4055
- chore: remove the sharp package by @tomsun28 in #4056
- [chore]: Update to Springboot4 and Hibernate 7 by @zqr10159 in #4057
- feat: update nacos client to 3.1.1 by @yuluo-yx in #4061
- [feat]: migrate blocking executors to virtual threads by @zqr10159 in #4062
- feat[common]: add protocol entity check by @yuluo-yx in #4060
- [feat]Add monitoring support for Ollama LLM runtime by @Duansg in #4064
- [improve] improve plugin upload validation by @Duansg in #4067
- [feat]: Native collector by @zqr10159 in #4066
- feat[common]: add core protoctl entity check by @yuluo-yx in #4065
- [improve] improve the hierarchical alignment of token issuance by @Duansg in #4076
- [fix] fix zookeeper configuration not taking effect by @Duansg in #4077
- [docs]doc: unify naming HertzBeat and agentless across docs and assets by @zhehenlu in #4075
- [build]fix: remove duplicate version properties in root pom by @zhehenlu in #4073
- [docs]doc: fix typos and grammar in docs and AccountController by @zhehenlu in #4072
- [feat]: add MySQL R2DBC query engine support by @zqr10159 in #4074
- [feat] add API token management functionality by @Duansg in #4080
- [fix] fixed issue with the token management style by @Duansg in #4083
- [feat] add monitoring template for the LM Studio platform by @Duansg in #4082
- [fix] fix cyclic silence time matching and cross-midnight handling by @yuluo-yx in #4081
- [CI] update Docker build-push-action version by @P-Peaceful in #4088
- [improve] fix e2e test failure caused by api-testing reverse test behavior by @P-Peaceful in #4091
- docs: remove reddit and qq links from readmes by @zqr10159 in #4092
- [ci]: update the dependency versions of GitHub Actions workflows by @P-Peaceful in #4089
- [doc] improve e2e local run guide by @P-Peaceful in #4095
- [improve] optimize the function of creating monitoring using AI by @LiuTianyou in #3922
- [Improve] Add common protoctl entity check by @yuluo-yx in #4084
- feat(nacos-sd): add auth and filtering parameters for Nacos service d… by @pentium100 in #4099
- [feature]: support victoria metrics cluster query executor by @P-Peaceful in #4103
- feat: add common protocol entity check by @yuluo-yx in #4097
- [doc] update markdownlint config to ignore MD060 by @P-Peaceful in #4105
- [doc]: fix MD001 heading increment issues in home docs by @P-Peaceful in #4106
- [doc] rename WeChat Public to WeChat Official Account by @P-Peaceful in #4109
- [fix] support realtime metric and log edit tooltip by @P-Peaceful in #4110
- [doc] add questdb init doc to sidebar and unify label by @P-Peaceful in #4113
- ci: reduce repeated setup and nightly rebuild work by @Aias00 in #4119
- [improve] Improvements to NVIDIA's monitoring history charts are not displayed by @Duansg in #4123
- [fix] Fix some issues related to ci by @Duansg in #4135
- [improve] Improve LogRealTimeAlertE2eTest group alert flakiness by @Duansg in #4137
- bugfix Update delete dashboard response message to success by @zhusaidong in #4133
- [doc] update metrics storage docs to use duckdb instead of jpa by @P-Peaceful in #4112
- [improve] Improve the styling of the monitoring list page by @Duansg in #4138
- [improve] Improve status page settings UI for better UX by @Duansg in #4139
- [fix] fix Dockerfile directory creation error by @Duansg in #4143
- [monitoring-template] feat(sqlserver): add database account expiry metrics (#3737) by @neon-hippo in #4141
- [fix] fixed the JMX service URL validation issue by @Duansg in #4146
- [fix] fix the dead link issue in ci by @Duansg in #4148
- fix(monitor): fix Redis Sentinel helpLink, sentinel metric types, add sentinel_timedout_scripts field by @abhyudayareddy in #4122
- [bugfix] Fix imported monitor instance being empty due to host/instan… by @starryCoder in #4142
- [feat] support editing definitions and simplify metric selection by @Duansg in #4158
- [fix] fixed an issue where cron jobs were not rescheduled by @Duansg in #4159
- [fix] fix monitor list showing previous page as unavailable when paging by @Duansg in #4161
- fix: avoid blocking modify monitor by redundant detect call by @wilmerdooley in #4154
- [doc] update bulletin help docs for editing and metric-tree selection by @Duansg in #4177
- [fix] keep monitor selection across pages in monitor list by @Duansg in #4170
- [fix] fix monitor import/export losing annotations and cron schedule … by @Duansg in #4166
- [fix] pre-validate monitor import batch to avoid orphan tasks and empty list by @Duansg in #4180
- [fix] fixed the issue of plugin upload failure. by @LiuTianyou in #4179
- [feat]:add db account monitoring metrics for postgresql. by @wy471x in #4131
- [feat] add ntfy as a new alert notification channel by @Zmjjeff7 in #4132
- [fix] persist custom monitor labels when writing to GreptimeDB by @wilmerdooley in #4151
- [collector]bugfix: honor XML response charset by @hutiefang76 in #4167
- [bugfix] Fix duplicate collector job timeouts by @hutiefang76 in #4169
- [fix] upgrade the version of spring-ai. by @LiuTianyou in #4176
- [monitoring-template] fix: correct malformed html tags in help text by @orangeCatDeveloper in #4185
- [doc] fix typos and stale setup instructions across docs by @orangeCatDeveloper in #4186
- docs: fix 13 typos in documentation and comments by @ZhouYinLong-lab in #4187
- [collector]bugfix: close jdbc connection on statement creation failure by @hutiefang76 in #4184
- [fix] Fix startup_failure: pin third-party actions to ASF-allowlisted SHAs by @Duansg in #4193
- feat: fix ssh connection bug by @yuluo-yx in #4198
- [fix] Prevent NPE when VictoriaMetrics compression is unset by @yuluo-yx in #4199
- fix: avoid LLM generates sql has sql injection error by @yuluo-yx in #4200
- [fix] cancel the overwritten timeout in cyclicJob to fix HashedWheelTimeout memory leak by @Duansg in #4201
- [fix] Fix notice rule label matching against grouped alerts by @Duansg in #4191
- docs: fix dead taosKeeper doc links by @orangeCatDeveloper in #4202
- [fix] expose prestodb auth parameters and wire authorization into all metrics by @orangeCatDeveloper in #4188
- [fix] carry job labels/annotations/metadata in timeout metrics data by @Duansg in #4205
- [fix] Fixed matching issues caused by date components and outdated time zone offsets by @Duansg in #4192
- feat: replace deprecated Spring AI Tool API by @yuluo-yx in #4206
- fix: pin collector docker image root path across versions by @orangeCatDeveloper in #4189
- fix: collector boot fails when jar manifest lacks Class-Path by @orangeCatDeveloper in #4190
- refactor: remove obsolete template marketplace by @zqr10159 in #4207
- fix(ai): correct conversation message handling by @yuluo-yx in #4208
- feat(observability): add Angular three-signal transition by @zqr10159 in #4195
- fix: remove duplicated ASF license headers left by license-eye auto-fix by @Duansg in #4210
- [improve] bump grpc-java from 1.56.1 to 1.76.3 by @Duansg in #4211
- [feature] Add Korean i18n by @moduvoice in #4197
- chore(ci): Add workflow_dispatch trigger to nightly build by @yuluo-yx in #4213
- fix(log): send initial SSE event and periodic heartbeat by @yuluo-yx in #4221
- [improve] mask secret fields of notice receiver in rest api response by @Duansg in #4220
- [improve] form-urlencode SQL request body in GreptimeSqlQueryExecutor by @Duansg in #4223
- fix(ai): improve SOP execution and provider config handling by @yuluo-yx in #4224
- fix:prometheus timeout monitor key mismatch by @hengyuss in #4215
- [improve] reject masked receiver edit when the stored receiver does not exist by @Duansg in #4225
- [improve] remove unused log management translations by @Duansg in #4229
- fix(ai): propagate security context to tool callbacks by @yuluo-yx in #4230
- feat(status-page): add configurable time range for component history by @wy471x in #4222
- [improve] pre-create hertzbeat_logs table during greptime signal initialization by @Duansg in #4231
- feat: use spring ai MethodToolCallbackProvider replace custom reflect… by @yuluo-yx in #4234
- [improve] degrade observability consoles gracefully when storage lacks log/trace/metric support by @Duansg in #4233
- [fix] fix horizontal scroll not working in periodic threshold preview table by @Duansg in #4238
- refactor: evolve common-core payload compatibility by @zqr10159 in #4237
- fix: add SSE authentication and correct GreptimeDB SQL by @bigcyy in #4243
- fix: update GreptimeDB Docker Compose to v1.1.3 by @bigcyy in #4244
- fix(web-app): add missing Korean observability menu translations by @orangeCatDeveloper in #4240
- fix(web-app): point threshold user guide link to correct docs by @orangeCatDeveloper in #4239
- fix(web-app): replace removed stylelint --syntax flag by @orangeCatDeveloper in #4241
- docs: add new contributors and update notice year by @tomsun28 in #4245
- ci(doc-deploy): fix pnpm cache setup and upgrade Node to 22 by @tomsun28 in #4248
- fix(ai): remove SOP schedules when deleting conversations by @yuluo-yx in #4247
- [docs] refactor blog list UI to card grid by @orangeCatDeveloper in #4219
- fix(alerter): keep webhook query params intact by @orangeCatDeveloper in #4249
- test: fix two flaky tests by @orangeCatDeveloper in #4250
- improve(dashboard): hide empty category cards, add empty state by @orangeCatDeveloper in #4242
- fix(ai): improve alert rule validation and parsing by @yuluo-yx in #4251
- [fix] skip SQL Server integration test on arm64 by @Duansg in #4253
- fix(ai): improve SOP schedule error handling by @yuluo-yx in #4254
- [chore] upgrade hertzbeat version by @Duansg in #4255
- [fix] prevent masked notice secret replay to attacker URLs by @yuluo-yx in #4262
- [fix] bind greptime compose data-store ports to localhost by @Aias00 in #4258
- fix(ai): handle invalid skill params and failed reports by @yuluo-yx in #4297
- [fix] stop jdbc connection properties injected through the database name by @Duansg in #4299
- [fix] restrict /api/ai SOP endpoints to admin role by @Duansg in #4261
- [fix] stop exposing the jwt and aes master keys over the config api by @Duansg in #4270
- maintenance: scope Grafana request authentication by @zqr10159 in #4288
- maintenance: bound alert persistence locks by @zqr10159 in #4285
- maintenance: normalize Zabbix alert identity by @zqr10159 in #4284
- maintenance: canonicalize alert label fingerprints by @zqr10159 in #4283
- Generate metric scheduling intervals lazily by @zqr10159 in #4290
- maintenance: derive rule-scoped notice groups by @zqr10159 in #4291
- maintenance: bound SMS client failure details by @zqr10159 in #4282
- Define bulletin write fields explicitly by @zqr10159 in #4292
- maintenance: preserve metric string values by @zqr10159 in #4287
- fix(ai): improve SOP schedule error handling by @yuluo-yx in #4301
- [fix] restore dropped rbac rule for single monitor deletion by @Duansg in #4269
- docs(help): add alert notification overview page by @paultanay in #4300
- [fix] stop silent SSL-to-plaintext downgrade in R2DBC MySQL route by @Aias00 in #4260
- [fix] restrict monitoring template writes to admin by @Duansg in #4278
- [fix] restrict the actuator endpoints to admin by @Duansg in #4277
- [fix] validate the metric history query inputs by @Duansg in #4274
- [fix] add missing alert.setting.window i18n keys for non-zh-CN locales by @fas89 in #4298
- [fix] keep zero-row metrics data in redis queue codec by @orangeCatDeveloper in #4305
- [feat] Support etcd monitoring by @orangeCatDeveloper in #4306
- feat(alerter): support Alibaba Cloud Monitor webhook by @lynx009 in #4296
- fix(alert): keep datasource in alert rule export/import by @orangeCatDeveloper in #4264
- [fix] fix align cors configuration with header based authentication by @Duansg in #4267
- [fix] add missing rbac rules for the remaining unruled routes by @Duansg in #4271
- [feat] paginate the monitoring metrics data table by @orangeCatDeveloper in #4309
- test(web): make web-app unit tests runnable by @orangeCatDeveloper in #4314
- fix(ai): create conversation when conversation ID is missing by @yuluo-yx in #4315
- fix(ai): persist parameters for scheduled skills by @yuluo-yx in #4317
- [fix] bound what one anonymous push request can consume by @Duansg in #4273
- [fix] stop serving the openapi document to anonymous callers by @Duansg in #4276
- [security] Restrict plugin upload endpoint to admin role (#4149) by @Bhavya-Sonigra in #4257
- fix(collector): correct jsonpath alias parsing for rows missing path by @orangeCatDeveloper in #4265
- [fix] keep one-row metric data when command output is short by @orangeCatDeveloper in #4308
- [fix] evaluate threshold rules with empty field values by @orangeCatDeveloper in #4307
- fix(collector): keep partial telnet metrics, surface raw reply by @orangeCatDeveloper in #4311
- fix(deps): replace bouncycastle jdk15on with jdk18on 1.85 by @orangeCatDeveloper in #4312
- [fix] strip NUL bytes before tdengine history insert by @orangeCatDeveloper in #4310
- [fix] prevent SQL injection in QuestDB history queries by @Aias00 in #4259
- [fix] require an account to subscribe to the alert and manager streams by @Duansg in #4272
- fix(web-app): clear dependent param value when condition not met (#2298) by @DSingh0304 in #4304
- docs(help): add push style monitor help documentation (#1795) by @paultanay in #4321
- [bugfix] Alarm group convergence must not resolve while members are still firing by @nikhiln64 in #4316
- [fix] keep monitor instance identity stable across edits by @orangeCatDeveloper in #4329
- [fix] jitter first cyclic schedule to avoid restart thundering herd by @orangeCatDeveloper in #4328
- [fix] ssl_cert monitor: skip hostname check when verify is off by @orangeCatDeveloper in #4324
- [fix] make V181 migration idempotent and self-repair flyway history by @orangeCatDeveloper in #4326
- [improve] sync material/licenses with the actually bundled dependencies by @Duansg in #4336
- Consolidate entity-free observability for 1.9 by @zqr10159 in #4302
- [feature][alerter] Support notification template preview by @Prabal864 in #4338
- feat(collector): resolve time expressions in http url and headers by @orangeCatDeveloper in #4334
- feat: extend status page history up to 365 days by @orangeCatDeveloper in #4333
- [feature] support exporting alerts to Excel by @orangeCatDeveloper in #4332
- [fix] prevent duplicate dispatch when collector task times out by @paultanay in #4342
- [chore] update pnpm action setup to specific commit hash by @delei in #4341
- [fix] never send null template variables to Aliyun SMS by @orangeCatDeveloper in #4331
- [bugfix] Remove broken Push Style Monitor (app-push) support by @Prabal864 in #4339
- [fix] align integration page gRPC endpoint and hint with the actual listener port by @Duansg in #4343
- [fix] validate sql reaching the alert query executor by @Duansg in #4275
- maintenance: scope AI conversations by creator by @zqr10159 in #4280
- maintenance: validate MCP OAuth exchanges by @zqr10159 in #4279
- maintenance: define VictoriaMetrics label collisions by @zqr10159 in #4286
- maintenance: make VictoriaMetrics flush recovery durable by @zqr10159 in #4289
- [feature] add SSL certificate verification toggle for email server by @orangeCatDeveloper in #4327
- [fix] allow long threshold expr when binding many monitors by @orangeCatDeveloper in #4330
- maintenance: extend SFTP connection options by @zqr10159 in #4293
- maintenance: classify service credentials as passwords by @zqr10159 in #4281
- maintenance: scope quick-start listeners by @zqr10159 in #4295
- fix(ci): use ASF-allowlisted Docker setup actions by @yuluo-yx in #4356
- [fix] add missing ntfy default notice template by @Duansg in #4364
- [doc] align Docker Compose quick-start docs with required .env and loopback binding by @Duansg in #4359
- [fix] sync sureness.yml in release artifacts with the packaged rules by @Duansg in #4367
- [fix] consolidate unreleased 1.9.0 migrations into V190 and fix PG/MySQL startup by @Duansg in #4368
- [fix] correct inverted RegistryProtocol param validation by @Duansg in #4366
- [doc] replace all-contributors table with contrib.rocks image in READMEs by @Duansg in #4373
- [doc] add the 1.9.0 upgrade guide and correct the 1.9.0 breaking changes by @Duansg in #4369
New Contributors
- @turanalmammadov made their first contribution in #4033
- @miantalha45 made their first contribution in #4006
- @04cb made their first contribution in #4049
- @Darshan-paul made their first contribution in #4045
- @brettgervasoni made their first contribution in #4054
- @zhehenlu made their first contribution in #4075
- @zhusaidong made their first contribution in #4133
- @neon-hippo made their first contribution in #4141
- @abhyudayareddy made their first contribution in #4122
- @wilmerdooley made their first contribution in #4154
- @wy471x made their first contribution in #4131
- @Zmjjeff7 made their first contribution in #4132
- @hutiefang76 made their first contribution in #4167
- @orangeCatDeveloper made their first contribution in #4185
- @ZhouYinLong-lab made their first contribution in #4187
- @moduvoice made their first contribution in #4197
- @hengyuss made their first contribution in #4215
- @paultanay made their first contribution in #4300
- @fas89 made their first contribution in #4298
- @Bhavya-Sonigra made their first contribution in #4257
- @DSingh0304 made their first contribution in #4304
- @nikhiln64 made their first contribution in #4316
- @Prabal864 made their first contribution in #4338
Full Changelog: 1.8.0...v1.9.0-rc2