LoginSignup
8
6

Datadog基本設定(Log Explorer)

Last updated at Posted at 2020-02-02

ログ監視の設定方法がよく分からなかったのでメモ

Datadogでログ監視するために設定する手順

(1)Datadogエージェントの設定

サーバーOSにインストールするAgentの設定と、独自アプリケーションのログを記録する手順の詳細は、こちら「Datadog基本設定(CentOS)#独自アプリケーションのログを記録したい」に記載したので、今回は簡易版として記載します。

監視シナリオ

インターネットVPN(IPsec)の通信が出来ていることを10秒毎にPing応答で検査している。Ping応答が失敗した時はエラーメッセージをログに出力し、Ping応答が成功した時はログが大量になることを防ぐため1時間に1回だけ成功メッセージをログに出力する。
image.png

<1-1> Datadogエージェントをインストール
<1-2> 独自アプリケーションがログを出力(pythonでスクリプトを書いた場合)

独自アプリ(application.py)
# ログ出力先を定義
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> ログのサンプル

/home/username/ping2.log
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つの設定ファイルに取得したいログファイルを指定する。

/etc/datadog-agent/datadog.yaml
##################################
## Log collection Configuration ##
##################################
logs_enabled: true
/etc/datadog-agent/conf.d/custom_log_collection.yaml
logs:
  - type: file
    path: /home/username/ping2.log
    source: customelog #自分の好きな名前
    service: pingheatrun #   〃
/etc/datadog-agent/check.d/
設定不要

<1-5> しばらく(30秒以上)待って、Datadogでログが記録されていることを確認する。
image.png

(2)Datadog Log Expolorer でステータスレベルを分類する。

メニュー[Logs]→[Pipelines]に移動して、全てのログからキーワード読み替え(Grok Parser)とステータス再割り当て(Remapper)を行う。
(参考)
・ログメッセージをJSONで出力し、予約語[status, severity, level, syslog.severity]で書かれている場合は自動的にステータス[ERROR][INFO][WARN]等を仕分けしてくれる。
・テキスト列挙したログの場合は、全て強制的にステータス[INFO]で仕分けされるので、キーワード読み替えとステータス再割り当てを行う。
image.png

<2-1> キーワード読み替え(Grok Parser)
①Log sample: ログサンプルをテキストで貼り付けする(複数ログ形式あるなら追加できる)。
②Define parsing rules: 整形するルールを書く。公式には下記サンプルあり。「自分の好きなルール名 %{最初の文字列:再割り当てするステータス名}.*」でも良い。ルールが正しいと、ログサンプルの右横に[MATCH][UNMATCH]が表示される。
③自分の好きなプロセス名を書く。どんな処理か分かるような処理名がいいと思います。
image.png

image.png

<2-2> 再割り当てするステータス名を指定する。
image.png

<2-3> Datadogログ出力を見る。
あれれ?「変化なーい(T_T)」。
期待しているのは、Statusの欄に[Error]がカウントアップされて、赤色でマークされるのだが。
ここで3~4時間ハマったのだが、過去ログデータにステータスを再割り当てできないのでしょうか。
image.png

試しに新しい「エラーログ」をログファイルに手動追加してみた。たらーん。
image.png

なるほど。過去に記録されたログデータは、ステータス再割り当て[Grok Parser]できないのですね。設定した以降に、取得するログはきちんとステータス[Error]に仕分けされます。

image.png

(3) ログのキーワード合致でアラート送信する

この例では、①Define the search queryに「"auth_basic:error"」をセットして、BASIC認証がエラーだったログを100回記録したらメール送信するもの。

image.png

(4)センシティブなログ情報をOSの外(監視サーバー)へ送信しない方法。

センシティブな情報をマスクする前

Jul 02 22:33:04.082	postfix/qmgr	0FF46644DB: from=<username123@hoge.kano.local>, size=1663

監視エージェントの設定

/etc/datadog-agent/conf.d/journald.yaml
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関連記事

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6