Datadog Agent使ってAzure VMのOSログを監視

Azure,DataDog,Others

Datadogを利用したログ監視設定をやってみます。

Datadog Agentを使う事によりAzure VMをはじめとしてOSのログをDatadogに転送し監視する事が出来ます。

        • Datadog Agentを使ってOSのログをDatadogへ転送
        • Datadog側でログ監視設定

Datadog Agentはログ転送をするだけで、実際の監視設定はDatadog側での設定になります。

今回はまずDatadog Agentを使ったCent OS 7とWindows Server 2019のOSログをDatadogへ転送設定をやってみました。

AzureからDatadogへのログ転送については診断設定(Azure Event Hub)経由でも可能です。その設定についてはこちらになります。

Agentを使うかEvent Hubを使うかの違いはAzure VMのOSログ等IaaSはDatadog Agentを使い、Application Gateway等のPaaSは(Azure Event Hub)経由という感じになります。

スポンサーリンク

Cent OS 7でDatadogAgent経由で/var/log/messagesを送信

Cent OSにDatadog Agentをインストール 

まず最初にOSにDatadog Agentを導入します。導入方法についてはこちらを参考に実施願います。

Datadog Agentでログ転送する為に必要な設定ファイルは2つ

次にDatadog Agentでログ転送を許可する設定を行います。

Datadog Agentでログ転送させるのに必要な設定は2つになります。

      • datadog.yaml:Datadog Agentがログ転送許可設定
        • 設定ファイルの場所は/etc/datadog-agent/datadog.yaml
        • API Key、転送先URL、転送の許可を指定します。
      • conf.yaml:転送するログの内容を設定
        • 設定ファイルの場所は/etc/datadog-agent/conf.d/サービス名.d/conf.yaml
        • 転送するログのパスやファイル名等を指定します。

datadog.yamlを設定

Datadog Agentではデフォルトログ転送無効になっているのでこれを有効化します。

datadog.yamlの設定箇所は1か所(1行)だけです。先頭にあるコメントアウト(#)を除きfalesからTrueに変更します。これでログ転送が有効化されます。

# logs_enabled: false(修正前)→logs_enabled: true

※logs_enabled: trueの行頭にスペースが入っているとエラーになります。ご注意ください。

[root@test-vm ~]# vi /etc/datadog-agent/datadog.yaml

【修正前】

570 ##################################

571 ## Log collection Configuration ##
572 ##################################
573
574 ## @param logs_enabled – boolean – optional – default: false
575 ## Enable Datadog Agent log collection by setting logs_enabled to true.
576 #
577 # logs_enabled: false

【修正後】

570 ##################################

571 ## Log collection Configuration ##
572 ##################################
573
574 ## @param logs_enabled – boolean – optional – default: false
575 ## Enable Datadog Agent log collection by setting logs_enabled to true.
576 #
577 logs_enabled: true

※行番号は環境やVerによって前後する可能性がありますので参考程度で。

conf.yamlを作成

今回は/var/log/messagesを転送してみます。

最初に転送するログ(Source)のディレクトリを作成します。場所は/etc/datadog-agent/conf.d/配下に作成します。

まず最初にこの下にサービス名.d/というディレクトリを新規作成します。なお、デフォルトでかなりのアプリが準備されていますので、利用できる場合はこちらを利用します。

今回はmessages.dというディレクトリを作成しています。Datadog Agentはdd-agentユーザーで動作します。ですのでディレクトリ作成と共にdd-agentユーザに権限を付与しています。

[root@test-vm ~]# install -m 755 -o dd-agent -g dd-agent -d /etc/datadog-agent/conf.d/messages.d

lsコマンドで確認するとディレクトリが作成されている事が確認出来ます。

[root@test-vm ~]# ls -al /etc/datadog-agent/conf.d/ |grep messages.d
drwxr-xr-x 2 dd-agent dd-agent 6 1月 8 19:00 messages.d

次にconf.yamlを作成します。作成場所は/etc/datadog-agent/conf.d/サービス名.d/conf.yamlになります。

[root@test-vm ~]# vi /etc/datadog-agent/conf.d/messages.d/conf.yaml

追記内容は下記の通りになります。Pathで取得するログを指定します。service、sourceはDatadog側で表示される区分になります。(Confファイル内でスペースが入ってないとエラーになったりするケースがあります。この場合適時スペースを調節してみて下さい。)

#Log section
logs:

– type: file
 path: /var/log/messages
 service: messages
 source: messages

/var/log配下の権限設定とLog(messages)へのアクセス権を付与

datadog agentはdd-agentユーザーで動作します。dd-agentは/var/log配下へアクセス権限がない為エラーになります。権限付与設定を行います。権限付与はディレクトリに対するアクセス権とファイルに対するアクセス権を付与します。

まずディレクトリに対するアクセス権を付与します。今回はsetfaclコマンドを使ってdd-agentユーザーに/var/logに対するrx(読み取りと実行)権限を付与します。

[root@test-vm ~]# setfacl -m u:dd-agent:rx /var/log/

次にlogrotate.dを使ってログの権限を変更します。

これは、ログ自体(今回の場合はmesssages)にアクセス権限付与をする為になります。デフォルトではrootにしか権限がない為dd-agentへの読み取り権限を付与します。今回は権限を600から644に変更する事で対応しています。

messsagesの設定はlogrotate.d配下のsystemに記載がありますので、こちらを編集します。

[root@test-vm ~]# vi /etc/logrotate.d/system

追記内容は下記の通りになります。オレンジ色の3行を追加しています。(daily,rotate部分は権限設定と直接関係しませんが翌日の状況を確認したかったので追加しています。)

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
  create 0644 root root
  daily
  rotate 7
  missingok
  sharedscripts
  postrotate
  /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
  endscript
}

