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
ř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
Comment