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

2021-01-10Azure,DataDog,Others

Datadogを使うとサーバー(OS)のイベントログ、アプリケーションログ、システムログ等を確認、監視が出来ます。
Datadog Agentを使ってDatadogにログ転送する事で実現出来ます。
MySQLやPostgreSQLと言ったミドルウェアのログ等様々なログが転送出来ます。
システム全体のログを集約して管理する事が出来る為事象の把握がしやすくなります。

Linux(Cent OS)のmessages(rsyslog)やWindows Server 2022のイベントログのDatadog転送設定手順を纏めてみました。
Datadog Agentの設定から収集されたのログ確認までを纏めています。

※今回は仮想マシン(Azure VM)を利用しています。

スポンサーリンク

LinuxのmessagesをDatadogで表示

Datadog Agentをインストール 

Linux OSにはCent OSを利用しています。
Datadog Agentのインストール手順についてはこちらに纏めています。

設定手順を確認

Datadog Agentを使ったログ転送手順はlogsのメニューにあります。
Getting Startedのメニューで手順が確認出来ます。

手順の確認
logsでGetting Startedのメニューを選択します。
今回はCent OSの仮想マシン(Azure VM)なのでServerを選択します。

Select a log sourceで転送対象のログのソースを選択します。
messages(rsyslog)はリストに表記がありません。
表記にない場合はCustom Filesを選択します。
②でAgentでのログ転送有効化の記述があります。

※Otherの項目にもsourceがあります。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にログ転送の設定があります。
ログ転送有効化のパラメータをfalesから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 Agenはdd-agentユーザーによって実行されます。
dd-agentユーザーは/var/log配下へアクセス権限がない為エラーになります。
権限付与はディレクトリに対するアクセス権とファイルに対するアクセス権を付与します。

権限付与手順

setfaclコマンドを使ってdd-agentユーザーに/var/logに対するrx(読み取りと実行)権限を付与します。

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

デフォルトではログ(messages)にはrootのアクセス権限しかありません。
rsyslogの設定を変更して、ログ(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でログ転送状況を確認します。
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で収集されたログを表示出来ます。
仮想マシン(Azure VM)からログが転送されている事が確認出来ます。

Windows ServerのイベントログをDatadogで表示

Windows Serverでも同じくDatadog Agentインストール、ログ転送有効化、収集対象ログ設定の流れで設定します。

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

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

設定手順を確認

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の設定ファイルです。機能の有効化設定などの記載をします。
      • 設定ファイルの場所は:\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に指定する値になります。

イベントログを表示

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

転送状況確認

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

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

最後に

今回はDatadog Agentを使ったログ転送設定の基本的な部分の手順を纏めてみました。
公式サイト等で多くの情報が提供されていたので手順に困る事は少なかったです。
複数のサーバのログを集約して管理、監視設定も出来る為非常に便利かと思いました。

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

スポンサーリンク