slack: webhookurl and sendSlack
- GetComponentStatus fix - get main url from api definition for slack post - fix run send slack
This commit is contained in:
@@ -89,3 +89,9 @@ func getTemplateData(monitor *AbstractMonitor) map[string]interface{} {
|
||||
"now": time.Now().Format(monitor.config.DateFormat),
|
||||
}
|
||||
}
|
||||
|
||||
func MainUrl(cfg *CachetMonitor) string {
|
||||
var url = cfg.API.URL
|
||||
var index = strings.Index(url,"/api/")
|
||||
return url[0:index]
|
||||
}
|
||||
19
incident.go
19
incident.go
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
@@ -94,8 +95,8 @@ func (incident *Incident) Send(cfg *CachetMonitor) error {
|
||||
return fmt.Errorf("Could not create/update incident")
|
||||
}
|
||||
// send slack message
|
||||
if cfg.SlackWebhook !="" {
|
||||
sendSlack(cfg)
|
||||
if cfg.SlackWebhook != "" {
|
||||
incident.sendSlack(cfg)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -111,7 +112,7 @@ func (incident *Incident) GetComponentStatus(cfg *CachetMonitor) (int, error) {
|
||||
}
|
||||
|
||||
var data struct {
|
||||
Status int `json:"status,string"`
|
||||
Status int `json:"status"`
|
||||
}
|
||||
if err := json.Unmarshal(body.Data, &data); err != nil {
|
||||
return 0, fmt.Errorf("Cannot parse component body: %v. Err = %v", string(body.Data), err)
|
||||
@@ -142,19 +143,19 @@ func (incident *Incident) SetFixed() {
|
||||
|
||||
// Send slack message
|
||||
func (incident *Incident) sendSlack(cfg *CachetMonitor) {
|
||||
color:="#bf1932" //red
|
||||
color := "#bf1932" //red
|
||||
if incident.ComponentStatus == 1 {
|
||||
|
||||
color="#36a64f" //green
|
||||
color = "#36a64f" //green
|
||||
}
|
||||
titleLink := MainUrl(cfg) + "/dashboard/incidents/" + strconv.Itoa(incident.ID)
|
||||
slack := Slack{
|
||||
WebhookUrl: cfg.SlackWebhook
|
||||
WebhookURL: cfg.SlackWebhook,
|
||||
Attachments: []Attachments{
|
||||
Attachments{
|
||||
Fallback: incident.Name,
|
||||
Color: color,
|
||||
Title: incident.Name,
|
||||
TitleLink: "https://status.easyship.com",
|
||||
TitleLink: titleLink,
|
||||
Text: incident.Message,
|
||||
Footer: "Cachet Monitor",
|
||||
FooterIcon: "https://i.imgur.com/spck1w6.png",
|
||||
@@ -163,6 +164,6 @@ func (incident *Incident) sendSlack(cfg *CachetMonitor) {
|
||||
}}
|
||||
err := slack.SendSlackNotification()
|
||||
if err != nil {
|
||||
fmt.Errorf(err)
|
||||
fmt.Errorf("Cannot send slack message. Err = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
6
slack.go
6
slack.go
@@ -10,7 +10,7 @@ import (
|
||||
)
|
||||
|
||||
type Slack struct {
|
||||
WebhookUrl string
|
||||
WebhookURL string
|
||||
Attachments []Attachments `json:"attachments"`
|
||||
}
|
||||
type Fields struct {
|
||||
@@ -46,7 +46,7 @@ func test() {
|
||||
Ts: time.Now().Unix(),
|
||||
},
|
||||
}}
|
||||
slack.WebhookUrl = "https://hooks.slack.com/services/0000000/00000000/xxxxxxxxxxxxxxxxxxx"
|
||||
slack.WebhookURL = "https://hooks.slack.com/services/0000000/00000000/xxxxxxxxxxxxxxxxxxx"
|
||||
err := slack.SendSlackNotification()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
@@ -58,7 +58,7 @@ func test() {
|
||||
func (slack *Slack) SendSlackNotification() error {
|
||||
|
||||
slackBody, _ := json.Marshal(slack)
|
||||
req, err := http.NewRequest(http.MethodPost, slack.WebhookUrl, bytes.NewBuffer(slackBody))
|
||||
req, err := http.NewRequest(http.MethodPost, slack.WebhookURL, bytes.NewBuffer(slackBody))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user