Slide 1

Slide 1 text

mackerel-client-php @ariarijp

Slide 2

Slide 2 text

自己紹介 • @ariarijp(Takuya Arita) • 株式会社ココラブル ソフトウェアエンジニア • 普段はPHPを書いたりしていますが、インフラも扱 います • mackerel-agent-pluginsにプルリクエストを送った ことがあります

Slide 3

Slide 3 text

Mackerelといえば

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

可視化がうれしい

Slide 6

Slide 6 text

Mackerelに メトリクスを送ろう

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

PHP版のクライアントを 作ってみました

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

導入 composer require ariarijp/mackerel-client:dev-master (2017/01/26ݱࡏ)

Slide 15

Slide 15 text

使ってみる (READMEに記載) 'YOUR_MACKEREL_API_KEY_HERE',
 ]);
 $host = $client->getHost('HOST_ID');


Slide 16

Slide 16 text

使ってみる (メトリクスを送ってみる) '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]);
 ※公式ドキュメント:ホストのカスタムメトリックを投稿するを参考にしました

Slide 17

Slide 17 text

PHPerも気軽に メトリクスを送れる! • アプリケーション固有のメトリクスを送る • バッチ処理などの実行時間を送る • 外部APIのレスポンスタイムやエラー率を送る

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Mackerelでがんばり具合を 可視化するコード例 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]);


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

PHP x Mackerel便利 (だと思う)

Slide 24

Slide 24 text

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