文档中心>日志服务>开发者指南>通过 Kibana 使用 CLS

通过 Kibana 使用 CLS

最近更新时间:2026-06-15 17:36:31

我的收藏

操作场景

日志主题兼容部分 Elasticsearch 接口及 DSL,通过这些接口可以通过 Kibana 使用 CLS。当您从 Elasticsearch 迁移到日志服务时,这可以降低您的迁移复杂度。

前提条件

注意:
该功能目前仅部分用户或日志主题支持,如需使用请 联系我们 开启功能白名单。
仅支持日志主题,日志需开启索引才能使用对应的 DSL,详情请参见 索引配置
日志服务的兼容接口基于 Elasticsearch 7.10版本,仅支持 Kibana 7.x 版本访问。
低频存储不支持聚合 DSL,不支持 Kibana 中的大多数统计图表。

部署架构


Kibana:用于查询数据,可按照操作步骤部署新的 Kibana,也可使用已有 Kibana(需参照操作步骤将 Kibana 访问 ES 的地址修改为 Proxy 地址)
Proxy:用于分发 Kibana 请求,将日志数据查询请求分发至日志服务 CLS,将 Kibana 其它配置请求分发至 ES 集群
CLS:日志服务 CLS 中的日志主题
ES:迷你集群,用于存储 Kibana 的配置信息,数据量极低,可按照操作步骤部署新的 ES,也可使用已有 ES

操作步骤

步骤1:创建子用户,授权 Kibana 访问 CLS

1. 建议您单独创建一个子账号,使用该账号的 SecretId 及 SecretKey。该账号仅授予如下接口权限即可,配置方式请参见 子账号授权
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cls:DescribeTopics",
"cls:SearchLog"
],
"resource": [
"*"
]
}
]
}

步骤2:部署 Kibana 相关环境

