BLS接入Kibana
概述
本文档介绍如何接入 BLS 日志服务数据到Kibana,并通过 Kibana 查询、分析和可视化展示 BLS 日志服务数据。
工作原理
需要在客户端环境中部署 Kibana、Proxy 和 Elasticsearch。
- Kibana: 用于查询、分析和可视化展示数据。
- Elasticsearch: 用于存储 Kibana 的 Meta 数据(主要为配置信息,数据量很少,可选较低配机器部署), 由于 Kibana 的 Meta 信息经常需要更新,而 BLS 日志服务不支持更新操作。因此需要部署一个 Elasticsearch 专门用于存储 Kibana 的 Meta 数据。
- Proxy: 用于区分 Kibana 对 Meta 数据和日志服务 Elasticsearch 兼容接口的API请求,需要部署一个 Proxy 对 Kibana 的 API 请求进行路由。

1. 安装kibana
目前提供 Helm 和D ocker 两种方式在客户环境进行部署安装
1.1 Helm 部署
1.1.1 前提条件
确保云容器服务 Kubernetes 集群中有以下组件:
- csi-provisioner (如CCE CSI CDS Plugin、CCE CSI BOS Plugin等)
- CoreDNS
- Nginx Ingress Controller (如 CCE Ingress Nginx Controller)
1.1.2 操作步骤
(1)创建命名空间(Namespace)
1# 创建namespace
2kubectl create namespace bls-kibana
(2)创建并编辑 values.yaml 文件,内容如下,请根据实际情况修改,其中 BLS 各区域服务地址见服务域名
1# 云厂商,支持 ali 和 baidu 如果为空,表示不持久化数据,会导致 elasticsearch 重启后之前的数据丢失
2cloudVendor:
3
4kibana:
5 ingress:
6 # 根据cce集群->运维管理->组件管理下搜ingress,查看已安装的ingress控制台确定该值
7 # Nginx Ingress Controller 设置为nginx,目前只支持nginx类型
8 className: "nginx"
9 # 可以为空,如果需要通过域名访问kibana,可以设置该值
10 domain: ""
11
12elasticsearch:
13 # 请根据实际情况修改es的密码,同时也是kibana对应账号为elastic的密码
14 password: "changeme"
15
16bls:
17 # 百度云帐号访问密钥
18 ak: ***********************
19 # 百度云帐号访问密钥
20 sk: ***********************
21 # 百度云帐号ID
22 userid: ***********************
23 # bls地址
24 endpoint: http://bls-log.yq.baidubce.com
25 # 支持的项目列表,多个用逗号分隔,默认为空,表示支持所有项目
26 projects:
(3)执行以下命令,使用Helm部署
1# 下载bls-kibana的chart包
2wget -O bls-kibana-1.0.1.tgz https://helm-online.bj.bcebos.com/bls-kibana/bls-kibana-1.0.1.tgz
3# 部署bls-kibana
4helm install bls-kibana bls-kibana-1.0.1.tgz -f values.yaml --namespace bls-kibana
(4)部署完成后,在浏览器中输入 http://${ingress地址}, 其中 ingress地 址可通过命令行或者CCE页面查看

进入 Kibana 的页面

1.2 Docker部署
1.2.1 部署Elasticsearch
(1) 在服务器上执行如下命令,部署 Elasticsearch
1// 从百度云镜像仓库下载 elasticsearch 镜像
2sudo docker pull registry.baidubce.com/bce_bls/elasticsearch:8.12.0
3// Elasticsearch数据的存储目录, 请根据实际情况修改。
4sudo mkdir /data
5// 配置权限。
6sudo chmod 777 /data
7// 启动es
8sudo docker run -d --name bls-elasticsearch -p 9200:9200 \
9 -e "discovery.type=single-node" \
10 -e "ES_JAVA_OPTS=-Xms1G -Xmx1G" \
11 -e "xpack.security.enabled=true" \
12 -e "xpack.security.http.ssl.enabled=false" \
13 -e "ELASTIC_PASSWORD=xxxxx" \
14 -v /data:/usr/share/elasticsearch/data \
15 registry.baidubce.com/bce_bls/elasticsearch:8.12.0
(2)部署完成后,请执行如下命令验证 Elasticsearch 是否部署成功。如果使用公网 IP,必须在服务器的安全组规则中添加 9200 端口
1curl http://${Elasticsearch所在机器的IP地址}:9200
如果返回结果是包含如下的 JSON 格式数据,则表示 Elasticsearch 已经成功部署

