koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

閉じたアラートも取れるようになったMackerelのAPIで勤怠を得んと欲す

月末ですね。

Mackerelアドベントカレンダーが明日から始まりますが、この試行は月末に価値があるので自称0日目の記事として書きます。

さて、みなさん、勤怠の記録は毎日つけていますか? 自分はまぁ、言わぬが華です。

Google MapのLogで毎日何時頃にオフィスにIn/Outしているのかを月末にチェックしているような人もいるようです。面倒くさいですね。

さて、Mackerelユーザーの作業用端末には当然 mackarel-agent が入っています。であるならば、閉じたアラートも取れるようになったMackerelのAPIでその電源On/Off時間(デフォルトで構成される connectivity アラート!)を得ることができます。これは相当に正確な出退勤時間ではないでしょうか?

前置きが長いですね。試しました。

mkr コマンドと jq コマンドの合わせ技です。

$ HOSTID=YOURHOSTID
$ mkr alerts -w | jq -r ".[] | select((.type == \"connectivity\") and (.hostId == \"$HOSTID\")) | [(.openedAt|tonumber|.+32400|todate), (.closedAt|tonumber|.+32400|todate)] | @csv"
"2018-11-30T09:52:03Z","2018-11-30T09:55:26Z"
"2018-11-30T06:31:03Z","2018-11-30T09:45:50Z"
"2018-11-30T04:54:03Z","2018-11-30T06:25:14Z"
"2018-11-30T01:18:03Z","2018-11-30T04:48:36Z"
"2018-11-29T23:30:04Z","2018-11-30T01:12:17Z"
"2018-11-29T21:42:03Z","2018-11-29T23:24:23Z"
"2018-11-29T20:37:04Z","2018-11-29T21:36:23Z"
"2018-11-29T19:59:04Z","2018-11-29T20:31:22Z"
"2018-11-29T19:43:04Z","2018-11-29T19:43:23Z"
"2018-11-29T19:24:03Z","2018-11-29T19:26:35Z"
"2018-11-29T13:21:03Z","2018-11-29T13:28:52Z"
"2018-11-29T11:11:03Z","2018-11-29T11:13:08Z"
"2018-11-29T10:04:03Z","2018-11-29T10:09:36Z"
"2018-11-28T21:02:03Z","2018-11-29T09:46:59Z"
"2018-11-28T18:20:03Z","2018-11-28T19:01:07Z"

結果を見てみましょう。

"2018-11-30T09:52:03Z","2018-11-30T09:55:26Z" <- 身に覚えがない
"2018-11-30T06:31:03Z","2018-11-30T09:45:50Z" <- Close=出勤時間
"2018-11-30T04:54:03Z","2018-11-30T06:25:14Z" <- なにこれ
"2018-11-30T01:18:03Z","2018-11-30T04:48:36Z" <- なにこれ
"2018-11-29T23:30:04Z","2018-11-30T01:12:17Z" <- なにこれ
"2018-11-29T21:42:03Z","2018-11-29T23:24:23Z" <- なにこれ
"2018-11-29T20:37:04Z","2018-11-29T21:36:23Z" <- Open=退勤時間(社内で懇親会していたので少し遅い
"2018-11-29T19:59:04Z","2018-11-29T20:31:22Z" <- 階移動時のWi-Fi切れ
"2018-11-29T19:43:04Z","2018-11-29T19:43:23Z" <- 接続切れすぎ
"2018-11-29T19:24:03Z","2018-11-29T19:26:35Z" <- 接続切れすぎ
"2018-11-29T13:21:03Z","2018-11-29T13:28:52Z" <- 覚えてない
"2018-11-29T11:11:03Z","2018-11-29T11:13:08Z" <- 覚えてない
"2018-11-29T10:04:03Z","2018-11-29T10:09:36Z" <- 覚えてない
"2018-11-28T21:02:03Z","2018-11-29T09:46:59Z" <- 綺麗に勉強会終了〜出勤時刻が出てる!
"2018-11-28T18:20:03Z","2018-11-28T19:01:07Z" <- Open=退勤、Close=勉強会場でWi-Fi接続、この日にエージェント入れた

うーむ。微妙。思った以上にノイズが多かったです。

とはいえ、自分にとってはとても参考になる確実なデータを得られました。

今後活用する機会がありそうです。

それでは皆さん、Mackerelと一緒によい社会生活を!