Windows ServerやLinuxのログをDatadogに収集して表示する手順

2021-01-10Azure,Datadog,Others

LinuxのsyslogやWindows ServerのイベントログをDatadogに転送する手順です。

Datadogを使用すると、サーバー(OS)のイベントログ、アプリケーションログ、システムログなどを確認・監視できます。
Datadog Agentを利用して、各種ログをDatadogに転送することで実現可能です。
MySQLやPostgreSQLなどのミドルウェアのログを含む、さまざまなログを転送できます。
システム全体のログを集約して管理できるため、事象の把握がしやすくなります。

今回は、Linuxのsyslog(messages)やWindows ServerのイベントログをDatadogに転送する手順についてまとめました。
Datadog Agentの設定から、収集したログの確認までの流れを整理しています。

※Windows Serverは、Windows Server 2022を利用しています。
※LinuxはCentOSを利用しています。
※Azure環境上の仮想マシンを利用して手順確認しています。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。

スポンサーリンク

Linuxのsyslog(messages)をDatadogに収集して表示

Datadog Agentをインストール 

Datadog Agentのインストール手順については、こちらで紹介しています。

logsのメニューでログ転送の設定手順を確認

Datadog Agentを使用したログ転送手順は、logsメニューにあります。
Getting Startedメニューから手順を確認できます。

設定手順の確認
logsメニューでGetting Startedを選択します。
今回はLinuxの仮想マシンを使用しているため、Serverを選択します。

Select a log sourceで、転送対象となるログのソースを選択します。Linuxのsyslog(messages)はリストに記載がないため、リストにない場合はCustom Filesを選択します。
②の手順では、Agentでのログ転送を有効化する設定について記載があります。

※syslog-ngなどはOtherに含まれます。

転送対象のログのpath、Service名、Sourceを指定します。
指定すると、conf.yamlに記載する内容が表示されます。

ログ転送に必要な設定ファイルは2つ

Datadog Agentでログを転送するためには、設定が必要です。
設定手順にも記載されている通り、必要な設定ファイルは2つあります。

Agent 構成ファイル

    • datadog.yaml:Datadog Agentのメイン設定ファイル
      • 機能の有効化などを設定します(今回はログ転送を有効化)
      • ファイルの場所:/etc/datadog-agent/datadog.yaml
    • conf.yaml:各機能の詳細を定義する設定ファイル
      • 転送するログのパスやファイル名を指定
      • ファイルの場所 :/etc/datadog-agent/conf.d/サービス名.d/conf.yaml 

※Datadog Agentを実行するユーザー(dd-agent)に、転送対象のログへのアクセス権を付与する必要があります。

datadog.yamlでログ転送を有効化

Datadog Agentでは、デフォルトでログ転送が無効になっています。
datadog.yamlにログ転送の設定項目があります。
ログ転送を有効化するには該当パラメータのコメントアウトを解除、falseからtrueに変更します。

※logs_enabled: trueの行頭にスペースが入っているとエラーになるため、注意が必要です。

datadog.yamlを編集
datadog.yamlを編集します。
logs_enabledのコメントアウトを外して、値をfalseからtrueに変更します。

【編集前】

【編集後】

conf.yamlを作成

Datadog Agentは、/etc/datadog-agent/conf.d/配下のファイルを読み込み実行します。
転送するログ(Source)を指定するため、/etc/datadog-agent/conf.d/配下に、サービス名.dという名前でディレクトリを新規作成します。
今回は、messages.dというディレクトリを作成しています。

※conf.d配下には、デフォルトで多くのサービスに対応した設定ファイルが用意されています。

conf.yamlの作成手順

installコマンドを使用してディレクトリを作成し、同時に権限も付与します。
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コマンドで確認すると、ディレクトリが作成されていることが分かります。
dd-agentユーザーに権限が付与されていることも確認できます。

[root@test-vm ~]# ls -al /etc/datadog-agent/conf.d/ |grep messages.d
drwxr-xr-x. 2 dd-agent dd-agent 23 Apr 3 05:02 messages.d

viコマンドを使用してconf.yamlを新規作成します。

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

確認した手順の記載内容を貼り付けます。(コメントは除いています。)

#Log section
logs:

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

