Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#phpconkagawa レガシーコードにもオブザーバビリティを 〜少しずつ始めるサービス監視〜

#phpconkagawa レガシーコードにもオブザーバビリティを 〜少しずつ始めるサービス監視〜

2024/5/11 PHPカンファレンス香川2024
#phpconkagawa

https://fortee.jp/phpconkagawa-2024/proposal/adf74428-3316-444c-9680-fea1b2e42d0c

Yamato

May 11, 2024
Tweet

More Decks by Yamato

Other Decks in Technology

Transcript

  1. 自己紹介 @yamato_sorariku / 足利 大和 株式会社 PR TIMES バックエンドエンジニア PHPer。必要なこと、なんでもやります

    推しのマネージドサービス Google Cloud - Cloud Run 猫が好き コーヒーも好き 飛行機も好き #phpconkagawa 2
  2. クローラーが正しく稼働しているかを観測するための メトリクスログを追加 # こんな雰囲気ですってコード class MetricsLogger { public static function

    action_name($context){ $log = new Logger('metrics'); $stream = new StreamHandler('logs/metrics.log', Logger::INFO); $stream->setFormatter(new JsonFormatter()); $log->pushHandler($stream); $log->info('metrics log', $context); } } #phpconkagawa 64
  3. 現状出力しているログを活用し、稼働状態を可視化する capture関数でテキストログから値を抽出 numeric関数で抽出した値を数値に変換 SUM関数で集計 # ログ(New Relic 上にあるもの) { "hostname"

    : "xxxxxxxxx", "level": "INFO" "message": "2024-05-11 16:00:00+0900 INFO XXXX Success: 20" } SELECT SUM( numeric( capture(`message`, r'.*Success: (?P<success>[0-9]+)') ) ) AS success, #phpconkagawa 77