ログ監視の設定方法がよく分からなかったのでメモ
Datadogでログ監視するために設定する手順
(1)Datadogエージェントの設定
サーバーOSにインストールするAgentの設定と、独自アプリケーションのログを記録する手順の詳細は、こちら「Datadog基本設定(CentOS)#独自アプリケーションのログを記録したい」に記載したので、今回は簡易版として記載します。
監視シナリオ
インターネットVPN(IPsec)の通信が出来ていることを10秒毎にPing応答で検査している。Ping応答が失敗した時はエラーメッセージをログに出力し、Ping応答が成功した時はログが大量になることを防ぐため1時間に1回だけ成功メッセージをログに出力する。
<1-1> Datadogエージェントをインストール
<1-2> 独自アプリケーションがログを出力(pythonでスクリプトを書いた場合)
# ログ出力先を定義
import logging
logging.basicConfig(filename='/home/username/ping2.log', level=logging.INFO)
#10秒毎に対抗ルータのIPアドレスにPing応答を検査する。
#Ping応答が無ければPingのエラーメッセージをログファイルに出力する。
logging.error('error %s',msg)
#Ping応答が有る場合は、破棄するか、1時間ごとに成功メッセージをログファイルに出力する(ログ量を減らす為)。
logging.info('info %s',msg)
<1-3> ログのサンプル
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 18:0:0.129468
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 19:0:0.8532
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 20:0:0.63532
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 21:0:0.20883
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 22:0:0.117805
ERROR:root:error 1 packets transmitted, 0 received, 100% packet loss, time 0ms, 2020/2/1, 22:58:58.418653
ERROR:root:error 1 packets transmitted, 0 received, 100% packet loss, time 0ms, 2020/2/1, 22:59:8.623560
ERROR:root:error 1 packets transmitted, 0 received, 100% packet loss, time 0ms, 2020/2/1, 22:59:18.828957
ERROR:root:error 1 packets transmitted, 0 received, 100% packet loss, time 0ms, 2020/2/1, 22:59:29.33790
ERROR:root:error 1 packets transmitted, 0 received, 100% packet loss, time 0ms, 2020/2/1, 22:59:39.238556
INFO:root:info 1 packets transmitted, 1 received, 0% packet loss, time 0ms, 2020/2/1, 23:0:0.158865
<1-4> Datadogエージェントの設定
2つの設定ファイルに取得したいログファイルを指定する。
##################################
## Log collection Configuration ##
##################################
logs_enabled: true
logs:
- type: file
path: /home/username/ping2.log
source: customelog #自分の好きな名前
service: pingheatrun # 〃
設定不要
<1-5> しばらく(30秒以上)待って、Datadogでログが記録されていることを確認する。
(2)Datadog Log Expolorer でステータスレベルを分類する。
メニュー[Logs]→[Pipelines]に移動して、全てのログからキーワード読み替え(Grok Parser)とステータス再割り当て(Remapper)を行う。
(参考)
・ログメッセージをJSONで出力し、予約語[status, severity, level, syslog.severity]で書かれている場合は自動的にステータス[ERROR][INFO][WARN]等を仕分けしてくれる。
・テキスト列挙したログの場合は、全て強制的にステータス[INFO]で仕分けされるので、キーワード読み替えとステータス再割り当てを行う。
<2-1> キーワード読み替え(Grok Parser)
①Log sample: ログサンプルをテキストで貼り付けする(複数ログ形式あるなら追加できる)。
②Define parsing rules: 整形するルールを書く。公式には下記サンプルあり。「自分の好きなルール名 %{最初の文字列:再割り当てするステータス名}.*」でも良い。ルールが正しいと、ログサンプルの右横に[MATCH][UNMATCH]が表示される。
③自分の好きなプロセス名を書く。どんな処理か分かるような処理名がいいと思います。
<2-3> Datadogログ出力を見る。
あれれ?「変化なーい(T_T)」。
期待しているのは、Statusの欄に[Error]がカウントアップされて、赤色でマークされるのだが。
ここで3~4時間ハマったのだが、過去ログデータにステータスを再割り当てできないのでしょうか。
試しに新しい「エラーログ」をログファイルに手動追加してみた。たらーん。
なるほど。過去に記録されたログデータは、ステータス再割り当て[Grok Parser]できないのですね。設定した以降に、取得するログはきちんとステータス[Error]に仕分けされます。
(3) ログのキーワード合致でアラート送信する
この例では、①Define the search queryに「"auth_basic:error"」をセットして、BASIC認証がエラーだったログを100回記録したらメール送信するもの。
(4)センシティブなログ情報をOSの外(監視サーバー)へ送信しない方法。
センシティブな情報をマスクする前
Jul 02 22:33:04.082 postfix/qmgr 0FF46644DB: from=<username123@hoge.kano.local>, size=1663
監視エージェントの設定
logs:
- type: journald
path: /var/log/journal/
log_processing_rules:
- type: mask_sequences
name: mask_sensitive_data
replace_placeholder: "[masked_info]"
pattern: username123
センシティブな情報をマスクした後(Log Explorer に記録された結果)
Jul 02 22:33:04.082 postfix/qmgr 0FF46644DB: from=<[masked_info]@hoge.kano.local>, size=1663
まとめ
・ログデータを仕分けすることで、エラー率や時系列を作ればエラーの上昇率を算出できそうです。
・この次に学びたい事
- [ERROR]ステータスに仕分けしたら、アラート通知をメール送信できるか。
- 出来ればその[ERROR]は毎回メール送信するのではなく、10件まとまったらとか、エラー率10%以上とか。
- 月次報告に「エラー率」を追加するとか。
- 秘密テキストがログにあるときはマスクする方法とか。
まだやること沢山ありそうだけど参考書少ない気がする。
Datadog関連記事
- [図解で、Datadogエージェントの設定手順] (https://qiita.com/1Kano/items/3533a8ebe5f6777840a6)
- [DatadogカスタムCheckの一番小さなコード] (https://qiita.com/1Kano/items/f1f897d8ee943f318c3e)
- [Datadogのデータ予測機能を使う] (https://qiita.com/1Kano/items/b6b484ae3e9afca3d296)
- [図解で、うちのワンコを真夏の暑さから守る(Datadogで)] (https://qiita.com/1Kano/items/5f2eed58794f13776a8e)
- [Datadog基本設定メモ(Windowsサーバ)] (https://qiita.com/1Kano/items/633b17fecec058a8eb2c)
- [Datadog基本設定メモ(CentOSサーバ)] (https://qiita.com/1Kano/items/6851fbe099f9be3fbe14)
- [Datadog基本設定(Log Explorer)] (https://qiita.com/1Kano/items/1c959c20cba3151db071)
- [Datadog基本設定(APM)] (https://qiita.com/1Kano/items/33dbcbc6bc86d369146a)