BLS接入Kibana
BLS接入Kibana步骤
工作原理
需要在客户端环境中部署Kibana、Proxy和Elasticsearch。
- Kibana: 用于查询、分析和可视化展示数据。
- Elasticsearch: 用于存储Kibana的Meta数据(主要为配置信息,数据量很少,可选较低配机器部署), 由于Kibana的Meta信息经常需要更新,而BLS日志服务不支持更新操作。因此需要部署一个Elasticsearch专门用于存储Kibana的Meta数据。
- Proxy: 用于区分Kibana对Meta数据和日志服务Elasticsearch兼容接口的API请求,需要部署一个Proxy对Kibana的API请求进行路由。
1. 安装kibana
目前提供Helm和Docker两种方式在客户环境进行部署安装
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各区域服务地址见服务域名
1kibana:
2 ingress:
3 # 根据cce集群->运维管理->组件管理下搜ingress,查看已安装的ingress控制台确定该值
4 # Nginx Ingress Controller 设置为nginx,目前只支持nginx类型
5 className: "nginx"
6 # 可以为空,如果需要通过域名访问kibana,可以设置该值
7 domain: ""
8
9elasticsearch:
10 # 请根据实际情况修改es的密码,同时也是kibana对应账号为elastic的密码
11 password: "changeme"
12 data:
13 # 云厂商,支持baidu 如果为空,表示不持久化数据,会导致elasticsearch重启后之前的数据丢失
14 cloudVendor: baidu
15
16bls:
17 # 百度云帐号访问密钥
18 ak: ***********************
19 # 百度云帐号访问密钥
20 sk: ***********************
21 # 百度云帐号ID
22 userid: ***********************
23 # bls地址
24 endpoint: http://bls-log.yq.baidubce.com
(3)执行以下命令,使用Helm部署
1# 下载bls-kibana的chart包
2wget -O bls-kibana-1.0.0.tgz https://helm-online.bj.bcebos.com/bls-kibana/bls-kibana-1.0.0.tgz
3# 部署bls-kibana
4helm install bls-kibana bls-kibana-1.0.0.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*"