Service Erkennung Mikrotik API

Hallo ich arbeitet gerade an der Erkennung der Mikrotik Systeme via API, nach dem ich nun einige Zeit an einem Simplen Problem der librouteros verschwendet habe kann checkmk nun sauber mit der API reden.
(bitte nur die librouteros==2.1.0 oder ggf neuer installieren) ggf kann man das in der
Ggf. ne Anpassung das in der /check_mk/agents/special/agent_mikrotik die API Suc*s nur wenn wir die falsche nutzen :slight_smile: (hoffe der eine oder findet dieses per suche und spart sich meine Fehler.)

Aber nun sitze ich davor dass der Check des Hosts zwar im Agent Test angezeigt wird aber die Services nicht erstellt werden.
Vermutlich habe ich einfach nur eine Kleinigkeit ĂŒbersehen einzustellen aber irgendwie will ich es nicht ohne eure Hilfe finden können.

  • Ich sehe auf der Firewall das sich checkmk verbindet
  • Im Check mode „Save& Test“ sehe ich auch die Agent Werte der Mikrotik, also CPU / Temp usw
  • FĂŒhre ich das per CMD aus also “cmk -v maingate” bekommt er keine Werte, die angezeigten sind die SMNP checks

Check_MK version 1.6.0p11

  • FETCHING DATA
    [snmp] Execute data source
    [special_mikrotik] Execute data source
    [piggyback] Execute data source
    No piggyback files for ‘maingate’. Skip processing.
    No piggyback files for ‘192.168.199.1’. Skip processing.
    CPU utilization OK - Total CPU: 0.25%
    Filesystem system disk OK - 17.28% used (88.45 of 512 MB), trend: -102.85 MB / 24 hours
    Uptime OK - Up since Sat May 2 02:04:01 2020 (0d 21:44:39)
    OK - [snmp] Success, [special_mikrotik] Version: 0.2-MikroTik, OS: unknown, execution time 0.8 sec |

Meine Datasource Programs Einstellungen sehen so aus.

An welcher Stelle habe ich vergessen die Automatisch Erkennung anzuschalten?
Vielen dank schon mal

Da ich gerade nur ein Bild Posten kann hier das Bild mit der moglichen Ausgabe der werte aus dem Webinterface.

agent_mk

Eine Frage vorn weg. Im ausgelieferten CheckMK sind kein Special Agent und auch keine Checks fĂŒr Mikrotik Router enthalten. Hast du ein MKP installiert oder da etwas eigenes gebaut?

Die Ausgabe der Sektionen sieht so aus, dass wenn er Checks hat nur fĂŒr Temperatur etwas anzeigen wĂŒrde. DafĂŒr muss aber im Verzeichnis “~/local/share/check_mk/checks/” eine Datei liegen möglichst mit dem Namen “mikrotik_temp”. Diese enthĂ€lt dann die Check Funktion. Ohne dies wird CheckMK auch nix anzeigen.

Guten morgen,
ja das habe ich vergessen zu sagen ich habe mir aus dem exchange Archiv einen Check installiert und dieses soeben noch mal kontrolliert, per
mkp install mikrotik-0.4a_mk.mkp , diese erstellt auch die angesprochenen Dateien.

OMD[mysite]:~/local/share/check_mk/checks$ ls -lah
total 40K
drwxr-xr-x 2 mysite mysite 4.0K May 3 11:17 ./
drwxr-xr-x 14 mysite mysite 4.0K May 1 13:39 
/
-rw-r–r-- 1 mysite mysite 1.9K May 3 11:16 agent_mikrotik
-rw-r–r-- 1 mysite mysite 2.8K May 3 11:16 mikrotik_bgp
-rw-r–r-- 1 mysite mysite 2.9K May 3 11:16 mikrotik_board
-rw-r–r-- 1 mysite mysite 2.5K May 3 11:16 mikrotik_fan
-rw-r–r-- 1 mysite mysite 2.6K May 3 11:16 mikrotik_ospf
-rw-r–r-- 1 mysite mysite 3.4K May 3 11:16 mikrotik_power
-rw-r–r-- 1 mysite mysite 3.0K May 3 11:16 mikrotik_temp
-rw-r–r-- 1 mysite mysite 3.7K May 3 11:16 mikrotik_vrrp

