阅读311 返回首页    go 阿里云


使用Logtail采集日志__logtail(Agent)_用户指南_日志服务-阿里云

Logtail接入服务是日志服务提供的、帮助用户在服务器上快速收集日志的方式,它具有如下特征:

  • 基于日志文件、无侵入式的收集日志。用户无需修改应用程序代码,且日志收集不会影响用户应用程序的运行逻辑。
  • 能够稳定地处理日志收集过程中各种异常。当遇到网络异常、服务端异常,用户数据临时超预留写入带宽限制等问题时会有主动重试,本地缓存等措施保障数据安全。
  • 基于服务端的集中管理能力。用户在安装Logtail后,只需要在服务端集中配置需要收集的机器、收集方式等信息即可,无需逐个登录服务器进行配置。
  • 完善的自我保护机制。为保证运行在客户机器上的收集Agent不会明显影响用户自身服务的性能,Logtail收集客户端在CPU、内存及网络使用方面都做了严格的限制和保护机制。

本章将详细说明Logtail接入服务的各方面细节。

系统要求

你可以通过Logtail从如下服务器环境中采集日志并写入日志库:

  • Linux:支持如下版本的x86-64(64位)服务器

    • Aliyun Linux
    • Ubuntu
    • Debian
    • CentOS
    • OpenSUSE
  • Windows:支持Windows Server2003(含)以后32/64位系统

    • Windows 7 (Client) 32bit
    • Windows 7 (Client) 64bit
    • Windows Server 2003 32bit
    • Windows Server 2003 64bit
    • Windows Server 2008 32bit
    • Windows Server 2008 64bit
    • Windows Server 2012 32bit
    • Windows Server 2012 64bit

Logtail接入服务只支持从同一阿里云Region的内部ECS服务器向这个Region的日志服务Project收集日志。例如,收集“华东 1 (杭州)”Region内的ECS服务器日志到“华东 1 (杭州)”Region的日志服务Project。目前暂不支持跨Region使用Logtail接入服务收集日志。如果你有跨Region收集日志的需求,请走公网。

Docker

  • 阿里云容器服务:参见集成日志服务
  • ECS/IDC 自建Docker(需要把容器中日志目录Mount到宿主机上)
    1. 根据不同网络安装Logtail
    2. 将容器中日志目录Mount到宿主机目录
      • 选择1:使用命令(例如宿主机目录为:/log/webapp,容器中日志目录为/opt/webapp/log)
        1. docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
      • 选择2:使用编排模板Mount

核心概念

  • 机器组:一个机器组包含一或多台需要收集一类日志的机器。用户通过给一个机器组应用一组Logtail配置来一次性让机器组内所有机器开始收集相应日志。用户可以通过日志服务控制台方便地对机器组进行管理(包括创建、删除机器组,添加、移除机器等)。需要注意的是每个机器组不可混有Windows和Linux机器,但可以拥有不同版本的Windows Server或者不同发行版本的Linux机器。
  • Logtail配置:描述如何在机器上收集一类日志并解析并发送到服务端的指定日志库。用户可以通过控制台对每个Logstore添加Logtail配置,表示该Logstore接收以此Logtail配置收集的日志。
  • Logtail客户端:Logtail是运行在用户机器上执行日志收集的Agent。参照安装文档在ECS服务器上安装Logtail后,添加服务器内网IP到机器组。
  • Linux下,该Agent安装在/usr/local/ilogtail目录下并启动两个独立进程(以ilogtail开头),一个为收集进程,另外一个为守护进程,程序运行日志为/usr/local/ilogtail/ilogtail.LOG。
  • Windows下,该Agent安装在目录C:Program FilesAlibabaLogtail(32位系统)或C:Program Files (x86)AlibabaLogtail(64位系统)。你可以通过Windows管理工具-服务查看到两个Windows Service,一个负责收集日志(LogtailWorker),另外一个负责守护工作程序(LogtailDaemon),程序运行日志为安装目录下的logtail_*.log。

基本功能

目前,Logtail接入服务提供如下功能:

  • 实时收集日志: 动态监控日志文件,实时地读取、解析增量日志。日志从被发现到发往服务端一般在3秒延迟内。

注意:Logtail接入服务不支持对历史数据的收集。对于一条日志,读取该日志的时刻减去日志产生的时刻,差值超过5分钟的被丢弃;

  • 自动处理日志轮转:很多应用会按照文件大小或者日期对日志文件进行轮转(rotation),把原日志文件重命名,并新建一个空日志文件等待写入(例如:监控app.LOG,轮转产生的app.LOG.1,app.LOG.2等)。用户可以指定收集日志写入的文件(如”app.LOG”),logtail会自动检测到日志轮转过程,保证这个过程中不会出现日志数据丢失。

注意:如果日志文件秒级别时间范围内多次发生轮转,可能会丢失数据。

  • 自动处理收集异常: 因为各种异常(等服务端错误、网络措施、Quota超限等)导致数据发送失败,Logtail会按场景主动重试。如果重试失败则会将数据写入本地缓存并在稍后自动重发:

