Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerAnypoint Platform Private Cloud Edition (Anypoint Platform PCE) では、いずれかのアラート定義で指定された条件が検出された場合にトリガーされる組み込みアラートが提供されます。
測定値は Prometheus に保存され、 Alertmanager によって読み取られます。アラートがトリガーされると、Alertmanager はメールを送信します。
デフォルトのアラートを次の表に示します。
コンポーネント | アラート | 説明 |
---|---|---|
CPU |
高い CPU 使用量 |
使用量が 75% を超えたときに警告をトリガーし、使用量が 90% を超えたときに重大なエラーをトリガーします。 |
Memory (メモリ) |
高いメモリ使用量 |
使用量が 80% を超えたときに警告をトリガーし、使用量が 90% を超えたときに重大なエラーをトリガーします。 |
Systemd |
全体的な systemd の健全性 |
失敗したサービスが systemd によって検出されたときにエラーをトリガーします。 |
Systemd |
個別の systemd ユニットの健全性 |
systemd ユニットが読み込まれないかアクティブでないときにエラーをトリガーします。 |
Filesystem (ファイルシステム) |
高いディスク領域使用量 |
使用量が 80% を超えたときに警告をトリガーし、使用量が 90% を超えたときに重大なエラーをトリガーします。 |
Filesystem (ファイルシステム) |
高い inode 使用量 |
使用量が 90% を超えたときに警告をトリガーし、使用量が 95% を超えたときに重大なエラーをトリガーします。 |
System (システム) |
アップタイム |
ノードのアップタイムが 5 分未満のときに警告をトリガーします。 |
System (システム) |
カーネルパラメーター |
パラメーターが設定されていないときにエラーをトリガーします。詳細は、 値の表を参照してください。 |
Etcd |
etcd インスタンスの健全性 |
etcd リーダーが 5 分以上ダウンしたときにエラーをトリガーします。 |
Etcd |
etcd レイテンシーチェック |
フォロワーとリーダーのレイテンシーが 500 ミリ秒を超えたときに警告をトリガーし、1 分間で 1 秒を超えたときにエラーをトリガーします。 |
Docker |
Docker デーモンの健全性 |
Docker デーモンがダウンしたときにエラーをトリガーします。 |
Kubernetes |
Kubernetes ノードの準備状況 |
ノードが準備できていないときにエラーをトリガーします。 |
次の例で示しているように、新しいアラートは alert
と呼ばれる gravity resource を使用して定義します。
kind: alert
version: v2
metadata:
name: cpu-alert
spec:
# the alert name
alert_name: CPUAlert
# the rule group the alert belongs to
group_name: test-group
# the alert expression
formula: |
node:cluster_cpu_utilization:ratio * 100 > 80
# the alert labels
labels:
severity: info
# the alert annotations
annotations:
description: |
Cluster CPU usage exceeds 80%.
Prometheus アラートについての詳細は、 「Alerting Rules (アラートルール)」のドキュメントを参照してください。
アラートを作成するには、次のコマンドを実行します。
gravity resource create alert.yaml
既存のアラートを表示するには、次のコマンドを実行します。
gravity resource get alerts
アラートを削除するには、次のコマンドを実行します。
gravity resource rm alert cpu-alert
メールアラートを送信するように Alertmanager を設定するには、次の gravity resource を作成します。
次の仕様を使用して、gravity 内に smtp-config.yaml
という名前のファイルを作成して、プレースホルダー値を SMTP 設定の値に置き換えます。
kind: smtp
version: v2
metadata:
name: smtp
spec:
host: <SMTP_HOST>
port: <SMTP_PORT>
username: <SMTP_USERNAME>
password: <SMTP_PASSWORD>
---
kind: alerttarget
version: v2
metadata:
name: email-alerts
spec:
# email address of the alerts recipient
email: <RECIPIENT_EMAIL>
gravity resource create smtp-config.yaml
を実行します。次の出力が表示されることを確認してください。
Created cluster SMTP configuration Created monitoring alert target "email-alerts"
デフォルトのルーターを gravity 内の Alertmanager 設定に追加します。
kubectl get secret -n monitoring alertmanager-monitoring-kube-prometheus-alertmanager -o json | jq --arg foo "$(kubectl get secret -n monitoring alertmanager-monitoring-kube-prometheus-alertmanager -o json | jq -r '.data["alertmanager.yaml"]' | base64 -d | yq r - --tojson | jq -r '.route.routes[1] |= . + {"match":{"alertname": "Watchdog", "receiver": "default", "continue": true}}' | jq -r '.route.routes[0].match += {"continue":true}' | yq r - -P | base64 | tr -d '\n')" '.data["alertmanager.yaml"]=$foo' | kubectl apply -f -
<SMTP_FROM> 値を置き換えて送信元メールアドレスを設定します。
kubectl get secret -n monitoring alertmanager-monitoring-kube-prometheus-alertmanager -o json | jq --arg foo "$(kubectl get secret -n monitoring alertmanager-monitoring-kube-prometheus-alertmanager -o json | jq -r '.data["alertmanager.yaml"]' | base64 -d | yq w - 'global.smtp_from' <SMTP_FROM> | base64 | tr -d '\n')" '.data["alertmanager.yaml"]=$foo' | kubectl apply -f -
Alertmanager ポッドを再起動します。
kubectl delete pod -n monitoring -l app=alertmanager
gravity 内で次のコマンドを実行して Alertmanager をテストします。
curl -H 'Content-Type: application/json' -d '[{"labels":{"alertname":"test-alert","state":"firing"}}]' http://monitoring-kube-prometheus-alertmanager.monitoring.svc.cluster.local:9093/api/v1/alerts
一般的なトラブルシューティングタスクとして次のようなものがあります。
アラートの配信を設定したときに FROM
および TO
のアドレスとして定義したアドレスを使用して SMTP サーバーがメールを送受信できることを確認します。
クラスターノードで SMTP サーバーと通信できることを確認します。
たとえば、telnet
を使用して SMTP サーバーをいずれかのクラスターノードから接続します。
telnet my.smtp.server.com 587 Trying XXX.XXX.XXX.XXX... Connected to my.smtp.server.com. Escape character is '^]'. 220 my.smtp.server.com ESMTP ^[^] telnet> quit Connection closed.