今更ながら、初めて Windows へ DatadogAgent をインストールしました。
Linux との違いを中心にメモ。
基本的には公式ドキュメント一読でほぼ事足ります。
目次
- 目次
- インストール
- 起動/停止
— Datadog Agent Manager
— Service - 各種ディレクトリ
— インストールディレクトリ
— 設定ファイル・ログ - Event Viewer Integration
- WindowsでのカスタムCheckのテスト
インストール
環境
Agent version 5.17.2 Platform Windows-10-10.0.15063 Python version 2.7.12, 64bit
以下デフォルトインストールです。
- [Integrations] -> [Agent]
- [Download the Datadog Agent installer] のリンクよりインストーラ(ddagent-cli-latest.msi)をダウンロード
- インストーラの実行
- [Add your API KEY] にページ内に記載のある API Key をコピー&ペースト
起動/停止
Datadog Agent Manager
GUIで各種操作を行えるツールです。
- Setting・・・Datadog.conf、各種インテグレーションファイルの編集
- Log and Status・・・Agent Status、各種ログの参照
- Actions・・・Agent起動・停止、サポートケース起票(Flare)
各種インテグレーションファイルの編集は、[Save] しただけでは有効化されないため、[Enable] を押下して有効化する必要があります。
Service
Windowsサービスからも起動/停止が可能です。
各種ディレクトリ
インストールディレクトリ
C:\PROGRAM FILES\DATADOG\DATADOG AGENT ├─agent ├─bin ├─dist ├─embedded └─LICENSES
設定ファイル・ログ
Datadog Agent Manager を使用せずに直接参照・編集も可能です。
因みに、Datadog Agent Manager の [Enable/Disable] は conf.d 配下の 〜.yaml をリネームしています。
C:\PROGRAMDATA\DATADOG │ datadog.conf # Datadog Agent の設定ファイル ├─checks.d # カスタムチェックファイル ├─conf.d # Integrations の設定ファイル └─logs # 各種ログファイル collector.log dogstatsd.log forwarder.log service.log
Event Viewer Integration
WindowsイベントログをDatadogへ連携するインテグレーションが用意されています。
type でエラーレベルでの絞り込みができるようになっていますが、 マルチバイト(というかマルチロケーション)非対応で、 日本語環境では動作しません。 以下のように元のインテグレーションファイルを編集して、カスタムチェックを作成して回避しました。
- win32_event_log_ja(差分)
--- win32_event_log.py +++ win32_event_log_ja.py @@ -1,3 +1,12 @@ +#!/usr/bin/python +# -*- coding: cp932 -*- +''' +日本語環境用イベントログ監視 +''' +import sys +reload(sys) +sys.setdefaultencoding('cp932') + # (C) Datadog, Inc. 2010-2016 # All rights reserved # Licensed under Simplified BSD License (see LICENSE) @@ -87,6 +96,19 @@ if ltypes: query['Type'] = [] for ltype in ltypes: + if ltype == 'Critical': + ltype = '重大' + elif ltype == 'Error': + ltype = 'エラー' + elif ltype == 'Warning': + ltype = '警告' + elif ltype == 'Information': + ltype = '情報' + elif ltype == 'Audit Success': + ltype = '成功の監査' + elif ltype == 'Audit Failure': + ltype = '失敗の監査' + query['Type'].append(('=', ltype)) if source_names: query['SourceName'] = [] @@ -223,9 +245,11 @@ def _alert_type(self): event_type = self.event['Type'] # Convert to a Datadog alert type - if event_type == 'Warning': + if event_type == '警告': return 'warning' - elif event_type == 'Error': + elif event_type == '重大': + return 'error' + elif event_type == 'エラー': return 'error' return 'info'
win32_event_log_ja.py を checks.d、win32_event_log_ja.yaml(中身はwin32_event_log.yamlと同じ) を conf.d に格納して使用します。
WindowsでのカスタムCheckのテスト
日本語ドキュメントには shell.exe
を使用するように記載がありますが、agent version 5.12 以上の場合の確認方法は下記になります。 (現時点で日本語ドキュメントには旧バージョンの確認方法しか記載がありません。)
<INSTALL_DIR>/embedded/python.exe <INSTALL_DIR>agent/agent.py check <CHECK_NAME>
今回インテグレーションは Event Viewer のみ導入しましたが、他にもロケール問題が出る物があるのかもしれません。 (イベントログのエラーレベル位、Windows側が英語で出力すれば良いのではと思いますが)
Datadog公式でマルチロケール対応が成されることを期待します。