RobotMK: kein neuer Service entdeckt

Hi,

ich habe mich gerade erstmals durch das Robot-Framework und Selenium gekämpft und die ersten Suites laufen nun fehlerfrei in der Konsole.
Beim Einrichten unter RobotMK habe ich aber leider noch Probleme: Es tauchen einfach keine neuen Services auf.

check_mk_agent | grep robot

Liefert keine Ausgabe - entsprechend kommt natürlich auch in der GUI nichts.

Hier ist ein Screenshot meiner Agent Bakery Regel:

Die Robot-YML:

# Created by Check_MK Agent Bakery.
# This file is managed via WATO, do not edit manually or you
# lose your changes next time when you update the agent.

# This file is part of Robotmk, a module for the integration of Robot
# framework test results into Checkmk.
#
# https://robotmk.org
# https://github.com/simonmeggle/robotmk
# https://robotframework.org/
# ROBOTMK VERSION: v1.2.4

global:
  execution_mode: agent_serial
  agent_output_encoding: utf_8
  transmit_html: false
  log_level: INFO
  log_rotation: 14
  robotdir: /usr/lib/check_mk_agent/robot
  outputdir: /usr/lib/check_mk_agent/robot_log
  logdir: /usr/lib/check_mk_agent/robot_log
  cache_time: 1200
  execution_interval: 900
suites: {}

und die check-config (gekürzt und anonymisiert):

Showing current configuration...

Configuration from config file (/etc/check_mk/cmk-update-agent.cfg):
protocol: http
site: firma
server: cmk.firma.net
certificates: []
ignore_update_url: True
interval: 600
proxy: None
signature_keys: ['-----BEGIN CERTIFICATE-----\nMIIC4DCCAcg...Y0P+YVxY=\n-----END CERTIFICATE-----\n']
use_proxy_env: False

Configuration from state file (/etc/cmk-update-agent.state):
installed_aghash: 3febb455479c5006
last_error: None
last_check: 1639474748.660527
host_name: dc1.firma.at
last_update: 1639400127.4140985
host_secret: kbyboo...zbrqpz
user: register
update_url: http://1.2.3.4/firma/check_mk/
pending_hash: None

Was habe ich hier übersehen?

Das Ganze läuft auf einer Debian-Maschine mit dem headlessfirefox, falls das eine Rolle spielt.
Unter /usr/lib/check_mk_agent/robot gibt es ein Unterverzeichnis namens login_tests, welches die .robot Dateien enthält.

LG,
Roland.

Edit: wir verwenden CheckMK 2.0.0p15 CME und die RobotMK-Version steht in der Config :slight_smile:
Edit 2: als ich den grep auf den check_mk_agent abgesetzt habe, wurde natürlich die Encryption vorübergehend deaktiviert.

@simonm das ist doch Dein Thema.
Vielleicht hast Du eine Idee?

Danke Elias, ein paar gleich :slight_smile:

Hi Roland,

Prüfe mal:

  • hast Du dem Agenten erlaubt, .py Files als Agent plugin auszuführen? (> Limit script types to execute)
  • Sind die für Robotmk notwendigen Python-Module installiert? (pip3 install pyyaml mergedeep python-dateutil)
    Ich habe das (endlich…) auch dokumentiert, siehe robotmk/README.md at develop · simonmeggle/robotmk · GitHub

Wenn die Module installiert sind, kannst Du mal versuchen, im Plugin-Dir python3 robotmk.py (produziert den Agentenoutput bzw. die Sektion für Robotmk) bzw. python3 robotmk-runner.py -v (führt den Robot-Test aus, -v zeigt das, was normalerweise nur im Log landet) auszuführen.
Da darf es dann keine Fehler mehr hageln.

Ansonsten melde Dich gern nochmal.

VG Simon

2 Likes

Hi,

die Pakete waren tatsächlich nicht installiert, danach ging es immer noch nicht, weil die Python-Version noch 3.5.2 war. Inzwischen läuft das auf einem anderen Server mit python 3.7.3

Dort wird der Service nun erkannt, aber ich bekam eine andere Fehlermeldung:

Suite ‘kopano’: Suite statefile /usr/lib/check_mk_agent/robot_log/robotmk_kopano.json not found - (seems like the suite did not yet run)

Als ich dort nachgesehen habe, fand ich die Datei jedoch.
Zurück im CheckMK habe ich dann gesehen, dass der Service inzwischen grün war.

Vielen Dank für die Hilfe. :slight_smile:

Ich habe noch eine Frage dazu - die hat aber überhaupt nichts mehr mit CheckMK zu tun. Ich stelle sie einfach trotzdem, wenn ich schonmal einen Fachmann erreiche … :grin:

