[Donationsの書き込み]プログラムの一環として300ドルの寄付を受け取りました.前書き問題が発生した場合、適切なチームにアラートを送信すると、問題の根本原因の特定が大幅にスピードアップし、チームがインシデントを迅速に解決できるようになります。Prometheusは、サービスからメトリックを収集し、それらを時系列データベースに保存するオープンソースの監視システムです。Alertmanagerはアラートを処理するためのツールで、適切な受信者にアラートを重複排除、グループ化、送信します。[OpsGenie]、httpsなどの多くの受信者をサポートします。[web]やhttps://prometheus.io/docs/など、インフラストラクチャのすべての部分に対してアラートを構成できます。Exporterは、HTTP、HTTPS、DNS、TCP、またはICMPプロトコルを介してエンドポイントをプローブし、リクエストが成功したかどうかや受信にかかった時間など、リクエストに関する詳細なメトリックを返します応答。Webサーバーの応答性を監視します。次に、サーバーが応答しない場合に電子メールとSlackで通知するようにAlertmanagerを構成します。前提条件このチュートリアルでは、次のものが必要です。16.04での初期サーバーセットアップチュートリアル]に従ってセットアップします。非rootユーザーとファイアウォール。16.04にNginxをインストールする方法]チュートリアルの最初の2つの手順に従ってインストールしました。+`でリッスンしているNginxサーバーブロック。16.04でNginxサーバーブロック(仮想ホスト)をセットアップする方法]チュートリアル。このチュートリアルでは、これをエンドポイントとして使用して監視します。+`に変更してポートを変更します。ドメインまたはサブドメインを使用できますが、チュートリアルでエンドポイントアドレスを必ず置き換えてください。16.04にPrometheusをインストールする方法]に従ってインストールされたPrometheus2.x。電子メールを送信するためのSMTPサーバー。任意のSMTPサーバーを使用するか、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-に従って独自のサーバーをセットアップできます。16.04でPostfixを送信専用SMTPサーバーとしてインストールおよび設定する方法]。[Slack]アカウントとワークスペース。*の2つの新しいユーザーアカウントを作成します。ExporterとAlertmanagerを実行し、適切なコアファイルとディレクトリの所有権を分離します。ExporterとAlertmanagerが所有していないデータにアクセスして変更することができなくなります。+」コマンドでこれらのユーザーを作成します。Exporterをダウンロードして構成します。Exporterの最新の安定バージョンをホームディレクトリにダウンロードします。Prometheusダウンロードページで、最新のバイナリとチェックサムを確認できます。+`コマンドを使用してファイルのチェックサムを確認します。blackbox_exporter-.linux-amd64.tar.gzこのコマンドの出力をPrometheusダウンロードページのチェックサムと比較して、ファイルが本物で破損していないことを確認します。blackbox_exporter-.linux-amd64.tar.gzチェックサムが一致しない場合は、ダウンロードしたファイルを削除し、前述の手順を繰り返してファイルを再ダウンロードします。チェックサムが一致することを確認したら、アーカイブを解凍します。blackbox_exporter。+」というディレクトリが作成されます。+`ディレクトリにコピーします。*ユーザーに設定し、非ルートユーザーがファイルを変更または置換できないようにします。/usr/local/bin/blackbox_exporter最後に、アーカイブと解凍されたディレクトリは不要になったため削除します。Exporterを設定して、HTTPプロトコルを介してエンドポイントをプローブし、実行します。Exporterがエンドポイントをチェックする方法を定義する構成ファイルを作成しましょう。+`を使用してBlackboxのサービスを管理できるようにします。次のステップで、Prometheus構成でプローブするエンドポイントのリストを指定します。Exporterの設定用のディレクトリを作成します。Exporter設定ファイルも保持します。*ユーザーに設定します。+`ファイルを作成します。」プローバーを使用してエンドポイントをプローブします。Exporterがチェックする方法を定義します。`プローバは、HTTP要求をエンドポイントに送信し、その応答コードをテストすることにより、エンドポイントをチェックします。プロービングに使用するHTTPメソッドと、成功した応答として受け入れるステータスコードを選択できます。+」プローバーが含まれます。`で実行されているエンドポイントをプローブします。+」範囲の有効なステータスコードが有効であると想定しているため、有効なステータスコードのリストを提供する必要はありません。*秒のタイムアウトを設定します。Exporterは、応答を5秒待ってから障害を報告します。アプリケーションの種類に応じて、ニーズに合った値を選択してください。次の構成をファイルに追加します。Exporterのドキュメント]をご覧ください。ファイルを保存し、テキストエディターを終了します。*ユーザーに設定します。Exporterを管理できるようにします。/etc/systemd/system/blackbox_exporter.service次のコンテンツをファイルに追加します。+`サービスファイルの詳細はこのチュートリアルの範囲外ですが、詳細についてはhttps://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-をご覧ください。Files]チュートリアル。ファイルを保存し、テキストエディターを終了します。+`をリロードして、新しく作成したサービスファイルを使用します。Exporterを起動します。blackbox_exporterサービスのステータスを確認して、正常に開始されたことを確認します。Exporterのプロセスに関する情報が含まれています。/etc/blackbox_exporter/blackbox.ymlサービスのステータスが「++」でない場合は、チュートリアルを続行する前に、画面上のログに従って前述の手順をたどり、問題を解決してください。Exporterが確実に起動するようにします。Exporterが完全に構成および実行されたので、エンドポイントへのプローブ要求に関するメトリックを収集するようにPrometheusを構成できるため、アラートマネージャーを使用してそれらのメトリックに基づいてアラートを作成し、アラートの通知を設定できます。`ディレクティブの一部としてPrometheus構成ファイルにあります。WebサーバーをスクレイピングするようにPrometheusを設定します。エディターでPrometheus構成ファイルを開きます。/etc/prometheus/prometheus.ymlこの時点で、次のようになります。`ディレクティブの最後に、次のエントリを追加します。+」エンドポイントで使用できます。`設定は、他のエクスポーターの設定とは異なります。」ディレクティブです。+」ラベルのセットを使用して指定されます。documentation]にあります。Prometheus構成ファイルは次のようになります。localhost:9115ファイルを保存し、テキストエディターを閉じます。Prometheusを再起動して、変更を有効にします。prometheusPrometheusサービスステータスを確認して、期待どおりに実行されていることを確認します。prometheusサービスのステータスが「++」でない場合は、チュートリアルを続行する前に、画面上のログに従って前述の手順をたどり、問題を解決してください。Exporterからメトリックを収集するようにPrometheusを構成しました。Alertmanagerからアラートを受信するには、次のステップでプロメテウスアラートルールの適切なセットを作成します。Alertingは2つの部分に分かれています。最初の部分はPrometheusサーバーによって処理され、アラートルールに基づいてアラートを生成し、それらをhttps://github.com/prometheus/alertmanager[Alertmanager]に送信します。2番目の部分はAlertmanagerが行います。Alertmanagerは、受信したアラートを管理し、構成に応じて適切な受信者に送信します。この手順では、サーバーが使用可能かどうかを確認するアラートルールを作成するときに、アラートルールの基本的な構文を学習します。最初に、アラートを保存するファイルを作成します。*ユーザーに設定されていることを確認してください。/etc/prometheus/alert.rules.ymlアラートファイルを配置したら、適切なディレクティブを構成ファイルに追加して、Prometheusに通知する必要があります。エディターでPrometheus構成ファイルを開きます。+`ディレクティブを追加して、Prometheusが起動したときにPrometheusが新しく作成したアラートファイルをロードするようにします。15sscrape_configs:...ファイルを保存し、テキストエディターを終了します。次に、エンドポイントがダウンしているかどうかをチェックするルールを作成しましょう。+」メトリックを使用します。`メトリックスには、2つのラベルが含まれます。エディターでアラートルールファイルを開きます。/etc/prometheus/alert.rules.ymlPrometheus構成ファイルと同様に、アラートルールファイルはYAML形式を使用します。これはタブを厳密に禁止し、インデントに2つのスペースを必要とします。ファイルの形式が正しくない場合、Prometheusは起動に失敗します。*秒であるかどうかを確認します。これにより、エンドポイントが10秒未満利用できない場合、Prometheusはアラートを送信しません。アプリケーションの種類とニーズに応じて、必要な期間を自由に選択できます。重大度とアラートの概要を示す2つのラベルを添付するため、アラートを簡単に管理およびフィルタリングできます。labels」を使用できます。`構文を使用して、ラベルの値を取得します。+」ラベルからエンドポイントのアドレスを含めます。次のルールをアラートファイルに追加します。down"ファイルを保存し、テキストエディターを終了します。+`コマンドを使用して、アラートファイルが構文的に正しいことを確認してください。/etc/prometheus/alert.rules.yml出力には、ファイルで見つかったルールの数と、ルールが構文的に正しいかどうかに関する情報が含まれます。found最後に、Prometheusを再起動して変更を適用します。prometheusサービスのステータスが「アクティブ」でない場合、チュートリアルを続行する前に、画面上のログに従って問題を解決するために前述の手順をたどってください。アラートルールを設定したら、Alertmanagerをダウンロードしてインストールできます。Exporterが構成され、アラートルールが設定されました。Alertmanagerをダウンロードしてインストールし、Prometheusが受信したアラートを処理しましょう。Prometheusダウンロードページで、最新のバイナリとチェックサムを見つけることができます。Alertmanagerの現在の安定版をホームディレクトリにダウンロードして解凍します。+`コマンドを使用してファイルのチェックサムを確認します。alertmanager-.linux-amd64.tar.gzこのコマンドの出力をPrometheusダウンロードページのチェックサムと比較して、ファイルが本物で破損していないことを確認します。alertmanager-.linux-amd64.tar.gzチェックサムが一致しない場合は、ダウンロードしたファイルを削除し、前述の手順を繰り返してファイルを再ダウンロードします。ダウンロードを確認したら、アーカイブを解凍します。+`というディレクトリが作成されます。+`ディレクトリに移動します。*ユーザーに設定します。/usr/local/bin/amtool不要になったファイルをホームディレクトリから削除します。alertmanager-.linux-amd64.tar.gz必要なファイルが適切な場所にあるので、アラートの通知を電子メールで送信するようにAlertmanagerを構成できます。手順7-電子メールでアラートを送信するためのAlertmanagerの設定この手順では、Alertmanagerのデータと構成設定を保存するディレクトリとファイルを作成し、アラートマネージャーが電子メールでアラートを送信するように構成します。*ユーザーに設定します。+`ファイルに保存するため、このファイルを作成してエディターで開きます。/etc/alertmanager/alertmanager.yml他のPrometheus関連ファイルと同様に、このファイルもYAML形式を使用するため、インデントにはタブではなく2つのスペースを使用してください。前提条件のチュートリアルに従ってインストールしたPostfixを使用してメールを送信するようにAlertmanagerを設定します。`ディレクティブを使用してメールを送信するアドレスを指定する必要があります。*ユーザーを使用します。SMTPサーバーを許可するようAlertmanagerに指示する必要があります。+」ディレクティブの下に配置します。これには、この場合のSMTP構成が含まれ、さまざまな統合のためのAPIトークンも含めることができます。`ディレクティブを使用して着信アラートを処理する方法を定義する必要があります。+`ディレクティブはすべての着信アラートに適用され、Alertmanagerがアラートをグループ化する方法、デフォルトの受信者、Alertmanagerが最初のアラートを送信するまで待機する時間などのプロパティを定義します。+`サブディレクティブを使用します。グループ化により、同じラベルを含むアラートがグループ化され、同じバッチで送信されることが保証されます。`サブディレクティブを使用して定義された単一のレシーバーがあります。+`ディレクティブをネストする必要があります。このチュートリアルでは、Slackアラートを設定する最初のアプローチについて説明します。+」ラベルでのみグループ化し、重要度が1つのメールでエンドポイントに対して複数のアラートを取得できるようにします。'alert']次に、アラートマネージャーが最初のアラートと新しいアラートを送信するまでの待機時間など、間隔を定義します。+`サブディレクティブを使用して、Alertmanagerが最初のアラートを送信するまで待機する時間を定義します。この期間中、Alertmanagerは、同じバッチで送信できるように、Prometheusが他のアラートを送信するのを待ちます。アラートは1つしかないため、30秒の任意の値を選択します。+」間隔を使用して、同じグループに新しいアラートがある場合にアラートマネージャーが次のアラートのバッチを送信する前に待機する時間を定義します。ニーズに応じて自由に値を選択できますが、5分ごとに設定します。これは、アラートがまだ解決されていない場合にAlertmanagerが通知を送信するまでの待機時間を定義します。ニーズに合った値を選択できますが、3時間の任意の値を使用します。`サブディレクティブを使用して、アラートの通知を受け取るユーザーを定義します。+」というレシーバーを使用します。ルートディレクティブを次のように変更します。」サブディレクティブを使用して、ラベルの値でアラートを除外できます。+`サブディレクティブは正規表現によるマッチングを表します。」レシーバーを設定します。+`ディレクティブの下で、名前と適切な設定サブディレクティブを含むレシーバーを定義できます。documentation]の一部として利用できます。+`サブディレクティブを使用します。''この時点で、アラートの通知を電子メールアドレスに送信するようにAlertmanagerを構成しました。構成ファイルは次のようになります。''次のステップでは、Slackチャンネルにアラートを送信するようにAlertmanagerを構成します。Slackを構成したくない場合は、ステップ10に進んでサービスファイルを作成し、PrometheusがAlertmanagerと連携するように構成します。手順8-Slack経由でアラートを送信するためのAlertmanagerの設定このステップに進む前に、Slackアカウントを作成し、Slackワークスペースが使用可能であることを確認してください。Webhook]を作成します。+`で利用可能な着信Webhook作成ページにアクセスします。着信Webhookに関する詳細と、アラートを送信するチャンネルを選択する必要があるドロップダウンを含むページが表示されます。Webhook]チャンネルを選択したら、[着信WebHooks統合を追加]ボタンをクリックします。Webhookが正常に作成されたことを確認する新しいページが表示されます。エディターでAlertmanager構成ファイルを開き、Slack通知を構成します。+`サブディレクティブを追加します。''複数の受信者にアラートを送信するには、2つの方法があります。同じエントリの下に複数の受信機構成を含めます。これは最もエラーが発生しにくいソリューションであり、最も簡単な方法です。+`ディレクティブをネストします。[ルート構成]の部分をご覧ください。`]という新しいサブディレクティブを追加し、受信するチャンネルの名前を指定しますアラート。general<^>'完成した構成ファイルは次のようになります。''ファイルを保存して、エディターを終了します。これで、Alertmanagerを初めて実行する準備が整いました。ステップ9-Alertmanagerの実行Alertmanagerを起動して実行しましょう。+`を使用してサービスを管理します。次に、Prometheusを更新してAlertmanagerを使用します。+`ユニットファイルを作成し、テキストエディターで開きます。*ユーザーとしてAlertmanagerが実行されます。http://:9093+」を使用するように指示します。9093+」はAlertmanagerのデフォルトポートです。+)を含めるようにしてください。しないと動作しません。ファイルを保存し、テキストエディターを閉じます。次に、適切なAlertmanagerサービス検出ディレクトリをPrometheus構成ファイルに追加して、PrometheusにAlertmanagerについて通知する必要があります。localhost:9093+」を使用します。Prometheus構成ファイルを開きます。alert.rules.yml...完了したら、ファイルを保存してテキストエディターを閉じます。+`フラグを使用してサーバーのIPアドレスまたはドメイン名をPrometheusに伝える必要があります。+`ユニットファイルを開きます。+`行を次の行に置き換えます。http://新しいPrometheusユニットファイルは次のようになります。http://[Install]WantedBy=multi-user.targetファイルを保存し、テキストエディターを閉じます。+`をリロードし、Prometheusを再起動して変更を適用します。prometheusサービスのステータスを確認して、Prometheusが意図したとおりに機能していることを確認します。prometheusサービスのステータスが「++」でない場合は、チュートリアルを続行する前に、画面上のログに従って前述の手順をたどり、問題を解決してください。最後に、Alertmanagerを初めて起動します。alertmanagerサービスのステータスをチェックして、Alertmanagerが意図したとおりに機能していることを確認します。alertmanagerサービスのステータスが「++」でない場合は、チュートリアルを続行する前に、画面上のメッセージに従って問題を解決するために前述の手順に戻ってください。最後に、サービスを有効にして、システムの起動時にAlertmanagerが起動するようにします。UIにアクセスするには、ファイアウォールを介してポート「9093」へのトラフィックを許可します。9093/tcpAlertmanagerは、電子メールとSlackを介してアラートの通知を送信するように構成されました。それが機能することを確認しましょう。ステップ10-AlertmanagerのテストAlertmangerが正常に動作し、メールとSlack通知を送信していることを確認しましょう。前提条件のチュートリアルで作成したNginxサーバーブロックを削除して、エンドポイントを無効にします。/etc/nginx/sites-enabled/Nginxをリロードして変更を適用します。nginx実際に無効になっていることを確認する場合は、ウェブブラウザでサーバーのアドレスを指定できます。サイトにアクセスできなくなったことを示すメッセージが表示されます。ない場合は、前の手順に戻って、正しいサーバーブロックを削除し、Nginxをリロードしたことを確認してください。30秒*)に応じて、30秒後に電子メールとSlack通知を受信する必要があります。+」コマンドを使用してサービスのステータスを確認し、画面上のログに従って問題の原因を見つけてください。UIからアラートのステータスを確認することもできます。Prometheusチュートリアルに従って、選択したユーザー名とパスワードを入力するよう求められます。アラート名をクリックすると、ステータス、アラートルール、関連するラベルが表示されます。+`ディレクトリへのシンボリックリンクを再作成してエンドポイントを有効にします。/etc/nginx/sites-enabledNginxを再度リロードして、変更を適用します。nginx次のステップでは、Alertmanagerのコマンドラインインターフェイスの使用方法を見ていきます。+」が付属しており、アラートを監視、管理、および無音にすることができます。`フラグを使用してAlertmanagerのURLを指定する必要があります。+」を使用するには、設定ファイルを作成することから始めます。サーバー上のすべてのユーザーが利用できます。+`ファイルを使用します。ディレクトリを作成します。+`ファイルを作成し、テキストエディターで開きます。http://localhost:9093ファイルを保存し、テキストエディターを終了します。+`コマンドラインツールでできることを見てみましょう。query`コマンドを使用して、Alertmanagerに送信されたすべてのアラートを一覧表示できます。query出力には、アラートの名前、アラートが最初に発生した時刻、および構成時に指定したアラートの概要が表示されます。down適切なマッチャーを使用して、ラベルでアラートをフィルタリングすることもできます。=〜+」、ラベルの値)が含まれます。+`マッチャーを使用します。query前と同様に、出力にはアラートの名前、アラートが最初に発生した時刻、アラートの概要が含まれます。=〜`演算子でラベルを一致させることができます。+`マッチャーを使用できます。queryアラートとエンドポイントが1つしかないため、出力は前の例と同じになります。+`ファイルの内容が含まれます。+`を使用してアラートを消音する方法を見てみましょう。アラートをサイレンシングすると、特定の時間のマッチャーに基づいてアラートをミュートできます。その期間中は、無音アラートに関するメールやSlack通知は受信しません。+`コマンドはマッチャーを引数として受け取り、マッチャーに基づいて新しい_silence_を作成します。+」フラグを使用します。」フラグを使用します。[RFC3339形式]。00:00+」という形式は、2018年10月4日の午前7時50分を表します。3時間*沈黙させるには、次のコマンドを使用します。--expires出力には無音の識別番号が含まれているため、無音を削除する場合に備えて必要に応じてメモしてください。+`フラグを使用します。3h前と同様に、出力には無音のIDが含まれます。+」は、有効期限が切れていないすべての無音のリストを表示します。query出力には、無音のID、マッチャーのリスト、有効期限のタイムスタンプ、作成者、コメントが含まれます。+`コマンドと同様に、ラベルマッチャーを使用して、作成時に添付されたラベルで出力をフィルター処理できます。instance=http://localhost:8080前と同様に、出力にはID番号とアラートの詳細が含まれます。expireコマンドの実行が成功したことを示す出力はありません。エラーが表示された場合は、無音の正しいIDを入力したことを確認してください。ExporterとAlertmanagerを設定して、電子メールとSlackでアラートを受信できるようにしました。+」を使用して、アラートを管理し、無音にしました。他のAlertmanager統合の詳細については、Alertmanagerのドキュメントの[構成]((https://prometheus.io/docs/alerting/configuration/))の部分をご覧ください。Alertsをhttp://docs.grafana.org/alerting/rules/[Grafana]などの他のサービスと統合する方法を確認できます。