Ahoj
Mám dotaz nebo problém. testovali jste proc.get a widlích? Moc se m to líbí, ale nejsem si jist zda se myslelo na to, že procesy e widlích mají ve spoustě případů stejný název, tak i stejného uživatele. Možná je to jen moje neschopnost, ale nedostal jsem se dál než, že jsem vygeneroval nový item se jménem služby a uživatele a jeho zapisovanou hodnotou byl text ve kterém byly vypsány všechny metriky stejně se jmenujících a se stejným účtem procesů.
Zadání:
Zapisuj handles, konzumaci paměti a cpu u jednotlivých procesů ve windows. Odděluj procesy dle jména, uživatele a pid. Vyhni ce použití skriptů.
Tak jsem hrábnul po: proc.get[<name>,<user>,<cmdline>,<mode>]
Dotlačil jsem to do stádia, kdy jsem parametr user prasácky vyměnil za pid, čímž jsem dostal definici dotazu na jedinečnou položku. LDD proměné se do názvu a klíče vyplnili správně, taktéž jsem narval hodnoty do tagů což je také bomba, ale hodnota takto vygenerovaného itemu je [] prázná.
Přemýšlel jsem zda nejít cestou dependent item, jak z rodičovského objektu v discovery, tak třeba z standardního itemu HTTP a JSON jako dependent item, ale to mi včera v noci asi už nešlo.
Zkusil jsem Preprocesing tam jsem se také nehnul.
Nechce se mi jít cestou PS a WMI to je vopruz když vidim, že to kluci, tak hezky v "žabákovi" připravili.
Zdrojový/rodičovský item v LLD:
zabbix agent
key: proc.get
LLD macros:
{#CPUTIME_SYSTEM} $.cputime_system
{#CPUTIME_USER} $.cputime_user
{#HANDLES} $.handles
{#NAME} $.name
{#PAGE_FAULTS} $.page_faults
{#PID} $.pid
{#PPID} $.ppid
{#SID} $.sid
{#THREADS} $.threads
{#USER} $.user
{#VMSIZE} $.vmsize
{#WKSET} $.wkset
Item prototype
name: Proc {#NAME} of {#USER} PID: {#PID}
type: Zabbix agent
A - key: proc.get[{#NAME},,,process]
B - key: proc.get[{#NAME},{#USER},,process]
C - key: proc.get[{#NAME},{#USER},,process]
tagy:
Handles {#HANDLES}
Pid {#PID}
Workingset {#WKSET}
Sledovaný případ:
Sledujme proces CSRSS.EXE, který je ve Windows procesech zobrazen 4x se stejným jménem a uživatelem. Podívejme se, jak se bude ZBX chovat při objevování těchto procesů:
A - key: proc.get[{#NAME},,,process]
Zde se prostě vrátí hodnota dvou procesů, které mají stejné thready. Tj. zobrazili 2 položky se stejnou hodnotou thread 10 ostatní dvě nejsou zobrazeny thread 9 a 11. V hodnotách u obou jsou uvedeny data ze všech 4 položek.
B - key: proc.get[{#NAME},{#USER},,process]
U tohoto klíče se zamaskuje duplicita pod jedním procesem a v hodnotě vygenerovaného itemu se načítá data pro všechny 4 procesy
C - key: proc.get[{#NAME},{#USER},,process]
U tohoto klíče se vytvoří správně item pro každý ze 4 procesů se stejným jménem a uživatelem avšak nenaplní se daty - []. Tagy jsou však korektně a správně vyplněny hledanými hodnotami.
Co je otázkou, jak správně dále rozparsovat textovou informaci u varianty klíče B nebo jak vgenerovat nové itemy z hodnot v tagu u varianty C nebo začít hodnoty tagů ukládat.
Něco jsem testoval s položkou <cmdline>, ale nedostavily se valné výsledky.
Je tam nějaká cesta k řešení, kterou prostě nevidím? Nezdá se mi, že by vvojářům nedošlo, že procesy ve windows mohou mít stejného uživatele a i jméno a lišit se jen v PID.
Děkuji za pomoc, radu, nasměrování
Ruda
Mám dotaz nebo problém. testovali jste proc.get a widlích? Moc se m to líbí, ale nejsem si jist zda se myslelo na to, že procesy e widlích mají ve spoustě případů stejný název, tak i stejného uživatele. Možná je to jen moje neschopnost, ale nedostal jsem se dál než, že jsem vygeneroval nový item se jménem služby a uživatele a jeho zapisovanou hodnotou byl text ve kterém byly vypsány všechny metriky stejně se jmenujících a se stejným účtem procesů.
Zadání:
Zapisuj handles, konzumaci paměti a cpu u jednotlivých procesů ve windows. Odděluj procesy dle jména, uživatele a pid. Vyhni ce použití skriptů.
Tak jsem hrábnul po: proc.get[<name>,<user>,<cmdline>,<mode>]
Dotlačil jsem to do stádia, kdy jsem parametr user prasácky vyměnil za pid, čímž jsem dostal definici dotazu na jedinečnou položku. LDD proměné se do názvu a klíče vyplnili správně, taktéž jsem narval hodnoty do tagů což je také bomba, ale hodnota takto vygenerovaného itemu je [] prázná.
Přemýšlel jsem zda nejít cestou dependent item, jak z rodičovského objektu v discovery, tak třeba z standardního itemu HTTP a JSON jako dependent item, ale to mi včera v noci asi už nešlo.
Zkusil jsem Preprocesing tam jsem se také nehnul.
Nechce se mi jít cestou PS a WMI to je vopruz když vidim, že to kluci, tak hezky v "žabákovi" připravili.
Zdrojový/rodičovský item v LLD:
zabbix agent
key: proc.get
LLD macros:
{#CPUTIME_SYSTEM} $.cputime_system
{#CPUTIME_USER} $.cputime_user
{#HANDLES} $.handles
{#NAME} $.name
{#PAGE_FAULTS} $.page_faults
{#PID} $.pid
{#PPID} $.ppid
{#SID} $.sid
{#THREADS} $.threads
{#USER} $.user
{#VMSIZE} $.vmsize
{#WKSET} $.wkset
Item prototype
name: Proc {#NAME} of {#USER} PID: {#PID}
type: Zabbix agent
A - key: proc.get[{#NAME},,,process]
B - key: proc.get[{#NAME},{#USER},,process]
C - key: proc.get[{#NAME},{#USER},,process]
tagy:
Handles {#HANDLES}
Pid {#PID}
Workingset {#WKSET}
Sledovaný případ:
Sledujme proces CSRSS.EXE, který je ve Windows procesech zobrazen 4x se stejným jménem a uživatelem. Podívejme se, jak se bude ZBX chovat při objevování těchto procesů:
A - key: proc.get[{#NAME},,,process]
Zde se prostě vrátí hodnota dvou procesů, které mají stejné thready. Tj. zobrazili 2 položky se stejnou hodnotou thread 10 ostatní dvě nejsou zobrazeny thread 9 a 11. V hodnotách u obou jsou uvedeny data ze všech 4 položek.
B - key: proc.get[{#NAME},{#USER},,process]
U tohoto klíče se zamaskuje duplicita pod jedním procesem a v hodnotě vygenerovaného itemu se načítá data pro všechny 4 procesy
C - key: proc.get[{#NAME},{#USER},,process]
U tohoto klíče se vytvoří správně item pro každý ze 4 procesů se stejným jménem a uživatelem avšak nenaplní se daty - []. Tagy jsou však korektně a správně vyplněny hledanými hodnotami.
Co je otázkou, jak správně dále rozparsovat textovou informaci u varianty klíče B nebo jak vgenerovat nové itemy z hodnot v tagu u varianty C nebo začít hodnoty tagů ukládat.
Něco jsem testoval s položkou <cmdline>, ale nedostavily se valné výsledky.
Je tam nějaká cesta k řešení, kterou prostě nevidím? Nezdá se mi, že by vvojářům nedošlo, že procesy ve windows mohou mít stejného uživatele a i jméno a lišit se jen v PID.
Děkuji za pomoc, radu, nasměrování
Ruda
Comment