vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Datadog logs(パブリックベータ) を試してみる

Datadog でのログ管理機能(パブリックベータ版)が発表されました。

Datadog Agent もメジャーバージョンアップとなり、色々と変わるようなので正式リリース前に触れてみます。
ベータではありますが、現行環境へすんなり導入できるかという観点で試します。 (利用するには Datadog 側へ申請し、 Activate されていることが前提になります。)

f:id:htnosm:20171211003900p:plain



既存環境へのインストール

公式の導入手順は以下になります。

  • Log Collection
    • Agent version >= 6.0
    • デフォルトではログ収集は無効になっている

取得する対象ログ別の設定方法は [Logs]->[Docs]->[Server]-> で確認できます。

f:id:htnosm:20171211003901p:plain

Datadog Agent 現行5系の最新版 5.20.2 が導入済みの環境で nginx のログ取得を設定します。

環境

distribution Version Nginx
Amazon Linux 2017.09 1.12.1
CentOS 7.4.1708 1.12.2
CentOS 6.9 1.10.2
Ubuntu 16.04.3 LTS 1.10.3
Ubuntu 14.04.5 LTS 1.4.6

Agent Ver 6 へのアップグレード

まず Datadog Agent のバージョンを 6 へ上げる必要があります。

導入済みバージョンが 5.17 以上からのバージョンアップは One-step installTo Upgrade、それ以外のバージョンと新規インストールは To Install Fresh のコマンド実行が基本になると思います。

5系までは dd-agent 配下のインストールスクリプトだったのものが、 6では datadog-agent 配下となっています。 併せて導入後のディレクトリ名称等も datadog-agent に変わります。

Amazon Linux / CentOS6 / CentOS7

当方環境では手順通りでは正常に導入が行なえませんでした。 yumでのインストール時点で古いバージョンを参照してしまうようで、 One-step installManual install のいずれも失敗しました。

最終的に以下の手順で導入しています。通常だとyumのキャッシュクリアすれば解決しそうですが、rpmでも導入可能ということで残しておきます。

# rootで実行
# 5.20.2 アンインストール
# (設定ファイル格納場所 /etc/dd-agent は残る)
$ yum remove datadog-agent

・・・
Stopping Datadog Agent (using killproc on supervisord): [  OK  ]
  Erasing    : 1:datadog-agent-5.20.2-1.x86_64      1/1
  Verifying  : 1:datadog-agent-5.20.2-1.x86_64      1/1

Removed:
  datadog-agent.x86_64 1:5.20.2-1

Complete!

# rpm 指定でインストール
$ yum install "https://s3.amazonaws.com/yum.datadoghq.com/beta/x86_64/datadog-agent-6.0.0~beta.5-1.x86_64.rpm"

・・・
Running transaction
  Installing : 1:datadog-agent-6.0.0~beta.5-1.x86   1/1
Enabling service datadog-agent
No datadog.yaml file detected, not starting the agent
  Verifying  : 1:datadog-agent-6.0.0~beta.5-1.x86   1/1

Installed:
  datadog-agent.x86_64 1:6.0.0~beta.5-1

Complete!

# 導入後バージョン確認
$ datadog-agent version
Agent 6.0.0-beta.5 - Commit: 856c96d - Serialization version: 4.6

# 設定ファイルインポート
$ /opt/datadog-agent/bin/agent/agent import /etc/dd-agent /etc/datadog-agent
# checks.d のインポート(ファイルがある場合)
# $ sudo -u dd-agent -- cp /etc/dd-agent/checks.d/*.py /etc/datadog-agent/checks.d/

# アップグレードコマンド実行
# initスクリプトで正常起動ができないため再設定させる
$ DD_UPGRADE=true bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

Ubuntu 14 / Ubuntu 16

To Upgrade のコマンドで問題ありませんでした。 インストール後の自動起動が失敗するようで、手動で起動する必要がありました。

# root で実行
$ DD_UPGRADE=true bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"
・・・
* DD_INSTALL_ONLY environment variable set: the newly installed version of the agent
will not be started. You will have to do it manually using the following
command:

     start datadog-agent

5.x -> 6.x での変更点

upstart 管理となったことで起動コマンド等が変更されています。
自動起動設定は /etc/init.d/ 配下ではなく、 /etc/init/datadog-agent.conf になります。

