平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

おうちサーバと mackerel-agent

このエントリは Mackerel Advent Calendar 2017 の7日目のエントリです。
qiita.com

自宅サーバやそれに類する物に mackerel-agent を入れていく話を淡々とします。

目的

  • mackerel-agent を家のいろいろなものに入れて眺めて喜ぶ
  • 監視によって実利が得られると最高


サクサクいきましょう。

パート1

ふつうに agent 入れればいい人達です。

macOS on MacBook

昔エントリにしたこともあります:
astj.hatenablog.com

最近 Mackerel 側のヘルプも公開されました:
mackerel.io

去年のエントリに書いた内容もありますが、監視項目はこの辺にしています:

  • 持ち運んだり電源落とすこともあるので死活監視は切る
  • CPU は一応監視してるけどあんまり役に立ってない
    • アラート来る時はだいたいコンパイル中などの既知の要因で CPU ぶん回ってるとき
  • 起動してから日数経つとアラートを出すようにしている (uptime / 15日 warning / 30日 critical)
    • これくらい経ってくると節々の調子がおかしくなりがちなのでさっと再起動することにしている
  • Filesystem 監視はしている
    • ディスク埋まって死にたくないしね!
  • バッテリーの容量はメトリック取ってるけど監視ルールは作っていない

Ubuntu on MacBook

昔使っていた MacBookUbuntu (16.04) を入れておうちサーバとして転生させています。
物としてはふつうの Ubuntu なのでふつうに mackerel-agent を入れればよいです。

Sign in · Mackerel

プラグインとしては mackerel-plugin-linux と mackerel-plugin-uptime くらいでやってます。

  • MacBook だけど据え置きなので死活監視してる
    • 時々疎通失われてちゃんとアラート来て対処してる
  • CPU と Filesystem 監視している(けどそんなにアラート来ない)
  • バッテリーはメトリック取ってない

Windows マシン

色々あって Windows マシンもあります。まだ Windows 7 なのでよくない……
これもふつうに公式のインストラクションに沿って入れればよいのでお得。

mackerel.io


こちらはプラグインも入れていなくて、死活監視と CPU, Filesystem くらい。あんまり Windows 向けに凝ったことする気力が出ていない…

パート2

ふつうに入れるだけではダメで手を加えている人達です。

FireTV stick (Android)

Android ベースなので id:nonylene さんの Mackerel Agent for Android が動きます。

nonylene.hatenablog.jp

しかし FireTV は Play Store が動かないので自前でビルドしてから adb で転送することになり壮大だったのでした……
ふつうのモバイル Android で mackerel-agent を入れる必要はそんなにないと思っているけど、据え置き端末なら結構入れる甲斐はあると思っています。動画のストリーミングをしてると Network Traffic が変化するのを見れたりしてかわいい。しかし実用度はそんなにないのでかわいさ重視……

QNAP TS-220

ARM の上で Linux ベースのカスタム OS が動いてる NASid:aereal さんから譲ってもらった。 agent を動かす話も aereal さんが書いています。

this.aereal.org

一方でこの2年で Go や mackerel-agent 周りで色々事情が変わったところもあって、自分用にまとめていた gist があったのでそれを貼っておきます。雑。
そのままでは動かない(ところもある)ので fork して少しパッチを当てた物がぼくの GitHub にあります。

github.com

これをクロスコンパイルして scp すればよい、というのが書いてあるのが下の gist 。

gist.github.com

ふつうに /usr/local/bin/ や /etc/ 以下に物を置きたくなるけど、 QNAP でこのあたりは揮発性なので、 /share/... 以下の具体的な HDD の中に置いておくと永続化できる、という感じでした。ぼくの環境だと RAID 組んでいるので /share/MD0_DATA/ だった。

また、 mackerel-plugin-linux を動かしているのですが、 QNAP の busybox では全てのメトリックが動くわけではありません。適度に mackerel-plugin-linux -p xxx -p yyy しながら動く type だけ追加しています。

少しだけおもしろグッズとしては、 QNAP では get_hd_temp コマンドで HDD の温度を取得できるので、 HDD の温度をカスタムメトリックにしています。しかし本当は snmp かなにかでも取れる気がする……

github.com

サーバなので死活監視などもしているのですが、個人的にはディスク容量の長期的な変化を可視化できるのが便利だと思っています。しかしこれは Standard プランでないとできない……

そして GoARMv5 なんかそのうちサポート終わりそうで心配しています。

EdgeRouter X

お安くて小さいけど機能十分の Linux ルータ、 EdgeRouter X というのを我が家では運用しています。

www.ubnt.com

Debian ベースの Vyatta ベースのカスタマイズディストリビューションである EdgeOS という物で動いており、アーキテクチャは mipsle です。つまり mackerel-agent が動きます。
QTS と異なりそのままビルドすれば動くのですが、折角なのでちょっと手を加えて filesystem のメトリックがちゃんと表示されるようにしています。(デフォルトのままだと EdgeRouter の構成と mackerel-agent の仕様の兼ね合いで filesystem のメトリックが表示されなくなっていました。)

github.com

また、折角なので DHCP のリース数をメトリックにしています。ワンライナーで処理した結果地獄のようなことになっています:

[plugin.metrics.dhcp]
command = "/usr/sbin/ubnt-dhcp print-stats | perl -nalE 'next if $.<3;@v=split/ +/;$t=time;say qq/edge-os.dhcp.$v[0].leased\t$v[2]\t$t\nedge-os.dhcp.$v[0].available\t$v[3]\t$t/;'"

以上

とはいえ真面目に監視するなら LinuxWindows 、あとは Mac くらいだとは思います。とはいえ Go でコンパイルできる OS / アーキテクチャなら mackerel-agent 自体はビルドできるので、ちょっと手を入れながら動かしてみるのもなかなか可愛いものだと思います。とりあえず動けば死活監視と Filesystem 監視くらいはできるので、それだけでもけっこう甲斐はあるのではないでしょうか。