Gleitkommawerte anstelle von ganzzahligen Werten

Hallo zusammen,

wir monitoren in unserem Team seit kurzem eine ganze Menge an verschiedenen Systemen per SNMP. Diese liefern grundsätzlich verschiedenste Informationen als Integer/ganzzahliger Wert. Die Anzeige bzw. Interpretation von CMK in den Performancedaten funktioniert soweit super. Leider werden jedoch in den Graphen selbst in der jüngsten Vergangenheit Gleitkommawerte dargestellt. “Last: 1251.7” Gibt es einen Trick bzw. einen “Workarround”, dass zumindest für die letzten X Minuten/Stunden die Werte im Original verfügbar sind? Die Kompression mit RRD Datenbanken für die Vergangenheit und die hierausresultierende Unschärfe ist vollkommen okay :slight_smile:

Das klingt seltsam, wenn der Check Integer produziert dann sollte dies auch im Graph wenigstens für die letzten Stunden so dargestellt werden.
Ist das Phänomen auch vorhanden im Graph “Last 4 hours”? Hier darf das nicht sein.
Falls ein Zeitinterval ausgesucht ist in welchem schon eine Aggregation der Werte stattfindet so ist auch der aktuellste dargestellte Wert schon der aggregierte und somit kein Integer mehr.

Ein kleines Beispiel Check Ausgabe und Graph dazu wäre nett.

Hallo Andreas, die Unschärfe ist leider auch beim Graphen “Last 4 hours” vorhanden. Einen exemplarischen Check bzw. eine Ausgabe werde ich die Tage liefern.
Ich kann es mir selbst nicht erklären…

Ich bin doch ratlos. Ich habe es gerade in einem kleinen minimalen Test versucht nachzustellen:

Eine minimalistische metrics.py:

metric_info['buffers'] = {
   'title': _('Buffers in use'),
   'help': _(''),
   'unit': 'count',
   'color': '#f900ff',
} 
graph_info["buffers"] = {
   "title": _("Bufferusage"),
   "metrics": [("buffers", "area"),],
}   

Ein ebenso minimalistisches Checkplugin:

def inventory_buffers(info):
   return [(None,None)]

def check_buffers(item, params, info):
   # unpack check parameters
   info = int(info[0][0])
   yield check_levels(info, "buffers", None, infoname="Buffers", human_readable_func=int)

check_info["buffers"] = {
    'check_function':            check_buffers,
    'inventory_function':        inventory_buffers,
    'service_description':       'Bufferusage',
    'has_perfdata':              True,
}

Resultiert in folgender Ausgabe:

(P.S. Die Daten generiert für den Test ein einfaches python-Skript mit einem Random, wobei die Daten in Echt genauso sprunghaft sind …)

Ok nun bisl was auf der Kommandozeile zum Testen :slight_smile:
Ich würde hier gern mal einen Blick in die RRD Datei werfen welche nun erstellt wurde.
Im Verzeichnis “~/var/check_mk/rrd/HOSTNAME/” sollte sich ja nun die RRD für diesen einen Check wenigstens befinden. Größe müsste bei einem einzelnen Wert 376 KB sein.

Ein “rrdinfo” für diese Datei sollte einen “step” Wert von 60 anzeigen.
Die Datasource (ds) selbst sollte ihren letzten Wert anzeigen - ist dieser ein Integer?
Wenn nicht wird hier schon kein Integer von CMK in die RRD geschrieben.

Es kann hier noch was anderes passieren, das hat aber mit der Graphen Generierung im CMK zu tun. Jedenfalls in der Enterprise Edition.
Das System rechnet noch irgendwelche Zwischenschritte rein. Der Zahlenwert in der Metrics Anzeige und in der RRD stimmen beide. Der Graph zeigt aber was anderes. Das gleiche Phänomen sehe ich aber auch bei Graphen welche mittels PNP4Nagios erstellt wurden.

Wenn man mal Glück hat siehts bei nem Wert mal so aus wie in dem Screenshot :slight_smile:


Das ist aber mehr Zufall.

Hallo :slight_smile: Danke für die Antwort.
Die Größe und der step Wert passt und auch ds[1].last_ds = "465". Der Wert im Graphen passt aber nicht dazu…

Ich wäre durchaus interessiert an einer Möglichen Lösung - sofern es eine gibt :worried:
Augenscheinlich tritt das Phänomen maßgeblich bei sehr schwankenden Werten auf. Konstant gleichbleibende Werte (ausstehende Updates,…) werden sauber dargestellt.

Also grundsätzlich sind die Daten richtig da. Eine testweise Integration in Grafana zeigt die richtigen Werte an, und auch rrdtool generiert mir einen “richtigen” Graphen. Somit scheint es wirklich “nur” ein optischer Bug in CheckMK zu sein.

Wobei der Graph von Grafana und der von CMK für mich hier fast identisch aussehen. Beiden zeigen schön das eigentliche Problem von so schwankenden Werten. Durch die Interpolation zwischen den Werten geht sehr viel von Eindeutigkeit verloren welche im RRDTool Graph zu sehen ist. Bei so etwas würde ich auch die “Treppchengrafik” bevorzugen. Keine Ahnung ob sowas machbar wäre im CMK. Im Grafana geht es da hab ich mir so etwas in der Art schon mal gebaut.

Mhm okay… also ich hab das ganze noch etwas weiter verfolgt. Irgendwas passt da nicht. Ich werde das ganze wohl doch mal dokumentieren müssen. Die Werte in Grafana entsprechen nicht denen, die ich generiere bzw. ausgebe bzw. die Werte in der RRD sind schon “falsch”. Sprich der Weg von CMK zu RRD erzeugt leider diese Unschärfe.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.