Mackerel Meetup #9のLT資料です
mackerel-client-php@ariarijp
View Slide
自己紹介• @ariarijp(Takuya Arita)• 株式会社ココラブル ソフトウェアエンジニア• 普段はPHPを書いたりしていますが、インフラも扱います• mackerel-agent-pluginsにプルリクエストを送ったことがあります
Mackerelといえば
可視化がうれしい
Mackerelにメトリクスを送ろう
Mackerelにメトリクスを送る方法• mackerel-agentやプラグインを使う• mkrを使う• 各言語向けのクライアントライブラリを使う• Mackerel APIを使う
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
PHP版のクライアントを作ってみました
導入composer require ariarijp/mackerel-client:dev-master(2017/01/26ݱࡏ)
使ってみる(READMEに記載) require __DIR__ . '/vendor/autoload.php'; $client = new \Mackerel\Client([ 'mackerel_api_key' => 'YOUR_MACKEREL_API_KEY_HERE', ]); $host = $client->getHost('HOST_ID');
使ってみる(メトリクスを送ってみる) 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]); ※公式ドキュメント:ホストのカスタムメトリックを投稿するを参考にしました
PHPerも気軽にメトリクスを送れる!• アプリケーション固有のメトリクスを送る• バッチ処理などの実行時間を送る• 外部APIのレスポンスタイムやエラー率を送る
メトリクスさえ送ればあとはMackerelが可視化も監視もしてくれる
(小ネタ)Mackerelでがんばり具合を可視化する• SlackのUser Presence APIを使用• レスポンスにはメンバー一覧とその状態が含まれる• アクティブなユーザーの数を拾い、mackerel-client-phpを使ったPHPスクリプトでMackerelに送る
Mackerelでがんばり具合を可視化するコード例 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]);
Mackerelでがんばり具合を可視化した例
Mackerelでがんばり具合を可視化した例やる気が急激に減っているのではなく今日は18時から全社定例がありましたactiveだけに絞るの忘れてたまたやる気が減っているように見えますが月例の全社飲み会が始まったのだと思いますMeetup会場に移動中
PHP x Mackerel便利(だと思う)
PHPerのみなさまにおかれましてはmackerel-client-phpの導入もご検討ください