Releases: otAAAh/checkmk-json-agent
Release list
v0.15.0
[0.15.0] - 2026-08-31
Features
Fixes
Other
v0.14.0
[0.14.0] - 2026-08-30
Upgrade notes
A timestamp field with format auto now reads HTTP-dates
Interpret the value as → a timestamp with format auto previously accepted a
number (epoch seconds or milliseconds) or an ISO 8601 string, and reported
anything else as Not a valid timestamp (UNKNOWN). It now also accepts an
HTTP-date — Wed, 21 Oct 2015 07:28:00 GMT — because that is what
Last-Modified, Expires and a date-form Retry-After contain, and those only
became reachable in this release (see the @header. paths below).
Effect: a field that was stuck at UNKNOWN because its value was an HTTP-date
now resolves to a real age. If that field has upper levels configured, it can go
WARN or CRIT on the next check where it previously sat UNKNOWN. This only affects
fields explicitly configured as timestamps whose value is an HTTP-date; the
explicit ISO 8601 format is unchanged and stays strict.
Features
- Give piggyback hosts host labels from their own element (#165) (
07b7799) - Pick response headers instead of typing '@Header.' paths (#162) (
3c904b6) - Compute a ratio from a second path with the 'other' variable (#160) (
c294cdf) - Read a value from a response header with an '@Header.' path (#159) (
bbd8828)
Fixes
Other
- The 0.14.0 forum announcement and its upgrade note (#166) (
d5c16db) - Deps: Bump ruff from 0.16.3 to 0.16.4 (#154) (
a0d3da8) - Use Checkmk's own click-outside and key-shortcut helpers (#158) (
c3f2d44) - Bump the actions group with 2 updates (#155) (
deddc2d) - Deps: Bump mypy from 2.3.0 to 2.3.1 (#153) (
e628584) - Collapse duplicated logic, no behaviour change (#157) (
7fa1e91) - Bump the actions group with 2 updates (#152) (
37aa37e) - Deps: Bump ruff from 0.16.1 to 0.16.3 (#151) (
b0aaa34) - Refresh the Exchange listing, four releases behind (#150) (
f9aac06) - Add the 0.13.0 forum announcement (#149) (
c9613a8)
v0.13.0
[0.13.0] - 2026-08-14
Upgrade notes
Sending a field to the inventory takes its service away
Purely additive — nothing changes unless you set the new Write into the HW/SW
inventory on a field. But it defaults to creating no service, which is the
point of the feature: a version or a licence tier is a fact, not a state, and it
should not cost a service slot and a check interval to report something that
changes twice a year.
Effect: turning it on for a field that is already a service removes that
service on the next discovery, and its metric history goes with it. If you want
both — a value in the tree and an alert on it — tick Also create a service
for this field in the same edit.
Inventory also runs on its own, slower schedule, so a newly configured field
appears in the tree at the next inventory run rather than at the next check.
Cached endpoints refetch once after upgrading
The response cache now keys entries on the credential as well as the URL, method,
body, headers and TLS settings. Without that, several rules polling the same
multi-tenant URL with a different API key each shared one cache entry and served
each other's data for the whole TTL. Only a hash of the credential is used; the
credential itself still reaches neither the agent's command line nor the disk.
Effect: the identity of every authenticated cached endpoint changes, so the
first check after upgrading fetches fresh instead of serving a cache hit. One
extra request per endpoint, once. The superseded files are pruned automatically.
Features
- Write a field into the HW/SW inventory (#146) (
cae4e0e) - Retry a failed request per endpoint, with backoff (#145) (
7e9d0ed) - Extra summary text with '{path}' placeholders (closes #140) (#144) (
43df229) - API key authentication from the password store (closes #139) (#143) (
92b1942)
Fixes
Other
- Upgrade notes for the inventory target and the cache-key change (#148) (
6a32f4b) - CI fix: Dependabot Updates on main (#138) (
d59fa0d) - Bump js-yaml from 4.3.0 to 4.3.1 in /frontend (#136) (
7768f83) - Bump the actions group with 3 updates (#135) (
8bc1880) - Bump fast-uri from 3.1.4 to 3.1.5 in /frontend (#134) (
edba561) - Add the 0.12.0 forum announcement and an announce step (#133) (
d055ed4)
v0.12.0
[0.12.0] - 2026-08-03
Upgrade notes
The response cache is opt-in, and deliberately fails loudly
Nothing changes unless you set the new per-endpoint Re-read at most every
(seconds). When you do, two behaviours are worth knowing before you rely on it:
- A failing request is never answered from an expired cache. The endpoint goes
CRIT as it would without caching. This is deliberate — monitoring that serves
stale data through an outage is worse than useless — but it does mean a cache
does not make an endpoint more available, only less frequently polled. - A cached serve records no response-time metric. The
JSON API <name>
service reportsfrom cache (N old)instead. So a graph of an endpoint with a
long TTL will have gaps: those are intervals where nothing was measured, not
intervals where the API was slow.
Piggyback hosts must exist before they are monitored
Purely additive — nothing changes unless you set the new Create one host per
element, named by this field on a [*] field. But when you do, be aware of the
standard Checkmk piggyback rule: data for a host that does not exist in Checkmk
is stored and never monitored. No error, no service, no warning on the polling
host — it simply sits in the piggyback directory.
Effect: create the hosts first (by hand, or with Dynamic host management on
Enterprise/Cloud), then run a discovery. If you enable the option and see nothing,
this is why.
Switching an existing [*] field over to per-element hosts also moves its
services: the label-suffixed services on the polling host (JSON Node web-1)
disappear and are replaced by plainly-named ones on the new hosts (JSON Node on
host web-1), so their metric history restarts.
The endpoint service item drops the URL's query string
Endpoints without a configured Name take their service item from the URL,
which is now used without its query string (?api_key=…) — a credential passed
as a query parameter no longer lands in a service description, which reaches
notifications, availability reports and the metric paths on disk. The full URL
is unchanged in the service details.
Effect: the JSON API <url> service of every unnamed endpoint whose URL has
a query string is renamed once, on the next discovery, and its metric history
restarts. Named endpoints are unaffected. Give your endpoints a Name to
insulate them from this and from any future change to the fallback.
count over a [*] path counts only the elements that have the field
An aggregation over a wildcard path that names a field — nodes[*].load — now
counts only the elements that actually have that field, matching what
sum/avg/min/max over the same path have always done.
Effect, for rules combining count with a [*] path:
- where the field is sometimes absent, the reported number drops to the number
of elements that have it; - where the field is never present (typically a typo in the path), the service
goes UNKNOWN withpath not found in any elementinstead of silently
reporting the element count.
A wildcard-free path (aggregate: count on jobs) names no field and is
unchanged. A condition that matches nothing still counts 0.
Features
- Per-endpoint response cache (TTL) (#132) (
cb5091c) - Report the TLS certificate's remaining validity (closes #128) (#131) (
753bb77) - Create one Checkmk host per '[*]' element (closes #127) (#130) (
e2d3ca2) - Reject two endpoints sharing a name (closes #116) (#122) (
22413fe)
Fixes
- Distinguish a null element from a missing container (closes #114) (#120) (#126) (
aedc00f) - Stop the aggregation preview claiming a pre-filter count (closes #115) (#123) (
5655e4e) - Keep the query string out of the endpoint service item (closes #111) (#121) (
96dff75) - Count only the elements that have the field (closes #113) (#119) (
8a0c1af) - Render a negative duration instead of crashing (closes #110) (#118) (
a20b34f)
Other
v0.11.0
v0.10.0
v0.9.0
v0.8.0
[0.8.0] - 2026-07-14
Features
- Count elements + on-site wizard fixes (completes #75) (
36ee9d2) - String matching with OK/WARN/CRIT state mapping (
727e033)
Fixes
- Don't crash the check on a blank calc expression (
a7254e8) - Flush stdout so the agent's section shows on direct CLI runs (
854bdd7)
Other
- Add supported-Checkmk-version badges to the README (
d87bb9f) - Stub raw-dist-missing icons; take bridge-check off the PR path (
c7a6aab) - CI: fix frontend-build (drop unresolvable setup-node pin) and bridge-check (Explorer is 2.5.0-only, drop 2.4 image) (
49d1e3d) - Add in-site JSON API Explorer wizard (json_api_explorer MKP) (
43dce51) - Deps: bump mypy from 1.13.0 to 2.2.0 (
836bf48) - Deps: bump pytest from 9.0.3 to 9.1.1 (
5b93194) - Deps: bump ruff from 0.15.8 to 0.15.21 (
6e5eb0d) - Deps: bump pydantic from 2.11.7 to 2.13.4 (
12dfede) - Bump the actions group with 2 updates (
8c33708)
v0.7.0
v0.6.0
[0.6.0] - 2026-07-08
- Deps: bump pytest from 8.3.4 to 9.0.3 (
27472a4) - CI/repo maintenance hardening (
10d7623) - Localize the Setup UI into all Checkmk-supported languages (
898e29c) - Add CI guard that the Explorer stays in sync with the ruleset schema (
8c4929b) - CI: test on Checkmk 2.4 + 2.5; attest mkp build provenance (
e35e211) - Bump the actions group with 4 updates (
30d5569) - Harden GitHub Actions: pin action SHAs, add CodeQL + Dependabot (
3273e98)