Documentation
¶
Index ¶
- func HashObject(obj interface{}) string
- func Join(strings ...string) string
- func Md5SumByte(Byte []byte) (Hash string)
- func ToJson(obj interface{}) ([]byte, error)
- type AlertCache
- type AlertInfo
- type AlertNocache
- type AlertmanagerAlert
- type AliyunAlert
- type AppAlert
- type CommonAlert
- type EventAlert
- type HandleInfo
- type HashInfo
- type HuaweiAlarmValue
- type HuaweiyunAlert
- type HuaweiyunMessage
- type HuaweiyunTemplateVar
- type ParticularAlert
- type ProjectInfo
- type UcloudAlert
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HashObject ¶
func HashObject(obj interface{}) string
func Md5SumByte ¶
Types ¶
type AlertCache ¶
type AlertCache struct {
StartTime string `json:"StartTime"` // "1627639497" 秒级时间戳,表示故障开始时间 当AlertStatus为problem时生效 //当无该字段时,或故障未恢复且时间改变时,沿用老时间
Recoverable string `json:"Recoverable"` // true/false 是否发送恢复通知,若调用方在故障恢复时不调用此接口,则配置为false ,避免因未接收到恢复而导致告警升级
AlertStatus string `json:"AlertStatus"` // firing/resovled 告警状态,当Recoverable为true时生效,标记当前告警为故障或恢复
}
type AlertInfo ¶
type AlertInfo struct {
AlertCache
ObjectData map[string]interface{} `json:"ObjectData"` // 告警对象唯一标识,同一项目下唯一,用于告警抑制,分组,通知策略配置或告警模板定制 例如 {"hostname":"aliyun-blackbox-01","ip":"10.59.63.4","supplier":"ucloud"}
AlertData map[string]interface{} `json:"AlertData"` // 告警事件唯一标识,同一项目下唯一,用于告警抑制,分组,通知策略配置或告警模板定制 例如 {"alertname":"CPU使用率达到90%"}
NotifyData map[string]interface{} `json:"NotifyData"` // 告警通知字段 当前支持飞书(群组key为groups,值需要服务端提供,个人使用emails或mobiles,飞书关联联系方式) 格式为{"flybook":{"groups":["groupname"],"mobiles":["13917104943"],"emails":["liaopeng@52tt.com"]}}
Severity string `json:"Severity"` //告警等级 "disaster/critical/warning"
EndTime string `json:"EndTime"` // "1627639497" 秒级时间戳,表示故障恢复时间 当AlertStatus为ok时生效
AlertText string `json:"AlertText"` // 告警文本 "HBase_rcmd_core1(10.10.113.160:59100) 内存可用率是6.917% , 可用内存是 1.615GiB"
SrcData map[string]interface{} `json:"SrcData"` // 原始告警数据 例如 {"alertname":"AggregatedAPIDown","cluster":"prod-bj2-02","env":"production","name":"v1beta1.metrics.k8s.io","namespace":"default","prometheus":"monitoring/prometheus-quicksilver","severity":"warning"}
}
告警信息
type AlertNocache ¶
type AlertNocache struct {
HandleStatus string `json:"HandleStatus"` // 新告警 (初次告警) 未确认 (确认) 处理中 (恢复) 待关闭 与mongodb状态对应
}
type AlertmanagerAlert ¶
type AlertmanagerAlert struct {
model.Alert
// The authoritative timestamp.
UpdatedAt time.Time
Timeout bool
}
alertmanager告警结构体
func (*AlertmanagerAlert) ToCommonAlert ¶
func (e *AlertmanagerAlert) ToCommonAlert(pi *ProjectInfo) *CommonAlert
type AliyunAlert ¶
type AliyunAlert struct {
AlertName string `json:"alertName"`
AlertState string `json:"alertState"`
CurValue string `json:"curValue"`
Dimensions string `json:"dimensions"`
Expression string `json:"expression"`
InstanceName string `json:"instanceName"`
MetricName string `json:"metricName"` // cluster.cpu.allocatable
MetricProject string `json:"metricProject"`
Namespace string `json:"namespace"` // kafka
PreTriggerLevel string `json:"preTriggerLevel"`
RuleId string `json:"ruleId"`
Timestamp string `json:"timestamp"`
TriggerLevel string `json:"triggerLevel"`
UserId string `json:"userId"`
}
func (*AliyunAlert) Severity ¶
func (e *AliyunAlert) Severity() string
func (*AliyunAlert) Status ¶
func (e *AliyunAlert) Status() string
func (*AliyunAlert) ToCommonAlert ¶
func (e *AliyunAlert) ToCommonAlert(pi *ProjectInfo) *CommonAlert
type AppAlert ¶
type AppAlert interface {
ToCommonAlert() (*CommonAlert, error)
}
type CommonAlert ¶
type CommonAlert struct {
ProjectInfo
AlertInfo
HashInfo
AlertNocache
}
通用告警结构体
func (*CommonAlert) DumpCache ¶
func (ca *CommonAlert) DumpCache(h *HandleInfo)
func (*CommonAlert) Hash ¶
func (ca *CommonAlert) Hash()
type EventAlert ¶
type EventAlert struct {
AlertInfo
}
自定义事件告警结构体,结构与通用结构体一致,避免再次转换
func (*EventAlert) ToCommonAlert ¶
func (e *EventAlert) ToCommonAlert(pi *ProjectInfo) *CommonAlert
仅进行格式转换
type HashInfo ¶
type HashInfo struct {
// contains filtered or unexported fields
}
对象与告警唯一id
func (*HashInfo) GetAlertId ¶
func (*HashInfo) GetGlobalId ¶
func (*HashInfo) GetObjectId ¶
type HuaweiAlarmValue ¶
type HuaweiyunAlert ¶
type HuaweiyunAlert struct {
Message_type string `json:"message_type"`
Alarm_id string `json:"alarm_id"`
Alarm_name string `json:"alarm_name"`
Alarm_status string `json:"alarm_status"`
Time int `json:"time"`
Namespace string `json:"namespace"`
Metric_name string `json:"metric_name"`
Dimension string `json:"dimension"`
Period int `json:"period"`
Filter string `json:"filter"`
Comparison_operator string `json:"comparison_operator"`
Value int `json:"value"`
Unit string `json:"unit"`
Count int `json:"count"`
AlarmValue []HuaweiAlarmValue `json:"alarmValue"`
Sms_content string `json:"sms_content"`
Template_variable HuaweiyunTemplateVar `json:"template_variable"`
}
type HuaweiyunMessage ¶
type HuaweiyunMessage struct {
Signature string `json:"signature"`
Subject string `json:"subject"`
Topic_urn string `json:"topic_urn"`
Message_id string `json:"message_id"`
Signature_version string `json:"signature_version"`
Type string `json:"type"`
Message HuaweiyunAlert `json:"exchanged_message"`
MessageString string `json:"message"`
// Unsubscribe_url string `json:"unsubscribe_url"` 避免误点击,取消该解析
Signing_cert_url string `json:"signing_cert_url"`
Timestamp string `json:"timestamp"`
}
func (*HuaweiyunMessage) Severity ¶
func (h *HuaweiyunMessage) Severity() string
func (*HuaweiyunMessage) Status ¶
func (h *HuaweiyunMessage) Status() string
func (*HuaweiyunMessage) ToCommonAlert ¶
func (h *HuaweiyunMessage) ToCommonAlert(pi *ProjectInfo) *CommonAlert
type HuaweiyunTemplateVar ¶
type HuaweiyunTemplateVar struct {
Namespace string `json:"Namespace"`
DimensionName string `json:"DimensionName"`
ResourceName string `json:"ResourceName"`
MetricName string `json:"MetricName"`
IsAlarm bool `json:"IsAlarm"`
IsCycleTrigger bool `json:"IsCycleTrigger"`
AlarmLevel string `json:"AlarmLevel"`
Region string `json:"Region"`
ResourceId string `json:"ResourceId"`
PrivateIp string `json:"PrivateIp"`
PublicIp string `json:"PublicIp"`
AlarmRule string `json:"AlarmRule"`
CurrentData string `json:"CurrentData"`
AlarmTime string `json:"AlarmTime"`
DataPoint map[string]string `json:"DataPoint"` // {\"2021/09/05 03:10:00 GMT+08:00\":\"91.41%\",\"2021/09/05 03:15:00 GMT+08:00\":\"91.32%\",\"2021/09/05 03:20:00 GMT+08:00\":\"91.46%\"}
DataPointTime []string `json:"DataPointTime"` // [\"2021/09/05 03:20:00 GMT+08:00\",\"2021/09/05 03:15:00 GMT+08:00\",\"2021/09/05 03:10:00 GMT+08:00\"]
AlarmRuleName string `json:"AlarmRuleName"`
AlarmId string `json:"AlarmId"`
AlarmDesc string `json:"AlarmDesc"`
MonitoringRange string `json:"MonitoringRange"`
IsOriginalValue bool `json:"IsOriginalValue"`
Period string `json:"Period"`
Filter string `json:"Filter"`
ComparisonOperator string `json:"ComparisonOperator"`
Value string `json:"Value"`
Unit string `json:"Unit"`
EventContent string `json:"EventContent"`
Count int `json:"Count"`
Link string `json:"Link"`
EpName string `json:"EpName"`
IsIEC bool `json:"IsIEC"`
IsAgentEvent bool `json:"IsAgentEvent"`
}
type ParticularAlert ¶
type ParticularAlert interface {
ToCommonAlert(*ProjectInfo) *CommonAlert
}
type ProjectInfo ¶
type ProjectInfo struct {
ProjectType string //告警接入类型 Alertmanager,Ucloud,Aliyun,Huaweiyun,Grafana,Callback,Event(自定义事件)
ProjectId string //项目ID 用于识别同一告警类型下的不同通道,比如两个不同的prometheus集群,当需要认证时,该值作为认证ID
}
项目信息
func (*ProjectInfo) GetId ¶
func (p *ProjectInfo) GetId() string
func (*ProjectInfo) GetType ¶
func (p *ProjectInfo) GetType() string
func (*ProjectInfo) SetId ¶
func (p *ProjectInfo) SetId(s string)
type UcloudAlert ¶
type UcloudAlert struct {
SessionID string `json:"SessionID"`
Region string `json:"Region"`
ResourceType string `json:"ResourceType"`
ResourceId string `json:"ResourceId"`
MetricName string `json:"MetricName"`
AlarmTime int64 `json:"AlarmTime"`
Value int `json:"value"`
ValueUnit string `json:"ValueUnit"`
RecoveryTime int64 `json:"RecoveryTime"`
Content string `json:"content"`
}
func (*UcloudAlert) Status ¶
func (e *UcloudAlert) Status() string
func (*UcloudAlert) ToCommonAlert ¶
func (e *UcloudAlert) ToCommonAlert(pi *ProjectInfo) *CommonAlert
Click to show internal directories.
Click to hide internal directories.