【SLS开源兼容系列】使用Kibana访问SLS

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测监控 Prometheus 版,每月50GB免费额度
简介: 现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS

场景

现在通过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兼容)

期待您的使用

参考文档

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
10天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
1月前
|
存储 运维 监控
开源日志Graylog
【10月更文挑战第21天】
134 8
|
2月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
120 14
|
1月前
|
存储 数据采集 监控
开源日志Fluentd
【10月更文挑战第21天】
41 7
|
1月前
|
存储 监控 安全
|
1月前
|
存储 数据采集 监控
开源日志分析Elasticsearch
【10月更文挑战第22天】
46 5
|
1月前
|
机器学习/深度学习 运维 监控
开源日志分析Kibana
【10月更文挑战第22天】
39 3
|
1月前
|
存储 JSON 监控
开源日志分析Logstash
【10月更文挑战第22天】
47 1
|
1月前
|
存储 运维 监控
开源日志分析工具
【10月更文挑战第20天】
77 3
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2