Datadog でのログ管理機能(パブリックベータ版)が発表されました。
Datadog Agent もメジャーバージョンアップとなり、色々と変わるようなので正式リリース前に触れてみます。
ベータではありますが、現行環境へすんなり導入できるかという観点で試します。 (利用するには Datadog 側へ申請し、 Activate されていることが前提になります。)
- 既存環境へのインストール
— 環境
— Agent Ver 6 へのアップグレード
—– Amazon Linux / CentOS6 / CentOS7
—– Ubuntu 14 / Ubuntu 16
— 5.x -> 6.x での変更点
—– 起動/停止/再起動
—– info(Agent 詳細情報出力)
—–設定ファイル
— ログ収集有効化
—– 設定ファイル修正
—–新規ファイルで作成する場合
—– 対象ログの確認
— 収集したログの参照
—– [Logs]->[Explorer]
—– Screen Board に Log Stream を定義
—– Infrastructure のホスト情報
既存環境へのインストール
公式の導入手順は以下になります。
- Log Collection
- Agent version >= 6.0
- デフォルトではログ収集は無効になっている
取得する対象ログ別の設定方法は [Logs]->[Docs]->[Server]-> で確認できます。
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 install の To Upgrade、それ以外のバージョンと新規インストールは To Install Fresh のコマンド実行が基本になると思います。
5系までは dd-agent 配下のインストールスクリプトだったのものが、 6では datadog-agent 配下となっています。 併せて導入後のディレクトリ名称等も datadog-agent に変わります。
Amazon Linux / CentOS6 / CentOS7
当方環境では手順通りでは正常に導入が行なえませんでした。 yumでのインストール時点で古いバージョンを参照してしまうようで、 One-step install、Manual 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 Linux、CentOS 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.yaml に
log_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]
Screen Board に Log Stream を定義
Infrastructure のホスト情報
本来はホストに紐付くログが表示されると思います。
今回導入した限りでは Infrastructure 側のホスト名が instance-id、Logs側のホスト名が ip-xxx-xxx-xxx-xxx となってしまい表示がされませんでした。 Aliasでも紐付くようにして欲しい所です。
今回は導入のみで終わっていますが、Agent設定側での除外、マスク(置換)、複数行対応の機能もあります。
少量のログ送信しか試せておらず、ログ解析の検証もできていないのですが、 大量のホストから大量のログ情報が送信された場合、Explorer 画面が酷いことになりそうなのが懸念です。
Monitorにも対応してくれるのであろうと願いつつ、正式リリースを待ちたいと思います。
料金も気になる所ですが、現時点では価格未定とのことです。