Ad Widget

Collapse

vfs.file.get .conf souboru z LLD Windows services discovery

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Rudlafik
    Senior Member
    • Nov 2018
    • 144

    #1

    vfs.file.get .conf souboru z LLD Windows services discovery

    Ahoj,
    řešim další špek. Popis prostředí:
    Widle
    zabbix klienty varianta 1/2 verze 6.0 - 6.4.1
    path instalace neznámý

    Cíl:
    Načíst obsah souboru .*zabbix.*.conf do zabbixu. Vyhnout se skriptům.

    Úvaha:

    ZBX provádí LLD na služby. "Windows services discovery" (key - service.discovery) načte informace v tomto formátu:

    .*
    "{#SERVICE.NAME}":"Zabbix Agent 2",
    "{#SERVICE.DISPLAYNAME}":"Zabbix Agent 2",
    "{#SERVICE.DESCRIPTION}":"Provides system monitoring",
    "{#SERVICE.STATE}":0,
    "{#SERVICE.STATENAME}":"running",
    "{#SERVICE.PATH}":""C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.exe" -c "C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.conf" -f=false",
    "{#SERVICE.USER}":"LocalSystem",
    "{#SERVICE.STARTUPTRIGGER}":0,
    "{#SERVICE.STARTUP}":0,
    "{#SERVICE.STARTUPNAME}":"automatic"},
    .*​

    Napadlo mě udělat item prototype, pomocí preprocesingu ((?<= ").*abbix.*\.conf) vyseparovat hodnotu path configu a to bez ohledu na místo instalace či verzi a tuto hodnotu poslat pomocí dependent item do klíče vfs.file.get[file].

    Problem je, že Item prototype mi neumožní mít jako dependent item LLD Windows services discovery. (Což v případě když udělám načtení nějakého JSONu v klasických itemech pak udělám LLD jak dependent item z tohoto Item JSONu natlačim LLD makra a filtry a pak jde udlěat item prototype typu dependent i z této dependent LLD tak to jde. U LLD Windows services discovery tohle neudělám)

    Když jsem se pokusil vyseparovat cestu tak, že jsem prubnul item prototype/zabbix agent/Key - {{#SERVICE.PATH}.regsub("((?<= ").*abbix.*\.conf)", \1)} tak mi to napsalo: error Invalid parameter "/1/key_": incorrect syntax near "{{#SERVICE.PATH}.regsub("((?<= ").*abbix.*\.conf ...". Což mi hlava nebere proč? Když jedu dle manuálu: {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}

    Bohužel cesta service.info[Zabbix Agent 2,path] zde dostanu hodnotu po postprocesingu - C:\Program Files\Zaix Agent 2\zabbix_agent2.conf ale jak tuto hodnotu narvat do itemu vfs.file.get[file] už nevim.

    Přišel bych o to jak podchytit i staré klienty, ale myslím, že postup udělat z toho dependent item a key dát vfs.file.get[{ITEM.VALUE}] také nefunguje.

    Nevím jestli je vůbec použitelné něco jako vfs.file.get[service.info[Zabbix Agent 2,path].regsub("((?<= ").*abbix.*\.conf)", \1)].

    Naprosto nevim jak získat tu hodnotu z {#SERVICE.PATH}":""C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.exe" -c "C:\\Program Files\\Zabbix Agent 2\\zabbix_agent2.conf" -f=false", a fložit ji do klíče vfs.file.get[file].

    Je cestou postprocesing v JS? Ale budu moci takto získanou hodnotu dál použít?

    Jak by jste toto řešili?

    Taky a lépe funguje: [^"]*zabbix\w+\.conf
    Last edited by Rudlafik; 07-06-2023, 14:36.
  • Rudlafik
    Senior Member
    • Nov 2018
    • 144

    #2
    Tak jsem to nakonec vyřešil pomocí:
    registry.get[HKLM\SYSTEM\ControlSet001\Services,values,"^ImageP ath$"]

    Code:
    A postprocesingu:
    1: RegExp     [^"]*zabbix\w+\.conf    \0
    2: Replace     \\\                    \\


    Hodnota: C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf

    Získám cestu aniž bych věděl kde je agent nainstalovaný a v jaké je verzi. ALE:

    Nevíte jak tu hodnotu dostat do: vfs.file.get[semhle]
    OK tak nakonec jsem se prokopa k řešení:

    Postprocessing JS:
    po tom co v prvnim kroku RegExp - [^"-]*zabbix.\w+\.conf
    Zbavím se problematických lomítek \\\\ za /

    Code:
    A postprocesingu:
    1: RegExp     [^"-]*zabbix\w+\.conf    \0
    2: Replace     \\\                    /
    3: JavaScript
    ​​

    použiji JavaScript:

    Code:
    // Convert Item to JSON
    const tmp = value;
    // Create an empty object "output"
    var output = [];
    output.push({"path":tmp});
    //output.pop();
    return JSON.stringify(output);
    No a pak už jen Item prototype nebo dependencies

    LLD Macro: {#PATH} $.path

    a nakonec:

    vfs.file.get[{#PATH}]

    Já vím, že tohle je pro vás brnkačka, ale nikde jsem tento postup nenašel, tak jej sem dávám aby začátečníci jako já měli ušetřený čas.

    Ruda​​
    Last edited by Rudlafik; 08-06-2023, 14:25.

    Comment

    • JaynesJaime
      Junior Member
      • Jul 2023
      • 1

      #3
      Ahoj,

      Zkoušíš najít řešení, jak získat hodnotu cesty k souboru .zabbix..conf z výstupu LLD Windows services discovery a použít tuto hodnotu v klíči vfs.file.get[file] v Zabbixu. Je mi líto, ale z popisu toho, co jsi zkusil, je trochu obtížné přesně poradit.

      Pokud správně rozumím, snažíš se vytvořit item prototype, který získá hodnotu cesty k config souboru a poté ji použije v klíči vfs.file.get[file]. Myslím, že bychom se měli soustředit na správnou syntaxi v Zabbixu a způsob, jak správně získat hodnotu.

      Zde je několik možností, které bys mohl zkusit:

      Použití postprocesingu v JS: Pokud je dostupný postprocesing v JS, můžeš zkusit pomocí něj získat hodnotu cesty a uložit ji do proměnné, kterou pak použiješ v klíči vfs.file.get[file].

      Využití itemu s JSON výstupem: Pokud je možné získat výstup LLD Windows services discovery ve formátu JSON, můžeš zkusit vytvořit item, který bude parsovat tento výstup a získá hodnotu cesty k config souboru. Poté můžeš vytvořit dependent item, který použije tuto hodnotu v klíči vfs.file.get[file].

      Použití externího skriptu: Pokud v Zabbixu neexistuje přímočarý způsob, jak získat hodnotu cesty k config souboru, můžeš zvážit vytvoření externího skriptu, který získá tuto hodnotu a vrátí ji do Zabbixu. Poté můžeš vytvořit item, který bude volat tento externí skript a získá tak hodnotu cesty pro klíč vfs.file.get[file].

      V každém případě je důležité zkontrolovat dokumentaci Zabbixu a případně se obrátit na komunitu nebo technickou podporu, aby se získala přesná a podrobnější odpověď na tvou konkrétní situaci.

      Doufám, že ti tyto návrhy pomohou a přeji ti hodně štěstí při řešení problému!​

      Comment

      Working...