happo-agent - Yet another Nagios nrpe 1.0.0 をリリースしました

こんにちは。CTOの馬場です。

弊社で開発/利用しているNagios NRPEの代替プロダクト happo-agent の 1.0.0 を公開しました。 初のメジャーバージョンです。

ハートビーツではPythonとGolangを推奨プログラミング言語としています。 happo-agentではデプロイメントの利便性を考慮してGolangを採用しました。

このhappo-agentは、インベントリ管理・Nagios設定生成・運用ドキュメント生成などの一連の仕組み happo の一部です。 happo-agentはGolangですが、他の部分はGolangだったりPythonだったりで書いています。

happo-agentについては happo-agent - Yet another Nagios nrpe を公開しました - インフラエンジニアway - Powered by HEARTBEATS もぜひ見てみてください。

What's NEW?

社内で1年以上プロダクション利用してきた結果を踏まえて、細かいことから大きなことまでいろいろと変えました。

  • リファクタリングして golint go vet が通るようにした
  • 収集済みメトリクスをオンメモリ保持していたところを /var/lib/happo-agent.db に保存するようにした
    • DBには組み込みできるgoleveldbを採用
  • レスポンスステータス・応答内容を整理してわかりやすくした
  • メトリクスをpushされる機能を追加した( https://127.0.0.1:6777/metric/append , happo-agent append_metric )
  • ログレベルを実装。デフォルトをwarnにして出力量を抑止
  • 基本的にコマンドラインオプションを使わず環境変数で設定できるようにした
  • 動作状況を返すAPIを追加した( /status /status/memory /status/request )
  • /tmp/snapshot-*.log は廃止してgoleveldbに保持できるようにした
    • たまりがちでデメリットがメリットを上回りがちなのでデフォルトでは取得しないようにした
    • 取得したものは /machine-state と /machine-state/:key で中身を見られるようにした
  • 独自のauto restart機構をやめた(OS付属のものに任せたく、upstartやsystemdを使うようにした)

コードはOSSで公開しているので読んでいただくとすべてが分かるとおもいます(言い過ぎかも)。

heartbeatsjp/happo-agent: Yet another Nagios nrpe

なぜ自社開発?

happoやhappo-agentはハートビーツのコア事業であるMSPの中核ソフトウェアです。 自分たちの競争力は自分たちで作り磨き続けたいという気持ちで企画から開発・運用・改善まで継続的に実施しています。 事業の競争力的な観点とは別に、いちITエンジニアとして、このご時世にITエンジニアがソフトウェアの消費者でしかないというのはあまりにもだと私は思います。

課題を適切に解決するために、必要なものはきちんと作りたい方、ぜひハートビーツで一緒にhappoを開発しましょう。

=> 採用情報 | 株式会社ハートビーツ

株式会社ハートビーツのインフラエンジニアから、ちょっとした情報をお届けします。