日志配置
日志通支持为以下日志格式创建日志配置:
- JSON
- Apache
- Nginx
- Syslog
- Single-line text
- Multi-line text
欲了解更多信息,请参阅 支持的日志格式和日志来源。
下面介绍如何为每种日志格式创建日志配置。
创建一个 JSON 日志配置
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉列表中选择JSON。
-
在示例日志解析部分,粘贴一个示例 JSON 日志,点击解析日志,验证日志解析是否成功。
- 如果您的 Json 日志 Sample Log 为嵌套 Json,点击 Pase Log 按钮之后将会展示每一层的字段类型选项列表。您可以给每一层字段设置其对应的字段类型。如果您点击 Remove 按钮删除某个字段。则该字段的类型将会由 OpenSearch 自动推断。
示例:
{"timestamp": "2023-11-06T08:29:55.266Z", "correlationId": "566829027325526589", "processInfo": { "startTime": "2023-11-06T08:29:55.266Z", "hostname": "ltvtix0apidev01", "domainId": "e6826d97-a60f-45cb-93e1-b4bb5a7add29", "groupId": "group-2", "groupName": "grp_dev_bba", "serviceId": "instance-1", "serviceName": "ins_dev_bba", "version": "7.7.20210130" }, "transactionSummary": { "path": "https://www.leadmission-critical.info/relationships", "protocol": "https", "protocolSrc": "97", "status": "exception", "serviceContexts": [ { "service": "NSC_APP-117127_DCTM_Get Documentum Token", "monitor": true, "client": "Pass Through", "org": null, "app": null, "method": "getTokenUsingPOST", "status": "exception", "duration": 25270 } ] } }
- 如果您的 Json 日志 Sample Log 为嵌套 Json,点击 Pase Log 按钮之后将会展示每一层的字段类型选项列表。您可以给每一层字段设置其对应的字段类型。如果您点击 Remove 按钮删除某个字段。则该字段的类型将会由 OpenSearch 自动推断。
示例:
-
检查每个字段类型映射是否正确。 您可以通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
注意
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。对于嵌套 Json 的 Time Key 必须在第一层。
-
(可选)在过滤器部分,您可以在日志代理端启用并添加一些条件来过滤日志。日志通解决方案将仅收集符合所有指定条件的日志。
-
选择创建。
创建一个 Apache HTTP 服务器日志配置
Apache HTTP Server (httpd) 能够将错误和访问日志 文件写入本地目录。 您可以配置日志通摄取 Apache HTTP 服务器日志。
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉菜单中选择Apache HTTP 服务器。
-
在 Apache Log Format 部分,粘贴您的 Apache HTTP 服务器日志格式配置。 它的格式为
/etc/httpd/conf/httpd.conf
,以LogFormat
开头。如:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
-
(可选)在 示例日志解析 部分,粘贴示例 Apache HTTP 服务器日志以验证日志解析是否成功。
如:
127.0.0.1 - - [22/Dec/2021:06:48:57 +0000] "GET /xxx HTTP/1.1" 404 196 "-" "curl/7.79.1"
-
选择创建。
创建一个 Nginx 日志配置
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉菜单中选择Nginx。
-
在Nginx Log Format部分,粘贴你的Nginx日志格式配置,格式为
/etc/nginx/nginx.conf
,以log_format
开头。如:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
-
(可选)在示例日志解析部分,粘贴一个Nginx示例日志以验证日志解析是否成功。
如:
127.0.0.1 - - [24/Dec/2021:01:27:11 +0000] "GET / HTTP/1.1" 200 3520 "-" "curl/7.79.1" "-"
-
(可选)在过滤器部分,您可以在日志代理端启用并添加一些条件来过滤日志。日志通解决方案将仅收集符合所有指定条件的日志。
-
点击 创建。
创建一个 Syslog 日志配置
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉菜单中选择Syslog。日志通同时也支持JSON格式的或者单行文本格式的 Syslog。
RFC5424
-
粘贴示例 RFC5424 日志。 例如:
<35>1 2013-10-11T22:14:15Z client_machine su - - - 'su root' failed for joe on /dev/pts/2
-
点击解析日志。
-
检查每个字段类型映射是否正确。 通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
注意
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。 -
指定时间格式。 格式语法遵循 strptime。 请参见详情。 例如:
%Y-%m-%dT%H:%M:%SZ
-
(可选)在 Filter 部分,添加一些条件以在日志代理端过滤日志。该解决方案将仅摄入与所有指定条件匹配的日志。
-
选择创建。
RFC3164
-
粘贴示例 RFC3164 日志。 例如:
<35>Oct 12 22:14:15 client_machine su: 'su root' failed for joe on /dev/pts/2
-
点击解析日志。
-
检查每个字段类型映射是否正确。 通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
注意
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。由于 RFC3164 的时间戳中没有年份,因此无法在 Amazon OpenSearch 的发现界面中显示为时间直方图。
-
指定时间格式。 格式语法遵循 strptime。 请参见详情。 例如:
%b %m %H:%M:%S
-
(可选)在 Filter 部分,添加一些条件以在日志代理端过滤日志。该解决方案将仅摄入与所有指定条件匹配的日志。
-
选择创建。
自定义
-
在 Syslog Format 部分,粘贴您的 Syslog 日志格式配置。 它的格式为
/etc/rsyslog.conf
,以template
或$template
开头。 格式语法遵循 Syslog 消息格式. 例如:<%pri%>1 %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% %msg%\n
-
在 Sample log parsing 部分,粘贴示例 Nginx 日志以验证日志解析是否成功。 例如:
<35>1 2013-10-11T22:14:15.003Z client_machine su - - 'su root' failed for joe on /dev/pts/2
-
检查每个字段类型映射是否正确。 通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
注意
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。 -
(可选)在 Filter 部分,添加一些条件以在日志代理端过滤日志。该解决方案将仅摄入与所有指定条件匹配的日志。
-
选择创建。
创建一个单行文本日志配置
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉菜单中选择单行文本。
-
在Rubular中写正则表达式先验证并输入值。 例如:
(?<remote_addr>\S+)\s*-\s*(?<remote_user>\S+)\s*\[(?<time_local>\d+/\S+/\d+:\d+:\d+:\d+)\s+\S+\]\s*"(?<request_method>\S+)\s+(?<request_uri>\S+)\s+\S+"\s*(?<status>\S+)\s*(?<body_bytes_sent>\S+)\s*"(?<http_referer>[^"]*)"\s*"(?<http_user_agent>[^"]*)"\s*"(?<http_x_forwarded_for>[^"]*)".*
-
在示例日志解析部分,粘贴一个示例的单行文本日志,点击解析日志,验证日志解析是否成功。 例如:
127.0.0.1 - - [24/Dec/2021:01:27:11 +0000] "GET / HTTP/1.1" 200 3520 "-" "curl/7.79.1" "-"
-
检查每个字段类型映射是否正确。 通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
说明
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。 -
(可选)在 Filter 部分,添加一些条件以在日志代理端过滤日志。该解决方案将仅摄入与所有指定条件匹配的日志。
-
选择创建。
创建一个多行文本日志配置
- 登录日志通控制台。
- 在左侧边栏中的 资源 下,选择 日志配置。
- 单击创建日志配置按钮。
- 指定配置名称。
- 在日志类型下拉菜单中选择多行文本。
Java - Spring Boot
-
对于Java Spring Boot 日志,您可以提供简单的日志格式。 例如:
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n
-
粘贴示例多行日志。 例如:
2022-02-18 10:32:26.400 ERROR [http-nio-8080-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ArithmeticException: / by zero] with root cause java.lang.ArithmeticException: / by zero at com.springexamples.demo.web.LoggerController.logs(LoggerController.java:22) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke
-
选择 解析日志。
-
检查各个字段类型映射是否正确。 您可以通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
说明
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。 -
(可选)在过滤器部分,您可以在日志代理端启用并添加一些条件来过滤日志。日志通解决方案将仅收集符合所有指定条件的日志。
-
选择创建。
自定义格式
-
对于其他类型的日志,您可以指定第一行正则表达式模式。 例如:
(?<time>\d{4}-\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}.\d{3})\s*(?<message>goroutine\s*\d\s*\[.+\]:)
-
粘贴示例多行日志。 例如:
2023-07-12 10:32:26.400 goroutine 1 [chan receive]: runtime.gopark(0x4739b8, 0xc420024178, 0x46fcd7, 0xc, 0xc420028e17, 0x3) /usr/local/go/src/runtime/proc.go:280 +0x12c fp=0xc420053e30 sp=0xc420053e00 pc=0x42503c runtime.goparkunlock(0xc420024178, 0x46fcd7, 0xc, 0x1000f010040c217, 0x3) /usr/local/go/src/runtime/proc.go:286 +0x5e fp=0xc420053e70 sp=0xc420053e30 pc=0x42512e runtime.chanrecv(0xc420024120, 0x0, 0xc420053f01, 0x4512d8) /usr/local/go/src/runtime/chan.go:506 +0x304 fp=0xc420053f20 sp=0xc420053e70 pc=0x4046b4 runtime.chanrecv1(0xc420024120, 0x0) /usr/local/go/src/runtime/chan.go:388 +0x2b fp=0xc420053f50 sp=0xc420053f20 pc=0x40439b main.main() foo.go:9 +0x6f fp=0xc420053f80 sp=0xc420053f50 pc=0x4512ef runtime.main() /usr/local/go/src/runtime/proc.go:185 +0x20d fp=0xc420053fe0 sp=0xc420053f80 pc=0x424bad runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420053fe8 sp=0xc420053fe0 pc=0x44b4d1
-
选择 解析日志。
-
检查各个字段类型映射是否正确。 您可以通过选择第二列中的下拉菜单来更改类型。 对于所有支持的类型,请参阅 数据类型。
注意
您必须使用键
time
指定日志的日期时间。 如果未指定,将添加系统时间。 -
选择创建。