Grafana Inputs
Grafanaを利用する場合の設定について記載します。
前提条件
- GrafanaからGrafana Inputsへのネットワーク疎通が可能なこと
- Grafana InputsからAutoScaler Coreへの疎通が可能なこと
Grafanaの設定
Grafana Inputsを利用するにはGrafana側でNotification Channelを設定した上でAlertsを設定する必要があります。
Notification Channelの設定
AutoScaler CoreへのUpまたはDownリクエストを送信するためのWebhookをNotification Channelに登録します。
パラメータは以下のように入力します。
- Name: 任意
- Type: webhook
- Url:
- スケールアップ/スケールアウト用のエンドポイント:
<Grafana InputsのURL>/up?[key=value]...
- スケールダウン/スケールイン用のエンドポイント:
<Grafana InputsのURL>/down?[key=value]...
- Http Method:
POST
|PUT
(どちらでも可)
Urlには以下のパラメータが指定可能です。
source
: リクエスト元を識別するための名称。任意の値を利用可能。デフォルト値:default
resource-name
: 操作対象のリソースの名前。Coreのコンフィギュレーションで定義したリソース名を指定する。デフォルト値:default
desired-state-name
: 希望する状態の名前。Coreのコンフィギュレーションで定義したプラン名を指定する。特定の時刻に特定のスペックにしたい場合などに利用する。デフォルト値:""
これらのパラメータを複数指定する場合は&
で繋げて記載します。
Urlの記載例: http://example.com:8080/up?source=grafana&resource-name=resource1
Config Fileによるプロビジョニングを行う場合の例
# /etc/grafana/provisioning/notifiers/example.yaml
notifiers:
- name: "AutoScaler:Up"
type: webhook
org_id: 1
uid: 1
is_default: false
send_reminder: false
frequency: 30m
disable_resolve_message: true
settings:
autoResolve: true
httpMethod: "POST"
uploadImage: false
url: "http://example.com:8080/up?source=grafana&resource-name=resource1"
APIで登録する場合の例
GrafanaのAPI(POST /api/alert-notifications
)を利用してNotification Channelを登録する例:
POST /api/alert-notifications HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
{
"name": "AutoScaler: Up",
"type": "webhook",
"isDefault": false,
"sendReminder": false,
"disableResolveMessage": true,
"frequency": "",
"settings": {
"autoResolve": true,
"httpMethod": "POST",
"uploadImage": false,
"url": "http://example.com:8080/up?source=grafana&resource-name=resource1"
}
}
GrafanaでのAlert設定
Note: AutoScalerによる操作でアラート状態が解消できるようなルールを設定してください。
AutoScaler Coreは同一のresource-group-name
へのリクエストを冷却期間の間は無視しますが、冷却期間がすぎると再度リクエストを受け付けるようになります。
このためアラートの条件設定次第ではスケール動作を繰り返してしまいます。