Release Notes
Current version: 1.5.9. Upgrade method: for standalone deployments, change
the tag of x-ops-image at the top of ops.yaml, then run
docker compose -f ops.yaml pull && up -d; for Kubernetes, download the
manifests again and apply them over the existing deployment. Data volumes remain
unchanged, and monitoring history plus alert configuration are preserved.
Read Before Upgrading From 1.4.x
- Data sources are managed only from the UI Data Sources page.
ENV_MYSQL_*,ENV_REDIS_*,ENV_KAFKA_ENDPOINTS,ENV_ELASTICSEARCH_*,ENV_MONGODB_URI,ENV_PROMETHEUS_HOST,ENV_FLINK_URL, and similar variables inops.yaml/ ConfigMap are no longer read (the startup log lists them). Existing data sources are not affected. You can delete those lines. - Logs and traces require two different buckets (
ENV_S3_BUCKET_LOKI/ENV_S3_BUCKET_TEMPO), and both buckets must be created before deployment.ENV_S3_ENDPOINTshould behost:port, withouthttp://. - For already-running instances, do not change data volume paths to match
the new documentation. The new
/data/mdis/layout is only for fresh installations.
v1.5 - July 2026
Configuration entry points are consolidated into the UI, and Kubernetes monitoring plus object-storage usability are now complete.
New
- Bulk import / export for data sources. The Data Sources page supports
YAML / JSON bulk import, including downloadable commented templates. Import is
idempotent by type + name, so the same file can be imported repeatedly.
Each entry is validated and connection-tested during import, and you can run
Validate only first. One-click export to YAML in the same format is also
supported for backup, reinstall recovery, and copying to another environment,
with without passwords and with plaintext passwords options. The API
POST /api/alert/sources/importis also available. - Test Connection also verifies whether data is actually collected. A
reachable port and valid credentials do not necessarily mean charts have data;
target delivery, collector process startup, and metric scraping still need to
succeed. The test now queries the platform Prometheus at the same time and
distinguishes connected and collecting from connected but no data yet.
The latter includes causes and self-check queries. The list Status column
now shows
Connected - Collecting/No Data. - Kubernetes collector component mode. Only Prometheus +
kube-state-metrics are installed in the monitored cluster as collectors, and
metrics are pushed back to the platform through
remote_write. This supports two scenarios: the platform runs outside the monitored cluster, and one platform monitors multiple clusters. All collection happens inside the monitored cluster; the apiserver, kubelet, and kube-state-metrics do not need to expose any port. The cluster only needs outbound access to the platform. Dashboards provide a Cluster dropdown at the top. - The gateway adds Bearer-authenticated metric and log write endpoints
(
ENV_PROMETHEUS_REMOTE_WRITE_TOKEN/ENV_LOKI_PUSH_TOKEN), enabling multi-cluster onboarding and cross-cluster log pushes.
Changed
- Data sources now have a single entry point: the UI Data Sources page (breaking change; see the warning above). Slow-query diagnostic targets now come from MongoDB data sources whose purpose includes Diagnose. MongoDB is no longer a built-in data source and can now be edited or deleted like other sources. Only Prometheus remains built-in.
- Kubernetes monitoring now requires the platform to run inside the monitored
cluster (
incluster), or collector components must be installed in the monitored cluster. The previous external scraping method (static), which required a Bearer Token and three NodePorts, and the Kubernetes cluster data source type have been removed. - Logs and traces now use two independent buckets. Component data directories
are unified as
/data/mdis/<component>. Cluster manifests provide example bucket namesmdis-loki/mdis-tempo. - Namespace, node label, and taint key are unified as
hap-ops. - The Limits Ratio on K8s dashboards is the ratio between container limits and node allocatable resources. Kubernetes allows overcommit by design, so it is no longer highlighted in red as a usage threshold.
Fixed
- Several root causes of empty Kubernetes monitoring after deployment: the
gateway Service did not expose ops-server port 8081 and lacked
ENV_OPS_SD_URL, so collectors could not fetch service discovery data; theops-agentService had to be headless, otherwise all dynamic ports were refused; the single-fileops.yamldid not create the namespace and lacked ServiceAccount / ClusterRole / kube-state-metrics. Manifests and documentation have been corrected.kubectl apply -f ops.yamlnow installs everything and produces data immediately. - The K8s dashboard Cluster and Namespace dropdowns could not load values, which also left container, Pod dropdowns, and related panels empty. The cluster identifier is now injected directly in the collection configuration, and namespaces now use metrics that are always exposed by newer kube-state-metrics.
- Three causes of MongoDB data sources collecting no metrics: credentials entered in the UI were not passed to the collector process; multi-node replica set connection strings conflicted with the collector's direct connection mode; the collector enabled items that required additional database permissions, and insufficient privileges interrupted the entire metrics endpoint. All have been fixed, and collection recovers after upgrade.
- The Host Monitoring dashboard had no data at all during 1.5.8. A hidden filter on the host dashboard was incorrectly tied to the K8s cluster label, while host metrics do not carry that label. The metrics were always present. Upgrading to 1.5.9 restores the dashboard with no configuration change.
- Three misleading slow-query behaviors: selecting the Diagnose purpose required a gateway restart to take effect (now immediate); when enabling slow query failed on the target database, the UI still showed Enabled (now it reports insufficient permission and provides manual commands); all exceptions were shown as slow-query recognition policy not enabled (now messages distinguish no target database, insufficient account permission, failed status read, and truly disabled).
- Collection status was inaccurate: host sources always showed Not Collected (hosts are scraped directly by the platform Prometheus, not through ops-agent, and now the actual scrape result is queried); a running collector process could still show process exited (now it distinguishes port not listening, response interrupted, scrape timeout, and no data, and points to the relevant log file); Flink connectivity was invisible in the list (now included in connectivity checks).
- Kubernetes no longer logs repeated
docker.sockconnection errors. ops-alloy now decides whether to collect Docker logs based on whether that socket exists. If you previously mounted the hostdocker.sockinto ops-alloy to silence the error, remove it. That collects host container logs, not Pod logs. - The collector
remote_writeexample address now includes the/prometheus/server/prefix. The old example returned 404 and only retried silently in container logs. The two K8s manifest sets no longer push metrics back to the platform itself.
Patch Versions Included in This Series (1.5.0 - 1.5.9)
| Version | Main Changes |
|---|---|
| 1.5.9 | Host dashboard regression fix, data source export, connection test verifies actual collection |
| 1.5.8 | K8s cluster identifier injected during collection, slow-query target takes effect immediately, Flink connectivity status |
| 1.5.7 | Single-file ops.yaml completes K8s collection objects, Bearer write endpoints |
| 1.5.6 | Multi-node replica set MongoDB collection |
| 1.5.5 | MongoDB collection credential propagation, Kubernetes collector component mode |
| 1.5.4 | Docker log collection enabled only when needed under Kubernetes, cluster manifests available for download |
| 1.5.3 | Kubernetes monitoring consolidated to incluster |
| 1.5.2 | Data directories unified as /data/mdis/<component> |
| 1.5.1 | Logs and traces split into independent buckets |
| 1.5.0 | Single data source entry point, bulk import |
v1.4 - July 2026
The self-developed alerting subsystem replaces Grafana alerting, and delivery changes to a single image.
New
- Built-in alerting subsystem, replacing the former Grafana alerting. It includes seven monitoring types: base resources with custom PromQL, ports, SSL, MySQL, MongoDB, Kafka backlog, and Kafka rebalance. The warning -> alert -> recovery state machine reduces noise and notifies only on state changes. Notification channels include Feishu, DingTalk, WeCom, email, and custom Webhook. Global alert history can be filtered by type, status, and time.
- Unified data source management. A new top-level Data Sources page centrally manages hosts, middleware, K8s, and Flink, with multiple instances supported. The left menu is displayed dynamically based on enabled data sources. Test Connection performs real authentication. Credentials are AES-encrypted. Adding a data source in the UI automatically starts the exporter and registers the scrape target, without changing environment variables or restarting.
- Collection status and post-deployment self-check. The Data Sources page directly shows Collecting / No Data / Stopped / Not Collected. Red states reveal the raw failure reason and provide copy-ready troubleshooting commands. The Overview page summarizes six states: metric collection, host monitoring, HAP service logs, tracing, alert notification, and slow-query diagnostics.
- MongoDB slow-query diagnostics support sharded clusters, and multiple instances are automatically aggregated for analysis.
Architecture Changes
- Single-image delivery: all components are merged into
ops-allinoneand distinguished byROLE, so only one image needs to be pulled or imported offline. Theops.yamlstructure has changed accordingly; regenerate it from the latest deployment documentation. - Independent alert data storage: a new
ops-mongocontainer stores rules, state, history, channels, and data sources, decoupled from the business database. - New required setting:
ENV_ALERT_CRYPTO_KEY(credential encryption key). - The former Grafana alerting / notification / silence screens have been removed. Recreate rules in the new Alert Management page.
Fixed
- Host monitoring disappeared after upgrade during 1.4.8. The upgrade migration missed the host type, and upgrading to 1.4.10 restores it automatically.
- Data sources created through the API defaulted to disabled, and Kafka / MongoDB / MySQL purposes were empty. The data sources were created but never collected. They are now enabled by default and default purposes are applied.
- The same MongoDB could be registered twice, and built-in data source purposes were reset on every restart.
- MySQL / MongoDB monitoring did not decrypt passwords, causing connection failures and false alerts.
- Object storage compatibility: Loki uses path-style and Tempo uses
bucket_lookup_type, supporting Tencent Cloud COS and Alibaba Cloud OSS. - Failed
ops-mongoconnection now retries in the background with backoff instead of permanently disabling the alerting subsystem. Startup order no longer requires manual intervention. - Trace service names strip namespace suffixes and no longer only support
default.
Patch Versions Included in This Series (1.4.0 - 1.4.10)
| Version | Main Changes |
|---|---|
| 1.4.10 | Host monitoring upgrade loss fix, API data source defaults, deployment self-check |
| 1.4.8 | Data source collection status |
| 1.4.6 | Trace service names support any namespace |
| 1.4.5 | Background retry for ops-mongo, data sources enabled by default after creation |
| 1.4.4 | Prometheus size-based retention |
| 1.4.3 | Object storage compatibility, istio tracing appProtocol |
| 1.4.1 | MySQL / MongoDB credential decryption |
| 1.4.0 | Built-in alerting subsystem, unified data sources, single-image delivery |
v1.3 - June 2026
- Kubernetes cluster monitoring, with new K8s dashboards and menu entries.
- A single agent supports monitoring multiple middleware instances.
- Loki data retention (30 days by default) and the delete API are enabled.
v1.2 - April - May 2026
- Added log viewing, APM distributed tracing, and a unified interface for metrics / logs / traces.
- The log panel is split into Container Console and Service Logs. Service Logs support automatic expansion of structured fields and full-text search by phone number / ID / traceID, and all filters support multi-select.
- Supports subpath deployment, such as mounting the reverse proxy at
/mdis. - Deployment resource requirements corrected to 4C / 8G.
v1.1 - February 2025
- MongoDB slow queries and index suggestions, with alert configuration support.
v1.0 - January 2025
- Initial version: system resource monitoring.