Ad Widget

Collapse

Regex/ Preprocessing/ Trigger

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • GreenHorn
    Member
    • Nov 2020
    • 54

    #1

    Regex/ Preprocessing/ Trigger

    Ahoj / Dobrý den všem,

    chtěl bych se zeptat, zda někdo neví, jak napsat nebo co udělat v preprocessingu regex či jinou formu, abych byl schopen z SNMPtrapu vytáhnout severitu ( vytvořit Alert) a description.

    Příklad

    14:35:15 2021/02/02 PDU INFO:
    messageid 0
    receivedfrom UDP: [10.x.x.x]:64023->[10.x.x.x]:162
    errorindex 0
    community public
    notificationtype TRAP
    requestid 0
    errorstatus 0
    transactionid 28809
    version 0
    VARBINDS:
    DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (85974) 0:14:19.74
    SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: SNMPv2-SMI::enterprises.14604.2.2.0.1058
    SNMPv2-SMI::enterprises.14604.2.2.2.3.0 type=4 value=STRING: "Event Viewer Events - Event Viewer Events"
    SNMPv2-SMI::enterprises.14604.2.2.2.4.0 type=4 value=STRING: "Tue, 02 Feb 2021 14:35:08 Central Europe Standard Time"
    SNMPv2-SMI::enterprises.14604.2.2.2.5.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.6.0 type=4 value=STRING: "czcommcell.proact.local"
    SNMPv2-SMI::enterprises.14604.2.2.2.7.0 type=4 value=STRING: "czcommcell.proact.local"
    SNMPv2-SMI::enterprises.14604.2.2.2.8.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.9.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.10.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.11.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.12.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.13.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.14.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.15.0 type=4 value=STRING: "Not Applicable"
    SNMPv2-SMI::enterprises.14604.2.2.2.16.0 type=4 value=STRING: "0"
    SNMPv2-SMI::enterprises.14604.2.2.2.17.0 type=4 value=STRING: "Detected Criteria: Event Viewer Events , Event ID: 349906 , Monitoring Criteria: (Severity greater than or equal to Information , Severity: Information , Job ID: Not Applicable , Event Date: Tue Feb 2 14:34:16 2021 , Program: EvMgrS , Client: czcommcell.proact.local , Description: User [admin] has logged off. Machine: [czosrcvcs01]."
    SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 10.34.1.15
    SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4 value=STRING: "public"
    SNMPv2-MIB::snmpTrapEnterprise.0 type=6 value=OID: SNMPv2-SMI::enterprises.14604.2.2

    ||
    V
    ************************************************** ************************************************
    Chtěl bych, aby mi ukázal Alert - Info, že přišlo Severity: Information (nevím jak)

    + description ( jsem schopen si to vytáhnoout pomocí regex)


    "Detected Criteria: Event Viewer Events , Event ID: 349906 , Monitoring Criteria: (Severity greater than or equal to Information​ , Severity: Information , Job ID: Not Applicable , Event Date: Tue Feb 2 14:34:16 2021 , Program: EvMgrS , Client: czcommcell.proact.local , Description: User [admin] has logged off. Machine: [czosrcvcs01]."


    Díky za Radu
  • Alois Zadražil
    Junior Member
    • Nov 2020
    • 11

    #2
    Ahoj,

    Pokud je již Item zpracován preprocesingem a v hodnotě Itemu je informace:
    "Detected Criteria: Event Viewer Events , Event ID: 349906 , Monitoring Criteria: (Severity greater than or equal to Information​ , Severity: Information , Job ID: Not Applicable , Event Date: Tue Feb 2 14:34:16 2021 , Program: EvMgrS , Client: czcommcell.proact.local , Description: User [admin] has logged off. Machine: [czosrcvcs01]."

    Tak stačí vytvořit trigger, který zareaguje na hodnotu v daném Itemu. Trigger může mít jednu z podmínek postavenou tak, že pokud je v hodnotě itemu řetězec: Severity: Information bude závažnost triggeru Information - například podmínka {<šablona>:<item>.regexp("Severity: Information")}=1 kde <šablona> je jméno šablony a <item> jméno itemu. Pro více druhů závažnosti ( pokud v Trapu přichází třeba Severity: Disaster ... ) je potřeba nadefinovat různé triggery na stejný Item ( vždy v závislosti na informaci, která v SNMP trapu přichází ). Na trigger je následně navázána akce ( odeslání mailu, spuštění skriptu, atd.).

    Stejně tak do jména triggeru je možné napsat něco ve stylu: Přišel SNMP Trap závažnosti {{ITEM.VALUE}.regsub("Severity: ((\w|\s)+)", \1)} ze serveru {{ITEM.VALUE}.regsub("Machine: \[(\w+)\]", \1)}

    Tím se do jména triggeru na dashboard, nebo do akce dostanou požadované informace.

    Jinak v Zabbixu je 6 úrovní závažnosti - nejlépe jsou vidět v Administration -> General -> Trigger displaying options.

    tak snad to pomůže.

    Alois Zadražil

    Comment


    • GreenHorn
      GreenHorn commented
      Editing a comment
      Dobrý den Aloisy, díky moc za radu. Na základě jsem byl schopen si to zpracovat.

      Já jsem chtěl, aby u alertu byl naspán i popis chyby, takže jsem to trochu změnil a dávám to tu pro budoucí nováčky:

      do trigeru jsem dodal
      Event name : {{ITEM.VALUE}.regsub("Description: (.*).$", \1)}

      a udělál jsem to na konkrétním hostu, ne na šabloně

      Expression: {Hostname:snmptrap.fallback.regexp("Severity: Information")}=1

      a samozřejmě pro každou úroveň jeden trigger

    • GreenHorn
      GreenHorn commented
      Editing a comment
      Zdravím, mám rozšiřující dotaz. Mám problém s tím, že u knihovny mi nejde manangement( nefunguje), ale dá se sledovat přes commvault. Takže jsem si vymyslel, že bych budu knihovnu sledovat přes Trapy z commvaultu.

      Tudíž jsem si udělal u hosta pro knihovnu snmp agenta s IP z commvaultu. Jelo mi to krásně dokud obsah byl stejný( tj. stejné trapy duplikované trapy z commvaultu na hostu pro commvault a knihovny). Pak jsem změnil preprocessing, kde mi to bere jen trapy obsahující název knihovny a omáčku okolo.

      tj. V preprocessingu:
      *\WOVERLAND NEO Series 10.*

      takže v LAST DATA mám krásně u knihovny jen trapy pro knihovnu.

      Ale trigger mi začal hlásit

      Cannot evaluate expression: "Cannot evaluate function "Knihovna OVERLAND NEO2000:snmptrap.fallback.regexp("Severity: Minor")": item is not supported."

      Nevím proč.

      Knihovna
      ----------------
      Event name:
      MINOR: {{ITEM.VALUE}.regsub("Description: (.*).$", \1)}

      Expression:
      {Knihovna OVERLAND NEO2000:snmptrap.fallback.regexp("Severity: Minor")}=1

      ************************************************** ******************************************
      ************************************************** ******************************************
      Commvault:
      -----------------
      Event name:
      MINOR: {{ITEM.VALUE}.regsub("Description: (.*).$", \1)}

      Expression:

      {Commvault SNMP - Trap Fall:snmptrap.fallback.regexp("Severity: Minor")}=1


      Nevím, v čem mám chybu. A ještě bych měl dotaz, jak vyřadit trapy pro knihovnu z trapů commvaultu.

      Případně díky za radu.


      Obsah trapu je defakto stejný jako výše
  • Alois Zadražil
    Junior Member
    • Nov 2020
    • 11

    #3
    Ahoj / Dobrý den, jestli to správně chápu, tak problém způsobují data, která nevyhovují podmínce preprocessingu. Jako první bych zkusil přidat druhý krok v preprocessingu a to "Check for non supported value -> a nastavit Discard Value.
    A druhou otázku také řešit preprocessingem u commvaultu - jen použít položky Matches regular expression nebo Does not match regular expression -> a použít Discard Value - podle toho, co bude víc vyhovovat. Ona se ta druhá možnost dá použít i pro první otázku. Je potřeba využít možnosti preprocesingu ze sekce validace - https://www.zabbix.com/documentation.../preprocessing

    Pro případnou konkrétnější radu bych to už asi musel vidět naživo.

    Lojza

    Comment


    • GreenHorn
      GreenHorn commented
      Editing a comment
      Podle mě, to není v preprocessingu, neboť v last data mi do knihovny chodí trapy jen pro knihovnu. Ale přestaly se mi vytvářet Alerty.
      Ostatní zkusím.
      Pokud by jste byl ochotný, tak Vám pošlu email ohledně spojení.
      Díky moc.

    • GreenHorn
      GreenHorn commented
      Editing a comment
      Tak už mi to začalo chodit, normálně, nevím, v čem byla chyba, neboť jsem nic neupravoval . Díky za Váš/Tvůj čas

    • Alois Zadražil
      Alois Zadražil commented
      Editing a comment
      Není zač, kdyby něco zlobilo, klidně na to kouknu.
  • GreenHorn
    Member
    • Nov 2020
    • 54

    #4
    Zdravím všechny,

    chtěl bych se zeptat, zda neznáte nějaký regulární výraz, který by mi umožnil směs znaků,čísel a písmen nahradit nějak elegantně v preprocessingu.
    To co jsem vymyslel mi funguje,ale potřeboval to udělat všeobecnější jsou v textu 3 pasáže, které potřebuji oddělit. Jsou to totiž 3 pole.
    Pasáže vždy začínají :
    {"offline":

    Tady je můj regulární výraz, který bych potřeboval optimalizovat. Mám jej upravený je pro první pasáž.

    offline\W+\w+\S+\D+\d+\S\D+\d+\D+\d+\D+\d+\D+\d+\D +\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\ d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+ \D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D +\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\d+\D+\ d+\D+\d+\D+\d+\D+\d+\D

    Nejlépe bych viděl určit začátek jako {"offline": a konec by byl u dalšího {"offline":.

    V textu jsou totiž i ID HW a to se může po výměně změnit. Jedná se o netapp 2824 - není pro něj na zabbixu fungující Template.

    Data musím tahat přes skript curl.

    Děkuji za radu

    Comment

    • Rudlafik
      Senior Member
      • Nov 2018
      • 144

      #5
      https://regex101.com/ - Nepomohlo?

      Comment


      • GreenHorn
        GreenHorn commented
        Editing a comment
        To jsem zkoušel a tam jsem došel k tomu dlouhému reg. výrazu. Nakonec jsem pochopil JSON a dost mi to ulehčilo práci.

        Díky
    Working...