opstree_devops.alertmanager
Ansible Role: osm_alertmanager
アラートマネージャーは、Prometheusから送信されるアラートを処理するツールです。Prometheusサーバーからアラートを受け取り、ラベルに基づいてアラートをグループ化し、その後、Email、PagerDuty、Slackなどの異なる受信者にアラートを転送します。
アラートマネージャーは、コマンドラインフラグと設定ファイルを使用して構成されます。コマンドラインはシステムパラメーターを設定し、設定ファイルには受信者やルーティング情報が含まれています。
バージョン履歴
日付 | バージョン | 説明 | 変更者 |
---|---|---|---|
2020年5月 | v0.0.1 | 初版 | アビシェク・ドゥべイ |
2020年7月 | v0.1.0 | Slack、Googleチャットの統合を追加 | マヘシュ・クマール |
2022年6月 | v0.1.1 | クラスター、カスタムアラートマネージャーのルール、テンプレート、AWS SNS、PagerDutyの統合を追加 | イシャーン・アンバシュタ |
サポートされるOS
- CentOS:7
- CentOS:6
- Ubuntu:bionic
- Ubuntu:focal
依存関係
- prometheus-server
- libselinux-python
要件
このロールを実行するための特別な要件はありません。このロールはCentOS 6以降およびUbuntu 18以降のプラットフォームに依存しません。CentOS 6の唯一の依存関係はlibselinux-pythonであり、それも含めました。 基本的な要件は次のとおりです:
- CentOS/Ubuntuサーバー
- ターゲットサーバーにPythonがインストールされていること
- サーバーの9093ポートがオープンであること
ロール変数
---
# アラートマネージャーのデフォルト設定
alert_version: "0.20.0"
base_url: "https://github.com/prometheus/alertmanager/releases/download"
alertmanager_dir: "alertmanager-{{ version }}.linux-amd64"
download_url: "{{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz"
alertmanager_user: "alertmanager"
alertmanager_group: "alertmanager"
prometheus_user: "prometheus"
prometheus_group: "prometheus"
binary_path: "/usr/local/bin"
# Email通知
email_integration: "no"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"
# Slack統合
slack_integration: "yes"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "alerting-channel"
# Googleチャット統合
google_chat_integration: "no"
calert_home: "/opt/calert"
calert_base_url: "https://github.com/mr-karan/calert/releases/download"
calert_url: "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz"
google_chat_room: "google-room-name"
room_webhook: "google-chat-room-webhook"
# PagerDuty統合
PagerDuty_integration: "no"
PagerDuty_channel_name: "call-alerting-channel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"
# SNS統合
sns_integration: "no"
sns_channel_name: "sns"
region: "us-east-1"
任意のPrometheusバージョンやアラートマネージャーバージョンをサーバーにインストールすることができます。
必須変数
変数 | デフォルト値 | 可能な値 | 説明 |
---|---|---|---|
alert_version | "0.20.0" | 任意のバージョン | GitHubのリリースからダウンロードされるアラートマネージャーのバージョンを定義する必要があります |
alertmanager_user | alertmanager | 任意のユーザー | アラートマネージャーサービスユーザー |
alertmanager_group | alertmanager | 任意のグループ | アラートマネージャーサービスグループ |
prometheus_user | prometheus | 任意のユーザー | Prometheusサービスユーザー、ノード特有のルールの所有者 |
prometheus_group | prometheus | 任意のグループ | Prometheusサービスグループ、ノード特有のルールファイルに権限を与える |
任意変数
変数 | デフォルト値 | 可能な値 | 説明 |
---|---|---|---|
base_url | https://github.com/prometheus/alertmanager/releases/download | アラートマネージャーのダウンロードリンクのベースURL | アラートマネージャーのダウンロードリンクのベースURL |
alertmanager_dir | alertmanager-{{ version }}.linux-amd64 | アラートマネージャーディレクトリ名 | 解凍後のアラートマネージャーディレクトリ |
download_url | {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz | アラートマネージャーのダウンロードリンク | アラートマネージャーバイナリをダウンロードするためのGitHubのURL |
binary_path | /usr/local/bin | 任意のパス | アラートマネージャーバイナリのパス |
email_integration | "no" | "yes"/"no" | アラートマネージャーとのEmail統合の有効化/無効化 |
sender_email | "send.test@example.com" | 任意のEmailアドレス | アラートを送信するためのEmailアドレス |
alertmanager_email | "alertmanager.test@example.com" | 任意のEmailアドレス | アラートマネージャーのEmailアドレス |
smtp_server | "smtp.gmail.com:587" | smtpサーバのアドレスとポート | アラートマネージャーが使用するEmail SMTPサーバ |
slack_integration | "no" | "yes"/"no" | アラートマネージャーとのSlack統合の有効化/無効化 |
slack_webhook | "https://hooks.slack.com/services/T00000000/B00/XXXXXX" | 任意のチャンネルのWebhook | アラートマネージャーとSlackチャンネルを統合するために使用するWebhook |
slack_channel_name | "alerting-channel" | 任意のSlackチャンネル名 | アラートを送信するために使用するSlackチャンネル名 |
google_chat_integration | "yes" | "yes"/"no" | アラートマネージャーとのGoogleチャット統合の有効化/無効化 |
calert_home | "/opt/calert" | Calertサービスのホームパス | Calertサービスのホーム、ここにCalertサービスのバイナリと設定ファイルが配置されます |
calert_base_url | "https://github.com/mr-karan/calert/releases/download" | Calertサービスのダウンロードリンク | CalertバイナリのURL |
calert_url | "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" | Calertサービスのダウンロードリンク | CalertバイナリをダウンロードするためのGitHubのURL |
google_chat_room | "google-room-name" | 任意のGoogleチャットルーム | アラートを送信するために使用するGoogleチャットルーム |
room_webhook | "google-chat-room-webhook" | 任意のGoogleチャットルームのWebhook | Calertサービスとの統合に使用するGoogleチャットルームのWebhook |
rules_file | "node_exporter.rules" | ルールのデフォルトファイル | アラート設定用のルールファイル |
templates | "email.tmpl" | デフォルトのテンプレート | アラート形式のためのテンプレートファイル |
PagerDuty_integration | "no" | "yes"/"no" | アラートマネージャーとのPagerDuty統合の有効化/無効化 |
PagerDuty_channel_name | "call-alerting-channel" | 任意のPagerDutyチャンネル名 | アラートを送信するために使用するPagerDutyチャンネル名 |
pagerduty_url | "https://events.pagerduty.com/v2/enqueue" | PagerDutyの指定されたURL | PagerDutyのURL |
sns_integration | "no" | "yes"/"no" | アラートマネージャーとのSNS統合の有効化/無効化 |
sns_channel_name | "sns" | 任意のAWS SNSチャンネル名 | AWS SNSにアラートを送信するために使用するSNSチャンネル名 |
region | "us-east-1" | SNSの任意のリージョン | アラートを送信するリージョン |
例のプレイブック
メインのプレイブックの例を示します。
---
- hosts: alertmanager
roles:
- role: alertmanager
ここでは、ユーザーとしてrootを使用していますが、異なるユーザーを使用することもできます。その場合は、becomeの値をtrueに設定する必要があります。次のように:
---
- hosts: alertmanager
roles:
- role: alertmanager
become: yes
例のインベントリ
インベントリとして、サーバーのIPを定義するホストファイルを作成できます。例えば:
[alertmanager]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
[prometheus]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
注意: PrometheusサーバーのIPも追加してください。また、アラートマネージャーの設定はprometheus.ymlファイルに自動的に追加されます。
このロールを次のコマンドで簡単に使用できます。
ansible-playbook -i hosts site.yml
複数のルールやテンプレートファイルを一度に追加するには、追加変数や追加変数のJSONファイルを使用してください。例えば:
追加変数を渡す場合
ansible-playbook -i hosts site.yml --extra-vars='{"rules_file": ["rule_file1","rule_file2"], "templates": ["file1.tmpl", "file2.tmpl"]}'
追加変数ファイルを渡す場合
ansible-playbook -i hosts site.yml --extra-vars "@extra_vars.json"
注意:
カスタムテンプレートやルールファイルを最初にこの osm_alertmanager/files フォルダに移動してください。
追加変数ファイルはJSON形式である必要があります。例えば:
追加変数ファイル - extra_vars.json
{
"rules_file": "rule_file1",
"templates": "file2.tmpl"
}
ロールのディレクトリ構造
これはロールのディレクトリ構造です:
osm_alertmanager
├── defaults
│ └── main.yml
├── files
│ ├── alertmanager.init
│ ├── email.tmpl
| ├── sns.tmpl
| ├── slack_notification.tmpl
│ ├── google_chat_calert.tmpl
│ ├── node_exporter.rules
│ ├── mysql_exporter.rules
│ ├── telegraf_kafka.rules
│ └── telegraf_node.rules
├── handlers
│ └── main.yml
├── README.md
├── site.yml
├── tasks
│ ├── calert.yml
│ ├── debian.yml
│ ├── main.yml
│ ├── prerequisites.yml
│ └── redhat.yml
└── templates
├── alertmanager.service.j2
├── alertmanager.yml.j2
├── calert.service.j2
└── calert.toml.j2
アラートマネージャーのインストールが成功した後、アラートマネージャーのURLをブラウズしてWebインターフェースを確認できます。
ライセンス
BSD
参考文献
著者情報
このロールは アビシェク・ドゥべイ によって作成および維持されています。ご質問やご提案がある場合は、下記のメールアドレスまでお気軽にお問い合わせください。
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager