LoongCollector

1758
下载
LoongCollector 源自阿里云可观测性团队所开源的 iLogtail 项目,在继承了 iLogtail 强大的日志采集与处理能力的基础上,进行了全面的功能升级与扩展。从原来单一日志场景,逐步扩展为可观测数据采集、本地计算、服务发现的统一体。 LoongCollector 是一款集卓越性能、超强稳定性和灵活可编程性于一身的数据采集器,专为构建下一代可观测 Pipeline 设计。愿景是:打造业界领先的“统一可观测 Agent(Unified Observability Agent)”与“端到端可观

Journal数据


简介

service_journal 插件支持从原始的二进制文件中采集Linux系统的Journal(systemd)日志。systemd是专用于 Linux 操作系统的系统与服务管理器。当作为启动进程(PID=1)运行时,它将作为初始化系统运行,启动并维护各种用户空间的服务。 systemd统一管理所有Unit的日志(包括内核和应用日志),配置文件一般在/etc/systemd/journald.conf中。源代码

版本

Stable

功能

  • 支持设置初始同步位置,后续采集会自动保存checkpoint,不需关心应用重启。
  • 支持过滤指定的Unit。
  • 支持采集内核日志。
  • 支持自动解析日志等级。
  • 支持以容器方式采集宿主机上的Journal日志,适用于Docker/Kubernetes场景。

相关限制

  • Logtail支持版本为0.16.18及以上。
  • 运行的操作系统需支持Journal日志格式。

适用场景

  1. 监听内核事件,出现异常时自动告警。
  2. 采集所有系统日志,用于长期存储,减少磁盘空间占用。
  3. 采集软件(Unit)的输出日志,用于分析或告警。
  4. 采集所有Journal日志,可以从所有日志中快速检索关键词或日志,相比Journalctl查询大幅提升。

配置参数

参数类型,默认值说明
TypeString,无默认值(必填)插件类型,固定为service_journal
JournalPathsArray,其中value为String,无默认值(必填)Journal日志路径,建议直接填写Journal日志所在文件夹,例如/var/log/journal
SeekPositionString,tail首次采集方式,为head则采集所有数据,为tail则只采集配置应用后新的数据。
KernelBoolean,true为false时则不采集内核日志。
UnitsArray,其中value为String,[]指定采集的Unit列表,为空时则全部采集。
ParseSyslogFacilityBoolean,false是否解析syslog日志的facility字段。
ParsePriorityBoolean,false是否解析Priority字段。
UseJournalEventTimeBoolean,false是否使用Journal日志中的字段作为日志时间,即使用采集时间作为日志时间(实时日志采集一般相差3秒以内)。
CursorFlushPeriodMsInteger,5000日志读取检查点的刷新时间。
CursorSeekFallbackString,SeekPositionTail日志读取检查点回退的位置。
IdentifiersArray,其中value为String,[]syslog标识符,可以添加到监视器。
MatchPatternsArray,其中value为String,[]匹配规则,可以添加到监视器。

ParsePriority映射关系表如下:

"0": "emergency"
"1": "alert"
"2": "critical"
"3": "error"
"4": "warning"
"5": "notice"
"6": "informational"
"7": "debug"

样例

样例1

从默认的/var/log/journal路径采集journal日志。

  • 采集配置1
enable: true
inputs:
- Type: service_journal
JournalPaths:
- "/var/log/journal"
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出1
{
"PRIORITY":"6",
"_GID":"0",
"_TRANSPORT":"syslog",
"_SYSTEMD_OWNER_UID":"0",
"_BOOT_ID":"bab**************54b",
"_PID":"21848",
"_MACHINE_ID":"************************",
"_CAP_EFFECTIVE":"3fffffffff",
"_COMM":"crond",
"_HOSTNAME":"iZj*****************1hZ",
"_SYSTEMD_SLICE":"user-0.slice",
"MESSAGE":"(root) CMD (/usr/lib64/sa/sa1 1 1)",
"_CMDLINE":"/usr/sbin/CROND -n",
"SYSLOG_FACILITY":"9",
"SYSLOG_IDENTIFIER":"CROND",
"_AUDIT_LOGINUID":"0",
"_SYSTEMD_SESSION":"3319",
"_UID":"0",
"_EXE":"/usr/sbin/crond",
"SYSLOG_PID":"21848",
"_AUDIT_SESSION":"3319",
"_SYSTEMD_CGROUP":"/user.slice/user-0.slice/session-3319.scope",
"_SYSTEMD_UNIT":"session-3319.scope",
"_SOURCE_REALTIME_TIMESTAMP":"1658823001526225",
"_realtime_timestamp_":"1658823001526482",
"_monotonic_timestamp_":"1637927744052",
"__time__":"1658823031"
}

样例2

Kubernetes场景下,使用Logtail的DaemonSet模式采集宿主机的系统日志,由于日志中有很多并不重要的字段,使用处理插件只挑选较为重要的日志字段。

  • 采集配置2
enable: true
inputs:
- Type: service_journal
ParsePriority: true
ParseSyslogFacility: true
JournalPaths:
- "/logtail_host/var/log/journal"
processors:
- Type: processor_filter_regex
Exclude:
UNIT: "^libcontainer.*test"
- Type: processor_pick_key
Include:
- MESSAGE
- PRIORITY
- _EXE
- _PID
- _SYSTEMD_UNIT
- _realtime_timestamp_
- _HOSTNAME
- UNIT
- SYSLOG_FACILITY
- SYSLOG_IDENTIFIER
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出2
{
"MESSAGE": "ejected connection from \"192.168.0.251:48914\" (error \"EOF\", ServerName "")",
"PRIORITY": "informational",
"SYSLOG_IDENTIFIER": "etcd",
"_EXE": "/opt/etcd-v3.3.8/etcd",
"_HOSTNAME": "iZb*****************ueZ",
"_PID": "10590",
"_SYSTEMD_UNIT": "etcd.service",
"__source__": "***.***.***.***",
"__tag__:__hostname__": "logtail-ds-dp48x",
"_realtime_timestamp_": "1547975837008708",
}

observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32