引言
当前技术领域容器盛行,已然是一个云原生的时代, 在技术领域都或多或少跟云计算、容器、Kubernetes、云原生应用有着不同的渊源。云原生的技术变更带来了革命性的变化, 节省了成本,使得系统能够快速应对业务的快速迭代发布, 从而推动业务的快速发展。但同时导致了公司对于上云后对于应用的监控,管理发生了很大的变化.
在云原生代我们如何去应对与传统的方式差距比较监控和管理方式,是不是可以有一套方法论可以遵循解决这类问题呢?Google的SRE体系里面提出过可观测行
,那可观测性是什么呢,可观测性一套理念或者说是方法论. 这套方法论没有具体的要求. 大体的定义: "监控告诉我们系统的那部分是工作的,可观测性告诉我们哪里为什么不工作了",可观测性似乎更有助于我们诊断系统健康与否。这里就不详细展讨论,后面有时间单独讨论这个问题.
那监控和可观测性的关系,直接上图:
可观测性的三大支柱:
- Log (日志)
- Metric (指标)
- Tracing (应用追踪)
今天我们讲在TKE中如何将业务调用链上的日志采集,在下一篇文章中将基于日志的报警。
TKE日志采集的场景及架构
日志采集功能是容器服务为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 Kafka、Elasticsearch 或者 腾讯云日志服务(CLS)。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。
架构图如下:
日志采集功能需要为每个集群手动开启。日志采集功能开启后,日志采集 Agent 会在集群内以 DaemonSet 的形式运行,并根据用户通过日志采集规则配置的采集源和消费端,从采集源进行日志采集,将日志内容发送到消费端
T
KE 日志采集支持以下采集方式:
- 采集容器标准输出日志
- 采集容器内的文件日志
- 采集主机内的文件日志
业务应用场景
常规业务场景:
公网域名-->入口Nginx(ingress) --> 业务应用容器
我们使用nginx的容器标准输出给大家演示标准输出的采集方式
通过业务应用容器内的文件日志演示容器内的文件日志采集方式
操作步骤
环境:
- TKE(容器服务) 集群
- 业务应用容器
- CLS 日志系统
为什么采用CLS而不是ELK, 对于中小企业自建一套ELK维护成本比较高,对技术人员的要求也高,
而且扩容不是很便利, CLS具有一下优势:
- 功能丰富:
- 提供采集、存储、检索、转存投递等功能一站式日志服务
- 采集客户端 LogListener 提供单行/多行全文、分隔符、JSON、正则等日志结构化解析方式
- 提供多种数据接入方式,用户可根据业务情况选择适合的接入方式
- 提供丰富的检索语法,方便用户进行关键词查询、模糊查询、范围查询等日志查询操作
- 稳定可靠
- 日志服务采用高可扩展性的分布式存储架构,支持横向水平扩容,服务弹性伸缩,轻松存储管理海量日志数据
- 日志服务后端存储采用多副本机制管理存储日志数据,为数据安全提供可靠性保障
- 简单高效
- 采集端 LogListener 提供界面式的配置方式,配置简单直观,使用 LogListener 可快速接入日志服务
- 数据写入 CLS 即可被消费,亿级数据查询支持秒级返回结果
- 服务按实际用量收费,无需单独搭建和运维日志系统,避免了资源闲置浪费问题
- 生态扩展
- 部分云产品日志已接入 CLS
- 日志数据投递 COS,满足对日志数据长时间归档存储的需求
- 日志数据投递 Ckafka,满足对日志数据实时消费的需求,便于进一步处理分析
具体的操作流程我们通过短视频来给大家演示
常见问题
全文索引和键值索引有什么区别?
- 全文索引:将整条日志按分词符拆分成多个分词,然后基于分词进行关键词查询。
- 键值索引:将整条日志按格式拆分成多个键值对(key-value),然后基于键值对进行字段查询
日志集和日志主题的区别是什么?
日志服务提供两层概念逻辑:日志集和日志主题,一个日志集包含多个日志主题,如同一个项目包含多个应用服务。一般而言,每个服务的日志格式都不相同,因此日志主题作为采集、检索等配置管理的最小单元。
总结
这里给大家简单分享了下TKE中采集应用日志的具体操作流程, 在这里给大家演示的日志系统是使用的CLS, CLS功能非常强大,简单易用。当详细的日志使用文档可以参考CLS的官方文档或者在本专栏中给我们留言。
欢迎大家关注本栏目,我们专注于Kubernetes生态,持续给大家分享。