前書き
Alertaは、複数の監視システムからのアラートを統合および重複排除し、それらを単一の画面で視覚化するために使用されるWebアプリケーションです。 Alertaは、Nagios、Zabbix、Sensu、InfluxData Kapacitorなど、多くの有名な監視ツールと統合できます。
このチュートリアルでは、Alertaを設定し、Zabbix監視システムからの通知を表示するように設定します。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7初期サーバーセットアップガイド]に従ってセットアップされた2台のCentOS 7サーバー(sudo非ルートユーザーを含む)およびファイアウォール。
-
Zabbixを実行する最初のCentOSサーバーに、次のコンポーネントをインストールします。
-
Apache、MySQL、およびPHP、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7[How CentOS 7にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールするには。
-
チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-and-configure-zabbix-to-securely-monitor-remote-servers-on-centos-7 [ [CentOS 7でリモートサーバーを安全に監視するためのZabbixのインストールおよび構成方法]および構成するための前提条件。
-
このチュートリアルでAlertaをインストールする2番目のCentOSサーバーに、次のコンポーネントをインストールします。
-
Nginx、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7[CentOS 7にNginxをインストールする方法]に従ってインストールします。
-
チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7[CentOS 7にMongoDBをインストールする方法]に従ってインストールされたMongoDB。
-
手順6で説明したようにAlertaウェブインターフェースを保護するには、GitHub組織の一部であるhttps://github.com/[GitHub]アカウントが必要です。 https://help.github.com/articles/creating-a-new-organization-account/ [このチュートリアル]に従ってGitHub組織を作成します。
ステップ1-AlertaのAPIサーバーのインストール
Alertaは、サーバーとWebインターフェースで構成されています。 Alertaサーバーは、アラートを保存および処理し、APIを介してJSONを提供します。 Alertaウェブインターフェースでは、ブラウザでアラートのリストを表示できるため、JSONを自分で解釈する必要はありません。 MongoDBとNginxをインストールしたサーバーに両方のコンポーネントをインストールします。 このチュートリアルでは、このマシンをAlertaサーバーと呼びます。 非rootユーザーとしてこのマシンにログインします。
ssh sammy@
Alertaコンポーネントをインストールする前に、 + pip +
、Pythonパッケージマネージャー、およびPython開発ファイルをインストールする必要があります。 GitHubからAlertaのソースコードを取得できるように、Gitもインストールする必要があります。
次のコマンドを実行して、これらのソフトウェアパッケージをインストールします。
sudo yum install python-pip python-devel gcc git
これらのパッケージがインストールされると、Alertaをインストールする準備ができました。
最初に、 `+ pip +`を使用してAlertaのサーバーをインストールします。
sudo pip install alerta-server
開発モードでAlertaサーバーを実行して、インストールを確認します。
sudo alertad
次のようなものが見えるはずです。
Output * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
ブラウザで `+ http://:8080 +`を開いてAlerta API Webページを表示すると、使用例が表示されます。
サーバーが実行されていることを確認したら、 `+ CTRL + C +`を押してサーバーを停止します。 まもなくサービスとして設定します。
Alerta APIサーバーがインストールされているので、ウェブコンソールをインストールしましょう。
ステップ2-Alerta Web UIのインストール
Alertaには、ブラウザにメッセージを表示するダッシュボードがあります。 アラートメッセージが表形式で表示されるため、簡単に読んで並べ替えることができます。 ニーズに合わせてビューを構成できます。メッセージをフィルタリングしたり、任意のフィールドでソートしたりできます。 さらに、各メッセージの詳細情報を表示できます。 これを、Alerta APIサーバーをインストールしたサーバーと同じサーバーにインストールします。
最初にGithubからソースコードを取得します。
git clone https://github.com/alerta/angular-alerta-webui.git
次に、アプリケーションファイルをWebサーバーディレクトリにコピーします。
sudo mkdir -p /var/www/html/
sudo cp -r angular-alerta-webui/app/* /var/www/html/
デフォルトでは、Alertaのウェブインターフェースは、ポート「8080」で実行されている開発サーバーAPIと通信するように設定されています。 サーバーの `+ / api +`エンドポイントでAlertaサーバーのAPIを使用できるようにすることでこれを実稼働用に設定し、同じドメインからWebコンソールの静的コンテンツを提供します。これによりhttps://の問題を回避できます。 ru.wikipedia.org/wiki/Cross-origin_resource_sharing[CORS]、またはHTTPS混合コンテンツエラー。
`+ config.js`設定ファイルを開きます:
sudo vi /var/www/html/config.js
そして、 + endpoint`を
+ / api _`に設定します。
/var/www/html/config.js
'use strict';
angular.module('config', [])
.constant('config', {
'endpoint' : "",
'provider' : "basic", // google, github, gitlab, keycloak or basic
...
他のオプションはデフォルト値のままにします。 これらの一部は、このチュートリアルの後半でOAuth認証を構成するときに変更します。
これで、必要なすべてのAlertaコンポーネントがインストールされました。 連携するようにセットアップするだけです。
手順3-Nginxの背後でuWSGIを使用してAlertaを実行します。
いくつかの簡単なテストに「+ alertad 」開発サーバーを使用できますが、実稼働環境での使用には適していないため、それを修正しましょう。 AlertaはPythonで作成されているため、WSGIサーバーを使用して実行する必要があります。 このチュートリアルでは、AlginaをNginxの背後でプロキシされるuWSGIアプリケーションとして、 ` http:/// api +`で実行します。
最初に、Pythonパッケージマネージャーを使用してhttps://uwsgi-docs.readthedocs.io/en/latest/[uWSGI]アプリケーションサーバーをインストールします。
sudo pip install uwsgi
次に、アプリケーションサーバーがアプリケーションと通信するために使用する `+ wsgi.py +`ファイルを作成します。 エディターでファイルを開きます。
sudo vi /var/www/wsgi.py
以下の行をファイルに追加します。これは、uWSGIにAlertaアプリケーションを呼び出す方法を指示します。
/var/www/wsgi.py
from alerta.app import app
次に、uWSGIサーバー自体を構成する必要があります。 uWSGIがソケットファイルを保存できるディレクトリを作成し、Nginxプロセスがアクセスできることを確認します。
sudo mkdir /var/run/alerta
sudo chown -R nginx.nginx /var/run/alerta/
次に、設定ファイル `+ / etc / uwsgi.ini +`を作成し、エディターで開きます。
sudo vi /etc/uwsgi.ini
このファイルは、Nginxと対話するためのソケットオプションとともに、アプリケーションの場所を指定します。
ファイルに次の行を追加します。
/etc/uwsgi.ini
[uwsgi]
chdir = /var/www
mount = /api=wsgi.py
callable = app
manage-script-name = true
master = true
processes = 5
logger = syslog:alertad
socket = /var/run/alerta/uwsgi.sock
chmod-socket = 664
uid = nginx
gid = nginx
vacuum = true
die-on-term = true
uWSGIオプションの完全なリファレンスリストは、http://uwsgi-docs.readthedocs.io/en/latest/Options.html [ドキュメント]で見ることができます。
次に、このアプリケーションのSystemdユニットを作成して、 `+ systemctl +`コマンドを使用して制御できるようにします。
sudo vi /etc/systemd/system/alerta-app.service
このユニットファイルには、ユニットを記述し、その動作を定義するいくつかの設定ディレクティブが必要です。 ファイルに次の行を追加します。
/etc/systemd/system/alerta-app.service
[Unit]
Description=uWSGI service for Alerta
After=syslog.target
[Service]
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi.ini
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
これらの設定とSystemdユニットの操作方法の詳細については、https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal [this Systemdチュートリアル]。
これで、uWSGIサービスを実行できます。
sudo systemctl start alerta-app
次のコマンドを実行して、ステータスを確認できます。
systemctl status alerta-app
次の出力が表示されます。
Output ●
Loaded: loaded (/etc/systemd/system/alerta-app.service; disabled; vendor preset: disabled)
Active: (running) since Fri 2017-04-07 12:15:21 EEST; 2min 25s ago
Main PID: 15935 (uwsgi)
Status: "uWSGI is ready"
CGroup: /system.slice/alerta-app.service
├─15935 /usr/bin/uwsgi --ini /etc/uwsgi.ini
├─15946 /usr/bin/uwsgi --ini /etc/uwsgi.ini
├─15947 /usr/bin/uwsgi --ini /etc/uwsgi.ini
├─15948 /usr/bin/uwsgi --ini /etc/uwsgi.ini
├─15949 /usr/bin/uwsgi --ini /etc/uwsgi.ini
└─15950 /usr/bin/uwsgi --ini /etc/uwsgi.ini
ご覧のとおり、サービスはデフォルトで無効になっています。つまり、自動的に開始されません。 有効にします:
sudo systemctl enable alerta-app
最後に、 `+ / api +`に対するすべてのリクエストを実行中のuWSGIサーバーにリダイレクトし、NginxでWebフロントエンドを提供するようにNginxを設定する必要があります。
デフォルトのNginx設定ファイルを変更するのではなく、Alerta設定を独自のファイルに配置します。
sudo vi /etc/nginx/conf.d/alerta.conf
次の内容をファイルに追加します。 `+ server_name +`の値をAlertaサーバーのIPアドレスに置き換えてください。
/etc/nginx/conf.d/alerta.conf
server {
listen 80;
server_name ;
location /api { try_files $uri @api; }
location @api {
include uwsgi_params;
uwsgi_pass unix:/var/run/alerta/uwsgi.sock;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
root /var/www/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Nginxサーバーブロックの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-on-centos-7 [チュートリアル]をご覧ください。
ファイルを保存し、エディターを終了します。
次に、Nginx設定をテストして、タイプミスや設定ミスがないことを確認します。
sudo nginx -t
設定にエラーがない場合、次の出力が表示されます。
Output nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
別の何かが表示された場合は、エラーに対処して再試行してください。
これで、Nginxをリロードして新しい設定を適用できます。
sudo nginx -s reload
ブラウザで「+ http:// +」リンクを開き、Alertaダッシュボードを表示します。
画像:https://assets.digitalocean.com/articles/alerta_zabbix_centos7/vlrsF6x.png [Alerta dashboard]
公的にアクセス可能なサーバーにAlertaをインストールする場合、認証を要求するように設定する必要があります。 そのためのいくつかの方法を見てみましょう。
ステップ4-基本認証でAlertaを保護する
デフォルトでは、Alertaサーバーのアドレスを知っている人は誰でもメッセージを表示できます。 テスト環境では許容されますが、実稼働環境では許容されません。 認証を強制するには、 `+ alertad.conf +`設定ファイルを開きます:
sudo vi /etc/alertad.conf
ファイルに次のコードを追加します。
/etc/alertad.conf
AUTH_REQUIRED = True
SECRET_KEY = ''
`+ SECRET_KEY +`を選択したランダムな文字列に設定します。 ファイルを保存し、エディターを終了して、uWSGIサービスを再起動します。
sudo systemctl restart alerta-app
Alerta Web UI Webページをリロードし、メニューで*ログイン*リンクを選択します。 「続行するにはログインしてください」というメッセージが表示されます。 [アカウントの作成]リンクをクリックして、新しいアカウントを作成します。 プロセスを完了すると、Alertaダッシュボードにアクセスできます。
認証を有効にすると、Alerta APIにアクセスするためのAPIキーが必要になります。 構成*メニューを選択し、 APIキー*を選択します。
APIへのアクセスが必要なアプリケーションの名前を入力します。 このチュートリアルでは、* zabix と入力します。 次に、ドロップダウンから read-write を選択し、 Create new API Key *ボタンをクリックします。 新しいキーが作成され、その詳細が表示されます。 このキーをコピーします。後で必要になります。
または、OAuth認証を設定し、GitHubまたはGoogleの資格情報を使用してAlertaユーザーインターフェイスにログインできます。 基本認証で十分な場合は、次の手順をスキップできます。
ステップ5-OAuthでAlertaを保護する(オプション)
AlertaのWeb UIは、Google、GitHub、Gitlab、KeycloakのOAuth認証をサポートしています。 GitHubアカウントを介してログインを構成するため、先に進む必要があります。
最初に、GitHubで新しいアプリケーションを登録します。 GitHubアカウントにログインし、https://github.com/settings/applications/new [新しいアプリケーションページ]に移動します。
次の詳細をフォームに入力します。
-
アプリケーション名*に Alerta *または適切な説明的な名前を入力します。
-
*ホームページのURL *には、「+ http:/// +」を使用します。
-
*承認コールバックURL *に `+ http:/// +`を入力します。
-
[*アプリケーションの登録]をクリックして、設定を保存します。
-
次の画面で提供される* Client ID および Client Secret *の値をコピーします。
次に、Alerta構成を編集してOAuth認証を有効にします。 構成ファイルを開きます。
sudo vi /etc/alertad.conf
ファイルの最後に次の設定を追加します。
/etc/alertad.conf
OAUTH2_CLIENT_ID = ''
OAUTH2_CLIENT_SECRET = ''
ALLOWED_GITHUB_ORGS = ['']
これらの値には、それぞれGitHubクライアントID、GitHubクライアントシークレット、およびGitHub組織を使用します。
ファイルを保存し、エディターを終了して、uWSGIサービスを再起動します。
sudo systemctl restart alerta-app
次に、Webインターフェースの認証プロバイダーを変更します。 構成ファイルを編集します。
sudo vi /var/www/html/config.js
次のセクションを見つけて、プロバイダーを「+ basic 」から「 github +」に変更し、GitHubクライアントIDを入力します。
/var/www/html/config.js
...
...
Alerta Web UIにアクセスするには、「+ http:// +」を開きます。 今回は、「ログインして続行してください」というメッセージが表示されます。 [ログイン]ボタンをクリックしてログインすると、アプリケーションからGitHubアカウントへのアクセスを許可するよう求められます。 アクセスを許可すると、ログインできます。
これで、Alertaが正しくセットアップされて機能しているかどうかを確認する簡単なテストを実行できます。
ステップ6-テストメッセージの送信
Alertaの統合コマンドラインツールを使用して、テストアラートを送信します。 最初に、コマンドラインクライアントをインストールします。
sudo pip install alerta
次に、以前に設定したAlerta APIエンドポイントと、使用するAPIキーを定義する設定ファイルを作成します。 エディターで新しいファイルを作成します。
vi ~/.alerta.conf
以下をファイルに貼り付けます。
〜/ .alerta.conf
[DEFAULT]
endpoint = http://
key=
`+ key +`オプションには、ステップ4で設定したAPIキーを使用します。
これで、テストアラートを送信できます。
alerta send --resource webserver01 --event down --environment Production --service Website01 --severity major --text "Web server 01 is down." --value ERROR
次のような出力が表示されます。
Output1015fca2-eff6-441d-8c66-6abf9368b830 (indeterminate -> major)
ブラウザで「+ http:// +」にアクセスすると、ダッシュボードに次の図のようなメッセージが表示されます。
image:https://assets.digitalocean.com/articles/alerta_zabbix_centos7/SC6mZ6A.png [テストアラートを表示するアラート]
メッセージをクリックして詳細を表示できます。
Alertaサーバーが起動し、新しいメッセージを待っています。 アラートをAlertaに送信するように、Zabbix監視システムを設定しましょう。
ステップ7-Zabbix-Alerta Gatewayのインストール
この手順では、通知メッセージをAlertaに送信するようにZabbix監視システムを変更します。
非rootユーザーとしてZabbixサーバーマシンにログインします。
ssh sammy@
デフォルトでは、Zabbixは電子メール、SMSまたはJabberメッセージで通知を送信できますが、スクリプトを使用して新しい通知ハンドラーを追加できます。 Alerta開発者は、既製の通知スクリプトを提供します。 これをインストールするには、https://github.com/alerta/zabbix-alerta [zabbix-alerta]リポジトリを複製し、インストールスクリプトを使用してインストールします。
git clone
cd zabbix-alerta
sudo python setup.py install
次に、Zabbixがアラートスクリプトを保存するディレクトリに、 `+ zabbix-alerta `スクリプトのシンボリックリンクを作成します。 そのパスは ` / etc / zabbix / zabbix_server.conf +`設定ファイルで見つけることができます:
sudo grep -e '^AlertScriptsPath' /etc/zabbix/zabbix_server.conf
次のような出力が表示されます。
OutputAlertScriptsPath=/usr/lib/zabbix/alertscripts
デフォルトでは、Zabbixは `+ / usr / lib / zabbix / alertscripts +`でスクリプトを探します。 次のコマンドを実行して、シンボリックリンクを作成します。
sudo ln -s `which zabbix-alerta` /usr/lib/zabbix/alertscripts
Alerta統合を構成しましょう。 `+ http:/// zabbix / +`でZabbixウェブインターフェースにログインします。
メインメニューで[管理]をクリックし、[メディアタイプ]を選択して、右上隅の[メディアタイプの作成]ボタンをクリックします。
次の詳細をフォームに入力します。
-
*名前*には、「+ Alerta +」と入力します。
-
*タイプ*では、ドロップダウンから*スクリプト*を選択します。
-
*スクリプト名*には、「+ zabbix-alerta +」と入力します。
-
*スクリプトパラメータ*には、次の値を入力します。
-
+ {ALERT.SENDTO} +
-
+ {ALERT.SUBJECT} +
-
+ {ALERT.MESSAGE} +
-
[有効]チェックボックスがオンになっていることを確認します。
[追加]ボタンをクリックして、新しいメディアタイプを作成します。
次に、ユーザーアカウント用の新しいメディアを追加します。 メインメニューで[管理]を選択し、[ユーザー]を選択します。 ユーザー名をクリックし、[メディア]タブを選択します。 次の詳細を入力してください
-
* Type には、 Alerta *を選択します。
-
*送信先*には、「+ http:/// api; +」と入力します。
手順4で作成したAPIキーを使用します。
*更新*ボタンをクリックして、構成を保存します。
次に、メッセージを送信するアクションを構成します。 メインメニューで[構成]を選択し、[アクション]を選択します。 [アクションの作成]ボタンをクリックします。
[アクション]タブで、[名前]フィールドの値を「+ Forward to Alerta +」に設定します。
[操作]タブで、次のオプションを設定します。
-
*デフォルトの件名*を
+ {TRIGGER.STATUS}に設定:{TRIGGER.NAME} +
-
* Default message *には、次のテキストを入力します。
Default message resource={HOST.NAME1}
event={ITEM.KEY1}
environment=Production
severity={TRIGGER.SEVERITY}
status={TRIGGER.STATUS}
ack={EVENT.ACK.STATUS}
service={TRIGGER.HOSTGROUP.NAME}
group=Zabbix
value={ITEM.VALUE1}
text={TRIGGER.STATUS}: {TRIGGER.NAME}
tags={EVENT.TAGS}
attributes.ip={HOST.IP1}
attributes.thresholdInfo={TRIGGER.TEMPLATE.NAME}: {TRIGGER.EXPRESSION}
type=zabbixAlert
dateTime={EVENT.DATE}T{EVENT.TIME}Z
Zabbixは、問題を検出すると、指定された形式でメッセージを送信します。 中括弧内の式を対応する値に置き換えます。 これらすべてのフィールドは、Alertaがアラートを受信して正しく表示するために必要です。
次に、* Operations フィールドの New *をクリックして、新しい操作を作成します。 次の値をフォームに挿入します。
-
*ユーザーに送信*には、「++」と入力します。
-
[のみ送信]の場合、ドロップダウンボックスから[* Alerta *]を選択します。
次に、「回復操作」タブを選択し、「デフォルト」メッセージを次のように変更します。
Recovery operationsresource={HOST.NAME1}
event={ITEM.KEY1}
environment=Production
severity={TRIGGER.SEVERITY}
status={TRIGGER.STATUS}
ack={EVENT.ACK.STATUS}
service={TRIGGER.HOSTGROUP.NAME}
group=Zabbix
value={ITEM.VALUE1}
text={TRIGGER.STATUS}: {ITEM.NAME1}
tags={EVENT.RECOVERY.TAGS}
attributes.ip={HOST.IP1}
attributes.thresholdInfo={TRIGGER.TEMPLATE.NAME}: {TRIGGER.EXPRESSION}
attributes.moreInfo=<a href="http://x.x.x.x/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.RECOVERY.ID}">Zabbix console</a>
type=zabbixAlert
dateTime={EVENT.RECOVERY.DATE}T{EVENT.RECOVERY.TIME}Z
このメッセージは前のメッセージに似ています。 問題がなくなると、このメッセージが送信されます。
*追加*ボタンをクリックして設定を完了します。
ZabbixはAlertaにアラートを送信する準備ができています。 生成してみましょう。
ステップ8-Zabbix-Alerta統合を検証するためのテストアラートの生成
テストアラートを生成して、すべてが接続されていることを確認しましょう。 デフォルトでは、Zabbixはサーバーの空きディスク容量を追跡します。 Zabbixのファイルシステム使用状況アラートをトリガーするのに十分な大きさの一時ファイルを作成します。
まだ接続していない場合は、Zabbixサーバーにログインします。
次に、サーバー上の空き容量を確認します。 `+ df +`コマンドを使用して確認できます:
df -h
次のような出力が表示されます。
Output Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.5G 9% /
空き容量に興味があります。 この場合、空き領域は「+ 18GB +」です。 空き容量は異なる場合があります。
`+ fallocate +`コマンドを使用して、利用可能なディスク容量の80%以上を占めるファイルを作成します。これはアラートをトリガーするのに十分なはずです:
fallocate -l 16G /tmp/temp.img
数分以内に、Zabbixは空きディスク容量についてのアラートをトリガーし、設定したアクションを実行して、アラートメッセージをAlertaに送信します。 Alertaダッシュボードにこの新しい通知が表示されます。
image:https://assets.digitalocean.com/articles/alerta_zabbix_centos7/sLlRWM3.png [Zalbixからの空き領域アラートを表示するアラート]
アラートが機能していることがわかったので、作成した一時ファイルを削除して、ディスク容量を再利用できるようにします。
rm -f /tmp/temp.img
しばらくすると、Zabbixが回復メッセージを送信します。 アラートはメインダッシュボードから消えますが、* Closed *を選択すると、すべてのクローズイベントを表示できます。
image:https://assets.digitalocean.com/articles/alerta_zabbix_centos7/zWuB6Hz.png [Alertaのクローズドアラート、解決された空き領域アラートを表示]
イベント行をクリックして、詳細を表示できます。
結論
このチュートリアルでは、Alertaをインストールして設定し、通知を送信するようにZabbixを設定しました。 その結果、アラートを追跡する便利なツールが手に入りました。 将来、他の通知ソースを追加して、さまざまな監視システムからの情報を統合および一元化できます。