场景
现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS
使用方法
部署架构
这里蓝色部分是需要客户端部署的组件
- Kibana 就是用来可视化的
- Proxy用来区分Kibana的请求,将SLS相关的转发到SLS的ES兼容接口
- Elasticsearch 用来存Kibana的Meta
等等,为什么这里还需要一个ES?
原因是SLS的Logstore不支持更新,很多Meta类的数据不适合存在SLS。
而Kibana有很多元数据要存储,比如Kibana的图表配置、Index Pattern配置等
因此需要部署一个ES实例,这个ES实例只会存Kibana的元数据,所以它的资源占用非常小。
部署过程
部署es 7
sudo mkdir /data # Elasticsearch数据的存储目录, 请根据实际情况修改。 sudo chmod 777 /data # 配置权限。 sudo docker run -d --name es -p 9200:9200 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms6G -Xmx8G" \ -e ELASTIC_USERNAME=elastic \ -e ELASTIC_PASSWORD=密码 \ -e xpack.security.enabled=true \ -v /data:/usr/share/elasticsearch/data \ elasticsearch:7.17.3
部署完成后可以通过 下面命令
curl -u elastic:密码 http://${Elasticsearch所在机器的IP地址}:9200
验证是否work,正常应该是返回200
部署proxy
sudo docker run -d --name proxy \ -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \ -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_PROJECT=prjA \ -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \ -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \ -p 9201:9201 \ -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
SLS_ENDPOINT 格式是 https://${project}.${sls endpoint}
如果有第二个project的话,可以再加环境变量SLS_PROJECT2=prjB 如果第二个project对应的endpoint和SLS_ENDPOINT不同的话,可以设置对应SLS_ENDPOINT2值。同理可最多加32个project
部署完成后可以通过 下面命令
curl -u elastic:密码 http://${Proxy所在机器的IP地址}:92001
验证是否work,正常应该是返回200
部署Kibana
sudo docker run -d --name kibana \ -e ELASTICSEARCH_HOSTS=http://${Proxy所在机器的IP地址}:9201 \ -e ELASTICSEARCH_USERNAME=elastic \ -e ELASTICSEARCH_PASSWORD=密码 \ -e XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true \ -p 5601:5601 \ kibana:7.17.3
访问Kibana
浏览器访问 http://${部署Kibaba的IP地址}:5601 输入账号密码登录Kibana
配置Index Pattern
选择Stack Managment
点击Index Pattern Tab,在Index pattern列表中看不到数据是正常的,日志服务的logstore映射到Kibana中的Index patterns需要手动创建。在提示框中单击create an index pattern against hidden or system indices.
在Create Index Pattern页,Name填写格式为 ${project}.${logstore}, 注意这里比必须完全填写,不支持*匹配
点完成Create index pattern完成pattern创建,然后进入Discover里就可以查询数据了
查询Logstore
Kibana的查询框中可以选择KQL和Lucene 两种方式,SLS 的ES兼容接口都进行了支持。
简单的过滤查询
复杂一些query、filter都可以查询
可视化图表
那么除了查询,可以用kibana来做可视化吗?当然可以! 选择Dashboard
进入后点击 Create Dashboard来创建一个图表
通过设置,横轴、纵轴的字段和统计方式,可以很方便地做出想要图
比如最简单的统计一个请求访问数的柱状图,时间为横轴,记录数为纵轴
现在我想看到每个柱子中,status的情况,可以选择Break down by的字段为status
小结
本文演示了使用Kibana连sls es兼容接口进行查询和分析的方法,对于kibana的query和可视化能力都能正常对接和使用。适合下面两种情况:
- 如果您之前的使用习惯是Kibana,而日志已经存在了阿里云SLS上,可以使用该方案对接
- 如果您现在使用的是标准的ELK方案,但厌倦了es使用时维护工作或者调优,不妨试一试阿里云sls的方案(c++底层、serverless、低成本、es兼容)
期待您的使用