Ich möchte prüfen, ob sich in der Owncloud Onlyoffice öffnet. Das tut es aber leider in einem neuen Fenster und ich weiß nicht wie ich dahin springen kann. Ich habe das probiert:

Click on Document
    Click Element  //*[@id="fileList"]/tr[3]/td[1]/a[2]/span[1]

Click on Open with OnlyOffice
    Click Element  //*[@id="fileList"]/tr[3]/td[1]/div/ul/li[2]/a
    Sleep  1s

Switch to Onlyoffice Window
    ${handles}=  Get Window Handles
    Switch Window  ${handles}[1]

Onlyoffice should be open
    Title Should Be  a.docx - Owncloud

Das “Switch Window” hier funktioniert nicht. Ich habe schon einige andere Versionen davon probiert, z.B. Switch Window title:a.docx - Owncloud, aber das geht auch nicht.

Und wenn das dann funktioniert, prüfe ich momentan leider nur den Titel, was auch ein bisschen wenig ist. Das ganze Fenster stellt einen iframe dar, welcher mir scheinbar keine brauchbaren XPaths liefert, aber derzeit kann ich, wie gesagt, nichtmal das Fenster wechseln.

Bei all diesen Tests überlege ich auch immer: Beim nächsten Update, wenn der Hersteller etwas umstellt, muss ich vielleicht einige robot-Files neu schreiben. Gibt es da Best-Practises, um das zu minimieren?

Eine weitere Überlegung, die bei diesem Projekt aufkam: Was kann man machen, wenn der Kunde auf 2FA-Authentifizierung umsteigt. Gibt es in solchen Szenarien auch Möglichkeiten mittels Robotframework zu testen?

LG,
Roland.

Hi Roland,

prima, dass der Test jetzt in Checkmk erscheint.
Zu Deinen Fragen:

  • Fensterwechsel: Switch Window kennt auch ein Argument NEW. Damit wird das zuletzt geöffnete Fenster aktiviert. Damit hatte ich bisher ganz gute Erfahrungen gemacht.
  • Prüfung des Inhalts: Wenn der zu prüfende Inhalt in einem iframe geladen wird, musst Du dort hineinwechseln mit Select Frame. Mit “Unselect Frame” geht es entsprechend wieder heraus.
    Tipp: in den Browser-Developertools kann man den Kontext ebenfalls umschalten, wenn man auf der Konsole Xpath-Selektoren testen möchte:
    image
  • XPath-Selektoren / UI-Update / Best practice: Wenn es eine Empfehlung gibt, dann die, dass man XPath-Selektoren am besten von Hand entwickeln sollte.
    Deine stammen vermutlich aus den Developertools (“Copy XPath”) oder einem Addon. Solange sich bei der Owncloud-UI nichts daran ändert, dass /tr[3]/td[1]/div/ul/li[2]/a unterhalb eines Elements mit der ID filelist zu finden ist, wird Dein Test laufen. Mir wäre er noch zu starr weil er sich auf eine Verkettung von 6 Tags verlässt und Indizes verwendet. Jeder Test muss vielleicht irgendwann mal angepasst werden, die Frage ist nur, wie bald.
    Dein Selektor ließe sich mit Sicherheit noch eindampfen und damit stabiler machen lassen. So etwas muss man von Hand schreiben.
    Meine Lieblingsressource für XPath ist dieses unterhaltsame Game: Xpath Diner - Where we feast on Xpath Selectors! - damit bekommt man alles beigebracht, um Xpath selbst schreiben zu können. (gibt es auch für CSS-Selektoren)
    Ich teste Xpath in der Developer-Konsole mit $x(), also so:
    $x("//*[@id="fileList"]/tr[3]")
  • 2FA: Selbst hatte ich damit noch keine Berührungspunkte, weiß aber von einem Kunden, der das schon gemacht hat. Ich frag mal nach, ob er hier ein bisschen was preisgeben will. :slight_smile:

VG Simon

2 Likes

Dann nochmal danke für all die Hinweise.
Besonders das Spiel gefällt mir.

Ich habe jetzt alle meine Suites soweit fertig.

… prima, freut mich :ok_hand:

Vermutlich wird eine der üblichen Authenticator Apps verwendet was erstmal schlecht zu automatisieren wäre. Zum Glück halten sich diese Apps an den Standard TOTP, auch wenn dies nicht beworben wird. Für TOTP wiederum gibt es eine Robot Framework Bibliothek, welche ich empfehlen kann:

Der Ablauf fürs einrichten und testen kann so aussehen:

Willkommen in der Welt der offenen Standards.

1 Like

@ypid Danke für den Hinweis.

Schön zu hören, dass es dafür schon etwas gibt.

Wir verwenden als 2FA-Lösung die Enterprise Edition von privacyIDEA. Ich gehe mal davon aus, dass sich die an den TOTP-Standard halten.