Search code examples
slack-apielastalert

Elastalert Rules for slack integration (message formatting and Attachments)


I'm trying to use message formatting in slack. The Elastalert Testrule.yaml file is partially being parsed. The slack alert shows up with only slack_alert_fields and alert_text fields. I want to send attachments as well in the alerts. How to use attachments or create buttons fort slack alerts?

es_host: elasticsearch
es_port: 9200
name: Test rule Alert
type: any
index: alerts-*
filter:
- term:
    alertType.keyword: "New alert created"

alert:
- "slack"

slack_alert_fields:
- title: Network Name
  value: networkName
  short: true
- title: Alert Type
  value: alertType
  short: true
slack_actions:
- name: "network url"
  text: "Network URL"
  type: "button"
  value: networkUrl

alert_text: |
            alertData : {0}

alert_text_type: alert_text_only
alert_text_args: ["alertData"]

attachments: [
    {
        "fallback": "Required plain-text summary of the attachment.",
        "color": "#37964f",
        "pretext": "New alert created",

        "title":  alertData.reason ,
        "fields": [
            {
                "title": "Network Name",
                "value": networkName,
                "short" : true
            },
            {
                "title": "Timestamp",
                "value": timestamp,
                "short" : true
            }
            ],
            "actions": [
                {
                    "name": "network url",
                    "text": "Network URL",
                    "type": "button",
                    "value": networkUrl
                },
                {
                    "name": "org_url",
                    "text": "Organization URL",
                    "type": "button",
                    "value":  organizationUrl

                }

                ]

    }
    ]


slack_webhook_url:
- "https://hooks.slack.com/xxxxxxxxxxxxxxxxxxxxxxx"

Solution

  • Looking at the official documentation it appears that Elastalert does not support adding custom Slack attachments for alerts, because there is no property for it in the documentation.

    In fact it seams that alerts are already formatted as attachment, which is why you can set a title and a title-URL. And also define additional "fields". Something that you can only do with attachments in Slack.

    This also means that you can not specify buttons for your alerts (which are a special kind of attachments in Slack).

    If you need this functionality I would suggest contacting the developer of Elastalert.