OSSのアラート管理〜Alertmanager〜
システム管理者はシステムの異常をいち早く検知して、対策を行う必要があります。監視システムの導入は、ネットワークやコンピュータシステムを正常に維持するために有効な手段となります。監視システムの導入後、インシデントが起きた際に管理システムからのアラート(Alert)を受け取り、その対応をシステム管理者が行います。このため、アラート機能は重要な役割を担っており、システム管理者に無駄なく、効率よく障害対応を実現するためのアラート管理の仕組みが必要になります。ここでは、オープンソースソフトウェアのアラート管理システムAlertmanagerを紹介します。
Alertmanagerとは
Alertmanagerは、Apache License Version 2のもとで、オープンソースソフトウェアとして公開されているアラート管理システムです。Alertmanagerは、監視システムであるPrometheusのアラート管理コンポーネントとして提供されています。Prometheusとは、DockerやKubernetesといったコンテナ/クラスタ管理ツールとの連携機能も持っている監視システムです。
Alertmanagerは、独立したソフトウェアとして提供されていますので、Prometheus以外のソフトウェアのアラート管理システムとして運用することもできます。Alertmanagerは、Prometheus等のクライアントアプリケーションからのアラートを収集しそれを受信して処理します。重複排除、グルーピング、アラートの抑制、電子メール等によるアラートの送信を行うことができます。Prometheusと連携する場合のシステム構成は以下の図になります。
Prometheusはアラート発行を行う際にAlertmanagerにAPIを使用してリクエストを送信します。Alertmanagerは受信したリクエストをルールに従って処理します。AlertmanagerのAPIに接続できれば、どのようなアプリケーションでも簡単にAlertmanagerを使用することが可能です。
Alertmanagerの特徴
Alertmanagerには、以下の特徴があります。
重複した内容のアラートを排除
Alertmanagerは、同じ内容のアラートを排除する機能があります。例えば、長い時間障害が発生した場合、監視システムは同じアラートを何度も発行通知することがあります。システム管理者側からすれば、一度の通知以外は不要となります。Alertmanagerのアラート重複排除機能は、同じアラートが複数連続して発行された場合、システム管理者への通知を一定期間抑制することができます。そのためシステム管理者は、不要なアラートを受信せずに対応することができます。
同一グループのアラートをまとめて通知
Alertmanagerは、同一グループのアラートをまとめて通知するグルーピングという機能があります。グルーピングは、特定の条件にマッチしたアラートをまとめて通知することができます。例えば、ラベルalertnameとinstanceが一致するアラートを同一グループとして扱うことです。大規模なシステム障害が発生した場合では、監視システムはアラートを大量に発行することがあります。Alertmanagerのグルーピングでは、大規模なシステムを同一グループとして指定しておけば、システム管理者には1つのアラートとして通知することが可能です。システム管理者は、大量のアラートを1つずつ確認することなく、1つのアラートだけを確認すればよくなるので管理が楽になります。
特定の条件にマッチするとアラートを送信しない
Alertmanagerは、特定のアラートについて、一定期間無視するように設定することができます。静観の開始日時、終了日時、条件を入力して設定することでその時間アラートの送信がなくなります。例えば、ラベルseverityがcriticalのアラート発生中は、alertnameが一致、severityがwarningのアラートを無視する等の設定ができます。システムメンテナンスなどのイベントを行う場合に有効です。アラート静観は、発生したアラートの内容からアラート静観設定を作成する方法と新規にアラート静観設定を作成する方法の2つの設定方法があります。
様々なアプリケーションに通知が可能
Alertmanagerでは、受信したアラートを様々な方法で通知することができます。Eメールはもちろん、webhookやPagerDuty、Pushover、チャットシステムのSlackやWeChatなどにも通知することが可能です。
ウェブユーザインタフェースが利用できる
Alertmanagerでは、アラート管理のためにウェブユーザインタフェースを使用することが可能です。ウェブUIでは、発生しているアラートの一覧表示・詳細表示やアラート静観の登録・一覧表示などの設定を行うことができます。以下の画像はウェブユーザインタフェースの画面です。
Zabbixとの連携
Zabbixとは、統合監視のオープンソースソフトウェアです。Zabbix4.4以降から、アクションに設定可能なメディアタイプにWebhookが追加されました。Webhookを利用することでAlertmanagerとの連携が可能になりました。
デージーネットの取り組み
デージーネットでは、AlertmanagerのウェブUIが日本時間に変更されていなかったため、Alertmanagerのソースコードにパッチを適応して日本時間(JST)での表示、インタフェースの日本語化をおこないました。また、インストール方法や使用例などは、無料資料ダウンロードからAlertmanager調査報告書をダウンロードすることができます。デージーネットで構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。これは、ソフトウェア単体のサポートではなく、Linuxなどを含む全体に対するサポートです。サポート内容としてQ&A、セキュリティ情報提供、障害調査、障害回避を実行します。導入をご検討の方には、Webでの打ち合わせも可能です。
「情報の一覧」
Alertmanager調査報告書
Alertmanagerは、オープンソースソフトウェアのアラート管理システムです。Alertmanagerは、監視システムであるPrometheusのアラート管理コンポーネントとして提供されています。独立したソフトウェアとして提供されているので、Prometheus以外のソフトウェアのアラート管理システムとして使用することもできます。本書は、Alertmanagerについて調査した内容をまとめたものです。
OSSのおすすめ監視サーバ・監視ツール比較21選
監視サーバは、以前は製品を利用することが多い分野でしたが、最近ではオープンソースのソフトウェアの機能が向上し、オープンソースソフトウェアを使う場合も多くなりました。ここでは、オープンソースソフトウェアの監視サーバの選定ポイントを紹介し、いくつかの監視サーバソフトウェアの比較をしてみます。
Zabbix〜ログ監視も可能なOSSの監視ツール〜
Zabbixとは、サーバ、ネットワーク、アプリケーションを集中監視するための統合監視ソフトウェアです。オープンソースソフトウェアですので誰でもインストールし導入できます。Zabbixは、統合監視に必要な監視、障害検知、通知機能を備え、多数のプラットフォームに対応しています。そのため、Zabbixを導入することでシステム全体を監視することが可能です。
Cacti〜監視とグラフ生成のOSS〜
Cactiとは、ネットワーク監視、グラフ生成のソフトウェアです。CactiはraXnetにより開発され、オープンソースソフトウェアとして公開されています。Cactiをインストールし導入することで、サーバやネットワーク機器のネットワークトラフィック、CPU使用率、空きメモリ量、ディスク使用率などを監視し、グラフ化することができます。
Icinga2〜コマンドでも使える監視OSS〜
Icinga2は、Nagiosという監視ツールから派生して開発されたシステム監視のためのオープンソースソフトウェアです。Icinga2では、WEBインタフェースだけでなくコマンドラインでも監視の設定を行うことができ、大量の監視も行うことができます。Icinga2のWEBインタフェースはデージーネットで日本語対応を行っています。
Prometheus〜大規模なシステムを監視可能なOSS〜
オープンソースの監視システムには、Zabbix、Icinga2、Cacti等がよく使用されていますが、Prometheusもオープンソースの監視システムの1つです。ここでは、監視システムのPrometheusについて紹介します。