ディレクトリ(/var/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/

デフォルトでは、syslog(messages)にはrootのみがアクセスできるよう設定されています。
rsyslogの設定を変更し、syslog(messages)のパーミッションを600から644に変更します。
その他のユーザー(dd-agent)にも読み取り権限が付与されます。

※ログファイルの権限付与方法には複数の手段がありますが、ここでは公式サイトに記載されている方式を使用しています。

ログローテーションのためのファイルアクセス許可の設定 (Linux)

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

/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上でログが表示されていることも確認します。

ログ転送状況やログ表示を確認

datadog-agentを再起動します。

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

datadog-agent statusコマンドでログ転送状況を確認します。
ステータスがOKとなっていることを確認します。

Agent のコマンド

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

==========
Logs Agent
==========
Reliable: Sending compressed logs in HTTPS to agent-http-intake.logs.us5.datadoghq.com on port 443
BytesSent: 384829
EncodedBytesSent: 42363
LogsProcessed: 1404
LogsSent: 1404

messages
——–
– Type: file
Path: /var/log/messages
Service: messages
Source: messages
Status: OK
Inputs:
/var/log/messages
Bytes Read: 170309
Pipeline Latency:
Average Latency (ms): 0
24h Average Latency (ms): 0
Peak Latency (ms): 15
24h Peak Latency (ms): 15

Datadogでログが表示されていることを確認します。
Logs画面で収集されたログが表示されていることを確認できます。
仮想マシンからログが正常に転送されていることも確認できます。

—広告—

Windows ServerのイベントログをDatadogに収集して表示

Windows Serverのイベントログの場合も同様の手順となります。
Datadog Agentのインストール、ログ転送の有効化、収集対象ログの設定という流れで設定します。

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

Windows ServerにDatadog Agentをインストールします。
インストール方法については、こちらで紹介しています。

logsのメニューでログ転送の設定手順を確認

Datadog Agentを使用したログ転送手順は、logsメニューにあります。
Getting Startedメニューから手順を確認できます。

設定手順を確認
logsでGetting Startedメニューを選択します。
今回はWindows Serverのため、Serverを選択します。
Select a log sourceでWindows Eventを選択します。
②にはログ転送の有効化設定、③にはconf.yamlの記載サンプルが表示されます。

ログ転送に必要な設定ファイルは2つ

Datadog Agentでログを転送するためには、設定が必要です。
設定手順にも記載されている通り、必要な設定ファイルは2つあります。
Windows Serverの場合は、Datadog Agent Managerで設定できます。

Agent 構成ファイル

    • datadog.yaml:Datadog Agentのメイン設定ファイル
      • 機能の有効化などを設定します(今回はログ転送を有効化)
      • ファイルの場所:C:\ProgramData\Datadog\datadog.yaml
    • conf.yaml:各機能の詳細を定義する設定ファイル
      • 転送するログのパスやファイル名を指定
      • ファイルの場所 :C:\ProgramData\Datadog\conf.d\サービス名.d\conf.yaml

datadog.yamlでログ転送を有効化

Datadog Agent Managerを使用して、datadog.yamlの設定を変更できます。
logs_enabledの設定をfalseからtrueに変更することで、ログ転送が有効化されます。

datadog.yamlでログ転送を有効化
datadog.yamlを編集します。
logs_enabledのコメントアウトを外し、値をfalseからtrueに変更します。

【設定変更前】

【設定変更後】

conf.yamlを新規作成

Datadog Agent Managerを使用してconf.yamlを作成します。
channel_path(取得対象のイベントログ)の指定、source、service、sourcecategoryを設定します。

conf.yamlを新規作成

checksでManage checksを選択します。
win32_event_logを選択します。
Add a Checkでconf.yamlを追加できます。
編集が終わったらAdd Checkを選択し、conf.yamlが追加されます。
Restart AgentでDatadog Agentを再起動します。

※sourcecategoryは、テンプレートを参考にwindows.eventとします。

logs:
– type: windows_event
channel_path: System
source: System
service: eventlog
sourcecategory: windows.event

– type: windows_event
channel_path: Security
source: Security
service: eventlog
sourcecategory: windows.event

– type: windows_event
channel_path: Application
source: Application
service: eventlog
sourcecategory: windows.event

Get-WinEvent -ListLog *のLogNameが、channel_pathに指定する値になります。

収集したイベントログをDatadogで表示

収集されたイベントログをDatadogで表示します。
Logsメニューで確認できます。

収集したイベントログを表示

Windows Serverのイベントログが収集されていることが確認できます。
ログの詳細を選択すると、ログ自体が構造化されて表示されます。
Datadogで定義されたsourceを利用しているためです。

Datadog Agent Managerでもログ転送のステータスを確認できます。
StatusのGeneralを選択します。
Log Agentの項目で各ログの転送状況が確認できます。
StatusがOKになっていれば、正常に転送されています。

—広告—

最後に

今回はDatadog Agentを使ったログ転送設定の基本的な手順を確認しました。
公式サイトなどで多くの情報が提供されていたため、手順に困ることはほとんどありませんでした。
複数のサーバのログを集約して管理や監視設定もできるため、非常に便利だと感じました。

ログには、フィルターを使った絞り込みやパーサーを使ったログの構造化など、さまざまな機能が提供されています。
引き続き、Datadogの機能についていろいろと試してみたいと思います。

スポンサーリンク