docker-compose.yml:これは、prometheus、node-exporter、alert-managerサービスを実行するdocker-composeです。すべてのサービスは順調に稼働しています。プロメテウスのターゲットメニューの健康状態でも問題ありません。
version: '2'
services:
prometheus:
image: prom/prometheus
privileged: true
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./alertmanger/alert.rules:/alert.rules
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
node-exporter:
image: prom/node-exporter
ports:
- '9100:9100'
alertmanager:
image: prom/alertmanager
privileged: true
volumes:
- ./alertmanager/alertmanager.yml:/alertmanager.yml
command:
- '--config.file=/alertmanager.yml'
ports:
- '9093:9093'
prometheus.yml
これは、ターゲットとアラートターゲットセットを含むprometheus構成ファイルです。 alertmanagerのターゲットURLは正常に機能しています。
global:
scrape_interval: 5s
external_labels:
monitor: 'my-monitor'
# this is where I have simple alert rules
rule_files:
- ./alertmanager/alert.rules
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
alerting:
alertmanagers:
- static_configs:
- targets: ['some-ip:9093']
alert.rules:サービスがダウンしたときにアラートを表示するための単純なアラートルール
ALERT service_down
IF up == 0
alertmanager.yml
これは、アラートが発生したときにスラックでメッセージを送信するためです。
global:
slack_api_url: 'https://api.slack.com/apps/A90S3Q753'
route:
receiver: 'slack'
receivers:
- name: 'slack'
slack_configs:
- send_resolved: true
username: 'tara gurung'
channel: '#general'
api_url: 'https://hooks.slack.com/services/T52GRFN3F/B90NMV1U2/QKj1pZu3ZVY0QONyI5sfsdf'
問題:すべてのコンテナーが正常に機能している正確な問題を理解できません。本当に何が欠けていますか。プロメテウス番組のアラートを確認します。
アラートアラートルールが定義されていません
./alertmanager/alert.rules
ファイルはdocker構成に含まれていないため、コンテナーで使用できません。あなたはそれをプロメテウスサービスに追加する必要があります:
prometheus:
image: prom/prometheus
privileged: true
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./alertmanager/alert.rules:/alertmanager/alert.rules
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
そしておそらくprometheus.yml
内に絶対パスを与える:
rule_files:
- "/alertmanager/alert.rules"
また、アラートルールが有効であることを確認する必要があります。詳細と例については、 prometheus docs を参照してください。 alert.rules
ファイルは次のようになります。
groups:
- name: example
rules:
# Alert for any instance that is unreachable for >5 minutes.
- alert: InstanceDown
expr: up == 0
for: 5m
複数のファイルがある場合は、個々のファイルではなく、ディレクトリ全体をボリュームとして追加する方がよい場合があります。