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"

注意:

  1. カスタムテンプレートやルールファイルを最初にこの osm_alertmanager/files フォルダに移動してください。

  2. 追加変数ファイルは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インターフェースを確認できます。 web

ライセンス

BSD

参考文献

著者情報

このロールは アビシェク・ドゥべイ によって作成および維持されています。ご質問やご提案がある場合は、下記のメールアドレスまでお気軽にお問い合わせください。

アビシェク・ドゥべイ
イシャーン・アンバシュタ

プロジェクトについて

Alertmanager is tool that handles alerts sent by Prometheus.

インストール
ansible-galaxy install opstree_devops.alertmanager
ライセンス
Unknown
ダウンロード
81
所有者