Logtail支持从原始的二进制文件中采集Linux系统的Systemd Journal日志。本文介绍如何通过日志服务控制台创建Logtail采集配置采集Systemd Journal日志。
前提条件
已在服务器上安装Linux Logtail 0.16.18及以上版本。具体操作,请参见安装Logtail(Linux系统)。简介
Systemd是专用于Linux操作系统的系统与服务管理器。当作为启动进程(PID=1)运行时,它将作为初始化系统运行,启动并维护各种用户空间的服务。Systemd统一管理所有Unit的日志(包括内核和应用日志),配置文件一般为/etc/systemd/journald.conf。
说明 运行的操作系统需支持Journal日志格式。
功能
- 支持设置初始采集位置,后续采集会自动保存checkpoint,应用重启时不影响进程。
- 支持过滤指定的Unit。
- 支持采集内核日志。
- 支持自动解析日志等级。
- 支持以容器方式采集宿主机上的Journal日志,适用于Docker、Kubernetes场景。
应用场景
- 监听内核事件,出现异常时自动告警。
- 采集所有系统日志,用于长期存储,减少磁盘空间占用。
- 采集软件(Unit)的输出日志,用于分析或告警。
- 采集所有Journal日志,可以从所有日志中快速检索关键词或日志,相比Journalctl的查询效率大幅提升。
操作步骤
- 登录日志服务控制台。
- 在接入数据区域,选择自定义数据插件。
- 选择目标Project和Logstore,单击下一步。
- 在创建机器组页签中,创建机器组。
- 如果您已有可用的机器组,请单击使用现有机器组。
- 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
- 在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建。
更多信息,请参见安装Logtail(ECS实例)。
重要- 如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)。
- 手动安装Logtail后,您还需要在该服务器上手动配置用户标识。具体操作,请参见配置用户标识。
- 安装完成后,单击确认安装完毕。
- 在创建机器组页面,输入名称,单击下一步。
日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组和创建用户自定义标识机器组。
- 在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建。
- 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步。
- 在数据源设置页签中,设置配置名称和插件配置,然后单击下一步。
- inputs为数据源配置,必选项。 重要 一个inputs中只允许配置一个类型的数据源。
- processors为处理配置,用于解析数据。可选项,您可以配置一种或多种处理方式。
如果当前的inputs配置无法满足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件处理数据。例如提取字段、提取日志时间、脱敏数据、过滤日志等。更多信息,请参见使用Logtail插件处理数据。
{ "inputs": [ { "detail": { "JournalPaths": [ "/var/log/journal" ], "Kernel": true, "ParsePriority": true, "ParseSyslogFacility": true }, "type": "service_journal" } ] }
配置项 类型 是否必选 说明 type string 是 数据源类型,固定为service_journal。 JournalPaths string数组 是 Journal日志路径,建议配置为Journal日志所在目录,例如/var/log/journal。 SeekPosition string 否 首次采集方式,可以配置为head或tail。默认为tail。 - head表示采集所有数据。
- tail表示只采集Logtail采集配置被应用后的新数据。
Kernel boolean 否 是否采集内核日志,默认为true,表示采集内核日志。 Units string数组 否 指定采集的Unit列表,默认为空,表示全部采集。 ParseSyslogFacility boolean 否 是否解析syslog日志的facility字段,默认为false。不配置时,表示不解析。 ParsePriority boolean 否 是否解析Priority字段,默认为false。不配置时,表示不解析。 设置为true时,Priority字段的映射关系如下所示。"0": "emergency" "1": "alert" "2": "critical" "3": "error" "4": "warning" "5": "notice" "6": "informational" "7": "debug"
UseJournalEventTime boolean 否 是否使用Journal日志中的字段作为日志时间,默认为false。不配置时,表示使用采集时间作为日志时间。 实时日志采集一般相差3秒以内。
- inputs为数据源配置,必选项。
- 预览数据及创建索引,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
示例
- 示例1 从默认的
/var/log/journal
目录采集Journal日志,采集配置为:{ "inputs": [ { "detail": { "JournalPaths": [ "/var/log/journal" ] }, "type": "service_journal" } ] }
日志样例:MESSAGE: rejected connection from "192.168.0.250:43936" (error "EOF", ServerName "") PACKAGE: embed PRIORITY: 6 SYSLOG_IDENTIFIER: etcd _BOOT_ID: fe919cd1268f4721bd87b5c18afe59c3 _CAP_EFFECTIVE: 0 _CMDLINE: /usr/bin/etcd --election-timeout=3000 --heartbeat-interval=500 --snapshot-count=50000 --data-dir=data.etcd --name 192.168.0.251-name-3 --client-cert-auth --trusted-ca-file=/var/lib/etcd/cert/ca.pem --cert-file=/var/lib/etcd/cert/etcd-server.pem --key-file=/var/lib/etcd/cert/etcd-server-key.pem --peer-client-cert-auth --peer-trusted-ca-file=/var/lib/etcd/cert/peer-ca.pem --peer-cert-file=/var/lib/etcd/cert/192.168.0.251-name-3.pem --peer-key-file=/var/lib/etcd/cert/192.168.0.251-name-3-key.pem --initial-advertise-peer-urls https://192.168.0.251:2380 --listen-peer-urls https://192.168.0.251:2380 --advertise-client-urls https://192.168.0.251:2379 --listen-client-urls https://192.168.0.251:2379 --initial-cluster 192.168.0.249-name-1=https://192.168.0.249:2380,192.168.0.250-name-2=https://192.168.0.250:2380,192.168.0.251-name-3=https://192.168.0.251:2380 --initial-cluster-state new --initial-cluster-token abac64c8-baab-4ae6-8412-4253d3cfb0cf _COMM: etcd _EXE: /opt/etcd-v3.3.8/etcd _GID: 995 _HOSTNAME: iZbp1f7y2ikfe4l8nx95amZ _MACHINE_ID: f0f31005fb5a436d88e3c6cbf54e25aa _PID: 10926 _SOURCE_REALTIME_TIMESTAMP: 1546854068863857 _SYSTEMD_CGROUP: /system.slice/etcd.service _SYSTEMD_SLICE: system.slice _SYSTEMD_UNIT: etcd.service _TRANSPORT: journal _UID: 997 __source__: 172.16.1.4 __tag__:__hostname__: logtail-ds-8kqb9 __topic__: _monotonic_timestamp_: 1467135144311 _realtime_timestamp_: 1546854068864309
- 示例2 Kubernetes场景下,使用DaemonSet模式采集宿主机的系统日志,由于日志中有很多并不重要的字段,使用处理插件只挑选较为重要的日志字段。采集配置为:
{ "inputs": [ { "detail": { "JournalPaths": [ "/logtail_host/var/log/journal" ], "ParsePriority": true, "ParseSyslogFacility": true }, "type": "service_journal" } ], "processors": [ { "detail": { "Exclude": { "UNIT": "^libcontainer.*test" } }, "type": "processor_filter_regex" }, { "detail": { "Include": [ "MESSAGE", "PRIORITY", "_EXE", "_PID", "_SYSTEMD_UNIT", "_realtime_timestamp_", "_HOSTNAME", "UNIT", "SYSLOG_FACILITY", "SYSLOG_IDENTIFIER" ] }, "type": "processor_pick_key" } ] }
日志样例:MESSAGE: rejected connection from "192.168.0.251:48914" (error "EOF", ServerName "") PRIORITY: informational SYSLOG_IDENTIFIER: etcd _EXE: /opt/etcd-v3.3.8/etcd _HOSTNAME: iZbp1i0czq3zgvxlx7u8ueZ _PID: 10590 _SYSTEMD_UNIT: etcd.service __source__: 172.16.0.141 __tag__:__hostname__: logtail-ds-dp48x __topic__: _realtime_timestamp_: 1547975837008708
问题排查
使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。