LoginSignup
8
8

More than 5 years have passed since last update.

PHPアプリケーションからDatadogにメトリクスを飛ばす

Last updated at Posted at 2015-05-26

第90回PHP勉強会でLTしてきた

Datadog のココが良い

  • CloudWatch Read権限渡せば すぐに始められる
  • エージェント型で リアルタイムに メトリクス送れる
  • アプリケーションからのメトリクス送信も簡単
  • ビジュアライズも簡単
  • $15/host/month とこの手のサービスにしては 安価

(価格などは、逐次本家を参照してください。念のため)

Getting Started

エージェントをインストール

サインアップすると、OS 毎のインストールガイドがあるので、それに従えば OK

datadog_install.png

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 で送ることになる。同期処理になるのでパフォーマンス注意。

参考

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8