专栏首页腾讯云存储专家服务业务上云使用腾讯云日志服务方案
原创

业务上云使用腾讯云日志服务方案

前言

日志服务(Cloud Log Service,下文简称CLS服务)是腾讯云提供的一站式日志数据解决方案,可以快速便捷的接入,享受日志采集、日志存储到日志内容搜索、统计分析等全方位稳定可靠的日志服务。下文讲解业务接入腾讯云日志服务方案。

日志采集方案

1.1 接入层日志

网络接入层日志、负载均衡日志主要是nginx 日志,业务诉求在于日志检索、监控告警、统计分析。

采集方案有负载均衡 CLB日志采集接入、腾讯云服务器 CVM安装Loglistener采集接入。CLS服务的CGI有读写频控及流控,单个主题分区写请求限制为500qps,写流量限制为5MB/s;尽管不同采集方式下日志上传策略不同,但是一般都是很难触发限制的。

  • CLB日志采集agent日志采集策略:每超过10条日志开始打包压缩上传,一次最多上传1000条日志;日志极少的情况,是每10秒打包上传一次(此时10秒内日志条数不大于10)。
  • Loglistener日志采集策略:loglistener会做聚合,感知到一次文件变化后,就一直读直到日志读完、或者日志到达一万条,或者读取的日志大小达到4MB(原文),然后发送请求上传日志。

按照经验,每条nginx日志平均大小约0.125KB,采用LZ4压缩,按照压缩率0.2计算;在不触发CLS服务读写频控及读写流控限制的前提下,CLB日志采集agent日志采集性能实测能达到10万条/秒,Loglistener采集性能理论值达到20万条/秒。

1.2 逻辑层日志

业务逻辑层日志,主要是各个业务模块的请求处理日志,模块运行日志,业务诉求在于日志检索、长期存储,甚至部分文件有很高的可靠性要求,需要确保日志采集、上传、存储不丢数据。不同的采集方案区别如下:

  • 业务部署在CVM:使用Loglistener采集,需要确保日志文件和Loglistener的pos_file写在数据盘,以保证可靠性,故障恢复后Loglistener支持续传。注意日常运维中不要使用vim修改日志文件,由于 vim 机制会修改 inode,所以日志系统会认为是一个全新的日志文件,将会采集上报整个文件的内容。
  • 业务部署在CVM,使用弹性伸缩(AS)管理集群:使用Loglistener采集,特别需要注意的是AS缩容的时候会销毁CVM,但不销毁数据盘。若日志要求不可丢失,则应避免把日志写入系统盘,否则在极端情况下,如果日志在本地积压又恰逢AS缩容时,CVM销毁会导致日志丢失。
  • 业务部署在TKE:
  • TKE自带采集agent,我们可以使用数据卷做持久化,日志文件写在数据卷里面  , 可保证日志不丢; pod或容器重建时都会续传。需要注意的是,多个pod 共享数据卷,所以每个pod 里的程序写日志时,日志名要区分; 例如引入pod_ip 字段,该值可通过export输出变量获取。
  • 如果不作数据持久化,日志保存在容器镜像的可写层里,K8S默认的 pod 销毁重建后相关日志就会丢失。针对业务日志没上传完就进行缩容的情况,我们可以配置 preStopHook 等待日志上传完,再删除pod  ;但是节点异常导致pod重建还是无法保证日志文件不丢失。

日志存储方案

CLS日志的存储当前最多支持保存90天,大于90天存储需求的日志可以投递到对象存储COS,或者消息队列Ckafka中转用于大数据场景下的统计分析、存储。例如通过 SparkStreaming 消费Ckafka,进行统计分析;或者通过 Flume 收集并存储到 Hive、HDFS、Hbase等。

CLS日志的存储时间是以日志集的维度管理的,不同的业务模块建议独享一个日志集,模块中的不同日志采集到不同的主题。

接入层日志建议保存15,逻辑层的服务日志保存30天,如有更长的日志存储需求就投递到COS并开启生命周期。

监控告警方案

CLS的“监控告警”功能目前只能简单的监控场景,当主题日志量较大,检索语法复杂的时候,可能会导致检索超时,从而导致告警失效。对于复杂的监控告警需求,建议通过搜索日志API 检索日志到本地统计分析,再上报到云监控,并配置告警。

(注:目前告警功能需要申请白名单)

3.1 日志延迟监控

目前,CLS暂未提供全链路监控告警的能力。当前情况下,日志采集失败,日志检索延迟的情况需要用户自行去监控发现;对于接入层日志,如果配置了监控告警,建议是监控日志延迟的情况;如下图配置,我们可以监控最近1分钟的日志量,当命中日志条数小于1说明日志检索延迟,或者上报失败。

3.2 流量监控

如图,根据服务集群规模配置相应的流量监控,及时发现流量增长以便扩容服务。

3.3 错误码监控

如图,我们可以对NGINX请求状态码进行监控;对于接入层日志,建议对401、403、404、499、500、502、503、504等4xx/5xx的状态码分开监控,以便在故障发生时快速定位问题。

3.4 关键字监控

通过检索关键字,监控包含关键字的场景。例如监控服务的ERROR日志,是否频繁重启,读写数据库错误,慢查询请求等等。

3.5 机器组异常监控

 机器组异常时,我们会在控制台->机器组管理-> 机器组  查看异常的采集机器,那么我们该如何对这一情况监控,及时发现异常的机器呢?答案是使用云监控产品。 配置如下

日志统计分析

日志服务提供 SQL 统计能力,对采集的日志进行数据分析并支持以图表的形式展示分析结果。腾讯云官网文档的“Nginx 访问日志分析案例” 提供了丰富的SQL分析示例,我们可以结合控制台“仪表盘”功能,根据业务需求绘制相应的分析图表。

需要注意的事,用户使用日志分析需要配置相应的索引,这会涉及到索引流量费用和索引存储费用;费用与日志量有关,和我们配置分析报表的数量无关,故建议对已开启索引的字段配置相应分析报表;索引流量费用及索引存储费用一般都比较少,可忽略。如果是每日日志量非常非常大(上百T),那么是否开启索引,以及索引字段的多寡就值得评估了,开启后我们可以在日志服务控制台“概览”业务查看索引流量及索引存储量的变化,以评估费用增长。

(注:目前仪表盘功能需要申请白名单)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 怎么打日志

    王小明_HIT
  • 微服务拆分过细?“卫星”系统帮你做日志收集无遗漏

    背景 随着酒店业务的高速发展,我们为用户、商家提供的服务越来越精细,系统服务化程度、复杂度也逐渐上升。微服务化虽然能够很好地解决问题,但也有副作用,比如,问题定...

    美团技术团队
  • 日志自动分析和解析开源工具

    https://blog.csdn.net/arpospf/article/details/98795806

    lilihongjava
  • 【PaperReading】Tools and Benchmarks for Automated Log Parsing

    Jieming Zhu① , Shilin He② , Jinyang Liu③ , Pinjia He④ , Qi Xie⑤ , Zibin Zheng⑥ ,...

    lilihongjava
  • 你真的会正确使用日志吗?

    日志在应用程序中是非常非常重要的,好的日志信息能有助于我们在程序出现 BUG 时能快速进行定位,并能找出其中的原因。

    xcbeyond
  • C语言 | C++打印有效日志

    一般在程序上线之后,一旦发生异常,第一件事就是要弄清楚当时发生了什么。用户当时做了什么操作,环境有无影响,数据有什么变化,是不是反复发生等,然后再进一步的确定大...

    C语言入门到精通
  • 认识日志分析平台ELK

    为什么要使用日志分析平台 对于日志的重要性,都会很认同,不管是一个小网站,还是一个大系统,都会用到日志 网站初期,一般就是查看web服务器访问日志,例如,平时...

    dys
  • 一套标准的ASP.NET Core容器化应用日志收集分析方案

    关注我公众号的朋友,应该知道我写了一些云原生应用日志收集和分析相关的文章,其中内容大多聚焦某个具体的组件:

    小码甲
  • 一文轻松理解打印有效日志

    一般在程序上线之后,一旦发生异常,第一件事就是要弄清楚当时发生了什么。用户当时做了什么操作,环境有无影响,数据有什么变化,是不是反复发生等,然后再进一步的确定大...

    C语言与CPP编程
  • 小记 | 从 0 到 1,看我玩弄千万日志于股掌

    3. 调试程序,和控制台的作用类似,但是控制台中的内容并不会保存到文件中,而日志可以长期保存。

    程序员鱼皮

扫码关注云+社区

领取腾讯云代金券