Slackメッセージのカスタマイズ
IBM Cloud Event Notifications、テンプレートを使って送信するSlackメッセージをカスタマイズできる。 詳しくは、 Event Notifications テンプレートの作成を 参照。
前提条件
以下の情報をお読みください:
-
3000文字を超えるメッセージがslackに送信されると、メッセージテキストはリーダーで切り捨てられる[。]
-
再試行後も Slack Webhook URL への呼び出しが失敗すると、通知は失われます。
APIを使用してテンプレートを作成する
Slackのメッセージをカスタマイズするには、 IBM Cloud Event Notifications APIを使って テンプレートを設定します。
以下はSlackメッセージテンプレートの例です:
ペイロードのサイズが3000文字以下であれば、 data.log_example をセクションに含めることができる。
{
"attachments": [
{
{{#if (equal data.alert_definition.severity "Error")}}
"color": "#dc143c",
{{else}}
"color": "#097969",
{{/if}}
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*{{data.alert_definition.name}}*"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "```{{data.log_example}}```"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<{{data.links.view_alert}}|View> | <{{data.links.edit_alert}}|Edit>"
}
}
]
}
]
}
以下は、 errorMsg フィールドを含む、 Kubernetes ログ用の Slack テンプレートのサンプルです。
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Alert name: {{data.alert_definition.name}}",
"emoji": true
}
},
{
"type": "context",
"elements": [
{
"type": "image",
"image_url": "https://image.freepik.com/free-photo/red-drawing-pin_1156-445.jpg",
"alt_text": "images"
},
{
"type": "plain_text",
"text": "Severity: {{data.alert_definition.severity}}"
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Error message:* {{data.log_example.errorMsg}}"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Cluster name:* {{data.log_example.[kubernetes.cluster_name]}}"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Namespace:* {{data.log_example.[kubernetes.namespace_name]}} \n \n"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Pod name:* {{data.log_example.[kubernetes.pod_name]}}"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*App label:* {{data.log_example.[kubernetes.labels.app]}}"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Incident information in Cloud Logs:* <{{data.links.view_alert}}|View> | <{{data.links.edit_alert}}|Edit>"
}
}
]
}
APIでテンプレートを使用する前に、 base64 に変換する必要があります。 テンプレートを base64、APIコールの本文に含めることができる。 以下の例では、 base64 に変換されたテンプレートを使用しています。
curl --request POST \
--url https://<EVENT-NOTIFICATION-REGION>.event-notifications.cloud.ibm.com/event-notifications/v1/instances/<INSTANCE_ID>/templates \
--header 'Authorization: Bearer <Access_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<NAME>",
"description": "<DESCRIPTION>",
"params": {
"body": "ewogICAgImF0dGFjaG1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICAge3sjaWYgKGVxdWFsIGRhdGEuYWxlcnRfZGVmaW5pdGlvbi5zZXZlcml0eSAiRXJyb3IiKX19CiAgICAgICAgICAgICJjb2xvciI6ICIjZGMxNDNjIiwKICAgICAgICAgICAge3tlbHNlfX0KICAgICAgICAgICAgImNvbG9yIjogIiMwOTc5NjkiLAogICAgICAgICAgICB7ey9pZn19CiAgICAgICAgICAgICJibG9ja3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIip7e2RhdGEuYWxlcnRfZGVmaW5pdGlvbi5uYW1lfX0qIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogImBgYHt7ZGF0YS5sb2dfZXhhbXBsZX19YGBgIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIjx7e2RhdGEubGlua3Mudmlld19hbGVydH19fFZpZXc+IHwgPHt7ZGF0YS5saW5rcy5lZGl0X2FsZXJ0fX18RWRpdD4iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfQogICAgXQp9"
},
"type": "slack.notification"
}'
<EVENT-NOTIFICATION-REGION>、 <INSTANCE-ID>、 <NAME>、 <DESCRIPTION> をあなたの環境に合わせて変更する必要があります。
Terraformを使ってテンプレートを作成する
Terraformスクリプトを使ってテンプレートを作成することもできる。
resource "ibm_en_slack_template" "slack_template" {
instance_guid = "<instance-id>"
name = "Notification Template"
type = "slack.notification"
description = "Slack template for event notification"
params {
body="ewogICAgImF0dGFjaG1lbnRzIjogWwogICAgICAgIHsKICAgICAgICAgICAge3sjaWYgKGVxdWFsIGRhdGEuYWxlcnRfZGVmaW5pdGlvbi5zZXZlcml0eSAiRXJyb3IiKX19CiAgICAgICAgICAgICJjb2xvciI6ICIjZGMxNDNjIiwKICAgICAgICAgICAge3tlbHNlfX0KICAgICAgICAgICAgImNvbG9yIjogIiMwOTc5NjkiLAogICAgICAgICAgICB7ey9pZn19CiAgICAgICAgICAgICJibG9ja3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIip7e2RhdGEuYWxlcnRfZGVmaW5pdGlvbi5uYW1lfX0qIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogImBgYHt7ZGF0YS5sb2dfZXhhbXBsZX19YGBgIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic2VjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm1ya2R3biIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IjogIjx7e2RhdGEubGlua3Mudmlld19hbGVydH19fFZpZXc+IHwgPHt7ZGF0YS5saW5rcy5lZGl0X2FsZXJ0fX18RWRpdD4iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfQogICAgXQp9"
}
provider = ibm.ibm-en
}
provider.tf
provider "ibm" {
alias = "ibm-en"
region = "jp-tok"
}
version.tf
terraform {
required_version = ">= 1.5.0"
required_providers {
ibm = {
source = "IBM-Cloud/ibm"
version = "1.70.0-beta0"
}
}
}
Slackテンプレートの実装に関する詳細は、 Slack通知テンプレートに関する IBM Cloud Event Notifications のドキュメントを参照してください。