前言
在项目中,或者开发过程中,出现bug或者其他线上问题,开发人员可以通过查看日志记录来定位问题。通过日志定位 bug 是一种常见的软件开发和运维技巧,只有观察日志才能追踪到具体代码。在软件开发过程中,开发人员会在代码中添加日志记录,以记录程序的运行情况和异常信息。当程序出现问题时,就可以通过日志检索来定位。所以搭建一个高性能日志系统或者便捷查询的日志系统是十分重要的。
本文主要是讲解腾讯云大数据 ES Serverless,在日志检索的使用,并且通过案例说明ES Serverless如何做到开箱即用,0部署的,使得日志检索跟便携,对于ES小白也能得心应手。
Elasticsearch Service介绍
Elasticsearch Service简介
Elasticsearch Serverless 服务是腾讯云基于自研云原生 Serverless 技术架构打造的云端一站式全托管 Elasticsearch 服务,提供自动弹性、完全免运维的产品能力,有效解决日志分析、指标监控等业务场景下波峰波谷导致的资源成本高等问题。同时,完全兼容 ELK 生态,拥有端到端的数据接入、数据管理、数据可视化等产品功能,提供开箱即用的产品体验。
为什么使用Elasticsearch Service
易于部署和管理
轻点鼠标,即可在数分钟内创建 ES 集群、Logstash 集群,建立 Beats 管理中心,结合便捷的监控告警,弹性伸缩、集群智能巡检等,助您轻松应对集群日常运维。
费用低廉
引入极致性价比的腾讯自研星星海服务器,和性能卓越而价格低廉的本地盘机型(高 IO 型/大数据型),结合冷热分离、自研索引压缩算法等,帮您极大降低集群拥有成本。
强劲自研内核
自研熔断限流、压缩编码、内存优化、读写性能优化等特性,引入腾讯自研 Kona JDK,大幅提升集群性能、稳定性和成本优势。是开源社区全球贡献最多的第三方企业之一。
Elasticsearch 高级特性
集成登录认证、权限控制、监控告警、机器学习、SQL 等 Elasticsearch 高级特性(X-Pack),提升 ES 集群的安全、运维和深度探索能力。
高可用
支持 COS 备份恢复,跨地域/可用区多活,避免意外造成的数据丢失或停服。自研针对高并发和大查询的熔断限流等内核技术,大幅提升集群稳定性。
安全加固
通过逻辑隔离的私有网络,内外网访问控制、登录鉴权、细粒度权限控制等,切实保证您云上资源的安全。
为什么使用Elasticsearch Service作为日志检索呢?相信如果自己搭建 ELK(Elasticsearch、Logstash、Kibana),就知道是一个相对繁琐的过程,需要安装和配置多个组件。还要自己部署这三个插件,并且也是需要性能较好的服务器,途中还会有其他奇奇怪怪的问题,本人也是经历的,十分的麻烦。但是使用Elasticsearch Service,这些步骤都可以省略,只要关注,项目日志如何接入就行。
Elasticsearch Service开通
Elasticsearch Service官网:https://cloud.tencent.com/act/pro/es_serverless
而且现在也是有优惠券体验,可以先尝鲜。
领取完优惠券之后,就可以去开通体验啦。
Elasticsearch Service索引创建
产品开通成功之后,进入首页,在左边菜单点击,日志分析
在进行日志检索之前,需要先创建索引,在日志分析中,创建空索引,比如要检索商品,可以创建索引:product
如果第一次进来,没有项目空间,是要先创建项目空间的
点击确认创建之后,回到日志分析首页,可以看到刚刚创建索引
Elasticsearch Service索引配置管理
创建索引之后,点击进入索引,可以对索引进行配置,比如,检索商品product,可能需要商品id,商品名字,商品价格等字段,都可以在配置中添加。比起原生自己搭建,是不是方便很多,直接可以在可视化面板上添加索引字段。
切换成JSON模式,也可看到,这些字段其实也可以在Kibana进行添加的
Elasticsearch Service检索分析
前面索引字段已经创建完成了,接下来就可以进行数据添加,并且通过Kibana进行检索了,当然,腾讯Elasticsearch Service已经是搭建好对应的kibana了,只要进入提供的公网访问地址就行,都不用我们再去安装部署。
Kibana 访问
点击索引的基础信息,可以看到,右边的访问控制,有用户名和登录密码,以及Kibana公网访问地址
复制公网访问地址,打开之后,使用用户名和密码登录,就是我们熟悉的Kibana界面了,在这里就可以对索引进行操作了,包括Elasticsearch的DSL语句查询
查询索引结构
进入Kibana之后,在console中进行Rest url 操作了,比如可以查询,刚刚在ES Serverless创建的索引字段
代码语言:javascript复制GET /product-7lxx48ae/_mapping
查看结果可以看到,id,name,price这三个字段
新增索引数据
可以先product这个索引添加数据,比如:
代码语言:javascript复制## 保存数据
POST product-7lxx48ae/_doc
{
"@timestamp": "2023-11-25T11:06:07.000Z",
"id": "123466",
"name": "米其林轮胎",
"price": "100"
}
添加结果,提示成功
可以稍微添加多个数据,方便后面检索和日志分析。
检索索引
ES检索的话,就可以直接使用DSL语句了,比如全局检索匹配
代码语言:javascript复制GET product-7lxx48ae/_search
{
"query": {
"match_all": {}
}
}
返回结果很多数据,只要关系hits字段下的结果就行,发现会把这索引的所有数据都查找出来
match匹配,查询name为米其林轮胎的数据
代码语言:javascript复制GET product-7lxx48ae/_search
{
"query": {
"match": {
"name": "米其林轮胎"
}
}
}
发现结果不止一个,但是与前面全局检索不一样,ES会对每个匹配结果进行评分,也就是这个字段_score,评分高的排前面,比如查询的“米其林轮胎”得分最高,排在前面。
Elasticsearch Service日志检索
上述是基本体验ES Serverless检索功能,ES Serverless也是在我们检索过程中会把日志记录收集起来,可以在ES Serverless控制台中日志分析进行查看了。
全局日志检索
在ES Serverless控制台中日志分析,进入索引,点击检索分析,就可以看到,刚刚在kibana检索的数据日志了
条件日志检索
重要,可以进行日期过滤筛选,比如筛选一年前的日志数据
还能进行其他复杂条件过滤,比如查询索引字段name包含包含米其林轮胎的日志,name : 米其林轮胎,就会对查询结果进行高亮。
总结
以上就是完成,ES Serverless的开通,索引创建检索以及日志分析的全过程了,是不是十分简单呢,对应开发人员,定位问题,更专注的是ES的DSL语句的编写,直接省去了关于日志系统的搭建和维护。本人之前也是搭建过ELK,也有使用其他产品的日志服务,个人觉得还是腾讯的S Serverless用着舒服,整体操作页面十分简单,功能菜单也清晰。