PHP 애플리케이션에서 Datadog로 메트릭 건너 뛰기

4500 단어 PHPDatadog
제90회 PHP 공부회에서 LT 해왔다.

Datadog의 코코가 좋다


  • CloudWatch Read 권한 전달하면 바로 시작할 수 있습니다.
  • 에이전트 유형으로 실시간으로 메트릭을 보낼 수 있습니다
  • 응용 프로그램에서 메트릭 전송도 간단합니다
  • 시각화도 간단
  • $15/host/month 와 이 손의 서비스로 해서는 저렴

  • (가격 등은 순차 본가를 참조하십시오. 만약을 위해)

    Getting Started



    에이전트 설치



    가입하면 OS별 설치 가이드가 있으므로 그에 따라 OK



    PHP 용 클라이언트 라이브러리 넣기


    composer require datadog/php-datadogstatsd:0.1.*
    

    지표 전송



    본가의 라이브러리는 Autoloader를 지원하지 않으므로 개별적으로 요구해야합니다.
    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'], "?")]);
        }
    );
    

    하나의 php.process_count는 php.process_time.count로 집계 할 수 있습니다.

    애플리케이션 로그


  • 로그마다 적절한 명명으로 Event를 보낸다
  • alert_type과 aggregation_key를 함께 보내면 알림 및 집계에 사용할 수 있습니다
    DataDogStatsD::event("Registered User", ['text' => "新規ユーザー登録だよー"]);
    

    현재, event 는 UDP -> 에이전트 경유로의 송신에 대응하고 있지 않기 때문에, 직접 HTTP 로 송신하게 된다. 동기 처리가 되기 때문에 퍼포먼스 주의.

    참고


  • Getting Started with DogStatsD
  • Datadog 일본어 정보
  • 좋은 웹페이지 즐겨찾기