mackerel-client-php

3a622e726b35fe71480166a16edcb66e?s=47 Takuya Arita
January 26, 2017

 mackerel-client-php

Mackerel Meetup #9のLT資料です

3a622e726b35fe71480166a16edcb66e?s=128

Takuya Arita

January 26, 2017
Tweet

Transcript

  1. mackerel-client-php @ariarijp

  2. 自己紹介 • @ariarijp(Takuya Arita) • 株式会社ココラブル ソフトウェアエンジニア • 普段はPHPを書いたりしていますが、インフラも扱 います

    • mackerel-agent-pluginsにプルリクエストを送った ことがあります
  3. Mackerelといえば

  4. None
  5. 可視化がうれしい

  6. Mackerelに メトリクスを送ろう

  7. Mackerelにメトリクスを 送る方法 • mackerel-agentやプラグインを使う • mkrを使う • 各言語向けのクライアントライブラリを使う • Mackerel

    APIを使う
  8. Mackerelにメトリクスを 送る方法 • mackerel-agentやプラグインを使う • mkrを使う • 各言語向けのクライアントライブラリを使う • Mackerel

    APIを使う
  9. Mackerelの クライアントライブラリ • mackerelio/mackerel-client-go • mackerelio/mackerel-client-ruby • itchyny/mackerel-client-hs • heavenshell/py-mackerel-client

    • pepabo/mackerel-rb • muddydixon/node-mackerel • ariarijp/mackerel-client-php
  10. Mackerelの クライアントライブラリ • mackerelio/mackerel-client-go • mackerelio/mackerel-client-ruby • itchyny/mackerel-client-hs • heavenshell/py-mackerel-client

    • pepabo/mackerel-rb • muddydixon/node-mackerel • ariarijp/mackerel-client-php
  11. PHP版のクライアントを 作ってみました

  12. None
  13. None
  14. 導入 composer require ariarijp/mackerel-client:dev-master (2017/01/26ݱࡏ)

  15. 使ってみる (READMEに記載) <?php
 
 require __DIR__ . '/vendor/autoload.php';
 
 $client

    = new \Mackerel\Client([
 'mackerel_api_key' => 'YOUR_MACKEREL_API_KEY_HERE',
 ]);
 $host = $client->getHost('HOST_ID');

  16. 使ってみる (メトリクスを送ってみる) <?php
 
 require __DIR__ . '/vendor/autoload.php';
 
 $client

    = new \Mackerel\Client([
 'mackerel_api_key' => 'YOUR_MACKEREL_API_KEY_HERE',
 ]);
 $host = $client->getHost('HOST_ID');
 $metric = [
 'hostId' => $host->id,
 'time' => time(),
 'name' => 'metrics.meetup.random',
 'value' => mt_rand(1, 6),
 ];
 var_dump($metric);
 $client->postMetrics([$metric]);
 ※公式ドキュメント:ホストのカスタムメトリックを投稿するを参考にしました
  17. PHPerも気軽に メトリクスを送れる! • アプリケーション固有のメトリクスを送る • バッチ処理などの実行時間を送る • 外部APIのレスポンスタイムやエラー率を送る

  18. メトリクスさえ送れば あとはMackerelが 可視化も監視もしてくれる

  19. (小ネタ) Mackerelでがんばり具合を可視化する • SlackのUser Presence APIを使用 • レスポンスにはメンバー一覧とその状態が含まれる • アクティブなユーザーの数を拾い、mackerel-

    client-phpを使ったPHPスクリプトでMackerelに送 る
  20. Mackerelでがんばり具合を 可視化するコード例 <?php
 
 require __DIR__ . '/vendor/autoload.php';
 
 function

    getActiveUsersCount()
 {
 $client = new GuzzleHttp\Client();
 $resp = $client->get('https://slack.com/api/users.list', [
 'query' => [
 'token' => ‘YOUR_SLACK_TOKEN’,
 'presence' => '1',
 ],
 ]);
 $presence = json_decode($resp->getBody()->getContents());
 return count(array_filter($presence->members, function ($m) {
 return $m->presence == 'active';
 }));
 }
 
 $client = new \Mackerel\Client([
 'mackerel_api_key' => 'YOUR_MACKEREL_API_KEY_HERE',
 ]);
 $host = $client->getHost('HOST_ID');
 $metric = [
 'hostId' => $host->id,
 'time' => time(),
 'name' => 'metrics.slack.active',
 'value' => getActiveUsersCount(),
 ];
 var_dump($metric);
 $client->postMetrics([$metric]);

  21. Mackerelでがんばり具合を 可視化した例

  22. Mackerelでがんばり具合を 可視化した例 やる気が急激に減っているのではなく 今日は18時から全社定例がありました activeだけに絞るの忘れてた またやる気が減っているように見えますが 月例の全社飲み会が始まったのだと思います Meetup会場に移動中

  23. PHP x Mackerel便利 (だと思う)

  24. PHPerのみなさまにおかれましては mackerel-client-phpの導入もご検討ください