(3)创建 Kibana 访问账号
1curl -u elastic:xxxxx -X POST "http://${Elasticsearch所在机器的IP地址}:9200/_security/user/kibana_user" -H "Content-Type: application/json" -d '{
2 "password": "kibana_pass",
3 "roles": ["kibana_system","kibana_admin"],
4 "full_name": "Kibana System User"
5}' -k
1.2.2 部署 Proxy
(1)在服务器上执行如下命令,部署 bls-es-proxy 服务
1// 从百度云镜像仓库下载bls-es-proxy镜像
2sudo docker pull registry.baidubce.com/bce_bls/bls-es-proxy:latest
3
4// ES_ENDPOINT es的地址
5// BLS_ENDPOINT bls地址
6// AK 百度云帐号访问密钥
7// SK 百度云帐号访问密钥
8// USER_ID 百度云帐号ID
9sudo docker run -d --name bls-es-proxy \
10 -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \
11 -e BLS_ENDPOINT=${bls日志服务域名} \
12 -e AK=${baiduyunAccessId} \
13 -e SK=${baiduyunAccessKey} \
14 -e USER_ID=${baiduyunAccessKey} \
15 -p 8077:8077 \
16 registry.baidubce.com/bce_bls/bls-es-proxy:latest
(2)部署完成后,请执行如下命令验证 bls-es-proxy 是否部署成功。如果使用公网IP,必须在服务器的安全组规则中添加 8077 端口。
1curl http://${bls-es-proxy所在机器的IP地址}:8077
如果返回结果是包含如下的 JSON 格式数据,则表示 bls-es-proxy 已经成功部署

1.2.3 部署Kibana
见如下示例,部署 Kibana。本文以 Kibana 8.12.0 版本为例。
1// 从百度云下载 kibana 镜像
2sudo docker pull registry.baidubce.com/bce_bls/kibana:8.12.0
3
4// ELASTICSEARCH_HOSTS proxy代理的地址
5sudo docker run -d --name bls-kibana \
6 -e ELASTICSEARCH_HOSTS=http://${Proxy所在机器的IP地址}:8077 \
7 -e ELASTICSEARCH_USERNAME=kibana_user \
8 -e ELASTICSEARCH_PASSWORD=kibana_pass \
9 -p 5601:5601 \
10 registry.baidubce.com/bce_bls/kibana:8.12.0
部署完成后,在浏览器中输入 http://${部署Kibana的IP地址}:5601 进入 Kibana 页面。如果使用公网 IP,必须在服务器的安全组规则中添加 9200 端口

2.访问Kibana
2.1使用浏览器访问 Kibana 服务
在浏览器输入:http://localhost:30601/ 在左侧导航栏中,选择Analytics->Discover
重要:使用 Kibana 和 Elasticsearch 兼容接口分析日志服务数据时,目前只支持使用 Discover和Dashboards 这两个模块。

2.2创建数据视图
(1)如果是首次使用,会出现如下界面,可以 Dismiss 帮助,然后选择创建数据视图

然后给数据视图设置名称,选择对应的 BLS 日志集,如果 default 默认日志组下的日志集,直接输入日志集内容右侧选择具体日志集,如果不是 default 默认日志组,需用$分割 BLS 日志组和日志集名称,设置好之后保存数据视图到 kibana 中
重要:这里需要使用全名称,不能使用*通配符模式,时间字段需要保持默认的@timestamp字段

(2)后续再次添加数据视图,可点击 Analytics->Discover->数据视图下拉框->创建数据视图,进行创建

2.3使用视图
在页面左上角选择目标视图,在页面右上角选择时间范围,查询日志数据。

3.查询案例
(1)指定字段查询比全文检索查询查询效率更高,推荐指定字段查询
1level: "info"

如下全文检索查询语句可能在某些情况下被翻译成 sql 字段,concat 后再匹配,导致查询效率低下
1"info"
(2)使用精准的匹配比使用*通配查询效率更高
1method:"POST"

如下查询语句使用*通配是不友好的,因为会触发全文扫描,在数据量大的情况下,响应时间会增加。
1method:"PO*"
评价此篇文章
