本文介绍通过Go SDK使用告警的代码示例。
前提条件
管理告警监控规则
代码示例如下。具体的参数说明,请参见告警监控规则数据结构。
package main
import (
"fmt"
"os"
sls "github.com/aliyun/aliyun-log-go-sdk"
)
var (
// 日志服务的服务接入点。
endpoint = "cn-huhehaote.log.aliyuncs.com"
// 本示例从环境变量中获取AccessKey ID和AccessKey Secret。
accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
// 创建日志服务Client。
client = sls.CreateNormalInterface(endpoint, accessKeyId, accessKeySecret, "")
project = "demo-alert"
alertId = "nginx-status-error"
)
func createAlert() {
alert := &sls.Alert{
Name: alertId,
DisplayName: "Nginx Status Error",
Schedule: &sls.Schedule{
Type: sls.ScheduleTypeFixedRate,
Interval: "1m",
},
Configuration: &sls.AlertConfiguration{
Version: "2.0",
Type: "default",
Dashboard: "internal-alert-analysis",
QueryList: []*sls.AlertQuery{
&sls.AlertQuery{
StoreType: "log",
Region: "cn-huhehaote",
Project: project,
Store: "nginx-access-log",
Query: "status >= 400 | select count(*) as cnt",
TimeSpanType: "Truncated",
Start: "-1m",
End: "absolute",
PowerSqlMode: sls.PowerSqlModeAuto,
},
},
GroupConfiguration: sls.GroupConfiguration{
Type: sls.GroupTypeNoGroup,
},
JoinConfigurations: []*sls.JoinConfiguration{},
SeverityConfigurations: []*sls.SeverityConfiguration{
&sls.SeverityConfiguration{
Severity: sls.Medium,
EvalCondition: sls.ConditionConfiguration{
Condition: "cnt > 0",
CountCondition: "",
},
},
},
Labels: []*sls.Tag{
&sls.Tag{
Key: "service",
Value: "nginx",
},
},
Annotations: []*sls.Tag{
&sls.Tag{
Key: "title",
Value: "Nginx Status Error",
},
&sls.Tag{
Key: "desc",
Value: "Nginx Status Error, count: ${cnt}",
},
},
AutoAnnotation: true,
SendResolved: false,
Threshold: 1,
NoDataFire: false,
NoDataSeverity: sls.Medium,
PolicyConfiguration: sls.PolicyConfiguration{
AlertPolicyId: "sls.builtin.dynamic",
ActionPolicyId: "test-action-policy",
RepeatInterval: "1m",
UseDefault: false,
},
},
}
err := client.CreateAlert(project, alert)
fmt.Println("[create alert]", err)
}
func getAndUpdateAlert() {
alert, err := client.GetAlert(project, alertId)
fmt.Println("[get alert]", sls.JsonMarshal(alert), err)
fmt.Println("isEnabled: %v", alert.IsEnabled())
alert.Configuration.QueryList[0].Query = "status >= 500 | select count(*) as cnt"
err = client.UpdateAlert(project, alert)
fmt.Println("[update alert]", err)
}
func disableAndEnableAlert() {
err := client.DisableAlert(project, alertId)
fmt.Println("[disable alert]", err)
err = client.EnableAlert(project, alertId)
fmt.Println("[enable alert]", err)
}
func listAlerts() {
alerts, total, count, err := client.ListAlert(project, "", "", 0, 100)
fmt.Println("[list alert]", sls.JsonMarshal(alerts), total, count, err)
}
func deleteAlert() {
err := client.DeleteAlert(project, alertId)
fmt.Println("[delete alert]", err)
}
func main() {
createAlert()
getAndUpdateAlert()
disableAndEnableAlert()
listAlerts()
deleteAlert()
}
管理告警资源数据
代码示例如下。具体的参数说明,请参见告警资源数据结构。
该文章对您有帮助吗?
- 本页导读 (1)
- 前提条件
- 管理告警监控规则
- 管理告警资源数据