腾讯云日志服务CLS采集网站运行日志完全指南

apphuang2026年06月19日 11:48:035

引言:为什么网站需要统一的日志服务

网站运行过程中会产生大量日志数据,包括Web服务器的访问日志、应用程序的运行日志、数据库的慢查询日志等。这些日志分散在不同的服务器和容器中,传统的运维方式通常需要登录到每台机器上使用grep、awk等命令手工排查问题,当服务器规模扩大到数十台甚至上百台时,这种方式几乎不可行。腾讯云日志服务(Cloud Log Service,CLS)正是为解决这一痛点而设计的一站式日志服务平台,提供了从日志采集、日志存储到日志检索分析、实时消费、日志投递等多项服务。本文将以网站运行日志采集为核心场景,从零开始讲解如何使用腾讯云CLS构建一套完整的日志采集与分析体系。

需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联

一、认识腾讯云日志服务CLS

1.1 什么是CLS

日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志数据解决方案,支持日志、指标数据的采集、ETL、检索分析、可视化及告警的一体化可观测SaaS服务。CLS的核心价值在于让用户无需关注资源扩容问题,五分钟便捷接入即可享受稳定可靠的日志服务。CLS采用高可用的分布式架构设计,对日志数据进行多冗余备份存储,防止单节点服务宕机导致数据不可用,提供达99.9%的服务可用性。

1.2 CLS的核心概念

在使用CLS之前,需要理解以下几个核心概念:

  • 日志集(Logset):日志集是日志服务中的资源管理单元,用于资源隔离和控制,一个日志集可以理解为一个项目。
  • 日志主题(Topic):日志主题是日志数据的收集、存储和查询单元,一个日志集可以包含多个日志主题,每个日志主题对应一类服务或一种日志类型。
  • 机器组(Machine Group):机器组用于统一管理一组日志源机器,通过将服务器IP地址加入机器组,可以批量对多台机器进行日志采集配置。
  • LogListener:LogListener是CLS提供的专用日志采集客户端,部署在日志源服务器上,可实现快速无侵入式地把日志数据采集到日志服务中。

1.3 CLS的计费模式

CLS默认采用按量计费方式,先使用后付费,按照各计费项的实际用量以天为单位进行计量、结算、扣费和出账。同时CLS也提供资源包这种优惠套餐,先购买后使用,资源包支持CLS所有计费项的抵扣,结算时系统将优先从资源包抵扣各计费项,超出部分按量计费。2022年9月5日后开通CLS的新用户可免费领取10U×3个月的资源包(价值30元),用于抵扣按量计费产生的费用。

二、开通CLS服务与准备工作

2.1 开通CLS服务

首先需要在腾讯云官网申请开通日志服务。登录腾讯云控制台后,在产品与服务中找到"日志服务"或直接搜索CLS,进入产品页面后单击"立即开通"即可。开通服务本身不产生费用,费用在后续使用日志采集和存储时才会产生。

2.2 创建日志集与日志主题

日志服务区分地域,为了降低网络延迟,应尽可能选择与服务邻近的地域创建日志资源。在CLS控制台左侧导航栏中单击"日志主题",进入日志主题管理页面。单击"创建日志主题",在弹出的窗口中填写以下信息:

  • 日志主题名称:例如"website-access-log"或"nginx-error-log",建议根据日志类型命名以便后续管理。
  • 日志集操作:可以选择现有日志集或新建日志集。如果是首次使用,建议选择"创建日志集"并输入日志集名称。
  • 存储时间:支持1至3600天的有限保存,也可以选择永久保存。对于网站访问日志,通常建议保留30-90天;对于错误日志,可根据实际需要适当延长。

一个日志主题目前仅支持配置一类日志,例如业务日志和事件日志不可采用同一个日志主题,否则会产生覆盖情况。

2.3 准备API密钥

安装LogListener时需要用到API密钥。登录访问管理控制台,查看或创建密钥对,并确认密钥状态为启用。SecretId用于标识API调用者身份,SecretKey用于加密签名字符串和服务器端验证签名字符串。若主账号已授权协作者日志服务的读写权限,建议使用协作者密钥以提高安全性。

三、安装与配置LogListener采集客户端

3.1 网络连通性检查

安装LogListener要求日志源机器的网络与日志服务的可用地域网络互通。对于腾讯云服务器,默认可以通过内网访问日志服务。可以执行以下命令检查网络连通性,其中region为日志服务所在地域简称:

