本文以单行全文模式为例,介绍如何通过日志服务控制台采集火山引擎云服务器 ECS 日志。
前提条件
- 已有可用的 Linux 服务器。
说明
LogCollector 目前仅支持 Linux x86-64(64位)操作系统,不支持 ARM 架构和 Windows 操作系统。
- 在 Linux 服务器上安装 systemd 和 wget 程序。
- 使用具备 root 权限的用户登录 Linux 服务器,完成本文操作。
- 预先根据服务器类型和所在地域,确定安装 LogCollector 时所需的网络类型。
- 已创建日志项目和日志主题。详细步骤请参考创建资源。
1 安装 LogCollector
LogCollector 是日志服务的采集客户端,通过 LogCollector 可实现快速无侵入式地把日志数据采集到日志服务中,具体安装步骤如下。
注意
从 Logcollector v2.2.0 版本开始,systemd service 名称由 filebeatd 变更为 logcollectord。
1.1 下载 LogCollector 安装脚本
根据 Linux 服务器的地域与网络类型,执行对应的下载命令,下载 LogCollector 安装脚本到自定义目录下。
wget https://logcollector-cn-beijing.tos-cn-beijing.volces.com/logcollector.sh -O logcollector.sh; sudo chmod 755 logcollector.sh
wget https://logcollector-cn-beijing.tos-cn-beijing.ivolces.com/logcollector.sh -O logcollector.sh; sudo chmod 755 logcollector.sh
1.2 安装并启动 LogCollector
执行以下命令安装 LogCollector。安装完成后,会自动启动 LogCollector 进程。
说明
- 如果已经安装 LogCollector,那么执行下述命令时会输出提示信息 do you want to continue the installation? (y/n):。如果希望默认继续安装,请在命令中添加 --continue_installation true。
- 如果 LogCollector 正在运行,那么执行下述命令时会输出提示信息 logcollectord is running, please stop logcollectord first。如果希望默认继续安装,请在命令中添加 --directly_stop true 。
sudo ./logcollector.sh install --region {region} --endpoint {endpoint} --secret_id {secret_id} --secret_key {secret_key} --label {label}
其中,region
、endpoint
、secret_id
、secret_key
为必选参数,详细说明如下。
参数 | 是否必选 | 示例 | 说明 |
---|
region | 必选 | cn-beijing | 日志项目所在的地域。
日志服务地域及对应 ID 请参考服务入口。 |
endpoint | 必选 | https://tls-cn-beijing.ivolces.com | 日志服务连接域名,即服务地址。
登录日志服务控制台后,您可以在日志项目的详情页中查看连接域名。详细说明请参考服务入口。 |
secret_id | 必选 | AK******** | 火山引擎账号或 IAM 账号的 Access Key ID。
您可以在火山引擎控制台密钥管理页面,获取 Access Key ID。 |
secret_key | 必选 | TUdZ******** | 火山引擎主账号或 IAM 用户的 Secret Access Key。
您可以在火山引擎控制台密钥管理页面,获取 Secret Access Key。 |
label | 可选(建议设置) | http_module | LogCollector 的 label 标识。 说明 - 如果需要将此 LogCollector 加入机器标识类型的机器组中,则必须设置
label 参数。同时,您在创建机器标识类型的机器组时,需设置自定义标识为该 label。详细说明,请参考机器组概述。 - 支持配置多个 label 标识,多个标识之间通过逗号(,)分隔。
- 不支持同时设置
ip 和 label 。
|
ip | 可选 | 10.1.1.* | LogCollector 的 IP 地址。 说明 - 如果需要将此 LogCollector 加入 IP 类型的机器组中,则建议设置
ip 参数,此时 LogCollector 的 IP 地址为设置的 IP 地址。 - 不支持同时设置
ip 和 label 。如果未设置 ip ,LogCollector 会根据一定策略自动获取 IP 地址,您可以在安装路径下 agent_info.json 文件中查看 ip 字段记录的 IP 地址。IP 地址获取策略请参考为宿主机或容器设置 IP 地址。
|
1.3 查看 LogCollector 的运行状态
执行以下命令查看 LogCollector 的运行状态,如果返回结果的 Active
属性为 active (running)……
,则表示安装 LogCollector 成功且 LogCollector 运行状态正常。
systemctl status logcollectord.service
2 创建机器组
登录日志服务控制台。
在左侧导航栏中,选择资源管理 > 机器组。
在机器组管理页面,单击创建机器组。
在创建机器组对话框中,完成如下配置,然后单击确定。
参数 | 说明 |
---|
机器组名称 | 机器组的名称。 |
机器组类型 | 机器组的类型,此处以IP地址为例。 |
机器IP | 服务器 IP 地址。 说明 - 请填写 LogCollector 获取的服务器 IP 地址。获取 IP 地址的方式请查看创建机器组(IP 地址)。
- 机器组中添加多台机器时,IP 地址之间以中文逗号、英文逗号、空格或换行符分隔。
- 暂不支持 Windows 系统的服务器。
|
LogCollector服务日志 | 是否开启 LogCollector 服务日志功能。开启后,LogCollector 客户端在运行过程中会实时记录运行状态和采集进度等信息。
详细说明请参考服务日志。 |
LogCollector自动升级 | 机器组服务器中安装的 LogCollector 是否开启自动升级功能。 - 开启:日志服务将会在每天的指定时间段进行升级前检查,若满足升级条件,则自动升级 LogCollector,无需手动操作。
- 关闭:LogCollector 不自动升级,如需使用更高版本的 LogCollector,请参考升级 LogCollector操作。
说明 仅 LogCollector V1.0.8 及后续版本支持自动升级。 |
自动升级时间 | LogCollector 的自动升级时间。 说明 - 仅在LogCollector自动升级为启用状态时需要设置。
- 自动升级时间建议设置为业务低峰期,自动升级过程中可能会重启 LogCollector,但不会丢失日志。
|
所属项目 | 在下拉列表里选择当前创建的机器组所属的 IAM 项目。
如果您尚未创建任何 IAM 项目,或没有合适的 IAM 项目以供选择,可以单击创建新项目创建一个新的 IAM 项目。未指定 IAM 项目时,日志服务会将机器组添加到名为 default 的 IAM 项目中。 |
说明
在机器组中添加服务器后,服务器心跳状态会短暂显示为异常,直到 LogCollector 成功向日志服务上报心跳状态。如果服务器心跳状态异常持续 1 分钟以上,建议参考机器组心跳问题排查逐步排查处理。
3 创建采集配置
本文档以单行全文模式为例,介绍控制台创建采集配置的操作步骤。
3.1 选择日志空间
- 登录日志服务控制台。
- 在顶部导航栏中,选择日志服务所在的地域。
- 在左侧导航栏中,选择常用功能 > 日志接入。
- 在日志接入页面的LogCollector日志采集页签中,选择日志采集模式。
- 选择日志空间,单击下一步:选择机器组。
选择日志项目和日志主题,采集到的日志数据将被存储到该日志主题中。
3.2 选择机器组
- 在全部机器组区域中,选择需要被采集日志的机器组。
如果列表中无可用的机器组,您需要先创建机器组。具体操作,请参考创建机器组(机器标识)、创建机器组(IP地址) - 在已选机器组区域中确认机器组无误后,单击下一步:采集规则。
3.3 配置采集规则
填写规则名称。
规则名称即 LogCollector 采集配置的名称。
您也可以单击导入其他采集配置,选择日志Region、日志项目和采集配置,将已创建的采集配置导入到当前配置中,您只需要指定采集规则名称即可。
选择是否启用容器日志采集。
采集宿主机日志及 Sidecar 方式采集容器日志时,此配置应维持默认的关闭状态。
填写采集路径。
采集路径即日志所在的目录和文件名,LogCollector 会按照采集路径中的目录部分匹配符合规则的目录,监听这些目录下符合规则的日志文件。最多设置 10 个不同的采集路径。
采集路径可以指定完整的目录和文件名,也可以通过通配符模糊匹配。
说明
- 默认情况下,一个日志文件只能匹配一个采集配置,被采集到一个日志主题中。如果多个采集配置重复采集同一个文件,则以最新创建的采集配置规则为准。
- 日志采集路径中指定通配符
**
时,表示多层目录匹配,仅在此时,日志服务才会监听指定目录下深至8级的子目录。 - 日志服务目前支持的通配符包括星号
*
、双星号**
和半角问号?
。双星号**
最多只能配置一个。
常见的采集路径的配置方式及示例如下。
配置方式 | 日志路径示例 | 说明 |
---|
完整文件名称 | /var/log/access.log
| 指定完整的目录和文件名,不包含通配符,表示监听指定目录下的指定文件,不监听其子目录。
例如,左侧示例表示监听 /var/log 目录下名为 access.log 的日志文件。 |
文件名模糊匹配 | /var/log/*.log
| 不指定文件名,表示监听所有日志文件;指定部分文件名规则,表示监听符合规则的部分文件。
例如,左侧示例表示监听 /var/log 目录下,文件格式为 .log 的日志文件。 |
路径模糊匹配 | /var/log/**/access.log
/var/log/*/access.log
/var/log/**
| 通过* 模糊匹配路径时,仅监听一级目录中的日志文件;通过** 模糊匹配路径时,表示监听一级及其子目录下的日志文件,目录深度最大为 8。
例如: /var/log/**/access.log 表示监听 /var/log 目录及其子目录下名为 access.log 的日志文件,目录深度最大为 8。/var/log/** 表示监听 /var/log 目录及其子目录下所有的日志文件,目录深度最大为 8。
|
设置采集黑名单。
配置采集路径黑名单之后,日志服务通过 LogCollector 采集日志时,会忽略指定的目录和文件。选择启用后,请根据页面提示设置黑名单目录和文件。
说明
- 每个采集配置中最多设置 10 条采集路径黑名单。
- 如果您在配置日志路径时使用了通配符,但又需要过滤掉其中部分目录或文件时,需要在黑名单中填写对应的完整路径或文件名来保证过滤生效。例如采集路径为
/var/log/project/*.log
,需要过滤其中/var/log/project
目录下的所有子目录,则采集路径黑名单应设置为目录路径,配置路径为/var/log/project/**
。
采集路径黑名单中的路径类型支持设置为目录路径和文件路径。
配置 | 说明 |
---|
目录路径 | 采集时忽略指定的目录。目录路径支持完整匹配和通配符模式匹配。 - 完整匹配:指定完整的目录名称,例如
/var/log/mydata/new 。 - 通配符匹配:目录中包含通配符,支持的通配符包括星号(
* )和半角问号(? )。例如 /var/log/mydata/n* 表示不采集目录 /var/log/mydata/ 下以 n 开头的目录。
|
文件路径 | 采集时忽略指定的文件,需配置文件路径及文件名。文件路径支持完整匹配和通配符模式匹配。 - 完整匹配:指定完整的路径及文件名称,例如
/var/log/mydata/access.log 。 - 通配符匹配:路径及文件名中包含通配符,支持的通配符包括星号(
* )半角问号(? )和双星号(** )。通配符中,双星号(** )最多只能配置一个。例如 /data/nginx/log/*/*/access.log 表示不采集目录 /data/nginx/log 及其一级和二级目录中名为 access.log 的日志文件。
|
设置采集策略。
采集策略表示 LogCollector 采集增量日志还是全量日志。默认为增量日志。
配置 | 说明 |
---|
全量 | LogCollector 从每个文件的起始位置开始采集日志,此时 LogCollector 会采集历史日志数据。 |
增量 | LogCollector 采集日志时,只采集文件内新增的内容。监控范围内的日志文件写入新的日志时,触发 LogCollector 日志采集行为。 - 对于首次采集的日志文件,LogCollector 会根据您指定的增量阈值,自动确认采集的位置。
- 如果新文件大小不超过您所指定的增量阈值,从新文件的起始位置开始首次采集。
- 如果新文件大小超过您所指定的增量阈值,从新文件的末尾减去增量阈值后的位置开始首次采集,即仅采集增量日志。
- 对于非首次采集的日志文件,LogCollector 会根据 Checkpoint 确定采集位置,继续采集。
|
指定采集模式。
LogCollector 解析日志文件的模式,本文以单行全文模式为例。
在单行全文模式下,以 \n
作为一条日志的结束符,每行日志都会被封装到字段 __content__
中。原始日志本身不再进行结构化处理。
选择是否使用采集时间。
- 开启:将采集日志时 LogCollector 所在服务器的系统时间作为日志时间。
- 关闭:提取原始日志中自带的时间作为日志时间。相关配置如下:
时间键名称:时间字段的名称,使用__content__
字段或通过插件指定的时间字段。使用插件指定的时间字段时,您需要启动插件配置,提取日志中的时间并指定时间字段。
时间正则:如果您只解析时间字段中的部分内容,可使用正则表达式进行提取。
时间精度:勾选启用纳秒时间精度后,支持提取纳秒精度的时间。详细说明,请参考启用 LogCollector 高精度时间。
时间转换格式:根据提取到的时间内容,设置时间转换格式。例如时间为01/March/2024 20:15:02
,则可配置时间转换格式为%d/%b/%Y:%H:%M:%S
。详细的格式说明请参考时间格式。
说明
- 如果时间转换格式填写错误导致无法正确解析时间,将以采集时间为准。
- 默认情况下,日志时间支持精确到毫秒,即配置时间转换格式时,支持配置到毫秒。如果时间转换格式中未指定毫秒级的解析方式,则毫秒部分会自动填充为 0。
- 在采集配置中勾选启用纳秒时间精度后,日志时间支持精确到纳秒。
- 如果您需要在日志时间中添加时区且原始日志时间包含时区,那么您可以在时间转换格式中添加时区格式(%z)以提取时区。另外,您也可以在时间转换格式中添加固定时区格式(+08:00),然后选择合适的时区属性。
例如时间为2024-03-03 15:00:00 +08:00
,您可以设置时间转换格式
为%Y-%m-%d %H:%M:%S %z
,或者设置时间转换格式为%Y-%m-%d %H:%M:%S +08:00
且选择对应的时区属性。
时区属性:设置时区。如果要支持夏令时或冬令时,请选择 UTC;否则,请选择 GMT。
(可选)启用插件配置。
通过 LogCollector 采集文本日志时,如果业务日志结构复杂、格式不固定,无法通过 JSON 模式等常规的日志采集模式进行解析时,可以通过 LogCollector 插件进行采集后处理。详细说明请参考插件概述。
(可选)启用高级设置。
请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。
配置 | 说明 |
---|
过滤器 | 是否开启日志字段过滤规则。默认为关闭状态。开启后,通过正则表达式配置过滤规则,完全匹配正则表达式的日志才会被采集上报,帮助您筛选出有价值的日志数据。
|
上传解析失败日志 | 是否上传解析失败的日志,默认为关闭状态。 - 开启:所有解析失败的日志,均以指定字段作为键名称(Key),原始日志内容作为值(Value)上传到日志服务。其中键名称可以通过失败日志键名称指定,默认为
LogParseFailed 。 - 关闭:解析失败的日志不上传到日志服务。
|
上传hostname字段 | 是否上传 hostname 字段,默认为关闭状态。 - 开启:在原始日志中增加一个字段,用于记录日志源的 hostname。字段名可以通过 hostname键名称指定,默认为
hostname 。 - 关闭:不添加
hostname 字段。
|
解析采集路径 | 通过正则表达式提取采集路径中的字段,并将其作为元数据添加到日志数据中。此功能默认为关闭状态。
开启此功能后,您需要设置采集路径样例、提取正则表达式和提取结果。 - 采集路径样例:实际场景的采集路径样例。
- 采集路径样例必须是一个绝对路径。
- 路径样例中不能包含通配符
* 、? 、** 。
- 提取正则表达式:用于提取路径字段的正则表达式。必须和采集路径样例匹配,否则无法成功提取。
- 提取结果:提取结果中展示日志服务根据正则表达式将路径样例解析并提取到的每个字段值(Value)。您需要为每个字段指定字段名称(Key)。
- 最多配置 100 个字段名。
- 字段名不可为空,且不可重复。
|
HashKey路由Shard | 指定 HashKey 将数据写入到符合范围要求的日志分区。此功能默认为关闭状态。 - 开启此功能,表示使用 HashKey 路由 Shard 模式采集数据,将数据有序写入到指定 Shard 中。适用于数据写入和消费对有序性要求较高的场景。 此时需要设置 HashKey,日志服务会将数据写入到包含该 Key 值的 Shard 中。HashKey 的取值范围为 [00000000000000000000000000000000-ffffffffffffffffffffffffffffffff)。
- 关闭此功能,表示使用负载均衡模式采集数据,自动根据负载均衡原则将数据包写入当前可用的任一 Shard 中。该模式适用于写入和消费行为与 Shard 无关的场景,例如不保序。
|
上传原始日志 | 是否将原始日志作为一个字段上传到日志服务,默认为关闭状态。 - 开启:原始的日志数据将被封装在指定字段中,和解析后的日志数据一起上传到日志服务中。字段名可以通过原始日志键名称指定,默认值为
raw ,实际对应的日志字段为 __raw__ 。 - 关闭:不添加原始日志字段。
|
上传常量字段 | 开启后,LogCollector 会将指定字段的 Key 和 Value 封装到每一条日志中。常量字段需遵循以下限制: - 支持上传最多 5 个常量字段。
- 字段名(Key)不可重复,不可为空。长度限制为 1~128 字符,包括英文字母、数字、和特殊字符(
-_./ ),且不能以下划线开头。 - 字段值(Value)不可为空,长度最大为 512 KiB。
|
上传机器组 Label | 是否将机器组的 Label 信息上传到日志服务,默认为关闭状态。 - 开启:LogCollector 会将机器组的 Label 信息上传到指定字段中。您可以在机器组Label键名称中指定字段名称,默认值为
host_group_label 。 - 关闭:不上传机器组 Label 信息。
|
允许文件多次采集 | 默认情况下,一个日志文件只能匹配一个采集配置,被采集到一个日志主题中。完成该配置后,可实现一个日志文件同时匹配多个采集配置。具体配置说明,请参考文件日志或标准输出同时被采集多份。 |
扩展配置 | LogCollector 扩展配置,JSON 对象格式。目前支持的参数包括 CloseInactive、CloseRemoved、CloseRenamed、CloseEOF 和 CloseTimeout。详细的参数说明请参考CreateRule中的数据结构Advanced。
例如填写以下配置,表示日志文件持续 10 秒没有新日志写入、日志文件被移除或重命名、LogCollector 读取至文件末尾、日志文件监控时长超过 30 分钟后,释放文件句柄。
|
确认采集配置,并单击下一步。
后续操作
配置索引之后,您才能在控制台中实时预览采集到的日志数据,或进行日志检索与分析。详细操作请参考配置索引。