日志服务提供JSON模式快速采集JSON日志。采集到日志后,您可以进行多维度分析、加工、投递等操作。本文介绍如何通过日志服务控制台创建JSON模式的Logtail配置采集日志。
方案概览
假设您的JSON原始日志为:
{"@timestamp":"2024-08-16T16:23:22+08:00","server_addr":"127.0.0.1","remote_addr":"127.0.0.1","scheme":"http","request_method":"POST","request_uri": "/wp-admin/admin-ajax.php","request_length": "1161","uri": "/wp-admin/admin-ajax.php", "request_time":1.099,"body_bytes_sent":78,"bytes_sent":675,"status":"200","upstream_time":"1.097","upstream_host":"unix:/dev/shm/php-cgi.sock","upstream_status":"200","host":"www.example.com","http_referer":"http://www.example.com/wp-admin/index.php","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}
经过JSON解析插件处理后的结果是:
采集指定文件的文本日志,分为5步:
1. 选择Project和Logstore
2. 机器组配置
3. Logtail配置
4. 查询分析配置
5. 查询日志
前提条件
已创建Logtail机器组并添加相应服务器,创建机器组的步骤,请参见创建用户自定义标识机器组(推荐)或创建IP地址机器组。
安装Logtail的主机需开放80(HTTP)端口和443(HTTPS)端口。ECS实例的端口由安全组规则控制,添加安全组规则的步骤请参见添加安全组规则。
服务器日志的内容持续新增。Logtail只采集增量日志,如果下发Logtail配置后日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
1. 选择Project和Logstore
登录日志服务控制台。
单击控制台右侧的快速接入数据卡片。
在接入数据页面,查找JSON - 文本日志并单击。
选择目标Project和Logstore,日志会被采集到对应的Logstore。
2. 机器组配置
Logtail配置会应用到指定的机器组,从而采集服务器上的数据。无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。
3. Logtail配置
3.1 全局配置
全局配置
配置项 | 说明 |
配置名称 | Logtail配置名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。 |
日志主题类型 | 选择日志主题(Topic)的生成方式。更多信息,请参见日志主题。 |
高级参数 | 其它可选的与配置全局相关的高级功能参数,请参见创建Logtail流水线配置。 |
3.2 输入配置
输入配置
配置项 | 说明 |
文件路径 | 根据日志在主机(例如ECS)上的位置,设置日志目录和文件名称。 目录名和文件名均支持完整模式和通配符模式,文件名规则请参见Wildcard matching。其中,日志路径通配符只支持星号(*)和半角问号(?)。 日志文件查找模式为多层目录匹配,即符合条件的指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如: /apsara/nuwa/**/*.log 表示/apsara/nuwa 目录(包含该目录的递归子目录)中后缀名为.log的文件。
/var/logs/app_*/**/*.log 表示/var/logs 目录下所有符合app_* 格式的目录(包含该目录的递归子目录)中后缀名为.log 的文件。
/var/log/nginx/**/access* 表示/var/log/nginx 目录(包含该目录的递归子目录)中以access 开头的文件。
|
最大目录监控深度 | 设置日志目录被监控的最大深度,即文件路径中通配符** 匹配的最大目录深度。0代表只监控本层目录。 |
文件编码 | 选择日志文件的编码格式。 |
首次采集大小 | 配置首次生效时,匹配文件的起始采集位置距离文件结尾的大小。首次采集大小设定值为1024 KB。 您可以通过此处修改首次采集大小,取值范围为0~10485760,单位为KB。 |
采集黑名单 | 打开采集黑名单开关后,可进行黑名单配置,即可在采集时忽略指定的目录或文件。支持完整匹配和通配符匹配目录和文件名。其中,通配符只支持星号(*)和半角问号(?)。
重要 如果您在配置文件路径时使用了通配符,但又需要过滤掉其中部分路径,则需在采集黑名单中填写对应的完整路径来保证黑名单配置生效。 例如您配置文件路径为/home/admin/app*/log/*.log ,但要过滤/home/admin/app1* 目录下的所有子目录,则需选择目录黑名单,配置目录为/home/admin/app1*/** 。如果配置为/home/admin/app1* ,黑名单不会生效。 匹配黑名单过程存在计算开销,建议黑名单条目数控制在10条内。 目录路径不能以正斜线(/)结尾,例如将设置路径为/home/admin/dir1/ ,目录黑名单不会生效。
支持按照文件路径黑名单、文件黑名单、目录黑名单设置,详细说明如下: 文件路径黑名单选择文件路径黑名单,配置路径为/home/admin/private*.log ,则表示在采集时忽略/home/admin/ 目录下所有以private开头,以.log结尾的文件。 选择文件路径黑名单,配置路径为/home/admin/private*/*_inner.log ,则表示在采集时忽略/home/admin/ 目录下以private开头的目录内,以_inner.log结尾的文件。例如/home/admin/private/app_inner.log 文件被忽略,/home/admin/private/app.log 文件被采集。
文件黑名单选择文件黑名单,配置文件名为app_inner.log ,则表示采集时忽略所有名为app_inner.log 的文件。 目录黑名单选择目录黑名单,配置目录为/home/admin/dir1 ,则表示在采集时忽略/home/admin/dir1 目录下的所有文件。 选择目录黑名单,配置目录为/home/admin/dir* ,则表示在采集时忽略/home/admin/ 目录下所有以dir开头的子目录下的文件。 选择目录黑名单,配置目录为/home/admin/*/dir ,则表示在采集时忽略/home/admin/ 目录下二级目录名为dir的子目录下的所有文件。例如/home/admin/a/dir 目录下的文件被忽略,/home/admin/a/b/dir 目录下的文件被采集。
|
允许文件多次采集 | 默认情况下,一个日志文件只能匹配一个Logtail配置。如果文件中的日志需要被采集多份,需要打开允许文件多次采集开关。 |
高级参数 | 其它可选的与文件输入插件相关的高级功能参数,请参见创建Logtail流水线配置。 |
3.3 处理配置
日志样例,支持多条日志;添加日志样例可协助您配置日志处理相关参数,降低配置难度,建议添加。
多行模式,如果日志为多行日志,请使用该选项。
类型,选择多行JSON。
切分失败处理方式,选择保留单行。
处理模式
使用JSON解析处理插件,单击JSON解析可进入处理插件详细配置页面。您可在此页面做进一步配置(本示例使用默认配置)。
处理配置
配置项 | 说明 |
日志样例 | 待采集日志的样例,请务必使用实际场景的日志。日志样例可协助您配置日志处理相关参数,降低配置难度。支持添加多条样例,总长度不超过1500个字符。 [2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
|
多行模式 | 多行日志的类型:多行日志是指每条日志分布在连续的多行中,需要从日志内容中区分出每一条日志。 自定义:通过行首正则表达式区分每一条日志。 多行JSON:每个JSON对象被展开为多行,例如: {
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"country": "USA"
}
}
切分失败处理方式: Exception in thread "main" java.lang.NullPointerException
at com.example.MyClass.methodA(MyClass.java:12)
at com.example.MyClass.methodB(MyClass.java:34)
at com.example.MyClass.main(MyClass.java:½0)
对于以上日志内容,如果日志服务切分失败:
|
处理模式 | 处理插件组合,包括原生插件和拓展插件。有关处理插件的更多信息,请参见处理插件概述。
重要 处理插件的使用限制,请以控制台页面的提示为准。 低于2.0版本的Logtail: 2.0版本的Logtail:
|
重要 Logtail配置生效时间最长需要3分钟,请耐心等待。
4. 查询分析配置
日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。
5. 查询日志
单击查询日志,系统将跳转至Logstore查询分析页面。
您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。查询和分析日志的详细步骤,请参见查询和分析日志。
说明 如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。