ebenfalls befindet sich eine Datei in /opt/omd/sites/mysite/local/share/check_mk/checkman/mikrotik_temp

Also im Discovery sollten mindestens deine beiden Temperatur Checks gefunden werden.
Den Ersteller der Checks kenne ich zufÀllig und da kann ich sagen der programmiert ordentlich das sollte passen.
Jedenfalls passen deine Ausgaben zu den vom Check erwarteten Werten.

Was gibt den die Ausgabe cmk --debug -vvI hostname an Informationen her?

Hi danke, da liegt also doch noch ein fehler vor mit der librouteros und dem Plugin.
muss ich mir noch mal genauer anschauen.

[special_mikrotik] No persisted sections loaded
[special_mikrotik] Not using cache (Don’t try it)
[special_mikrotik] Execute data source
[special_mikrotik] Calling external program “/omd/sites/mysite/local/share/check_mk/agents/special/agent_mikrotik -u ‘red-man’ -p ‘password’ -c 2001 -i bgp,ospf,vrrp,health,board ‘192.168.199.1’”
[special_mikrotik] ERROR: Agent exited with code 1: Traceback (most recent call last):
File “/omd/sites/mysite/local/share/check_mk/agents/special/agent_mikrotik”, line 189, in
api = connect(username=user, password=password, host=host, ssl_wrapper=ctx.wrap_socket, port=port)
File “/omd/sites/mysite/local/lib/python/librouteros/init.py”, line 41, in connect
transport = create_transport(host, **arguments)
File “/omd/sites/mysite/local/lib/python/librouteros/init.py”, line 69, in create_transport
raise ConnectionError(error)
librouteros.exceptions.ConnectionError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:727)

Traceback (most recent call last):
File “/omd/sites/mysite/bin/cmk”, line 94, in
exit_status = modes.call(mode_name, mode_args, opts, args)
File “/omd/sites/mysite/lib/python/cmk_base/modes/init.py”, line 72, in call
return mode.handler_function(*handler_args)
File “/omd/sites/mysite/lib/python/cmk_base/modes/check_mk.py”, line 1498, in mode_discover
discovery.do_discovery(hostnames, options.get(“checks”), options[“discover”] == 1)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 134, in do_discovery
multi_host_sections = _get_host_sections_for_discovery(sources, use_caches=use_caches)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 906, in _get_host_sections_for_discovery
return sources.get_host_sections(max_cachefile_age)
File “/omd/sites/mysite/lib/python/cmk_base/data_sources/init.py”, line 279, in get_host_sections
host_sections_from_source = source.run()
File “/omd/sites/mysite/lib/python/cmk_base/data_sources/abstract.py”, line 133, in run
raw_data, is_cached_data = self._get_raw_data()
File “/omd/sites/mysite/lib/python/cmk_base/data_sources/abstract.py”, line 182, in _get_raw_data
raw_data = self._execute()
File “/omd/sites/mysite/lib/python/cmk_base/data_sources/programs.py”, line 61, in _execute
return self._get_agent_info_program(command_line, command_stdin)
File “/omd/sites/mysite/lib/python/cmk_base/data_sources/programs.py”, line 109, in _get_agent_info_program
raise MKAgentError(“Agent exited with code %d: %s” % (exitstatus, stderr))
cmk_base.exceptions.MKAgentError: Agent exited with code 1: Traceback (most recent call last):
File “/omd/sites/mysite/local/share/check_mk/agents/special/agent_mikrotik”, line 189, in
api = connect(username=user, password=password, host=host, ssl_wrapper=ctx.wrap_socket, port=port)
File “/omd/sites/mysite/local/lib/python/librouteros/init.py”, line 41, in connect
transport = create_transport(host, **arguments)
File “/omd/sites/mysite/local/lib/python/librouteros/init.py”, line 69, in create_transport
raise ConnectionError(error)
librouteros.exceptions.ConnectionError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:727)

ich hatte zwischen meinen Posts die agent_mikrotik geupdatet bei meinen test hatte ich gesehen das er die agent_mikrotik und immer eine SSL verbindung aufbaut, dieses hatte ich handisch angepassst.

api = connect(username=user, password=password, host=host, ssl_wrapper=ctx.wrap_socket, port=port)
auf
api = connect(username=user, password=password, host=host, port=port)

aber bei dem von dir genannten aufruf erhalte ich weiter Script fehler, ich denke also das die beiden Scripte nicht mehr zusammenpassen.

Loading autochecks from /omd/sites/mysite/var/check_mk/autochecks/maingate.mk
[piggyback] No persisted sections loaded
[piggyback] Execute data source
No piggyback files for ‘maingate’. Skip processing.
No piggyback files for ‘192.168.199.1’. Skip processing.

  • EXECUTING DISCOVERY PLUGINS (19)
    Trying discovery with: if64_tplink, mikrotik_bgp, hr_cpu, mikrotik_ospf, hr_mem, snmp_uptime, check_mk.only_from, check_mk.agent_update, mikrotik_vrrp, mikrotik_fan, hr_ps, mikrotik_temp, if64adm, if64, mikrotik_signal, hr_fs, mikrotik_power, snmp_info, mikrotik_board
    The discovery function “inventory_mikrotik_bgp” of the check “mikrotik_bgp” is expected to take a single argument (info or parsed), but it’s taking the following arguments: [‘checkname’, ‘info’]. You will have to change the arguments of the discovery function to make it compatible with this Checkmk version.
    Traceback (most recent call last):
    File “/omd/sites/mysite/bin/cmk”, line 94, in
    exit_status = modes.call(mode_name, mode_args, opts, args)
    File “/omd/sites/mysite/lib/python/cmk_base/modes/init.py”, line 72, in call
    return mode.handler_function(*handler_args)
    File “/omd/sites/mysite/lib/python/cmk_base/modes/check_mk.py”, line 1498, in mode_discover
    discovery.do_discovery(hostnames, options.get(“checks”), options[“discover”] == 1)
    File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 137, in do_discovery
    only_new, on_error)
    File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 171, in _do_discovery_for
    on_error=on_error)
    File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 838, in _discover_services
    check_plugin_name, on_error):
    File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 951, in _execute_discovery
    discovery_function = _get_discovery_function_of(check_plugin_name)
    File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 979, in _get_discovery_function_of
    (discovery_function.name, check_plugin_name, discovery_function_args))
    cmk.utils.exceptions.MKGeneralException: The discovery function “inventory_mikrotik_bgp” of the check “mikrotik_bgp” is expected to take a single argument (info or parsed), but it’s taking the following arguments: [‘checkname’, ‘info’]. You will have to change the arguments of the discovery function to make it compatible with this Checkmk version.

Die Fehler des Agent sind alles SSL Fehler da solltest aber lieber deinen Router mal auf ein aktuelles Patchlevel bringen wenn der SSL Probleme hat in der API.
Der Special Agent bietet doch auch die Option “nossl” schon probiert obs damit geht?

Der letzte Fehler kommt daher die Checks wurden fĂŒr CMK 1.4 erstellt und benutzen noch Definitionen und Code Eigenheiten welche mit 1.6 nicht mehr erlaubt sind.
Da ist etwas Nacharbeit am Code notwendig.

Danke das du mir so viel hilfst, allerdings ist der Router latest stable version quasi 1 Woche alt, und mit der vor Version ist das auch alles so.
Ich glaube die librouteros2 ist quasi doch anders und nicht mit dem check_mikrotik kompatibel, da Mikrotik in der Version 6.43 einiges an der Api geÀndert hat was auch das absetzen vom Commands betrifft ist die inkompatibiliÀt auch nicht sehr ausgeschlossenŽ. Siehe letzte logfile

ich habe die Abfrage im test explizit ohne SSL durchgefĂŒhrt, der hĂ€ndische Aufruf zeigt mir auch bei ausgeschaltetem SSL keine Fehler. parameter -n

