引言
作为云原生技术的爱好者,笔者活跃在各种开发者社群,最近,腾讯云 Elasticsearch Serverless 凭借其自动弹性、免运维的特性,丰富的产品能力,以及能分钟级实现容器服务的日志采集与可观测分析的能力,深深吸引到了笔者。为了让大家也能免费体验到这款开箱即用的好产品,笔者再三争取,最终领取到了免费体验券 + 资源包特惠1元购 + 开发者课程等福利,具体领取方式可见文末相关链接。
云原生与容器
随着容器、Serverless、微服务等技术快速发展,云原生已逐步构建出繁荣的技术体系。如今云原生凭借降本增效、提高持续交付能力、易于开发等优势,正在不断激活应用构建范式,引起企业系统架构、生产方式、商业模式等发生变革,毋庸置疑,云原生已成为企业数字化转型的最短路径。
腾讯云容器服务(TKE)是基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,本文将基于腾讯云 ES Serverless 服务,构建 TKE容器服务日志分析体系,实现分钟级落地,帮助企业轻量化构建容器服务可观测分析的同时实现降本提效。
腾讯云 ES Serverless 介绍
笔者认真学习了腾讯云《ES Serverless 一站式日志分析从入门到精通》课程,简单而言,该产品的设计理念、产品能力与优势如下:
设计理念
让算力像自来水一样按需使用一直都是各大云厂商的目标,Serverless 概念的设计思想提出,极大的影响了近几年云计算的发展。在云计算的发展初期,侧重的是能够快速平滑迁移上云,例如,把 IDC 资源换成云服务器以及云硬盘等。而现在,客户的需求已经从上好云逐步到转变到用好云,即在释放运维与管理成本的同时,能够更加聚焦于业务,提高效率,实现降本增效。
为了帮助企业能够更好的聚焦于业务,ES Serverless 服务在设计开发中始终坚持以下目标:
1. 索引即服务,无集群概念,可按需创建与使用索引。
2. 按需使用,按量付费,按照实际使用的计算与存储资源按量计费。
3. 不止索引,还是场景化的一站式解决方案,针对每个场景提供相应的开箱即用的能力,提升整体的使用效率,当前已支持日志分析场景。
值得一提的是,在2023年3月29日召开的企业上云暨算云融合产业大会上,腾讯云 ES Serverless 服务被评为「信通院 “2022 可信算力服务 · 领航者计划” 优秀案例奖」。
![](https://qcloudimg.tencent-cloud.cn/image/document/a972cfc57a6ec8daaf4ddde5ef7aa459.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a972cfc57a6ec8daaf4ddde5ef7aa459.png)
设计思路
从设计思路上,ES Serverless 服务坚持以下几个点:
1. 提升易用性,除了提供开箱即用的一站式场景解决方案外,还实现了集群免运维、索引免运维以及数据链路免运维。
2. 降低成本,基于自研存算分离技术,实现自动伸缩,去除冗余成本,同时,完全按照使用量计费。
3. 提升稳定性,集群、索引等由平台统一运维调优,避免因使用不当造成的故障。
4. 完全兼容原生 ES 生态与 API,实现无缝迁移。
产品能力
从产品架构上,面向日志场景,ES Serverless 服务提供自动弹性、完全免运维的一站式日志分析解决方案,在使用时,用户仅需关注数据源以及检索分析等业务逻辑即可,中间的流量调度、链路调度以及资源调度全部由 ES Serverless 服务完成,不需要再关注底层的数据链路、消息队列、集群运维以及索引配置等,平台提供端到端的 SLA 保障。
除了支持原生的 ES API 写入方式之外,控制台已支持云服务器 CVM、容器服务 TKE、EMR、腾讯云数据仓库 TCHouse 等云产品的一站式数据采集分析,同时也支持通过 Logstash、Flink 以及 Kafka 等将数据投递到 ES Serverless 服务的索引中。简单而言,只需3步,我们即可完成一站式日志分析场景的落地。
在索引管理方面,则提供了配置管理、指标监控、用户管理以及告警管理等能力,可方便我们快速完成数据应用。而在检索分析能力方面,除了支持原生的Kibana 能力,ES Serverless 服务也在控制台内嵌了 Kibana 的相关核心能力,无需外链访问,即可快速进行检索分析。
![](https://qcloudimg.tencent-cloud.cn/image/document/7ac9532cfd50319df05495ffdb4b9dbe.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/7ac9532cfd50319df05495ffdb4b9dbe.png)
产品优势
自动弹性:索引粒度的自动弹性伸缩,从容应对突发流量增长,在保证业务连续性的同时降低日志分析、可观测性等场景下业务波峰波谷导致的运维与管理成本高等问题 。
完全免运维:内置分片自动调优、智能生命周期管理以及故障自愈等能力,用户可按需创建与使用索引,无需关心底层的资源配置、集群扩缩容和索引设置等问题,整个使用过程完全免运维。
灵活易用:提供端到端从数据接入、到数据管理、再到数据分析探索的一站式产品能力,极大降低业务上云门槛,可在分钟级实现业务落地。
成本低廉:自研低成本、高性能、高可用的存算分离架构,根据实际访问与存储量计费,实现业务负载与资源动态匹配的按需付费,减少闲置资源导致的冗余成本支出,大幅降低成本。
开放集成:完全兼容 Elastic Stack 生态,保留用户原有使用习惯,实现无缝迁移,助力业务快速上云;同时,打通云上数据源(如云服务器 CVM、容器服务TKE),降低数据接入门槛,实现分钟级业务落地。
稳定可靠:集群配置、读写性能由后台统一优化,减少由于使用不当带来的故障问题,提升稳定性,为业务保驾护航。
日志分析实践
日志采集
ES Serverless 服务目前已在控制台提供了一站式的容器服务日志采集,只需简单的选择需采集的容器集群,设置相关采集参数,同时设置数据保存时长等,即可快速完成 TKE 日志接入。参考如下:
1. 在 ES Serverless 控制台选择容器服务 TKE:
![](https://qcloudimg.tencent-cloud.cn/image/document/d6862cc49c0b701f5b3174a9f555010f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d6862cc49c0b701f5b3174a9f555010f.png)
2. 选择 TKE 集群,目前支持基于命名空间、Pod 标签、容器名称或是主机路径进行日志筛选:
![](https://qcloudimg.tencent-cloud.cn/image/document/1ddb3fe08298f0dd2af2ac021eb0ac29.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1ddb3fe08298f0dd2af2ac021eb0ac29.png)
3. 如需对上报到的日志进行解析,可设置采集解析,当前已支持全文日志、JSON 格式以及分隔符解析,如有更丰富的解析需求,也可自行编写 Processors,实现自定义解析。此处我们选择全文日志:
解析模式 | 描述 |
全文日志 | 日志数据不做任何键值提取,日志内容将存储到名称为"message"的字段中,您可通过自动分词能力进行检索分析。 |
JSON | 对于内容为标准 JSON 格式的日志,按照日志中的 Key:Value 提取对应的字段。 |
分隔符 | 对于固定分隔符分割内容的日志,我按照指定分隔符对日志进行键值提取,分隔符支持单个字符或者是字符串,可在控制台选择或输入分隔符。 |
![](https://qcloudimg.tencent-cloud.cn/image/document/8d0e36aeb2a92165ae3e7fdcf6185518.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8d0e36aeb2a92165ae3e7fdcf6185518.png)
4. 设置索引名称以及数据存储时长,同时需设置时间字段,该字段指在实际数据中类型为 date 的字段,通过设置该字段,可有助于提升查询效率。
![](https://qcloudimg.tencent-cloud.cn/image/document/9505bc6335117dfdf578c7e6d814f735.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9505bc6335117dfdf578c7e6d814f735.png)
通过以上简单几步,我们即可快速将容器日志采集到 ES Serverless 的索引中,单击确认创建,等待约5 - 10秒即可。
报表建设
ES Serverless 目前已在控制台集成了日志检索、开发工具以及监控告警等能力,可帮助我们快速实现检索分析。作为二流“资深”ES 使用者,笔者习惯使用 Kibana 进行分析,方便通过外链进行分享交流。
监控告警
为了在错误日志出现时能及时发现与处理,我们可先在控制台配置监控告警,例如,通过统计五分钟内来自 /var/log/error.log 路径的日志条数,快速识别异常,当超出阈值时,告警到我们的邮箱与企业微信。
![](https://qcloudimg.tencent-cloud.cn/image/document/50f3ee9d4512b9597d8dd8b3a13f9fbc.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/50f3ee9d4512b9597d8dd8b3a13f9fbc.png)
可观测分析
1. 首先登录 Kibana,我们找到 Kibana 的公网访问地址,为确保公网访问安全性,在访问前,需将我们的 IP 地址设置到公网访问策略中。
![](https://qcloudimg.tencent-cloud.cn/image/document/6ad77ddc26c7c9136c64d8a92a8eb98b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6ad77ddc26c7c9136c64d8a92a8eb98b.png)
2. 单击 Dashboard,我们可快速创建图表:
![](https://qcloudimg.tencent-cloud.cn/image/document/2bf520b9ef7181dff92dbb1584a9acae.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2bf520b9ef7181dff92dbb1584a9acae.png)
3. 单击 Create visualization:
![](https://qcloudimg.tencent-cloud.cn/image/document/50b0a9e6160c787a6a03d161e34ceff2.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/50b0a9e6160c787a6a03d161e34ceff2.png)
4. Kibana 的 Lens 功能非常易用跟强大,仅需将光标移动到左侧的字段,并拖拽到中间,即可生成图表,同时下方还提供了其他图表建议,方便我们快速进行分析。如下图,我们将 @timestamp 以及 pod.name 两个字段拖拽到了中间,Lens 快速生成了柱状图,通过该图,我们可快速了解每个时间段每个 Pod 上报的日志数量。
![](https://qcloudimg.tencent-cloud.cn/image/document/f10e91b0ebf810c285b85dcf213e1305.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/f10e91b0ebf810c285b85dcf213e1305.png)
4.1 首先第一行,是各种总览数据,如节点数量、Pod 数量以及日志条数;第二行是节点-Pod分布;第三行则是具体的日志数据。即整体按照总览 > 多维分布 > 日志层层下钻。
![](https://qcloudimg.tencent-cloud.cn/image/document/80ac13b91933561cd63c5f205c1242d8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/80ac13b91933561cd63c5f205c1242d8.png)
4.2 从上图中,我们看到10.0.0.2这个节点的日志数量占比将近一半,那我们可以逮着它来分析,只需在上图的节点-Pod 多维分析图中,单击该节点所在的区域,即可自动生成筛选条件,将该节点相关的数据全部筛选出来并在日志中高亮。
![](https://qcloudimg.tencent-cloud.cn/image/document/624bb8e906285f65881d90f3b117f7b8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/624bb8e906285f65881d90f3b117f7b8.png)
4.3 当想改变日志展示风格时,下方支持了表单模式跟 JSON 模式,任君选择;当发现当前日志发生的问题可能需要上下文才能辅助分析,单击 view surrounding documents 即可。
![](https://qcloudimg.tencent-cloud.cn/image/document/7120f5bfec4762492f07727126d8f9cb.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/7120f5bfec4762492f07727126d8f9cb.png)
4.4 例如,查看该日志的前一条与后一条日志:
![](https://qcloudimg.tencent-cloud.cn/image/document/25393b1c3397fa6e1bec835b82f45ad3.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/25393b1c3397fa6e1bec835b82f45ad3.png)
权限控制
当然,在实际业务应用场景中,我们难免需要将权限分享给团队的其他同事,这时候,权限管控的就显得尤为重要,例如对于 A 同事,仅分配查看某些索引的读权限,而对于 B 同事,则支持读写所有索引。
关于这个场景的能力,ES Serverless 也充分为用户考虑,进入 ES 控制台,在用户管理页面,单击新建用户,即可开始创建用户。
![](https://qcloudimg.tencent-cloud.cn/image/document/6cd17a2f593c236243493f9904a0cbdd.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6cd17a2f593c236243493f9904a0cbdd.png)
权限类型目前支持只读与读写,权限范围包含所有索引以及指定索引,填写完成后,单击确定即可。
![](https://qcloudimg.tencent-cloud.cn/image/document/13d434e8738f3dd48c94c2758c9667cd.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/13d434e8738f3dd48c94c2758c9667cd.png)
例如,我设置 hd_man 用户仅对 TKE 相关的索引有只读权限,那么设置完成后,我通过该用户登录 Kibana,即只能查看到 TKE 日志相关的索引:
![](https://qcloudimg.tencent-cloud.cn/image/document/b124ede8c5770cb9ed59576239dcf689.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b124ede8c5770cb9ed59576239dcf689.png)
总结
本文简单介绍了基于腾讯云 ES Serverless 服务实现一站式容器服务可观测分析,在实践中,笔者只花了几分钟,轻松完成了日志接入与可观测分析报表建设,从这点上来说,ES Serverless 服务真正做到了轻量、零门槛。当然,看了这么多,是时候展示笔者跪求小编拿到的优惠了,链接如下:
免费体验券与资源包1元购:
外部开发者课程:
如对该产品感兴趣,也可扫码加入交流群,ES Serverless 服务的产品小哥非常 nice~
![](https://qcloudimg.tencent-cloud.cn/image/document/71b21f7055b8fc37ee5cbcddf405ac18.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/71b21f7055b8fc37ee5cbcddf405ac18.png)