使用 Docker 部署
使用 Helm 部署
1. 部署 ES (迷你集群),请替换其中的{es_password}为您需要设定的 ES 访问密码。
docker run -d \\
--name elasticsearch-7.10.2 \\
-p 9200:9200 \\
-e "discovery.type=single-node" \\
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \\
-e "xpack.security.enabled=true" \\
-e "ELASTIC_PASSWORD={es_password}" \\
docker.elastic.co/elasticsearch/elasticsearch:7.10.2
2. 部署 Proxy。
单地域/账户
多地域/账户
docker run -d \\
--name cls-kibana-proxy \\
-p 9201:9201 \\
-e META_ES_ENDPOINT={es地址, http://ip:port} \\
-e META_ES_USERNAME={es_user} \\
-e META_ES_PASSWORD={es_password} \\
-e CLS_REGION={region} \\
-e CLS_SECRET_ID={SECRET_ID} \\
-e CLS_SECRET_KEY={SECRET_KEY} \\
-e CLS_SYNC_ENABLED=true \\
-e CLS_SYNC_FILTERS=* \\
gz-cls-images.tencentcloudcr.com/public/kibana-proxy:alpha-v0.6
docker run -d \\
--name cls-kibana-proxy \\
-p 9201:9201 \\
-e META_ES_ENDPOINT={es地址, http://ip:port} \\
-e META_ES_USERNAME={es_user} \\
-e META_ES_PASSWORD={es_password} \\
-e CLS_REGION={region} \\
-e CLS_SECRET_ID={SECRET_ID} \\
-e CLS_SECRET_KEY={SECRET_KEY} \\
-e CLS_SYNC_ENABLED=true \\
-e CLS_SYNC_FILTERS=* \\
-e CLS_REGION_1={region_1} \\
-e CLS_SECRET_ID_1={SECRET_ID} \\
-e CLS_SECRET_KEY_1={SECRET_KEY} \\
-e CLS_SYNC_FILTERS_1=* \\
gz-cls-images.tencentcloudcr.com/public/kibana-proxy:alpha-v0.6
变量说明如下:
变量
必填
说明
META_ES_ENDPOINT
ES(迷你集群)访问地址,格式为 http://ip:port
META_ES_USERNAME
ES 访问用户名,默认为 elastic
META_ES_PASSWORD
ES 访问密码
CLS_REGION
日志主题所属 地域,例如 ap-guangzhou
CLS_SECRET_ID
子账号 SecretId
CLS_SECRET_KEY
子账号 SecretKey
CLS_SYNC_ENABLED
是否开启自动同步,开启后可自动将日志主题添加到 Kibana Index Pattern 中
默认 false,不开启自动同步,开启需要配置 true
CLS_MAX_INDEX_PATTERNS
Kibana 中 IndexPattern 最大数量,默认 1000,超出后不再自动新增 Index Pattern
CLS_SYNC_FILTERS
开启自动同步时,将满足筛选条件的日志主题同步至 Kibana Index Pattern 中
空/不配置:不同步任何日志主题
* :同步所有日志主题
筛选条件:使用 json 字符串设定筛选条件,支持的筛选条件参见 获取主题列表 API 中的 Filters 参数,例如'{"logsetName": ["logset-dev"]}'
LOG_LEVEL
日志级别:DEBUG、INFO、WARN, 默认 INFO
PROXY_AUTH
Proxy 是否开启认证,默认 true
CLS_ES_ENDPOINT
日志服务 Elasticsearch 兼容接口地址,默认为外网地址
外网地址:https://${region}.cls.tencentcs.com
内网地址:https://${region}.cls.tencentyun.com
其中${region}地域简称,请使用日志主题所在的地域,例如 ap-guangzhou
CLS_API_ENDPOINT
日志服务 API 地址,默认为外网地址
外网地址:https://cls.tencentcloudapi.com(仅支持非金融区)
内网地址:https://cls.internal.tencentcloudapi.com
注意:
有多个地域或者账号时,在对应变量名后增加_{自增 id},例如 CLS_REGION_1、CLS_REGION_2。
3. 部署 Kibana。
3.1 创建 Kibana 配置文件。
cat > ./kibana.yml << 'EOF'
server.host: "0.0.0.0"
# Elasticsearch 配置
elasticsearch.hosts: ["{proxy_address}"]
elasticsearch.username: "{es_user}"
elasticsearch.password: "{es_password}"
elasticsearch.shardTimeout: 30s
xpack.security.enabled: true
xpack.data_enhanced.enabled: false
EOF
{proxy_address}:Proxy 访问地址,格式为 http://ip:port
{es_user}:ES(迷你集群)访问用户名,默认为 elastic。
{es_password}:ES(迷你集群)访问密码。
3.2 启动 Kibana。
docker run -d \\
--name kibana-7.10.2 \\
-p 5601:5601 \\
-v ./kibana.yml:/usr/share/kibana/config/kibana.yml:ro \\
docker.elastic.co/kibana/kibana:7.10.2
1. 创建配置文件 values.yaml,内容如下。请替换其中的{es_password}为您需要设定的 ES 访问密码,替换其中的{region}为日志主题所属地域,替换{SECRET_ID}{SECRET_KEY}为子账户密钥。
单地域/账户
多地域/账户
elasticsearch:
enabled: true
password: "{es_password}"

kibana-proxy:
image:
tag: "v0.9.0"
env:
CLS_SYNC_ENABLED: "true"
CLS_MAX_INDEX_PATTERNS: "1000"

clsRegions:
- CLS_REGION: "{region}"
CLS_SECRET_ID: "{SECRET_ID}"
CLS_SECRET_KEY: "{SECRET_KEY}"
CLS_SYNC_FILTERS: '*'
elasticsearch:
enabled: true
password: "{es_password}"

kibana-proxy:
image:
tag: "v0.9.0"
env:
CLS_SYNC_ENABLED: "true"
CLS_MAX_INDEX_PATTERNS: "1000"

clsRegions:
- CLS_REGION: "{region}" # 多地域/账户配置
CLS_SECRET_ID: "{SECRET_ID}"
CLS_SECRET_KEY: "{SECRET_KEY}"
CLS_SYNC_FILTERS: '*'
- CLS_REGION: "{region}" # 多地域/账户配置
CLS_SECRET_ID: "{SECRET_ID}"
CLS_SECRET_KEY: "{SECRET_KEY}"
CLS_SYNC_FILTERS: '*'
变量说明如下:
变量
必填
说明
CLS_REGION
日志主题所属地域,例如 ap-guangzhou
CLS_SECRET_ID
子账号 SecretId
CLS_SECRET_KEY
子账号 SecretKey
CLS_SYNC_ENABLED
是否开启自动同步,开启后可自动将日志主题添加到 Kibana Index Pattern 中。
默认 false,不开启自动同步,开启需要配置 true
CLS_MAX_INDEX_PATTERNS
Kibana 中 IndexPattern 最大数量,默认 1000,超出后不再自动新增 Index Pattern
CLS_SYNC_FILTERS
开启自动同步时,将满足筛选条件的日志主题同步至 Kibana Index Pattern 中。
空/不配置:不同步任何日志主题
* :同步所有日志主题
筛选条件:使用 json 字符串设定筛选条件,支持的筛选条件参见 获取主题列表 API 中的 Filters 参数,例如'{"logsetName": ["logset-dev"]}'
CLS_ES_ENDPOINT
日志服务 Elasticsearch 兼容接口地址,默认为外网地址
外网地址:https://${region}.cls.tencentcs.com
内网地址:https://${region}.cls.tencentyun.com
其中${region}地域简称,请使用日志主题所在的地域,例如 ap-guangzhou
CLS_API_ENDPOINT
日志服务 API 地址,默认为外网地址
外网地址:https://cls.tencentcloudapi.com(仅支持非金融区)
内网地址:https://cls.internal.tencentcloudapi.com
说明:
更多部署方式及说明,参见 压缩包 中的 examples 文件夹,例如 Kibana 免密模式部署、使用外置 ES 部署。
2. 在容器服务 TKE 集群中执行如下命令。
helm install cls-kibana-proxy-stack https://cls-kibana-proxy-1254077820.cos.ap-guangzhou.myqcloud.com/cls-kibana-proxy-stack-0.0.1.tgz -f values.yaml -n cls --create-namespace
3. 等待部署完成后,根据您的集群环境,启用 Kibana 服务外部访问。

步骤3:在 Kibana 中创建 Index pattern

说明:
如果在 Proxy 配置中已经启用了自动同步,CLS_SYNC_ENABLED=true,无需再执行本步骤。
1. 打开浏览器,访问 Kibana 地址(例如:http://<your-kibana-host>:5601)。
2. 输入用户名和密码登录。
3. 单击左侧导航栏的 Stack Management
4. 在左侧菜单中找到 Kibana 分类,单击 Index Patterns
5. 单击页面右上角的 Create index pattern
6. Index pattern name 输入框中输入要查询的日志主题 ID,Timestamp field 选择 @timestamp。
7. 单击 Create index pattern 按钮完成创建。

步骤4:在 Kibana 中查询日志

1. 单击左侧导航菜单按钮,打开导航栏,单击 Discover
2. 在左侧选择上一步中创建的 Index pattern,开始查询日志。