test parsing slack messages

This commit is contained in:
Bel LaPointe
2024-04-12 08:57:17 -06:00
parent ccee4a49da
commit 233ba8ae2b
10 changed files with 1052 additions and 10 deletions

View File

@@ -1,6 +1,11 @@
package main
import "encoding/json"
import (
"encoding/json"
"fmt"
"strconv"
"strings"
)
type Message struct {
ID string
@@ -39,3 +44,89 @@ func Deserialize(b []byte) (Message, error) {
err := json.Unmarshal(b, &m)
return m, err
}
type (
slackMessage struct {
TS uint64 `json:"event_time"`
Event slackEvent
}
slackEvent struct {
ID string `json:"event_ts"`
Channel string
// human
ParentID string `json:"thread_ts"`
Text string
Blocks []slackBlock
// bot
Bot slackBot `json:"bot_profile"`
Attachments []slackAttachment
}
slackBlock struct {
Elements []slackElement
}
slackElement struct {
Elements []slackElement
RichText string `json:"text"`
}
slackBot struct {
Name string
}
slackAttachment struct {
Color string
Title string
Text string
Fields []slackField
Actions []slackAction
}
slackField struct {
Value string
Title string
}
slackAction struct{}
)
func ParseSlack(b []byte) (Message, error) {
s, err := parseSlack(b)
if err != nil {
return Message{}, err
}
if s.Event.Bot.Name != "" {
return Message{
ID: strconv.FormatUint(s.TS, 10),
TS: s.TS,
Source: fmt.Sprintf(`https://renderinc.slack.com/archives/%s/p%s`, s.Event.Channel, strings.ReplaceAll(s.Event.ID, ".", "")),
Channel: s.Event.Channel,
Thread: s.Event.ID,
EventName: strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1],
Event: strings.Split(s.Event.Attachments[0].Title, ":")[0],
Plaintext: s.Event.Attachments[0].Text,
Asset: "TODO",
}, nil
}
return Message{
ID: strconv.FormatUint(s.TS, 10),
TS: s.TS,
Source: fmt.Sprintf(`https://renderinc.slack.com/archives/%s/p%s`, s.Event.Channel, strings.ReplaceAll(s.Event.ParentID, ".", "")),
Channel: s.Event.Channel,
Thread: s.Event.ParentID,
EventName: "TODO",
Event: "TODO",
Plaintext: s.Event.Text,
Asset: "TODO",
}, nil
}
func parseSlack(b []byte) (slackMessage, error) {
var result slackMessage
err := json.Unmarshal(b, &result)
return result, err
}

113
message_test.go Normal file
View File

