
# 配置Kafka生产流量异常告警规则
#### 操作场景
该任务指导用户根据业务需求，在客户端使用命令行工具kafka-topic-monitor.sh来创建和管理Kafka生产流量异常告警规则。当达到配置的告警规则后，会在Manager上报"ALM-38020 Kafka生产流量异常"告警。
#### 约束与限制
该章节操作仅适用于MRS 3.6.0.1及之后版本。
#### 前提条件
- MRS集群管理员已明确业务需求。并准备一个Kafka组件业务用户，该用户属于kafkaadmin用户组。（普通模式不需要）
- 已安装Kafka客户端，例如客户端安装目录为"/opt/client"。
- 已安装KafkaUI实例。
 
#### 操作步骤
1. 以客户端安装用户，登录已安装Kafka客户端的节点。
2. 切换到Kafka客户端安装目录，例如"/opt/client"。 
   **cd /opt/client**
   
   
3. 执行以下命令，切换到Kafka客户端脚本目录。 
   **cd Kafka/kafka/bin**
   
   
4. 配置认证信息。 
   使用kafka-topic-monitor.sh脚本前，需要配置访问KafkaUI的认证信息。配置方式如下：
   - 方式一：在使用[5]kafka-topic-monitor.sh脚本命令行时添加参数
     - -e或--endpoint {*KafkaUI访问地址* }
       KafkaUI访问地址格式：https://{*KafkaUI的IP*}:20026/Kafka/KafkaUI/{instanceId}
       
     
     - -u或--username {*用户名*}（仅集群已启用Kerberos认证（安全模式）时填写）
     
     - -p或--password {*用户密码*} （仅集群已启用Kerberos认证（安全模式）时填写）
     
     
     更多参数详细介绍请参考[脚本参数说明]。
     
   
   - 方式二：配置文件 kafka-topic-monitor.sh脚本默认会自动读取"*Kafka客户端目录*/Kafka/kafka/config"路径下的kafka-topic-monitor.properties文件，该文件默认不存在，需要手动创建，用户也可以使用"-f"参数手动指定配置文件路径。
     kafka-topic-monitor.properties配置文件内容如下：
     ```
     endpoint={URL}   KafkaUI访问地址，格式：https://{KafkaUI的IP}:20026/Kafka/KafkaUI/{instanceId}
     username={USER}  用户名（仅集群已启用Kerberos认证（安全模式）时填写）
     password={PASS}  密码（仅集群已启用Kerberos认证（安全模式）时填写）
     ```
     
   
   
   
   
5. 使用kafka-topic-monitor.sh脚本创建告警规则。
   
   当需要监控某些Topic的生产流量异常时，可以创建告警规则。系统将按照配置的检查周期和触发条件对指定的Topic进行监控。
   更多参数详细介绍请参考[脚本参数说明]。
   例如：
   - 创建新的告警规则，监控名称为"test"的Topic，当生产流量低于1000条/秒时上报重要告警，检查周期为1分钟，平滑次数为1次：
     ```
     ./kafka-topic-monitor.sh --create -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -t "test" -m 1000 -g 1 -P 1
     ```
     
   
   - 创建新的告警规则，监控名称前缀为"test"的Topic，当生产流量低于1000条/秒或高于10000条/秒时上报紧急告警，检查周期为2分钟，平滑次数为2次：
     ```
     ./kafka-topic-monitor.sh --create -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -t "test*" -c 1000 -C 10000 -g 2 -P 2
     ```
     
   
   
   
   
6. 查询告警规则。 
   查看已创建的告警规则列表，或根据条件筛选特定的告警规则。
   例如：
   - 查询所有告警规则：
     ```
     ./kafka-topic-monitor.sh --list -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd>
     ```
     
   
   - 分页查询，每页大小为10，查询第1页：
     ```
     ./kafka-topic-monitor.sh --list -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -n 1 -s 10
     ```
     
   
   - 排序查询，基于创建时间降序排序：
     ```
     ./kafka-topic-monitor.sh --list -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -o DESC -b created_at
     ```
     
   
   - 关键字搜索，查询监控的Topic包含"test"关键字的告警规则：
     ```
     ./kafka-topic-monitor.sh --list -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -k "test"
     ```
     
   
   - 使用--query-by-id参数查询ID为1的告警规则：
     ```
     ./kafka-topic-monitor.sh --query-by-id -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -i 1
     ```
     
   
   
   
   
7. 修改告警规则。 
   当告警规则的条件需要调整时，可以修改已存在的告警规则。
   例如：
   - 将ID为1的告警规则监控的Topic修改为"test\*"，紧急告警上界阈值修改为2000：
     ```
     ./kafka-topic-monitor.sh --modify -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -i 1 -t "test*" -C 2000
     ```
     
   
   - 将ID为2的告警规则的平滑次数修改为3：
     ```
     ./kafka-topic-monitor.sh --modify -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -i 2 -g 3
     ```
     
   
   
   
   
8. 删除告警规则。 
   当不再需要对某个Topic进行生产流量监控时，可以删除对应的告警规则。
   例如，删除ID为1的告警规则：
   ```
   ./kafka-topic-monitor.sh --delete -e https://192.168.1.1:20026/Kafka/KafkaUI/12 -u <user> -p <pwd> -i 1
   ```
   
   
 
 #### 脚本参数说明
使用kafka-topic-monitor.sh脚本时，相关参数如下表所示：
表1脚本参数说明 
| 参数名称                 | 参数解释                                  | 是否必选                 | 默认值                                                                        |
|:---|:---|:---|:---|
| --create             | 创建告警规则。                               | 必须指定一个操作             | 无                                                                          |
| --modify             | 修改告警规则。                               | 必须指定一个操作             | 无                                                                          |
| --delete             | 删除告警规则。                               | 必须指定一个操作             | 无                                                                          |
| --list               | 查询告警规则。                               | 必须指定一个操作             | 无                                                                          |
| --query-by-id        | 基于ID查询告警规则。                           | 必须指定一个操作             | 无                                                                          |
| -e, --endpoint       | KafkaUI的终端节点地址。                       | 是                    | 无                                                                          |
| -u, --username       | 用户名。                                  | 安全模式下必选              | 无                                                                          |
| -p, --password       | 密码。                                   | 安全模式下必选              | 无                                                                          |
| -f, --config-file    | kafka-topic-monitor.properties配置文件路径。 | 否                    | *Kafka客户端目录*/Kafka/kafka/config/kafka-topic-monitor.properties文件，该文件默认不存在。 |
| -t, --topic          | 告警规则监控的Topic，支持使用"\*"通配符。             | 创建告警规则时必选            | 无                                                                          |
| -M, --major-upper    | 重要告警的阈值上限。                            | 创建或修改告警规则时，必须使用该参数。  | 无                                                                          |
| -m, --major-lower    | 重要告警的阈值下限。                            | 创建或修改告警规则时，必须使用该参数。  | 无                                                                          |
| -C, critical-upper   | 紧急告警的阈值上限。                            | 创建或修改告警规则时，必须使用该参数。  | 无                                                                          |
| -c, --critical-lower | 紧急告警的阈值下限。                            | 创建或修改告警规则时，必须使用该参数。  | 无                                                                          |
| -g, --trigger-count  | 告警规则的平滑次数。                            | 是                    | 无                                                                          |
| -P, --check-period   | 告警规则的周期。                              | 是                    | 无                                                                          |
| -i, --id             | 告警规则的ID。                              | 修改、删除、根据ID查询告警规则时必选。 | 无                                                                          |
| -n, --page-num       | 查询告警规则时，指定当前查询的页码。                    | 否                    | 1                                                                          |
| -s, --page-size      | 查询告警规则时，指定每页最多展示多少告警规则。               | 否                    | 10                                                                         |
| -o, --order          | 查询告警规则时，字段排序的顺序，可以指定升序或者降序。           | 否                    | DESC（降序）                                                                   |
| -b, --order-by       | 查询告警规则时，排序依据的字段名。                     | 否                    | created_at（告警规则的创建时间）                                                      |
| -k, --search-content | 查询告警规则时，搜索的告警规则监控Topic的关键字。           | 否                    | ""（空字符串）                                                                   |
| -h, --help           | 输出脚本的使用说明。                            | 否                    | 无                                                                          |
   
