第90回PHP勉強会でLTしてきた
Datadog のココが良い
- CloudWatch Read権限渡せば すぐに始められる
- エージェント型で リアルタイムに メトリクス送れる
- アプリケーションからのメトリクス送信も簡単
- ビジュアライズも簡単
- $15/host/month とこの手のサービスにしては 安価
(価格などは、逐次本家を参照してください。念のため)
Getting Started
エージェントをインストール
サインアップすると、OS 毎のインストールガイドがあるので、それに従えば OK
PHP 向けのクライアントライブラリを入れる
composer require datadog/php-datadogstatsd:0.1.*
メトリクス送信
本家のライブラリは Autoloader に対応していないので、個別に require してやる必要がある
require '../vendor/datadog/php-datadogstatsd/libraries/datadogstatsd.php';
DataDogStatsD::increment('your.data.point');
本家から fork したリポジトリを追うと、Autoload 対応したものもあるようなので、いずれ本家に取り込まれるかもしれない
何を送るか
処理リクエスト(PHPプロセス)数
- REQUEST_URI毎にInrementを送る
DataDogStatsD::increment('php.process_count', 1, ['path' => strtok($_SERVER['REQUEST_URI'], "?")]);
プロセス毎処理時間
- shutdown処理内でTimingを送信
- REQUEST_URI毎に応答時間を集計
$script_start_time = microtime(true);
register_shutdown_function(
function() use ($script_start_time) {
DataDogStatsD::timing('php.process_time', microtime(true) - $script_start_time, 1, ['path' => strtok($_SERVER['REQUEST_URI'], "?")]);
}
);
1つ上の php.process_count は、 php.process_time.count としても集計できる
アプリケーションログ
- ログ毎に適当な命名でEventを送る
- alert_type や aggregation_key を併せて送れば、通知や集計にも使える
DataDogStatsD::event("Registered User", ['text' => "新規ユーザー登録だよー"]);
現状、event は UDP -> エージェント経由での送信に対応していないので、直接 HTTP で送ることになる。同期処理になるのでパフォーマンス注意。