前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >业务上云使用腾讯云日志服务方案

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

原创
作者头像
覃春善
修改2021-01-29 16:21:44
4.9K0
修改2021-01-29 16:21:44
举报

前言

日志服务(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),那么是否开启索引,以及索引字段的多寡就值得评估了,开启后我们可以在日志服务控制台“概览”业务查看索引流量及索引存储量的变化,以评估费用增长。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 日志采集方案
    • 1.1 接入层日志
      • 1.2 逻辑层日志
      • 日志存储方案
      • 监控告警方案
        • 3.1 日志延迟监控
          • 3.2 流量监控
            • 3.3 错误码监控
              • 3.4 关键字监控
                • 3.5 机器组异常监控
                • 日志统计分析
                相关产品与服务
                日志服务
                日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档