ログあるある
いつの時代でもシステムの動作確認では重要な役割をする「ログ」ですが、
「Error」ひとつでも表現方法はアプリ/ミドルによって様々です。
例えば以下のようなエラーログがあります。
1. ど直球
PROCESS | Error | Host unknown.
2. コロン系
E:Host unknown
3. カッコ系
[E] Host unknown
4. 察して系
E Host unknown
さて、どう監視しようか?
オールドツール(と言っては失礼かも)では、特殊文字を気にしないものもあり、
まんまの形でログ監視キーワードに指定していました。
文字列にキーワード[E]があったら、アラート検知・通知や!
文字列にキーワードE:があったら、アラート検知・通知や!
Datadogでは?
「Error」はそのままのキーワードでも検知出来ます(本当は良くない)が、
特殊文字を含むとそのまま文字としては使えません。
そこで、2通りのやり方を考えました。
其の1 DatadogAgentでGrepしちゃおうぜ!
DatadogAgentがインストールされている前提ですが、
ログ監視のconf.yamlに以下のように設定しました。
- type: file
path: /var/log/test.log
service: hogehoge
source: hoge-channel
log_processing_rules:
- type: include_at_match
name: inc_messages_err
pattern: (E:)
結果は、、うむうむ。よしよし。「E:」だけを取得出来たぞい。
でも、「E:」以外のログが取得出来ないじゃん!!
障害対応等では前後のログが意味を持ち、文脈が重要な場合もあるので没。。
其の2 Datadogコンソール上で特殊文字をエスケープすれば良くない?
DatadogAgentではログの絞り込みはせず、全量を連携させます。
連携されたログの中から、「E:」を探す作戦です。
じゃあ、ぐろっくぱーさーを使おう(Grok Parser)
Datadogには協力なPipelinesがあるじゃないか!
「https://docs.datadoghq.com/ja/logs/log_configuration/parsing/」より引用
パイプライを新規で作成→今回はベタに「E-colon」と命名
後は、作成したルールをログエクスプローラーで検索してみると、、、
出来た!これで他のログを取得しつつ、監視用のキーワードも設定出来るぞぉぉぉ
どんなパターンでも特殊文字でもきっと大丈夫だ!たぶん!!
という事で、ログ監視はまだまだ続く
今回はとてもシンプルなものの話でしたが、ログが複雑なパターン等も出てきており、
色々と試行錯誤をしながら対応をしている日々です。
今後はパターン分析等での活用など、まだ(自分が)知らないDatadogの機能と格闘する所存です!
おしまい