ポクポク

ポクッとしてツナッ

Mackerel で仕事のがんばり具合を見える化する

この記事は Mackerel Advent Calendar 2017 の21日目の記事です。 前日は id:heleeen さんの ハムスターのために監視導入したら人間のための監視もしたほうが良さそうなことがわかりました でした。湿度が上がってよかったですね。


突然ですが僕の今日の仕事の様子です。

f:id:pokutuna:20171221174736p:plain

10:05 ぐらいから仕事を始めてますね。そこから 10:40 ぐらいまで Chrome で GHE 上のレビューをしてました。10:50 分ぐらいまでの空白時間はたぶんトイレでしょう。そこから Emacs と iTerm2 をばりばり触ってるのでコードを書いていた気がします。12:30 ぐらいに一段落して、ブラウザでの動作確認やレビュー依頼を書いています。13~14:00 が昼休みなのですが、勤勉極まりない僕は 13:10 ほどまで仕事をしていたようです。午後は溜まっていたレビューを片付けていたので Chrome と iTerm2 にほどほどにタイプしてますね。この記事は 16:40 頃から Emacs で書き始めました。

というようなメトリックを Mackerel に記録できるぞ!
このアプリケーションを入れるんだ!! Mac 専用です!!! https://github.com/pokutuna/MackerelAppActivity.app

やっていることは簡単で、その時点でアクティブなアプリケーション名をメトリック名として、タイプ数を値として定期的に Mackerel に送信しているだけです。

つかいかた

インストール

なんと id:aereal さんのおかげで Homebrew で入れることができます。

# https://github.com/aereal/homebrew-mackerelappactivity
brew tap aereal/mackerelappactivity
brew cask install mackerelappactivity

設定ファイルをおく

こういう JSON を ~/.mackerel-app-activity.json においてください。 コメントは消してくれ!!

{
    // Mackerel の API キー, 書き込み権限が必要です
    "ApiKey": "********",

    // Mackerel 上の Service 名です
    "ServiceName": "clients",

    // メトリックの prefix です, PC の名前とか入れると個別のグラフにできるぞ
    "MetricPrefix": "activity.types.",

    // メトリック名には BundlerIdentifier(アプリ識別子のようなやつ)の末節を使いますが
    // アプリによっては分かりづらいのでメトリック名の対応を指定できます
    "NameMapping": { 
        "slackmacgap": "Slack",
        "LimeChat-AppStore": "LimeChat",
        "keychainaccess": ""  // メトリック名が空だと送信しない
    },

    // Mackerel への API リクエスト間隔(分)です
    "PostIntervalMinutes": 1
}

アクセシビリティに追加する

キー入力を検出するのに権限が必要なので "アクセシビリティ" への追加が必要です。 僕には悪意はないですが信用もないので、各自の責任でアクセシビリティに追加してください。しくみはキーロガーと同じですからね。

あとはアプリを起動すれば動くはず!

アイコンについて

このアイコンは鯖の正面顔をイメージして僕が書いたものです。 メニューバーに常駐するので悲惨、プルリクお待ちしております。 コードも勘で Swift を書いたという風情なのでそちらもお待ちしております。