Add support for advanced performance data format (eg: openmetrics)
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 616
- Avg merge
- 5d 6h
- Merged PRs (30d)
- 10
Description
Please consider making Icinga compatible with OpenMetrics format or a more advanced perfdata format than Nagios.
Nagios perfdata format is somehow limited, eg. you cannot put tags or additional info within each measured metric.
Nagios format is fine for most checks but sometimes you need more info about each perfdata object.
Consider the case of a disk usage check, each perfdata object is like:
'<mountpoint>'=<value><uom>;<warn>;<crit>;<min>;<max>
or:
'<device>'=<value><uom>;<warn>;<crit>;<min>;<max>
What if we want to know the device AND the mountpoint in a single shot?
All we can do is make a wrapper and play with the label:
'<device>@<mountpoint>'=<value><uom>;<warn>;<crit>;<min>;<max>
Of course this is not limited to disk space checks.
I think we all need a more advanced perfomance data format.
The Openmetrics one (derived from, and i think still compatible with, Prometheus exposition format) is nice as you can define for each object one or more tags, a value and a timestamp.
This is an example from the disk space usage plugin from the Centreon suite (still no devices but you get it, fairly simple to add them as tags):
$ ./centreon_linux_local.pl --plugin "os::linux::local::plugin" --mode storage --critical-usage 95 --warning-usage 90 --filter-mountpoint "/boot" --output-openmetrics
used{plugin="os::linux::local::plugin",mode="storage",unit="B",warning="0:442937548",critical="0:467545190",min="0",max="492152832",instance="/boot"} 90319872 1699626936069
plugin.mode.status{plugin="os::linux::local::plugin",mode="storage"} 0 1699626936069
Another example would be the Influxdb line protocol.
References:
https://nagios-plugins.org/doc/guidelines.html#AEN200
https://github.com/OpenObservability/OpenMetrics/blob/main/specification/OpenMetrics.md
https://prometheus.io/docs/instrumenting/exposition_formats/
https://docs.influxdata.com/influxdb/cloud/reference/syntax/line-protocol/
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No implementation files or tests are named in the issue. Start by reading the linked OpenMetrics, Prometheus exposition-format, Nagios perfdata, and InfluxDB line-protocol references, then locate Icinga's existing perfdata handling. Done would require an agreed format and implementation that preserves the requested metric metadata, tags, values, and timestamps.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- prometheus
- Domain
- observability-sre
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100