共计 2522 个字符,预计需要花费 7 分钟才能阅读完成。
简介: 本文演示了使用 Kibana 连接阿里云 SLS 兼容接口进行查询和分析的方法。
什么是 SLS?
阿里云日志服务(Simple Log Service,简称 SLS)是云原生观测分析平台,为 Log/Metric/Trace 等数据提供大规模、低成本、实时平台化服务。
场景
本文通过 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 来做可视化吗?当然可以!
选择 Dashboard:

进入后点击 Create Dashboard 来创建一个图表:

比如最简单的统计一个请求访问数的柱状图,时间为横轴,记录数为纵轴:

现在我想看到每个柱子中 status 的情况,可以选择 Break down by 的字段为 status:

小结
本文演示了使用 Kibana 连 sls es 兼容接口进行查询和分析的方法,对于 kibana 的 query 和可视化能力都能正常对接和使用。
适合下面两种情况:
- 如果您之前的使用习惯是 Kibana,而日志已经存在了阿里云 SLS 上,可以使用该方案对接。
- 如果您现在使用的是标准的 ELK 方案,但厌倦了 ES 使用时维护工作或者调优,不妨试一试阿里云 SLS 的方案(c++ 底层、serverless、低成本、ES 兼容)。







很久没更新了。
大佬,不知道过了这么久这个脚本还有没有在…
被投诉下线了。
点了那个链接?
被投诉下线了。
https://idea.hacks.t…