日志服务 通过 Kibana 使用 CLS

日志主题兼容部分 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.6docker 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: 30sxpack.security.enabled: truexpack.data_enhanced.enabled: falseEOF

·{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,开始查询日志。

赞 (0)
上一篇 4天前
下一篇 4天前