创建告警规则
本节介绍如何为 Kubernetes 原生事件和 Kubernetes/KubeSphere 审计事件定义告警规则。
前提条件
您需要在 KubeSphere 企业版平台具有 platform-admin 角色。
KubeSphere 企业版平台需要安装并启用 WhizardTelemetry 事件告警扩展组件。
操作步骤
在任意集群节点上,创建一个 yaml 文件,为该集群定义事件和审计的告警规则。
点击此处查看完整的告警规则示例。简单示例如下:
apiVersion: logging.whizard.io/v1alpha1 kind: ClusterRuleGroup metadata: name: example-auditing-rule namespace: kubesphere-logging-system spec: type: auditing rules: - desc: all action not need to be audit expr: kind: list list: - get - list - watch name: ignore-action - desc: all operator need to be audit expr: kind: list list: - create - delete - update - patch name: action - desc: pod expr: kind: macro macro: ObjectRef.Resource="pods" name: pod - desc: service expr: kind: macro macro: ObjectRef.Resource="services" name: service - desc: the alias of the user related to audit event expr: alias: User.username kind: alias name: user告警规则目前支持两种类型:审计和事件。在
spec.type下配置不同类型的告警规则,如type: auditing或type: events。告警规则的设置项如下:
参数 描述 name规则名称。
desc规则描述。
expr.kind规则类型,取值可以为
rule,macro,list, 或alias。expr.condition日志的过滤表达式,以检查日志是否与规则匹配。可使用比较运算符(=,!=,<,⇐,>,>=,contains,in,like,regexp)、布尔运算符(and,or 和 not)以及括号进行组合。
expr.macromacro 的条件。
expr.listlist 的值。
expr.aliasalias 的值。
enable如果为 false,规则将不生效。
alerts.output指定在匹配事件发生时输出的消息。
alerts.annotations规则的注解,包含在匹配事件发生时输出的告警消息。
alerts.annotations.summary指定在匹配事件发生时输出的摘要消息。
alerts.annotations.summaryCn指定在匹配事件发生时输出的中文摘要消息。
alerts.severity规则的告警级别,取值可以为 INFO、WARNING、ERROR、或 CRITICAL。
Macro
宏(Macro)是规则条件片段,可以在规则内部甚至其他宏中重复使用。宏提供了一种命名常见模式和消除规则冗余的方法。以下是一个宏的示例:
apiVersion: logging.whizard.io/v1alpha1 kind: ClusterRuleGroup metadata: name: macro-rule spec: type: auditing rules: - desc: pod expr: kind: macro macro: ObjectRef.Resource="pods" name: pod说明 宏可以在规则或其他宏中使用,例如
${pod}或${alerting-rule.pod}。这两种方法的区别在于${pod}只能用于alerting-rule,而${alerting-rule.pod}可以用于所有实例。宏也可用于 list 和 alias。list
列表(List)是可以包含在规则、宏或其他列表中的项目集合。与规则和宏不同,列表不能被解析为过滤表达式。以下是一个列表的示例:
apiVersion: logging.whizard.io/v1alpha1 kind: ClusterRuleGroup metadata: name: list-rule spec: type: alerting rules: - desc: all action not need to be audit expr: kind: list list: - get - list - watch name: ignore-actionAlias
别名(Alias)是过滤字段的缩写名称,它可以包含在规则、宏、列表和输出字符串中。以下是一个别名的示例:
apiVersion: logging.whizard.io/v1alpha1 kind: ClusterRuleGroup metadata: name: alias-rule spec: type: alerting rules: - desc: the alias of the user related to audit event expr: alias: User.username kind: alias name: user执行以下命令,创建 CRD(定制资源定义)。
kubectl apply -f xxx.yaml # 注意替换 yaml 文件的名称运行成功后,在集群管理 > 定制资源定义页面搜索 ClusterRuleGroup。
点击 ClusterRuleGroup 进入详情页,在右侧页面查看、编辑或删除告警规则。
反馈
这篇文章对您有帮助吗?
通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。