本地缓存位于用户服务器的磁盘上,如果本地换成内的数据24小时内仍无法成功被服务端接收会丢弃并从本地缓存删除。

  • 灵活配置收集策略: 可以通过Logtail配置来非常灵活地指定如何在一台ECS服务器上收集日志。具体来说,用户可以根据实际场景选择日志目录,文件(即可精确匹配,也可通过通配符模糊匹配)。用户可以自定义日志收集提取的方式和各个提取字段的名称(支持正则表达式方式的日志提取)。另外,由于日志服务日志数据模型要求每条日志必须有精确的时间戳信息,Logtail提供了自定义的日志时间格式,方便用户从不同格式的日志数据中提取必须要的日志时间戳信息。

  • 自动同步收集配置:用户在日志服务控制台上新建或更新配置,logtail一般在3分钟时间内即可自动接受并使之生效,更新配置过程中数据收集不丢失。

  • 自动升级客户端:在用户手动安装Logtail到服务器后,日志服务负责该Agent自动运维升级(无需要用户参与)。在整个Agent升级过程中日志数据不丢失。

  • 自我监控状态:为避免Logtail接入服务的客户端消耗用户太多资源而影响用户自身服务。Logtail会实时监控自身资源消耗(CPU和Memory)。如果Logtail接入服务的客户端在运行过程中导资源使用超出限制将会自动重启,避免影响机器上的其它作业。同时,该客户端也会有主动的网络限流保护措施,防止过度消耗用户带宽。

  1. Logtail接入服务客户端在重启期间日志数据可能会丢失。
  2. 如果Logtail客户端自身处理逻辑出现异常导致退出,相应的保护机制会触发并重新启动该客户端继续收集日志。但在重新启动之前的日志数据可能丢失
  • 签名数据发送:为保证用户数据在发送过程中不会被篡改,Logtail服务客户端会主动获取用户的阿里云访问秘钥并对所有发送日志的数据包进行数据签名。

Logtail客户端在获取用户的阿里云访问秘钥时采用HTTPS通道,保障用户的访问秘钥安全性。

Logtail配置

如前所述,Logtail配置是方便用户指定如何在机器上采集日志并发送到服务端指定日志库的描述。尽管Logtail接入服务支持Windows和Linux平台两个平台,但它们支持的配置格式一致,但部分配置项有因为平台不同而有所区别。具体配置项和不同平台的区别如下:

配置项 描述
日志路径 指定收集日志文件所在的根目录,需要指定绝对路径,且不支持通配符
日志文件名 指定收集日志文件名称,大小写敏感,可以使用通配符。例如*.log。Linux下的文件名通配符包括”*“, “?”和”[…]”。Windows下支持MS-DOS和Windows通配符,如”*.doc”,”readme.???”等。
本地存储 标示是否启用本地缓存临时存储因网络短暂中断而无法发送的日志。
日志首行头 指定多行日志的起始头,需指定正则表达式。在多行日志收集场景下(如应用程序日志中的堆栈信息),无法使用行来分割每条日志。这时需要指定一个多行日志的起始头,当发现该起始头则表示上条日志已经结束,新的一条已经开始。由于每条日志的起始头可能并不一样(如时间戳),故需要指定一个起始头的匹配规则,即这里的正则表达式。
日志解析表达式 定义如何提取一条日志信息,并转化成为日志服务日志的格式。用户需要指定一个正则表达式提取需要的日志字段信息,并且定义每个提取的字段名称。具体可参考样例
日志时间格式 定义如何解析日志数据中的时间戳字符串的时间格式,具体请参见Logtail日志时间格式

使用流程

用户可以在日志服务控制台非常方便的接入Logtail服务。简单来说,整个流程包括如下几部:

  1. 创建Logtail日志收集配置:用户选择需要写入的Logstore,然后为该Logstore配置Logtail日志收集配置。
  2. 定义Logtail收集日志源:用户创建对应的机器组作为日志收集来源,并把相关的ECS服务器添加到该机器组即可。
  3. 应用Logtail配置收集日志:用户把第一步创建的日志收集配置应用到对应的日志源(即第二部创建的机器组),整个收集工作就开始了。

用户可以参考样例了解如何配置Logtail收集配置中的日志提取规则。

在完成如上流程后,用户ECS服务器上需要收集的新增日志(历史日志并不会处理,具体见上面“基本功能”介绍)即会被主动收集,发送到用户选择的Logstore中。用户可以通过日志服务控制台或者SDK及API查询到这些日志。用户还可以通过日志服务控制查询到所有ECS机器上的Logtail收集日志状态(是否在正常收集,是否有错误等)。

Logtail接入服务在日志服务控制台上的完整操作请参考Logtail收集日志

处理能力与限制

Logtail接入服务在每台服务器上的处理能力及限制如下:

项目 能力与限制
文件编码 只支持UTF8编码日志文件,如果日志文件不为UTF-8编码则会出现乱码,丢数据等未定义行为
日志处理吞吐能力 原始日志流量最高支持1MB/s,通过阿里云内部网络发送数据。超过该日志流量则有可能丢失日志
网络错误处理 支持本地缓存,最多使用500MB本地存储空间。在出现网络异常或者临时服务端超限,会主动缓存数据到本地并在之后尽快重试
配置更新 用户的配置更新生效需要有3分钟内的延时
状态自检 支持异常情况下(包括程序异常退出及使用资源超限)自动重启
监控目录数 主动限制可以监控的目录格式,避免出现过多消耗用户资源。如果监控上限已到,则放弃监控更多目录和日志文件。限制最多3000个目录(含子目录)
软链接支持 支持监控目录是软链接的情况
日志文件大小 无限制
单行日志大小 不支持单行日志大小超过512KB的情况
正则表达式类型 使用Perl兼容正则表达式

最后更新:2016-11-03 10:01:15

  上一篇:go 上下文查询__logsearch_用户指南_日志服务-阿里云
  下一篇:go 安装Logtail__logtail(Agent)_用户指南_日志服务-阿里云