今回は動作確認用としてmessagesに読み取り権限付与します。

[root@test-vm ~]# chmod 644 /var/log/messages

これで設定変更は終了です。rsyslogのサービス再起動をして設定を反映します。

[root@test-vm ~]# systemctl restart rsyslog.service

Datadog Agentを再起動して動作確認

Datadog Agentを再起動してステータスを確認します。

まずはDatadog Agentを再起動します。

[root@test-vm ~]# systemctl restart datadog-agent

次にDatadog Agentでステータスを確認します。

[root@test-vm ~]# datadog-agent status

datadog-agent statusコマンドでログの収集状況が確認出来ます。Log Agentの項目を見るとmessagesが取得出来ている事が確認出来ます。

==========
Logs Agent
==========

<途中省略>

messages
——–
Type: file
Path: /var/log/messages
Status: OK
Inputs: /var/log/messages
BytesRead: 17097

またDatadogのポータル上でもLogsのSearchで確認すると以下の通りLogが収集されている事が確認出来ます。

MonitorsのLogを利用する事でログ監視設定が出来ます。

Windows 2019のイベントログをDatadogへ送信

設定はWindowsでもCent OSと同じ流れになります。

Windows OSにDatadog Agentをインストール

まず最初にOSにDatadog Agentを導入します。導入方法についてはこちらを参考に実施願います。

Datadog Agentでログ転送する為に必要な設定ファイルは2つ

Windowsでも同様にDatadog Agentでログ転送を許可する設定を行います。

Datadog Agentでログ転送させるのに必要な設定は2つになります。Windowsの場合はC:\ProgramData\Datadogになります。なおProgramDataのディレクトリ自体が隠しファイルになる為、Windowsで隠しファイルを表示設定する必要があります。(エクスプローラーで表示メニューを開くと隠しファイルという項目があるのでチェックを入れます。)

      • datadog.yaml:Datadog Agentがログ転送許可設定
        • 設定ファイルの場所はC:\ProgramData\Datadog\datadog.yaml
        • API Key、転送先URL、転送の許可を指定します。
      • conf.yaml:転送するログの内容を設定
        • 設定ファイルの場所はC:\ProgramData\Datadog\conf.d\サービス名.d\conf.yaml
        • 転送するイベントログ名等を指定します。

datadog.yamlを設定

Datadog Agentではデフォルトログ転送無効になっているのでこれを有効化します。

datadog.yamlの設定箇所は1か所(1行)だけです。falesからTrueに変更します。これでログ転送が有効化されます。

logs_enabled: false(修正前)→logs_enabled: true 修正後

【設定対象ファイル】
C:\ProgramData\Datadog\datadog.yaml

【修正前】
274 logs_enabled: true

【修正前】
274 logs_enabled: true

※行番号は環境やVerによって前後する可能性がありますので参考程度で。

conf.yamlを作成

今回イベントログでSecurityのイベントを転送してみます。

イベントログのディレクトリはデフォルトであります。場所はC:\ProgramData\Datadog\conf.d\win32_event_log.d配下になります。

デフォルトでconf.yaml.exampleがありますが、今回はconf.yamlを新規作成します。(同じ場所に作成します。)

conf.yamlの設定内容は下記のようにしています。動作確認を行いたかったのでログのレベル等は指定していません。

init_config:
logs:
  – type: windows_event
    channel_path: Security
    source: Security
    service: eventlog
    sourcecategory: windowsevent

C:\ProgramData\Datadog\conf.d\win32_event_log.d\conf.yamlが作成されている事を確認したら、次はDatadog Agentの再起動を行い動作確認します。

Datadog Agentを再起動して動作確認

Datadog Agentを再起動してステータスを確認します。

まずはDatadog Agentを再起動します。Datadog AgentはC:\Program Files\Datadog\Datadog Agent\embedded配下にagent.exeとして存在しています。

C:\>cd “C:\Program Files\Datadog\Datadog Agent\embedded"

C:\Program Files\Datadog\Datadog Agent\embedded>agent.exe restart-service

次にDatadog Agentでステータスを確認します。

C:\Program Files\Datadog\Datadog Agent\embedded>agent.exe status

Log Agentの項目を見るとEvent Logが取得出来ている事が確認出来ます。

==========
Logs Agent
==========

<途中省略>

 win32_event_log
—————
Type: windows_event
ChannelPath: Security
Status: OK
BytesRead: 10774

またDatadogのポータル上でもLogsのSearchを確認すると以下の通りLogが収集されている事が確認出来ます。

MonitorsのLogを利用する事でログ監視設定が出来ます。