Elastalertの集計通知

1719 ワード

最近、elastalertを構成してログを監視する必要があります.以下の状況です.
  • ログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログログ
  • ログには、物理的な場所、名前、実行情報など、実行期間の様々な情報が格納されます.
  • 実行期間情報の中で特定の情報を検索し、特定の異常と認定するには、例えば「unable to create native thread」であり、OOMであると考えられる
  • 今elastalertでOOMを監視して
  • に通報します.
    簡単なニーズですが、ruleは次のように構成されています.
    name: OOM Any Out Rule
    type: any
    
    index: applog-*
    
    num_events: 1
    timeframe:
      minutes: 10
    
    aggregation:
    #  "* * * * *" means: run as the "run_every" in config.yaml
      schedule: "* * * * *"
    # several columns of my agg summary table, the table has a default column: count
    summary_table_fields:
    - "service"
    - "stack"
    - "name"
    - "@timestamp"
    
    filter:
    - query:
        query_string:
            query: "message: unable to create native thread"
    
    alert:
    - "email"
    
    email:
    - "[email protected]"
    
    

    説明します.
  • は、OOM異常を特定するためにfilterの1つの条件しか必要としないため、type:any
  • を用いる.
  • はaggを使用する.なぜなら、このように設定されていない場合、es−alertは、このように複数のhitがある場合、そのうちの1つのhitのみを格納するからである.INFO:elastalert:Ran OOM Any Out Rule from 2018-05-31 14:04 CST to 2018-05-31 14:07 CST: 3 query hits (0 already seen), 3 matches, 1 alerts sent aggで得られた数だけが必要な場合は、もちろんokですが、hitごとの情報が必要な場合は、涼しくなります.しかしes-alertのドキュメントでははっきり言っていないので、どのようにhitを得るかを聞いているissueが非常に多く見られます.
  • 以上のruleが実行されると、受信したメールには、「summary_table_fields」で構成されたcolumnを含むテーブルが含まれ、テーブルの下に対応するmatch_がすべて表示されます.body.
  • 実はこのような表は読むのが気持ちが悪いです.
  • 表には番号列がなく、自分がどれを見たか分からない
  • 表デフォルトのcount列は削除されず、つらい
  • 下のmatch_body遍歴は何の標識もなく、複雑に見え、紙幅を占めても意味がない
  • 以上の問題をどのように解決するかを検討します