11.2. 自定义日志记录警报
在日志记录 5.7 及更新的版本中,用户可以配置 LokiStack 部署来生成自定义警报和记录的指标。如果要使用自定义 警报和记录规则,您必须启用 LokiStack 规则器组件。
				LokiStack 基于日志的警报和记录的指标通过将 LogQL 表达式提供给 ruler 组件来触发。Loki Operator 管理了一个针对所选 LokiStack 大小优化的标尺,可以是 1x.extra-small、1x.small 或 1x.medium。
			
				要提供这些表达式,您必须创建一个 AlertingRule 自定义资源 (CR),其中包含与 Prometheus 兼容的 警报规则,或包含 Prometheus 兼容的 记录规则 的 RecordingRule CR。
			
				管理员可以为 application, audit, 或 infrastructure 租户配置基于日志的警报或记录指标数据。没有管理员权限的用户可为他们有权访问的应用程序租户配置基于日志的警报或记录指标。
			
				应用程序、审计和基础架构警报默认发送到 openshift-monitoring 命名空间中的 OpenShift Dedicated 监控堆栈 Alertmanager,除非您禁用了本地 Alertmanager 实例。如果启用了用于监控 openshift-user-workload-monitoring 命名空间中的用户定义的项目的 Alertmanager,应用程序警报默认发送到此命名空间中的 Alertmanager。
			
11.2.1. 配置规则器
启用 LokiStack 规则器组件后,用户可以定义一组 LogQL 表达式,用于触发日志记录警报或记录指标。
					管理员可以通过修改 LokiStack 自定义资源(CR) 来启用规则器。
				
先决条件
- 已安装 Red Hat OpenShift Logging Operator 和 Loki Operator。
- 
							您已创建了 LokiStackCR。
- 有管理员权限。
11.2.2. 授权 LokiStack 规则 RBAC 权限
					管理员可以允许用户通过将集群角色绑定到 username 来创建和管理自己的警报和记录规则。集群角色定义为 ClusterRole 对象,其中包含用户所需的基于角色的访问控制(RBAC)权限。
				
在日志记录 5.8 及更高版本中,为 LokiStack 提供了以下用于警报和记录规则的集群角色:
| 运行名称 | 描述 | 
|---|---|
| 
									 | 
									具有此角色的用户具有管理级别访问权限来管理警报规则。此集群角色授予在  | 
| 
									 | 
									具有此角色的用户可以查看与  | 
| 
									 | 
									具有此角色的用户有权创建、更新和删除  | 
| 
									 | 
									具有此角色的用户可以读取  | 
| 
									 | 
									具有此角色的用户具有管理记录规则的管理级别访问权限。此集群角色授予在  | 
| 
									 | 
									具有此角色的用户可以查看与  | 
| 
									 | 
									具有此角色的用户有权创建、更新和删除  | 
| 
									 | 
									具有此角色的用户可以读取  | 
11.2.2.1. 例子
要为用户应用集群角色,您必须将现有集群角色绑定到特定用户名。
						集群角色可以是集群或命名空间范围,具体取决于您使用的角色绑定。使用 RoleBinding 对象时,如使用 oc adm policy add-role-to-user 命令时,集群角色仅适用于指定的命名空间。当使用 ClusterRoleBinding 对象时,如使用 oc adm policy add-cluster-role-to-user 命令时,集群角色会应用到集群中的所有命名空间。
					
以下示例命令为指定用户在集群中的特定命名空间中创建、读取、更新和删除(CRUD)权限:
特定命名空间中警报规则 CRUD 权限的集群角色绑定命令示例
oc adm policy add-role-to-user alertingrules.loki.grafana.com-v1-admin -n <namespace> <username>
$ oc adm policy add-role-to-user alertingrules.loki.grafana.com-v1-admin -n <namespace> <username>以下命令为所有命名空间中的警报规则授予指定用户管理员权限:
管理员权限的集群角色绑定命令示例
oc adm policy add-cluster-role-to-user alertingrules.loki.grafana.com-v1-admin <username>
$ oc adm policy add-cluster-role-to-user alertingrules.loki.grafana.com-v1-admin <username>11.2.3. 使用 Loki 创建基于日志的警报规则
					AlertingRule CR 包含一组规格和 webhook 验证定义,用于声明单个 LokiStack 实例的警报规则组。另外,webhook 验证定义支持规则验证条件:
				
- 
							如果 AlertingRuleCR 包含无效的interval周期,则它是一个无效的警报规则
- 
							如果 AlertingRuleCR 包含无效的for周期,则它是一个无效的警报规则
- 
							如果 AlertingRuleCR 包含无效的 LogQLexpr,则它是一个无效的警报规则。
- 
							如果 AlertingRuleCR 包含两个同名的组,则它是一个无效的警报规则。
- 如果以上都不适用,则警报规则被视为有效。
| 租户类型 | AlertingRuleCR 的有效命名空间 | 
|---|---|
| application | |
| audit | 
									 | 
| infrastructure | 
									 | 
先决条件
- Red Hat OpenShift Logging Operator 5.7 及更新的版本
- OpenShift Dedicated 4.13 及更新的版本
步骤
- 创建 - AlertingRule自定义资源 (CR):- 基础架构 AlertingRule CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 创建此AlertingRuleCR 的命名空间必须具有与 LokiStackspec.rules.namespaceSelector定义匹配的标签。
- 2
- labels块必须与 LokiStack- spec.rules.selector定义匹配。
- 3
- infrastructure租户的- AlertingRuleCR 只在- openshift-*,- kube-\*, 或- default命名空间中被支持。
- 4
- kubernetes_namespace_name:的值必须与- metadata.namespace的值匹配。
- 5
- 此必需字段的值必须是critical、warning或info。
- 6
- 这个字段是必须的。
- 7
- 这个字段是必须的。
 - 应用程序 AlertingRule CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 应用 - AlertingRuleCR:- oc apply -f <filename>.yaml - $ oc apply -f <filename>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow