1. 模块概述

KibanaModule 是一个基于 elk的日志查询模块,用于实现与 elk服务的交互,支持日志查询、数据检索和资源管理。以下是该模块的主要功能和方法说明:
  1. 主要功能

    • 日志查询: 通过 KQL 查询语法获取日志数据。
    • 时间范围构建: 自动构建查询的时间范围。
    • KQL 解析: 解析 KQL 语法并生成查询条件。
    • 响应解析: 解析 Kibana API 响应并转换时间戳。
    • 会话管理: 管理 HTTP 会话,包括基本认证和会话 ID。
  1. 方法说明

    1.   初始化

    • init(config: Dict[str, Any] = None): 初始化 Kibana 模块,可以传入配置字典。
    • init_from_config(config: Dict[str, Any]): 从配置字典初始化参数。
    1.   日志查询

      search_by_kql(**kwargs)
      描述: 使用 KQL 查询日志。
    参数:
    kql (str): KQL 查询字符串。
    minutes (int, 可选): 查询时间范围(分钟),默认为 15 分钟。
    size (int, 可选): 返回的日志数量,默认为 100 条。
    fields (List[str], 可选): 返回的字段列表,例如 ['@timestamp', 'message', 'app_name', 'log_level']。
    saveAsVariable (str, 可选): 将查询结果保存到指定变量。
    1.   会话管理

      _init_session()
      描述: 初始化 HTTP 会话,包括基本认证和会话 ID。
    1.   时间范围构建

      _build_time_range(minutes: int = 15)
      描述: 构建查询的时间范围。
    参数:
    minutes (int, 可选): 查询时间范围(分钟),默认为 15 分钟。
    1.   KQL 解析

      _parse_kql_to_conditions(kql: str) -> List[Dict[str, Any]]
      描述: 解析 KQL 语法并生成查询条件。
    参数:
    kql (str): KQL 查询字符串。
    1.   响应解析

      _parse_search_response(response_data: Dict[str, Any]) -> Dict[str, Any]
      描述: 解析 Kibana API 响应并转换时间戳。
    参数:
    response_data (Dict[str, Any]): Kibana API 响应数据。
    1.   清理资源

      cleanup() -> Dict[str, Any]
      描述: 清理资源,关闭会话。
  1. 环境准备

安装依赖
auto-test-framework-common==0.1.62
  1. 初始化模块

kabana_module: class_path: "src.modules.kibana.kibana.KibanaModule" # 模块的完整类路径。 kibana_url: "http://kibanamlsxy.bn.msxf.local/" #Kibana 服务的 URL username: XXX # Kibana 用户名 password: “XXX” #Kibana 密码(可以是加密后的密码) config_name: "icc2.0" #环境配置名称 env_name: "XXX" #环境名称 verify_ssl: False #是否验证 SSL 证书 timeout: 60 #请求超时时间(秒) indices: [ "mls-ecs-lg-45f88e13a8974bb9ac-*", "mls-ecs-lg-47d4bee4b3734d569e-*", "mls-ecs-lg-d6509dcc52f54f59a6-*", "mls-ecs-lg-946507243eb94e97a2-*", "mls-ecs-lg-530edcec3ca142f1bd-*", "mls-ecs-lg-26daa45f3b0841e1a5-*", "mls-ecs-lg-64a7f676c9a14472b3-*", "mls-ecs-lg-3829c840d658479c80-*", "mls-ecs-lg-4525d96a086249cd81-*", "mls-ecs-lg-2863df5bc5c64e1bad-*", "mls-ecs-lg-2a5bb2e2a37a441d8c-*" ] #默认索引列表。
  1. 示例

import yaml
from kibana import KibanaModule

management = InstanceManagement()
kibana: KibanaModule = management.get_or_create("kabana_module")
# 执行查询
specific_kql = 'app_name.keyword : "icc-agent-portal"  and log_level.keyword : "ERROR"'
result3 = kibana.search_by_kql(
    kql=specific_kql,
    minutes=5,
    size=20
)
print(f"查询结果: {result}")
 
posted on 2026-03-09 10:56  小海海宁宁  阅读(5)  评论(0)    收藏  举报