@@ -0,0 +1,113 @@
package main
import (
"fmt"
"os"
"path"
"testing"
)
func TestParseSlackTestdata(t *testing.T) {
cases := map[string]struct {
slackMessage slackMessage
message Message
}{
"human_thread_message_from_opsgenie_alert.json": {
slackMessage: slackMessage{
TS: 1712930706,
Event: slackEvent{
ID: "1712930706.598629",
Channel: "C06U1DDBBU4",
ParentID: "1712927439.728409",
Text: "I gotta do this",
Blocks: []slackBlock{{
Elements: []slackElement{{
Elements: []slackElement{{
RichText: "I gotta do this",
}},
}},
}},
Bot: slackBot{
Name: "",
},
Attachments: []slackAttachment{},
},
},
message: Message{
ID: "1712930706",
TS: 1712930706,
Source: "https://renderinc.slack.com/archives/C06U1DDBBU4/p1712927439728409",
Channel: "C06U1DDBBU4",
Thread: "1712927439.728409",
EventName: "TODO",
Event: "TODO",
Plaintext: "I gotta do this",
Asset: "TODO",
},
},
"opsgenie_alert.json": {
slackMessage: slackMessage{
TS: 1712927439,
Event: slackEvent{
ID: "1712927439.728409",
Channel: "C06U1DDBBU4",
Bot: slackBot{
Name: "Opsgenie for Alert Management",
},
Attachments: []slackAttachment{{
Color: "F4511E",
Title: "#11071: [Grafana]: Firing: Alertconfig Workflow Failed",
Text: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&amp;viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
Fields: []slackField{
{Value: "P3", Title: "Priority"},
{Value: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb", Title: "Tags"},
{Value: "Datastores Non-Critical", Title: "Routed Teams"},
},
Actions: []slackAction{{}, {}, {}},
}},
},
},
message: Message{
ID: "1712927439",
TS: 1712927439,
Source: "https://renderinc.slack.com/archives/C06U1DDBBU4/p1712927439728409",
Channel: "C06U1DDBBU4",
Thread: "1712927439.728409",
EventName: "Alertconfig Workflow Failed",
Event: "#11071",
Plaintext: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&amp;viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
Asset: "TODO",
},
},
}
for name, d := range cases {
want := d
t.Run(name, func(t *testing.T) {
b, err := os.ReadFile(path.Join("testdata", "slack_events", name))
if err != nil {
t.Fatal(err)
}
t.Run("parseSlack", func(t *testing.T) {
got, err := parseSlack(b)
if err != nil {
t.Fatal(err)
}
if fmt.Sprintf("%+v", got) != fmt.Sprintf("%+v", want.slackMessage) {
t.Errorf("wanted \n\t%+v, got\n\t%+v", want.slackMessage, got)
}
})
t.Run("ParseSlack", func(t *testing.T) {
got, err := ParseSlack(b)
if err != nil {
t.Fatal(err)
}
if got != want.message {
t.Errorf("wanted \n\t%+v, got\n\t%+v", want.message, got)
}
})
})
}
}

View File

@@ -1 +1,50 @@
{"hint":"a message", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U06868T6ADV","type":"message","ts":"1712878479.415559","client_msg_id":"fce57841-0446-4720-aa1d-557e162c7667","text":"BOTH OF YOU GET IN HERE HEEEHEEEHEEE","team":"T9RQLQ0KV","blocks":[{"type":"rich_text","block_id":"6G5BZ","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"BOTH OF YOU GET IN HERE HEEEHEEEHEEE"}]}]}],"channel":"C06U1DDBBU4","event_ts":"1712878479.415559","channel_type":"channel"},"type":"event_callback","event_id":"Ev06U1F01XMJ","event_time":1712878479,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "a message",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U06868T6ADV",
"type": "message",
"ts": "1712878479.415559",
"client_msg_id": "fce57841-0446-4720-aa1d-557e162c7667",
"text": "BOTH OF YOU GET IN HERE HEEEHEEEHEEE",
"team": "T9RQLQ0KV",
"blocks": [
{
"type": "rich_text",
"block_id": "6G5BZ",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "BOTH OF YOU GET IN HERE HEEEHEEEHEEE"
}
]
}
]
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712878479.415559",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06U1F01XMJ",
"event_time": 1712878479,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}

View File

@@ -1 +1,52 @@
{"hint":"a thread message", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U06868T6ADV","type":"message","ts":"1712878566.650149","client_msg_id":"5d9d586b-eee0-40f8-b15e-66245c073a4c","text":"in a thread","team":"T9RQLQ0KV","thread_ts":"1712877772.926539","parent_user_id":"U06868T6ADV","blocks":[{"type":"rich_text","block_id":"KHSCu","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"in a thread"}]}]}],"channel":"C06U1DDBBU4","event_ts":"1712878566.650149","channel_type":"channel"},"type":"event_callback","event_id":"Ev06TW3WE58V","event_time":1712878566,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "a thread message",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U06868T6ADV",
"type": "message",
"ts": "1712878566.650149",
"client_msg_id": "5d9d586b-eee0-40f8-b15e-66245c073a4c",
"text": "in a thread",
"team": "T9RQLQ0KV",
"thread_ts": "1712877772.926539",
"parent_user_id": "U06868T6ADV",
"blocks": [
{
"type": "rich_text",
"block_id": "KHSCu",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "in a thread"
}
]
}
]
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712878566.650149",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06TW3WE58V",
"event_time": 1712878566,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}

View File

@@ -1 +1,52 @@
{"hint": "a thread reply to an alert", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U06868T6ADV","type":"message","ts":"1712930706.598629","client_msg_id":"880fc69f-de95-4c1e-90a7-aae701a40c21","text":"I gotta do this","team":"T9RQLQ0KV","thread_ts":"1712927439.728409","parent_user_id":"U03RUK7FBUY","blocks":[{"type":"rich_text","block_id":"Cp0IU","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"I gotta do this"}]}]}],"channel":"C06U1DDBBU4","event_ts":"1712930706.598629","channel_type":"channel"},"type":"event_callback","event_id":"Ev06UF3U1LM7","event_time":1712930706,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "a thread reply to an alert",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U06868T6ADV",
"type": "message",
"ts": "1712930706.598629",
"client_msg_id": "880fc69f-de95-4c1e-90a7-aae701a40c21",
"text": "I gotta do this",
"team": "T9RQLQ0KV",
"thread_ts": "1712927439.728409",
"parent_user_id": "U03RUK7FBUY",
"blocks": [
{
"type": "rich_text",
"block_id": "Cp0IU",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "I gotta do this"
}
]
}
]
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712930706.598629",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06UF3U1LM7",
"event_time": 1712930706,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}

View File

@@ -1 +1,127 @@
{"hint": "a new alert from opsgenie", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U03RUK7FBUY","type":"message","ts":"1712927439.728409","bot_id":"B03RHGBPH2M","app_id":"A286WATV2","text":"","team":"T9RQLQ0KV","bot_profile":{"id":"B03RHGBPH2M","deleted":false,"name":"Opsgenie for Alert Management","updated":1658887059,"app_id":"A286WATV2","icons":{"image_36":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_36.png","image_48":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_72.png"},"team_id":"T9RQLQ0KV"},"attachments":[{"id":1,"color":"F4511E","fallback":"New alert: \"[Grafana]: Firing: Alertconfig Workflow Failed\" <https:\/\/opsg.in\/a\/i\/render\/38152bc5-bc5d-411d-9feb-d285af5b6481-1712927439305|11071>\nTags: alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb","text":"At least one alertconfig run has failed unexpectedly.\nDashboard: <https:\/\/grafana.render.com\/d\/VLZU83YVk?orgId=1>\nPanel: <https:\/\/grafana.render.com\/d\/VLZU83YVk?orgId=1&amp;viewPanel=17>\nSource: <https:\/\/grafana.render.com\/alerting\/grafana\/fa7b06b8-b4d8-4979-bce7-5e1c432edd81\/view?orgId=1>","title":"#11071: [Grafana]: Firing: Alertconfig Workflow Failed","title_link":"https:\/\/opsg.in\/a\/i\/render\/38152bc5-bc5d-411d-9feb-d285af5b6481-1712927439305","author_name":"New Alert created via Grafana - Datastore Slack","callback_id":"bbd4a269-08a9-470e-ba79-ce238ac03dc7_05fa2e9b-bec4-4a7e-842d-36043d267a13_11071","fields":[{"value":"P3","title":"Priority","short":true},{"value":"alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb","title":"Tags","short":true},{"value":"Datastores Non-Critical","title":"Routed Teams","short":true}],"mrkdwn_in":["pretext","text"],"actions":[{"id":"1","name":"acknowledge","text":"Acknowledge","type":"button","value":"ack","style":"default"},{"id":"2","name":"close","text":"Close","type":"button","value":"close","style":"primary"},{"id":"3","name":"action","text":"Other actions...","type":"select","data_source":"static","options":[{"text":"Assign","value":"assign"},{"text":"Take Ownership","value":"own"},{"text":"Snooze","value":"snooze"},{"text":"Add Note","value":"addNote"},{"text":"Update Priority","value":"updatePriority"}]}]}],"channel":"C06U1DDBBU4","event_ts":"1712927439.728409","channel_type":"channel"},"type":"event_callback","event_id":"Ev06UEPF5BSM","event_time":1712927439,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "a new alert from opsgenie",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U03RUK7FBUY",
"type": "message",
"ts": "1712927439.728409",
"bot_id": "B03RHGBPH2M",
"app_id": "A286WATV2",
"text": "",
"team": "T9RQLQ0KV",
"bot_profile": {
"id": "B03RHGBPH2M",
"deleted": false,
"name": "Opsgenie for Alert Management",
"updated": 1658887059,
"app_id": "A286WATV2",
"icons": {
"image_36": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_36.png",
"image_48": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_48.png",
"image_72": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_72.png"
},
"team_id": "T9RQLQ0KV"
},
"attachments": [
{
"id": 1,
"color": "F4511E",
"fallback": "New alert: \"[Grafana]: Firing: Alertconfig Workflow Failed\" <https://opsg.in/a/i/render/38152bc5-bc5d-411d-9feb-d285af5b6481-1712927439305|11071>\nTags: alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
"text": "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&amp;viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
"title": "#11071: [Grafana]: Firing: Alertconfig Workflow Failed",
"title_link": "https://opsg.in/a/i/render/38152bc5-bc5d-411d-9feb-d285af5b6481-1712927439305",
"author_name": "New Alert created via Grafana - Datastore Slack",
"callback_id": "bbd4a269-08a9-470e-ba79-ce238ac03dc7_05fa2e9b-bec4-4a7e-842d-36043d267a13_11071",
"fields": [
{
"value": "P3",
"title": "Priority",
"short": true
},
{
"value": "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
"title": "Tags",
"short": true
},
{
"value": "Datastores Non-Critical",
"title": "Routed Teams",
"short": true
}
],
"mrkdwn_in": [
"pretext",
"text"
],
"actions": [
{
"id": "1",
"name": "acknowledge",
"text": "Acknowledge",
"type": "button",
"value": "ack",
"style": "default"
},
{
"id": "2",
"name": "close",
"text": "Close",
"type": "button",
"value": "close",
"style": "primary"
},
{
"id": "3",
"name": "action",
"text": "Other actions...",
"type": "select",
"data_source": "static",
"options": [
{
"text": "Assign",
"value": "assign"
},
{
"text": "Take Ownership",
"value": "own"
},
{
"text": "Snooze",
"value": "snooze"
},
{
"text": "Add Note",
"value": "addNote"
},
{
"text": "Update Priority",
"value": "updatePriority"
}
]
}
]
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712927439.728409",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06UEPF5BSM",
"event_time": 1712927439,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,127 @@
{"hint": "an alert firing that has a render_id", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U03RUK7FBUY","type":"message","ts":"1712911957.023359","bot_id":"B03RHGBPH2M","app_id":"A286WATV2","text":"","team":"T9RQLQ0KV","bot_profile":{"id":"B03RHGBPH2M","deleted":false,"name":"Opsgenie for Alert Management","updated":1658887059,"app_id":"A286WATV2","icons":{"image_36":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_36.png","image_48":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_72.png"},"team_id":"T9RQLQ0KV"},"attachments":[{"id":1,"color":"F4511E","fallback":"New alert: \"[Grafana]: Firing: [Oregon-1] Wal Receive Count Alert\" <https:\/\/opsg.in\/a\/i\/render\/c1565736-aac4-4a78-b7db-65e4d90a59f2-1712911956739|11067>\nTags: alertname:[oregon-1] WAL Receive Count alert, business_hours:true, cluster:oregon-1, contacts:\"OpsGenie - Datastore\",\"Slack - Datastore, grafana_folder:[Generated] oregon-1, template-source:ab1da08c-129f-4f08-b505-db44929eb8","text":"Replica for dpg-cn7te6nsc6pc73ak5pig-b cannot start streaming replication, because the primary has already deleted the needed WAL segment.\n\nSync the replica from scratch using the runbook.\nRunbook: <https:\/\/slab.render.com\/posts\/runbook-postgres-replica-too-far-behind-pr084dj4>\nSource: <https:\/\/grafana.render.com\/alerting\/grafana\/aecdfbcf-5298-4679-bd20-d9dec32ee2a0\/view?orgId=1>","title":"#11067: [Grafana]: Firing: [Oregon-1] Wal Receive Count Alert","title_link":"https:\/\/opsg.in\/a\/i\/render\/c1565736-aac4-4a78-b7db-65e4d90a59f2-1712911956739","author_name":"New Alert created via Grafana - Datastore Slack","callback_id":"bbd4a269-08a9-470e-ba79-ce238ac03dc7_05fa2e9b-bec4-4a7e-842d-36043d267a13_11067","fields":[{"value":"P3","title":"Priority","short":true},{"value":"alertname:[oregon-1] WAL Receive Count alert, business_hours:true, cluster:oregon-1, contacts:\"OpsGenie - Datastore\",\"Slack - Datastore, grafana_folder:[Generated] oregon-1, template-source:ab1da08c-129f-4f08-b505-db44929eb8","title":"Tags","short":true},{"value":"Datastores Non-Critical","title":"Routed Teams","short":true}],"mrkdwn_in":["pretext","text"],"actions":[{"id":"1","name":"acknowledge","text":"Acknowledge","type":"button","value":"ack","style":"default"},{"id":"2","name":"close","text":"Close","type":"button","value":"close","style":"primary"},{"id":"3","name":"action","text":"Other actions...","type":"select","data_source":"static","options":[{"text":"Assign","value":"assign"},{"text":"Take Ownership","value":"own"},{"text":"Snooze","value":"snooze"},{"text":"Add Note","value":"addNote"},{"text":"Update Priority","value":"updatePriority"}]}]}],"channel":"C06U1DDBBU4","event_ts":"1712911957.023359","channel_type":"channel"},"type":"event_callback","event_id":"Ev06U0TNBXV0","event_time":1712911957,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "an alert firing that has a render_id",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U03RUK7FBUY",
"type": "message",
"ts": "1712911957.023359",
"bot_id": "B03RHGBPH2M",
"app_id": "A286WATV2",
"text": "",
"team": "T9RQLQ0KV",
"bot_profile": {
"id": "B03RHGBPH2M",
"deleted": false,
"name": "Opsgenie for Alert Management",
"updated": 1658887059,
"app_id": "A286WATV2",
"icons": {
"image_36": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_36.png",
"image_48": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_48.png",
"image_72": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_72.png"
},
"team_id": "T9RQLQ0KV"
},
"attachments": [
{
"id": 1,
"color": "F4511E",
"fallback": "New alert: \"[Grafana]: Firing: [Oregon-1] Wal Receive Count Alert\" <https://opsg.in/a/i/render/c1565736-aac4-4a78-b7db-65e4d90a59f2-1712911956739|11067>\nTags: alertname:[oregon-1] WAL Receive Count alert, business_hours:true, cluster:oregon-1, contacts:\"OpsGenie - Datastore\",\"Slack - Datastore, grafana_folder:[Generated] oregon-1, template-source:ab1da08c-129f-4f08-b505-db44929eb8",
"text": "Replica for dpg-cn7te6nsc6pc73ak5pig-b cannot start streaming replication, because the primary has already deleted the needed WAL segment.\n\nSync the replica from scratch using the runbook.\nRunbook: <https://slab.render.com/posts/runbook-postgres-replica-too-far-behind-pr084dj4>\nSource: <https://grafana.render.com/alerting/grafana/aecdfbcf-5298-4679-bd20-d9dec32ee2a0/view?orgId=1>",
"title": "#11067: [Grafana]: Firing: [Oregon-1] Wal Receive Count Alert",
"title_link": "https://opsg.in/a/i/render/c1565736-aac4-4a78-b7db-65e4d90a59f2-1712911956739",
"author_name": "New Alert created via Grafana - Datastore Slack",
"callback_id": "bbd4a269-08a9-470e-ba79-ce238ac03dc7_05fa2e9b-bec4-4a7e-842d-36043d267a13_11067",
"fields": [
{
"value": "P3",
"title": "Priority",
"short": true
},
{
"value": "alertname:[oregon-1] WAL Receive Count alert, business_hours:true, cluster:oregon-1, contacts:\"OpsGenie - Datastore\",\"Slack - Datastore, grafana_folder:[Generated] oregon-1, template-source:ab1da08c-129f-4f08-b505-db44929eb8",
"title": "Tags",
"short": true
},
{
"value": "Datastores Non-Critical",
"title": "Routed Teams",
"short": true
}
],
"mrkdwn_in": [
"pretext",
"text"
],
"actions": [
{
"id": "1",
"name": "acknowledge",
"text": "Acknowledge",
"type": "button",
"value": "ack",
"style": "default"
},
{
"id": "2",
"name": "close",
"text": "Close",
"type": "button",
"value": "close",
"style": "primary"
},
{
"id": "3",
"name": "action",
"text": "Other actions...",
"type": "select",
"data_source": "static",
"options": [
{
"text": "Assign",
"value": "assign"
},
{
"text": "Take Ownership",
"value": "own"
},
{
"text": "Snooze",
"value": "snooze"
},
{
"text": "Add Note",
"value": "addNote"
},
{
"text": "Update Priority",
"value": "updatePriority"
}
]
}
]
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712911957.023359",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06U0TNBXV0",
"event_time": 1712911957,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,55 @@
{"hint": "a teeny closed alert message", "token":"redacted","team_id":"T9RQLQ0KV","context_team_id":"T9RQLQ0KV","context_enterprise_id":null,"api_app_id":"A06TYH7CALB","event":{"user":"U03RUK7FBUY","type":"message","ts":"1712925631.682559","bot_id":"B03RHGBPH2M","app_id":"A286WATV2","text":"","team":"T9RQLQ0KV","bot_profile":{"id":"B03RHGBPH2M","deleted":false,"name":"Opsgenie for Alert Management","updated":1658887059,"app_id":"A286WATV2","icons":{"image_36":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_36.png","image_48":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_48.png","image_72":"https:\/\/avatars.slack-edge.com\/2019-05-30\/652285939191_7831939cc30ef7159561_72.png"},"team_id":"T9RQLQ0KV"},"attachments":[{"id":1,"color":"2ecc71","fallback":"Alert API closed alert <https:\/\/opsg.in\/a\/i\/render\/ec6e7c4b-90a6-4c3c-94e9-901f6b7ada47-1712922031403|#11070> \"[Grafana]: Firing: Alertconfig Workflow Failed\"","text":"Alert API closed alert <https:\/\/opsg.in\/a\/i\/render\/ec6e7c4b-90a6-4c3c-94e9-901f6b7ada47-1712922031403|#11070> \"[Grafana]: Firing: Alertconfig Workflow Failed\""}],"channel":"C06U1DDBBU4","event_ts":"1712925631.682559","channel_type":"channel"},"type":"event_callback","event_id":"Ev06U1R10TPV","event_time":1712925631,"authorizations":[{"enterprise_id":null,"team_id":"T9RQLQ0KV","user_id":"U06TS9M7ABG","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"}
{
"hint": "a teeny closed alert message",
"token": "redacted",
"team_id": "T9RQLQ0KV",
"context_team_id": "T9RQLQ0KV",
"context_enterprise_id": null,
"api_app_id": "A06TYH7CALB",
"event": {
"user": "U03RUK7FBUY",
"type": "message",
"ts": "1712925631.682559",
"bot_id": "B03RHGBPH2M",
"app_id": "A286WATV2",
"text": "",
"team": "T9RQLQ0KV",
"bot_profile": {
"id": "B03RHGBPH2M",
"deleted": false,
"name": "Opsgenie for Alert Management",
"updated": 1658887059,
"app_id": "A286WATV2",
"icons": {
"image_36": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_36.png",
"image_48": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_48.png",
"image_72": "https://avatars.slack-edge.com/2019-05-30/652285939191_7831939cc30ef7159561_72.png"
},
"team_id": "T9RQLQ0KV"
},
"attachments": [
{
"id": 1,
"color": "2ecc71",
"fallback": "Alert API closed alert <https://opsg.in/a/i/render/ec6e7c4b-90a6-4c3c-94e9-901f6b7ada47-1712922031403|#11070> \"[Grafana]: Firing: Alertconfig Workflow Failed\"",
"text": "Alert API closed alert <https://opsg.in/a/i/render/ec6e7c4b-90a6-4c3c-94e9-901f6b7ada47-1712922031403|#11070> \"[Grafana]: Firing: Alertconfig Workflow Failed\""
}
],
"channel": "C06U1DDBBU4",
"event_ts": "1712925631.682559",
"channel_type": "channel"
},
"type": "event_callback",
"event_id": "Ev06U1R10TPV",
"event_time": 1712925631,
"authorizations": [
{
"enterprise_id": null,
"team_id": "T9RQLQ0KV",
"user_id": "U06TS9M7ABG",
"is_bot": true,
"is_enterprise_install": false
}
],
"is_ext_shared_channel": false,
"event_context": "4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUOVJRTFEwS1YiLCJhaWQiOiJBMDZUWUg3Q0FMQiIsImNpZCI6IkMwNlUxRERCQlU0In0"
}