Test des Plugin ohne SSL
/omd/sites/mysite/local/share/check_mk/agents/special/agent_mikrotik -n -u ‘red-man’ -p ‘password’ -c 2001 -i bgp,ospf,vrrp,health,board ‘192.168.199.1’
<<<check_mk>>>
Version: 0.2-MikroTik
<<<mikrotik_bgp>>>
<<<mikrotik_health>>>
<<<mikrotik_temp>>>
temperature 35
cpu-temperature 54
cpu-overtemp-check True
cpu-overtemp-startup-delay 1m
cpu-overtemp-threshold 100
<<<mikrotik_fan>>>
fan1-speed 3862
use-fan main
fan-mode auto
fan2-speed 0
active-fan main
<<<mikrotik_power>>>
power-consumption 27.4
current 1140
voltage 24.1
<<<mikrotik_vrrp>>>
<<<mikrotik_ospf>>>
<<<mikrotik_board>>>
factory-firmware 3.22
firmware-type tilegx
routerboard True
upgrade-firmware 6.46.6
model CCR1016-12G
current-firmware 6.46.5
routeros-tile 6.46.6

Komisch ist das ich im Datasource auswĂ€hle “Do not use SSL to connect to API”
dein vorgeschlagener test mit cmk --debug -vvI maingate aber den Paramenter -n nicht setzt.

[special_mikrotik] Calling external program “/omd/sites/mysite/local/share/check_mk/agents/special/agent_mikrotik -u ‘red-man’ -p ‘password’ -c 2001 -i bgp,ospf,vrrp,health,board ‘192.168.199.1’”

und da ich in der agent_mikrotik quasi im SSL Connection Strink das SSL rausgenommen habe, so das er es immer ohne SSL versucht. tauchen dann eben auch keine SSL fehler mehr auf.
Hier meine anpassungen

if nossl:
api = connect(username=user, password=password, host=host, port=port)
else:
#    ctx = ssl.create_default_context()
#    ctx.check_hostname = False
#    ctx.verify_mode = ssl.CERT_NONE
#    ctx.set_ciphers('ADH')
#    api = connect(username=user, password=password, host=host, ssl_wrapper=ctx.wrap_socket, port=port)
 api = connect(username=user, password=password, host=host, port=port)

Traceback (most recent call last):
File “/omd/sites/mysite/bin/cmk”, line 94, in
exit_status = modes.call(mode_name, mode_args, opts, args)
File “/omd/sites/mysite/lib/python/cmk_base/modes/init.py”, line 72, in call
return mode.handler_function(*handler_args)
File “/omd/sites/mysite/lib/python/cmk_base/modes/check_mk.py”, line 1498, in mode_discover
discovery.do_discovery(hostnames, options.get(“checks”), options[“discover”] == 1)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 137, in do_discovery
only_new, on_error)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 171, in _do_discovery_for
on_error=on_error)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 838, in _discover_services
check_plugin_name, on_error):
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 951, in _execute_discovery
discovery_function = _get_discovery_function_of(check_plugin_name)
File “/omd/sites/mysite/lib/python/cmk_base/discovery.py”, line 979, in _get_discovery_function_of
(discovery_function.name, check_plugin_name, discovery_function_args))
cmk.utils.exceptions.MKGeneralException: The discovery function “inventory_mikrotik_bgp” of the check “mikrotik_bgp” is expected to take a single argument (info or parsed), but it’s taking the following arguments: [‘checkname’, ‘info’]. You will have to change the arguments of the discovery function to make it compatible with this Checkmk version.

Ok dann bleibt nur noch ĂŒbrig, dass der Check leider noch Code enthĂ€lt welcher unter 1.4 ok war aber nun mit 1.6 mittlerweile deprecated ist.
Ich hab die paar kleinen Modifikationen gemacht damit das unter 1.6 auch lÀuft + die nossl Option wird nun auch richtig umgesetzt.

1 Like

Was soll ich sagen. Deine anpassung Works perfect !!
Danke.

grafik

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