全部產品
Search
文件中心

Simple Log Service:採集Systemd Journal日誌

更新時間:Jun 30, 2024

Logtail支援從原始的二進位檔案中採集Linux系統的Systemd Journal日誌。本文介紹如何通過Log Service控制台建立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的查詢效率大幅提升。

操作步驟

  1. 登入Log Service控制台

  2. 接入資料地區,選擇自訂資料外掛程式

  3. 選擇目標Project和Logstore,單擊下一步

  4. 機器組配置頁面,配置機器組。

    1. 根據實際需求,選擇使用情境和安裝環境。

      重要

      無論是否已有機器組,都必鬚根據實際需求正確選擇使用情境和安裝環境,這將影響後續的頁面配置。

    2. 確認目標機器組已在應用機器組地區,單擊下一步

      已有機器組

      源機器組列表選擇目標機器組。

      image

      沒有可用機器組

      單擊建立機器組,在建立機器組面板設定相關參數。機器組標識分為IP地址使用者自訂標識,更多資訊請參見建立使用者自訂標識機器組(推薦)建立IP地址機器組

      重要

      建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  5. 資料來源設定頁簽中,設定配置名稱外掛程式配置,然後單擊下一步

    • 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

    首次採集方式,可以配置為headtail。預設為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秒以內。

  6. 建立索引預覽資料,然後單擊下一步。Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引

    重要

    如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。

  7. 單擊查詢日誌,系統將跳轉至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

相關文檔