こんにちは。デジタル技術部の田中です。
今回は、私が以前から注目しているオープンソースソフトウェア(OSS)のZabbixというツールに関して、現時点の最新情報を投稿させて頂きます。
Zabbixとは
Zabbixというツールを知らない方のために、ZabbixというのはOSSの統合監視ツールです。GPLv2というライセンスでソースが公開されています。
各サーバーに専用のエージェントをインストールしたり、ネットワーク機器ならばSNMPというプロトコルを使用したりすることで、ネットワーク上のサーバーやネットワークの状態を監視し、異常を検知したらメールで通知したり、自動的に復旧させるためのコマンドを実行したりということができるツールです。
専用のエージェントを使用しなくても、sshなどでアクセス可能であれば、Zabbixから監視することができます。
もう少し詳細に書くと、1つのツールで以下のようなことが実現できます。
- 監視のための情報を収集
- OSやネットワーク機器の標準的なメトリクス値を取得可能
- 標準機能以外に独自に拡張して状態やメトリクス値を取得可能
- 収集した値が数値であればグラフ化することで傾向を把握
- 取集した値内の異常値を判定して処理(アクション)を実行
- アクションとしては、メールの送信だけではなくスクリプトの実行やWebhook呼び出しも可
オープンソースの監視ツールでは、いくつかのソフトウェアを組み合わせないと同様のことが実現できなかったり、拡張性が乏しかったりする場合があります。その組み合わせも細かなバージョンを指定して組み合わせることが必要なので、組み合わせて動くまでの環境構築には、それなりの知識と経験、問題解決力が必要です。
1つのツール(正確には、DBMSやWebサーバーは別途稼働させますが)で環境を構築することができるので、比較的容易に環境構築ができるというのも私が選択した理由の1つです。
また、サーバーやネットワーク機器のメトリクスだけではなく、独自のスクリプトやプログラムの出力結果を監視することもできるので、センサーから取得した気温や湿度から以下のようなグラフを表示させることもできます。
機能の簡単な紹介は、少し古いバージョンになってしまいますが、以下のWebページでも行っていますのでご参照ください。
時々聞かれるのですが、Zabbixにはジョブ管理の機能はありません。
ジョブ管理の機能が必要であるならば、他のツールと組み合わせて使用するか、別のツールを使用してください。
私は、そのZabbixというソフトウェアの日本のコミュニティに参加していて、コミュニティサイト上などで問い合わせの対応を行ったり、日本語化対応のために翻訳に参加していたりします。SCSKもZabbixを開発しているZabbix社のパートナーになっています。
今回は、先日、オープンソースカンファレンスというイベントで「Zabbix最新情報」というタイトルで登壇してきた内容を整理して、最近のZabbixの動向をお伝えしようかと思います。
Zabbix 4.4リリース
Zabbixのリリースには、LTSと呼ばれるリリースと、ポイントリリースと呼ばれるリリースとがあります。
LTSというのは、Long Term Supportの略で、長期間のサポートが提供されるリリースとなります。リリースされてから5年間のサポートが提供されます。
それに対して、ポイントリリースでは、より短いスパンで新しい機能を積極的に取り入れたリリースとなります。
長期間のサポートは提供されず、次のバージョンがリリースされたら1ヶ月でサポートが終了してしまうので、継続して使用するのであれば、こまめにバージョンアップしなければならないことに注意が必要です。
今回の4.4というバージョンは、ポイントリリースとなります。
以下の画面は、新規インストールした後に管理者(Admin)でログインした時の画面です。
より新しい機能が使用できるようになっているので、より柔軟な監視の設定や通知の設定を行うことができます。
ただし、サポート期間が短いので、次バージョンがリリースされたら、速やかにバージョンアップを行うことを考えておいてください。
とはいえ、次のメジャーリリースとなるLTSのバージョン5.0に向けて、注目しておくべき機能が追加されていますので、ご紹介しようと思います。
Zabbix 4.4の新機能
すべての新機能をあげると大量になってしまいますので、主に以下のような新機能追加や変更が行われています。
- Zabbix agent 2のリリース
- アクション実行時にWebhook呼び出し
- TimescaleDBのオフィシャルサポート
- グラフにアグリゲーション機能を追加
- 依存アイテムの上限を緩和
- Kerberos認証対応
- 障害に対する値の表示
- データベースモニタでの複数値の値の受け取り
- LLDの機能拡張
- 非ASCII文字列のJMX Mbeanのディスカバリ処理
- WMIのディスカバリ処理
- 自動登録のセキュリティ対策
- DNS名での自動登録
- ディスカバリでの長いホスト名への対応
- 保存前処理の機能追加
- 新しいテンプレートの追加
- エクスポートとインポートでメディアタイプにも対応
- JabberとEz Textingの機能削除
- デフォルトダッシュボードの刷新
- 棒グラフへの対応(以前のは階段状)
- ウィジェットのヘッダを隠すことができる
新機能からピックアップ
特にピックアップしておきたい機能をご紹介しましょう。
Zabbixエージェント2と、Webhook対応です。
Zabbixエージェント2
Zabbixエージェントというのは、監視対象の各サーバーにインストールして、より詳細な情報をZabbixサーバーから監視する際に使用するプログラムです。Zabbixエージェント2というのは、元々C言語で作成されていたZabbixエージェントを、Go言語を使用して新規に作成しなおしたものです。
単純にそのまま移植したのではなく、機能構成を見直して、処理並列化の実現や無駄なリソース消費の削減、特筆すべきなのはプラグインの追加が行いやすくなるようなフレームワークの実装が行われています。
Zabbixエージェント2を使用するメリットとしては、以下のようなものが挙げられます。
- C言語よりも簡単なGo言語で実装できる
- プラグインの追加がし易い
- コンパイルしたエージェントの1ファイルだけを配布すれば良い
- 既存の設定ファイルの読み込みにも対応
- アクティブチェックをパラレルで実行可
欠点としては、メリットの裏返しですが、プラグインを追加したらエージェント自体をコンパイルしなおさなければならないという点です。あと、rootユーザーで実行できなくなっているようなので、Zabbixエージェントをrootユーザーで実行して監視していた方はご注意ください。
現時点(2019/12/16)では、UNIX系OSのみ稼働可能でWindowsは未対応です。また、まだ正式リリースではなく、Zabbix 5.0リリース時に正式リリースとなり、Windows対応版もリリースされる予定になっています。
Webhook
これまで、Zabbixで障害を検知した時には、以下のような処理を実行することができました。
- メールでの通知
- スクリプトの実行
最近は、メールよりもSlackやTwitterなどを使用した連絡を行って欲しい場合もあるでしょう。
障害発生を自動的にインシデント管理のシステムにチケットとして登録したいという要望もあるでしょう。
こういった他システムとの連携を使用するユーザーも増えてきていて、これらの機能を実現するためには、スクリプトを実行することで実現できなくはないのですが、多くのシステムで使用されているWebhookの機能を使用して、Zabbixから直接呼び出す機能が追加されています。
これによって、他システムとの連携をZabbix上の設定として集約して管理できるようになりました。以前のようなスクリプトの配置とWebインターフェース上の設定をするといった複数の作業を必要とする状況によって発生してしまっていた作業漏れの発生を防ぐことができます。
さらに、Webhookを呼び出すだけではなく、そのレスポンスを処理して返却された値を取得する機能も準備されています。
まだ使いこなせていないのですが、チケット管理システムやインシデント管理に用意されているWeb APIによっては、チケットを登録した時に発行されるIDを保存し、Zabbix上の障害の情報から対象となるチケットへのリンクを生成するようなことも実現できるようです。
このあたりの詳細な手順に関しては、今後検証する予定です。
今後のZabbix
次にリリースされるZabbix 5.0では、以下のような新機能が追加される予定です。
- 更なる監視方法とアラートの改善
- クラウドとKubernetes監視を視野に
- ベースラインモニタリング
- セキュリティモニタリング
- 可視化とレポート
- パフォーマンスと高可用性
- Zabbixエージェント2の正式リリース(Windows対応版含む)
よりクラウドやKubernetesなどの環境を、標準の機能で監視できるような機能強化になりそうです。
また、コードコントリビューターという制度を検討しているとの話がありました。
多くのOSSでは、コミュニティやユーザーから不具合の修正や機能の改善のためのソースコードを受け取って、プロダクト自体に反映していくような活動が行われているのですが、Zabbixでは、OSSではあるのですが、ソースコードを変更できる権限は、Zabbix社の社員のみと限定されていました。
今後は、コードコントリビュータとして契約することは必要ですが、開発した監視をするためのプラグインや、様々な通知方法や他のシステムと連携するためのメディアタイプに関して、Zabbixへの取り込みを受け入れる予定だそうです。
これからは、開発自体への貢献に参加できるようになりますね。
Zabbix 5.0のロードマップは以下のページで公開される予定です。
最後に
Zabbix 4.4の紹介や5.0の予定に関する詳細は、カンファレンスのアジェンダにも資料が公開されていますので、そちらもご参照ください。