ping ap-guangzhou.cls.tencentyun.com

如果网络不通,需要检查安全组规则是否放行了相应端口,或确认地域配置是否正确。

3.2 Linux环境下安装LogListener

LogListener支持主流Linux操作系统,包括TencentOS Server、CentOS(64位)、Ubuntu(64位)、Debian(64位)、openSUSE(64位)等。安装步骤如下:

首先下载loglistener_operator脚本。内网环境下使用以下命令:

wget https://mirrors.tencentyun.com/install/cls/script/loglistener/loglistener_operator && chmod u+x loglistener_operator

外网环境下使用:

wget https://mirrors.tencent.com/install/cls/script/loglistener/loglistener_operator && chmod u+x loglistener_operator

使用root用户执行安装命令。内网环境安装最新版本:

./loglistener_operator install -s ${secret_id} -k ${secret_key} -r ${region}

外网环境安装最新版本:

./loglistener_operator install -s ${secret_id} -k ${secret_key} -r ${region} -n internet

其中${secret_id}和${secret_key}替换为实际API密钥,${region}替换为日志服务所在地域。安装命令中-secret_id、-secret_key、-region为必填参数。执行安装指令后,LogListener将默认安装在相应目录下。

3.3 Windows环境下安装LogListener

LogListener仅支持64位Windows Server操作系统环境,包括Windows Server 2012R2、2016、2019、2022、2025等版本。以管理员身份运行Windows PowerShell,在解压缩后的路径下执行以下命令:

内网环境:

.\loglistener_installer.exe install --secret_id AKID******************************** --secret_key whHwQfjdLnzzCE1jIf09xxxxxxxxxxxx --region ap-xxxxxx --network intra

外网环境:

.\loglistener_installer.exe install --secret_id AKID******************************** --secret_key whHwQfjdLnzzCE1jIf09xxxxxxxxxxxx --region ap-xxxxxx --network internet

初始化命令中--secret_id、--secret_key、--region为必填参数。--region为日志服务区域,而非业务机器所在区域。云服务器与日志集同地域的情况下建议使用内网方式,不同地域则建议使用外网方式。

3.4 创建机器组并绑定服务器

完成LogListener安装并启动后,需要在日志服务控制台创建或选择已有机器组,并将服务器加入机器组中。操作步骤如下:

  1. 登录日志服务控制台,在左侧导航栏单击"机器组管理"。
  2. 在页面顶部选择合适的地域,单击"新建机器组"。
  3. 一个机器组可以填入多个机器IP地址(每行一个IP地址),若是腾讯云服务器CVM,直接填写内网IP地址即可。
  4. 创建完成后,在日志主题的采集配置中关联该机器组。

四、采集网站运行日志实战

4.1 采集Nginx访问日志

Nginx作为最常用的Web服务器和反向代理服务,在实际业务场景中处理大量服务请求,会产生海量的访问日志。将Nginx访问日志采集到CLS是网站日志采集最典型的场景。

4.1.1 配置Nginx日志格式

Nginx访问日志的格式可以通过log_format指令定义。标准的日志格式配置如下:

log_format main '$remote_addr - $remote_user [$time_local] '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent"';

各字段说明如下:

  • remote_addr:客户端IP地址
  • remote_user:客户端用户名
  • time_local:服务器本地时间
  • request:HTTP请求方法和URL
  • status:HTTP请求状态码
  • body_bytes_sent:发送给客户端的字节数
  • http_referer:访问来源页面URL
  • http_user_agent:客户端浏览器信息

在Nginx配置文件的http块或server块中配置上述log_format,并在access_log指令中引用:

access_log /var/log/nginx/access.log main;

4.1.2 在CLS控制台配置Nginx日志采集

在CLS控制台中有两种方式配置Nginx日志采集:

方式一:使用快速集成。在CLS控制台的"概览"页面,找到"快速集成"区域,单击"服务器与应用"下的"Nginx日志",即可进入采集配置流程。

方式二:手动配置。在日志主题管理页面选择目标日志主题,单击其名称进入日志主题管理页面。选择"采集配置"页签,在LogListener采集配置中单击"新增"。在日志数据源选择页面,找到并单击"Nginx日志"。

配置采集路径时,Linux系统日志路径必须以/开头:

