$30 off During Our Annual Pro Sale. View Details »

mackerel-client-php

Takuya Arita
January 26, 2017

 mackerel-client-php

Mackerel Meetup #9のLT資料です

Takuya Arita

January 26, 2017
Tweet

More Decks by Takuya Arita

Other Decks in Technology

Transcript

  1. mackerel-client-php
    @ariarijp

    View Slide

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

    View Slide

  3. Mackerelといえば

    View Slide

  4. View Slide

  5. 可視化がうれしい

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  12. View Slide

  13. View Slide

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

    View Slide

  15. 使ってみる
    (READMEに記載)

    require __DIR__ . '/vendor/autoload.php';


    $client = new \Mackerel\Client([

    'mackerel_api_key' => 'YOUR_MACKEREL_API_KEY_HERE',

    ]);

    $host = $client->getHost('HOST_ID');


    View Slide

  16. 使ってみる
    (メトリクスを送ってみる)

    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]);

    ※公式ドキュメント:ホストのカスタムメトリックを投稿するを参考にしました

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. 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]);


    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide