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,單擊下一步。
在機器組配置頁面,配置機器組。
根據實際需求,選擇使用場景和安裝環境。
重要無論是否已有機器組,都必須根據實際需求正確選擇使用場景和安裝環境,這將影響后續的頁面配置。
確認目標機器組已在應用機器組區域,單擊下一步。
已有機器組
從源機器組列表選擇目標機器組。
沒有可用機器組
單擊創建機器組,在創建機器組面板設置相關參數。機器組標識分為IP地址和用戶自定義標識,更多信息請參見創建用戶自定義標識機器組(推薦)或創建IP地址機器組。
重要創建機器組后立刻應用,可能因為連接未生效,導致心跳為FAIL,您可單擊重試。如果還未解決,請參見Logtail機器組無心跳進行排查。
在數據源設置頁簽中,設置配置名稱和插件配置,然后單擊下一步。
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秒以內。
創建索引和預覽數據,然后單擊下一步。日志服務默認開啟全文索引。您也可以根據采集到的日志,手動創建字段索引,或者單擊自動生成索引,日志服務將自動生成字段索引。更多信息,請參見創建索引。
重要如果需要查詢日志中的所有字段,建議使用全文索引。如果只需查詢部分字段、建議使用字段索引,減少索引流量。如果需要對字段進行分析(SELECT語句),必須創建字段索引。
單擊查詢日志,系統將跳轉至Logstore查詢分析頁面。
您需要等待1分鐘左右,待索引生效后,才能在原始日志頁簽中,查看已采集到的日志。查詢和分析日志的詳細步驟,請參見查詢和分析日志。
示例
示例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采集日志失敗的排查思路進行排查。