/var/log/nginx/access.log

也支持通配符匹配,例如采集/var/log/nginx/目录下所有以.log结尾的文件:

/var/log/nginx/*.log

4.1.3 配置索引与字段解析

采集到CLS的日志需要进行索引配置才能进行检索分析。索引配置的核心是对原始日志进行分词,以便快速根据特定检索条件检索日志。在索引配置中还可以针对特定字段开启统计,便于使用SQL对日志进行统计分析。

对于Nginx访问日志,建议为以下字段开启索引:

  • remote_addr(客户端IP)
  • status(状态码)
  • request(请求URL)
  • http_user_agent(用户代理)

4.2 采集Nginx错误日志

除了访问日志,Nginx的错误日志(error.log)同样重要,记录了服务器运行过程中的错误信息。采集错误日志的配置方法与访问日志类似,只需将采集路径设置为:

/var/log/nginx/error.log

建议为错误日志单独创建一个日志主题(如"nginx-error-log"),与访问日志分开存储和管理,便于后续的故障排查和告警配置。

4.3 采集应用程序日志

对于Java Web应用程序,可以使用日志框架(如Log4j、Logback)将日志输出到指定文件,然后通过LogListener采集。常见的采集路径包括:

/opt/app/logs/*.log
/usr/local/tomcat/logs/*.log

对于Python应用(如Django、Flask),可以将日志输出到/var/log/app/目录下;对于Node.js应用,可以使用winston或pino等日志库将日志写入文件。采集配置的关键是确保应用程序有权限写入日志文件,且LogListener有权限读取这些文件。

4.4 容器环境下的日志采集

在Kubernetes或Serverless容器环境中,CLS同样提供了完善的日志采集方案。操作步骤如下:

  1. 登录Serverless控制台或容器服务控制台。
  2. 在左侧导航中选择数据工程>工作流,或选择运维功能管理。
  3. 单击服务名称进入工作流详情,选择日志管理,单击新增采集配置。

采集类型支持容器标准输出和容器文件路径两种:

  • 容器标准输出:仅支持Stderr和Stdout的日志,适用于采集容器标准输出流中的日志。
  • 容器文件路径:支持采集容器内指定路径的日志文件,采集路径支持通配规则,例如/opt/logs/*.log。

日志源支持所有容器或指定Pod Labels。通过Pod Label可以精准采集带有特定标签的Pod日志,例如:

app=nginx
env=production

采集策略支持全量或增量两种模式:

  • 全量采集:从日志文件的开头开始采集,确保不丢失任何日志。
  • 增量采集:从距离文件末尾1M处开始采集,适用于日志量极大的场景。

需要注意的是,"容器文件路径"不能为符号链接或硬链接,否则会导致采集失败。

五、日志检索与深度分析

5.1 检索语法基础

CLS的检索分析语句由检索条件和SQL语句组成,两者通过竖线|分割。如果只需要检索日志而不需要统计分析,可以省略管道符及SQL语句:

[检索条件] | [SQL 语句]

CLS支持两种检索语法:

  • CQL(CLS Query Language):CLS专用检索语法,专为日志检索设计,推荐使用。
  • Lucene:开源Lucene语法,由于并非专为日志检索设计,不推荐作为首选。

5.2 常用检索示例

以下是一些常用的日志检索示例:

检索所有状态码大于400的请求

status>400

检索GET请求中状态码大于400的日志

method:GET AND status>400

检索特定客户端IP的访问记录

remote_addr:192.168.1.100

检索包含特定关键词的错误日志

__CONTENT__:"OutOfMemoryError"

5.3 SQL统计分析

开启索引统计功能后,可以使用SQL对日志进行深度统计分析。以下是一些常用的分析语句:

按状态码统计请求数量

* | SELECT status, count(*) AS pv GROUP BY status ORDER BY pv DESC

统计每小时请求量

* | SELECT DATE_FORMAT(__TIMESTAMP__, '%Y-%m-%d %H:00:00') AS hour, count(*) AS requests GROUP BY hour ORDER BY hour

统计TOP 10访问IP

* | SELECT remote_addr, count(*) AS visits GROUP BY remote_addr ORDER BY visits DESC LIMIT 10

统计平均响应时间(假设日志中有response_time字段)

* | SELECT AVG(response_time) AS avg_rt

5.4 仪表盘可视化

CLS提供了仪表盘功能,可以将常用的统计分析结果以图表形式展示。对于Nginx日志,CLS预置了常见的Nginx日志统计仪表盘,可以快速了解当前Nginx运行状态和终端用户访问行为。用户也可以自定义仪表盘,将PV趋势、状态码分布、TOP URL、TOP IP等关键指标集中展示在一个面板上,实现运维监控的一站式可视化。

六、告警策略配置

6.1 创建告警策略

CLS支持基于日志的告警策略配置,当满足特定条件时自动发送告警通知。配置步骤如下:

  1. 登录CLS控制台,选择目标日志主题。
  2. 单击"告警策略",然后点击"新建策略"。
  3. 定义触发条件,支持字段过滤(如status==500)和统计聚合(如count(1)>100)。

6.2 典型告警场景

场景一:HTTP 5xx错误告警

当5分钟内5xx状态码超过一定阈值时触发告警:

status>=500 | SELECT count(*) AS error_count WHERE error_count > 50

场景二:404错误突增告警

status=404 | SELECT count(*) AS not_found WHERE not_found > 100

场景三:LogListener心跳告警

当LogListener与CLS服务的心跳中断时,可能意味着采集端异常,需要及时关注。

6.3 告警沉默与通知

为避免告警风暴,可以配置告警沉默时间。在告警策略的"高级设置"中,可以设置告警沉默周期,在同一周期内重复触发告警时不重复发送通知。告警通知渠道支持短信、邮件、微信、企业微信等多种方式,可以根据团队习惯灵活配置。

七、日志生命周期管理与成本优化

7.1 日志沉降与归档

CLS支持日志沉降功能,支持日志接入标准存储一段时间后,将数据从标准存储沉降到低频存储保存。在保证一定日志统计分析能力的基础上,可以大幅降低日志的存储成本。自动沉降策略基于时间或访问频率自动迁移数据,历史数据存储成本可降低67%。

配置方法:在日志主题的"存储配置"中,设置标准存储保留天数(如30天),超过该天数的日志将自动沉降到低频存储。低频存储的成本约为标准存储的三分之一。

7.2 缩短日志保留周期

日志存储周期越长,日志存储费用和索引存储费用越高。对于网站访问日志,建议根据实际业务需求设置合理的保留周期:

  • 实时监控和故障排查:建议保留7-30天
  • 安全审计和合规要求:可能需要保留90天以上
  • 历史趋势分析:可以沉降到低频存储或投递到对象存储COS长期保存

7.3 索引优化

索引流量和索引存储费用通常是写流量和日志存储费用的数倍,主要因为它们是按未压缩的日志数据量计费的。如果希望降低索引费用,可以考虑:

  • 仅对需要检索和统计的字段开启索引,避免全字段索引
  • 关闭全文索引,改为仅对特定字段建立键值索引
  • 定期清理不需要的索引字段

7.4 流量费用优化

如果流量费用占据绝大比例,可以考虑以下策略:

  • 减少采集端日志的打印量,避免记录过多无用信息
  • 通过数据加工过滤掉无用日志,只保留有价值的数据
  • 确保云服务器与CLS服务在同一地域,使用内网传输避免外网流量费用

八、安全与权限管理

8.1 最小权限原则

在配置LogListener时,建议使用协作者密钥而非主账号密钥。在访问管理控制台中,可以为不同的子账号分配不同的CLS操作权限,例如:

  • 日志采集权限:仅允许上传日志
  • 日志检索权限:仅允许查询和分析日志
  • 日志管理权限:允许创建和修改日志主题、机器组等

8.2 日志数据加密

CLS对存储的日志数据进行加密保护,确保日志数据在传输和存储过程中的安全性。对于敏感日志数据,可以在应用层进行脱敏处理后再上传。

8.3 访问日志审计

通过CLS的操作日志功能,可以记录谁在什么时间对哪些日志主题进行了什么操作,满足安全审计要求。

九、常见问题排查

9.1 日志采集不到

如果发现CLS控制台没有收到日志,按以下步骤排查:

  1. 检查机器组配置是否正确,确认服务器IP已加入机器组。
  2. 检查LogListener进程是否正常运行。
  3. 检查网络连通性,执行ping命令确认与CLS服务端网络可达。
  4. 检查日志采集路径是否正确,确认LogListener有读取权限。
  5. 检查日志主题的索引是否已开启。

9.2 检索不到日志

如果在"预览"中有数据但检索无结果,常见原因包括:

  • 查询的字段未建立索引,CLS默认仅对部分字段建立索引。
  • 检索语法错误,检查是否使用了正确的CQL或Lucene语法。
  • 时间范围选择错误,确认检索的时间范围包含了目标日志所在时间段。

9.3 日志被截断

如果采集到CLS的日志被截断,通常是因为单条日志的大小超过了CLS的单条日志限制(一般为1MB)。解决方案包括:

  • 检查应用程序日志输出,避免单行日志过长
  • 将长日志拆分为多条短日志输出
  • 对于超长的堆栈跟踪,考虑只记录关键信息

结语

通过本文的完整讲解,读者应该已经掌握了从开通腾讯云日志服务CLS、安装配置LogListener采集客户端、创建日志主题与机器组,到采集Nginx访问日志和错误日志、进行检索分析与SQL统计、配置告警策略、优化存储成本的全流程技能。CLS作为腾讯云提供的一站式日志服务平台,将日志采集、存储、检索、分析、告警、可视化等能力整合在一起,让运维工程师无需再登录每台服务器手工排查日志,而是可以在统一的控制台上快速定位问题、分析趋势、配置告警。对于正在从传统运维向云原生运维转型的团队来说,掌握CLS的使用是提升运维效率的重要一步。


常见问题问答

问1:CLS和SLS是什么关系?

CLS(Cloud Log Service)是腾讯云日志服务的官方产品名称。SLS(Log Service)是阿里云日志服务的产品名称。两者都是云原生日志服务平台,但属于不同云厂商。本文中所有采集配置均针对腾讯云CLS。

问2:LogListener采集日志会对服务器性能产生影响吗?

LogListener经过性能优化,资源占用较低。在正常负载下,CPU占用通常在1%-5%之间,内存占用通常在100MB以内。但如果日志量极大(每秒数万条),建议适当调整LogListener的配置参数或增加服务器资源。

问3:CLS支持采集哪些类型的日志?

CLS支持采集文本日志、JSON日志、系统日志、应用程序日志、容器日志等多种类型。通过LogListener可以采集服务器上的任意文本文件;通过API和SDK可以上传结构化日志数据;对于部分云产品(如CDN、负载均衡等),可以直接在云产品控制台开启日志投递到CLS。

问4:CLS中的日志可以保存多久?如何删除日志?

CLS支持1至3600天的有限保存,也可以选择永久保存。已经采集到CLS日志主题中的日志处于只读状态,不支持手动编辑或删除,只能在日志超出有效保存周期后被自动清理。用户可以在日志主题的基本信息中查看或修改日志保留时间。

问5:CLS的成本主要由哪些部分构成?如何省钱?

CLS的成本主要由写流量、日志存储、索引流量、索引存储、读流量等计费项构成。省钱策略包括:合理设置日志保留周期、开启日志沉降到低频存储、只对必要字段开启索引、使用内网传输避免外网流量、使用资源包抵扣用量。

问6:容器环境下的日志采集和传统服务器有什么不同?

容器环境下的日志采集主要区别在于:采集源是容器而非物理机或虚拟机,支持通过Pod Labels进行精准采集。采集类型支持容器标准输出和容器文件路径两种。在Kubernetes环境中,需要为集群开启日志采集功能,并通过CLS控制台配置采集规则。

相关文章

腾讯云代理优惠有多少

腾讯云代理优惠有多少

目前国内腾讯云代理商比较多,大概1万多家,小代理商为求自保基本给个9.5折,也就是相当于5%的返佣,稍微大一点的可以给到10%,在大一点的可以给到15%,像我们公司因为业绩体量比较大,可以给到20%出…

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

最近后台总收到小伙伴私信:“腾讯云服务器看着挺好,但价格有点顶,学生党 / 小团队实在买不起咋办?” 别急!今天就来手把手教你 “花小钱办大事”,不光有省钱攻略,还会扒一扒大家最关心的安全问题,看完这…

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

Lately, I’ve been getting a lot of questions from friends: “Does Tencent offer rebates? Can you…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

一、腾讯云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异腾讯云按规模、服务能力与合作深度,构建了从基础到顶级的五级代理体系,各级权益呈现显著阶梯差:•标准级代理:入门门槛最低,仅能提供基…