起動/停止/再起動

Amazon LinuxCentOS 6、Ubuntu 14 は以下のように変わります。 (Ubuntu 14 は service コマンドも利用可能です)

# <= 5.x.x
#service datadog-agent start
↓
# >= 6.0.0
initctl start datadog-agent

systemctl を使う CentOS 7、Ubuntu 16 は変わりません。

systemctl start datadog-agent

info (Agent 詳細情報出力)

info は廃止となったようで、datadog-agent の status で参照可能です。 その他の Datadog Agent の操作も全て datadog-agent コマンドを利用する形になるようです。

# <= 5.x.x
service datadog-agent info
↓
# >= 6.0.0
datadog-agent status

設定ファイル

datadog.conf、supervisor.conf は datadog.yaml へ集約されたようです。 また、conf.d/ 配下の .yaml が、 conf.d/.d/conf.yaml となっています。

# <= 5.x.x
/etc/dd-agent/conf.d/<integration>.yaml
↓
# >= 6.0.0
/etc/datadog-agent/conf.d/<integration>.d/conf.yaml

ログ収集有効化

設定ファイル修正

log_enabled に true を設定します。

# diff /etc/datadog-agent/datadog.yaml.org /etc/datadog-agent/datadog.yaml
< log_enabled: false
---
> log_enabled: true

nginx.yaml へ Log section を追記します。
尚、Start Logging with Datadog 上のサンプルをそのまま使おうとすると、/var/log/ 直下のログファイル指定となっているため動作しません。 (/var/log/nginx/ に修正する必要があります)

# diff /etc/dd-agent/conf.d/nginx.yaml /etc/datadog-agent/conf.d/nginx.d/conf.yaml
>
> #Log section
> logs:
>   - type: file
>     path: /var/log/nginx/access.log
>     service: nginx
>     source: nginx
>     sourcecategory: http_web_access
>
>   - type: file
>     path: /var/log/nginx/error.log
>     service: nginx
>     source: nginx
>     sourcecategory: http_web_access

新規ファイルで作成する場合

logs だけでは認識されず、init_config, instancesセクションも必須です。

init_config:

instances:
    [{}]

#Log section
logs:
  - type: file
    path: /var/log/nginx/access.log
    service: nginx
    source: nginx
    sourcecategory: http_web_access

対象ログの確認

  • 設定変更後は datadog-agent の再起動が必要
  • 起動後に書き込まれたログのみが対象
  • tcpポートは 10516 または 10514 (10516推奨)
  • datadog.yamllog_enabled: true (デフォルト無効)
  • dd-agent ユーザに対象ログファイルの読み込み権限が必要
# NG
$ sudo -u dd-agent ls /var/log/nginx/access.log
ls: cannot access /var/log/nginx/access.log: Permission denied
# 権限を付与して読み込みが可能なように修正
$ sudo -u dd-agent ls /var/log/nginx/access.log
/var/log/nginx/access.log

権限付与には3パターンの対処があります。

  • a) datadog-agent を root 権限で動かす(非推奨)
  • b) 対象ファイルに読み込み権限付与(ログローテーションにも注意)
  • c) rsyslog, fluentd 等を使用する

収集したログの参照

[Logs]->[Explorer]

f:id:htnosm:20171211003902p:plain

Screen Board に Log Stream を定義

f:id:htnosm:20171211003903p:plain

Infrastructure のホスト情報

本来はホストに紐付くログが表示されると思います。
今回導入した限りでは Infrastructure 側のホスト名が instance-id、Logs側のホスト名が ip-xxx-xxx-xxx-xxx となってしまい表示がされませんでした。 Aliasでも紐付くようにして欲しい所です。

f:id:htnosm:20171211003904p:plain


今回は導入のみで終わっていますが、Agent設定側での除外、マスク(置換)、複数行対応の機能もあります。
少量のログ送信しか試せておらず、ログ解析の検証もできていないのですが、 大量のホストから大量のログ情報が送信された場合、Explorer 画面が酷いことになりそうなのが懸念です。
Monitorにも対応してくれるのであろうと願いつつ、正式リリースを待ちたいと思います。

料金も気になる所ですが、現時点では価格未定とのことです。