My first check_mk extension for trendmicro deep security

Doch er ist in der Auflistung drin.

OMD[ipa_rijo3]:~/local/share/check_mk/checks$ check_mk --checks=pikett -v -I server123
Discovering services on: server123
server123:
+ FETCHING DATA
 [agent] Execute data source
 [piggyback] Execute data source
+ EXECUTING DISCOVERY PLUGINS (1)
SUCCESS - Found nothing new
OMD[ipa_rijo3]:~/local/share/check_mk/checks$ cmk --debug --checks=pikett -vvII server123
Discovering services on: server123
server123:
+ FETCHING DATA
 [agent] Not using cache (Don't try it)
 [agent] Execute data source
 [agent] Connecting via TCP to 1.1.1.1:6556 (5.0s timeout)
 [agent] Reading data from agent
 [agent] Write data to cache file /omd/sites/ipa_rijo3/tmp/check_mk/cache/server123
 [agent] Using persisted section 'win_disks'
 [agent] Using persisted section 'win_video'
 [agent] Using persisted section 'win_system'
 [agent] Using persisted section 'disk_space_total'
 [agent] Using persisted section 'win_bios'
 [agent] Using persisted section 'win_exefiles'
 [agent] Using persisted section 'win_cpuinfo'
 [agent] Using persisted section 'win_networkadapter'
 [agent] Using persisted section 'win_reg_uninstall'
 [agent] Using persisted section 'win_os'
 [agent] Using persisted section 'win_wmi_software'
 [piggyback] No persisted sections loaded
 [piggyback] Execute data source
+ EXECUTING DISCOVERY PLUGINS (1)
  Trying discovery with: pikett
SUCCESS - Found nothing

Dann muss ich bilnd sein wenn hier ein Service “Pikett” dabei ist.

Die Agent Ausgabe erhält man mittels cmk -d hostname
Dabei ist dann nur die Sektion relevant welche für den Check “Pikett” gebraucht wird.

Ja nicht da sry… :sweat_smile: ich meinte bei den probierten services, in der grossen Liste.

Ich suchte mittels grep, und pikett ist nicht ersichtlicht. Ich habe aber auch noch nicht den Service am Host hinzugefügt, da ja die info von der inventory Funktionen leer ist bei mir.

??? als allererstes muss doch dein Script auf dem Host wie es ausgeführt wird eine Ausgabe liefern.
Bevor keine Agent Ausgabe da ist kann doch kein Check entwickelt werden.

Ist das Ganze was du entwickelst ein Plugin oder ein Special Agent am Ende?
Bei einem Special Agent wäre die Frage - holt der Special Agent von einer Gegenstelle Daten für alle Hosts - wenn ja dann müssen die Daten ja mit Piggyback Headern versehen werden, dass diese auch den gewünschten Ziel Hosts zugeordnet werden.
Falls deine Entwicklung ein Plugin ist so trifft meine erste Aussage zu es muss überhaupt erstmal Output vom Agenten kommen ohne den ist keine Plugin Entwicklung möglich.

Es sollte einen special agent geben, da ich eine API Abfrage. dieser gibt auch eine Aussgabe, wenn ich ihn direkt ausführe.
python pikett
Aber das keine Ausgabe mittels cmk -d hostname, liegt das nicht daran, das der Service nicht am host hinzugefügt wurde.
Daher habe ich jz ein web/plugin/wato File erstellt und dieser gibt nun endlich auch einen Error :star_struck:

OMD[ipa_rijo3]:~/local/share/check_mk$ cmk -d server123
ERROR [special_pikett]: Program '/omd/sites/ipa_rijo3/share/check_mk/agents/special/agent_pikett' not found (exit code 127)(!!)

Das ist aber der falsche Pfad, es liegt ja im local…

Das Steure ich ja über den agent_pikett unter /checks ?

def agent_pikett_arguments(servicespecs, hostname, ipaddress):
    params = {'servicespecs': servicespecs,
              'hostname': hostname,
              'ipadress': ipaddress}
    import cPickle
    import base64
    cmd = base64.encodestring(cPickle.dumps(params)).split('\n')
    return " ".join(cmd)
special_agent_info['pikett'] = agent_pikett_arguments

Wie kann ich den Pfad auf local ändern und der File name stimmt auch nicht, er ist ja nur pikett?

wato plugin:
register_check_parameters(
    subgroup_applications,
    "pikett",
    _("Get Pikett User"),
    ListOf(
        Dictionary(
            elements = [
                ('url',
                 TextAscii(title=_('Datasource Name'))
                 ),
                ('levels',
                 Levels(title=_('Levels'))
                 ),
            ],
            optional_keys = False,
        ),
        title = _('Levels for Datasources'),
        add_label = _('Add levels for datasource'),
    ),
    TextAscii(
        title = _("Service descriptions"),
        help = _('Specify service descriptions of the host that uses the special agent "pikett".'),
        allow_empty = False
    ),
    match_type = "first",
)

register_rule('datasource_programs',
    "special_agents:pikett",
    Dictionary(
        title = _("Pikett"),
        elements = [
            ('url', HTTPUrl(title=_('Pikett API URL'))),
            ('auth', Tuple(title = _("Authentication"),
                elements = [
                    TextAscii(title=_("Username")),
                    Password(title=_("Password")),
                ])),
            ('hosts', ListOf(
                Dictionary(
                    elements = [
                        ('hostname', MonitoredHostname(title=_('Hostname'), from_active_config=True)),
                        ('jobs', ListOf(RegExp('prefix', label=_('RegExp for job name')),
                                        title=_('List of Regular Expressions'))),
                    ],
                    optional_keys = [],
                ),
                title = _('Jobs to query for monitored hosts.'),
                )),
        ],
        optional_keys = [ 'auth' ],
    ),
    title = _("Pikett"),
    help  = _(''),
    match = 'first'
)

Ok nun is klar was die einzelnen Codeschnipsel sind.
Viel zu kompliziert :slight_smile:

Am Anfang für das Testen eines Special Agents reicht es aus die Rule “Individual program call instead of agent access” zu benutzen. Da muss noch gar keine WATO Extension erstellt werden. Einfach in der Regel den kompletten Aufruf für den Special Agent rein schreiben und fertig.

Danach sollte dann der Test mittels cmk -d server123 nicht mehr fehlschlagen.

Okay danke dir für den Tipp, jetzt kommen wir näher, Vielen Dank:

OMD[ipa_rijo3]:~/local/share/check_mk/agents/special$ cmk -d server123
<<<pikett>>>
user123

Nun wird einfach nur pikett angezeigt, muss ich was anders machen als ein print im special agent?

[quote=“rijo3, post:13, topic:18399”]
print '<<<pikett>>>'

print(response[‘return’][‘result’][‘result’][‘active_user’])
[/quote]$

edit: ich denke ich habe schon die Ursache gefunden, der Check. die inventory funktion gibt nun auch endlich einen output :slight_smile:

Wollt grad sagen schaut schon viel besser aus als vorher.
Nun kannst in Ruhe anfangen deinen Check zu entwickeln.
Je nachdem was er machen soll :smiley:

Ja herzlichen Dank euch allen für die grosse Unterstützung :kissing_heart:

Nun sollte ich gleich bereit sein, für meine Abschlussprüfung morgen. :smiley:

1 Like