全部產品
Search
文件中心

Simple Log Service:採集Syslog

更新時間:Jun 30, 2024

本文介紹如何通過Log Service控制台建立Logtail配置來採集Syslog。

前提條件

已在伺服器上安裝Linux Logtail 0.16.13及以上版本或Windows Logtail 1.0.0.8及以上版本。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

簡介

在Linux伺服器中,您可以通過rsyslog等syslog agent將本地的syslog資料轉寄到指定伺服器IP地址和連接埠上。為指定伺服器添加Logtail配置後,Logtail會以TCP協議或UDP協議接收轉寄過來的syslog資料,並根據指定的syslog協議進行解析,提取日誌中的facility、tag(program)、severity、content等欄位。syslog協議支援RFC3164RFC5424

實現原理

Logtail對指定的地址和連接埠進行監聽,接收syslog協議的資料。實現原理

操作步驟

  1. 登入Log Service控制台

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

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

  4. 建立機器組。

    • 如果您已有可用的機器組,請單擊使用現有機器組

    • 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。

      1. ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立

        具體操作,請參見安裝Logtail(ECS執行個體)

        重要

        如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識

      2. 確認參數配置無誤後,單擊確定

      3. 安裝完成後,單擊確認安裝完畢

      4. 建立機器組頁面,輸入名稱,單擊下一步

        Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組建立使用者自訂標識機器組

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

    重要

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

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

    同時監聽UDP和TCP的樣本配置如下:

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "tcp://0.0.0.0:9000",
                     "ParseProtocol": "rfc3164"
                 }
             },
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "udp://0.0.0.0:9001",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }

    參數

    類型

    是否必選

    說明

    type

    string

    資料來源類型,固定為service_syslog

    Address

    string

    指定Logtail監聽的協議、地址和連接埠,Logtail會根據Logtail配置進行監聽並擷取日誌資料。格式為[tcp/udp]://[ip]:[port]。不配置時,預設為tcp://127.0.0.1:9999,即表示(只能接收本地轉寄的日誌。

    說明
    • Logtail配置中設定的監聽協議、地址和連接埠號碼必須與rsyslog設定檔設定的轉寄規則相同。

    • 如果安裝Logtail的伺服器有多個IP地址可接收日誌,可以將地址配置為0.0.0.0,表示監聽伺服器的所有IP地址。

    ParseProtocol

    string

    指定解析日誌所使用的協議,預設為空白,表示不解析。其中:

    • 空:不解析。

    • rfc3164:指定使用RFC3164協議解析日誌。

    • rfc5424:指定使用RFC5424協議解析日誌。

    • auto:指定Logtail根據日誌內容自動選擇合適的解析協議。

    IgnoreParseFailure

    boolean

    指定解析失敗後的操作,不配置時,預設為true,表示放棄解析,直接填充所返回的content欄位。配置為false ,表示解析失敗時丟棄日誌。

  7. 預覽資料及建立索引,然後單擊下一步。欄位索引的更多資訊,請參見建立索引

    • 全文索引和欄位索引同時啟用時,以欄位索引為準。

  8. 單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。更多資訊,請參見查詢和分析日誌

問題排查

使用Logtail採集資料後,如果預覽頁面或查詢頁面無資料,您可以使用logger命令向本地Logtail發送資料,用於判斷是寫入端問題、網路問題還是Logtail端問題。

如果本地Logtail能接收到資料,則可能是寫入端問題或網路問題。

logger -n localhost -P 9000 -T "This is a TCP syslog message"
logger -n localhost -P 9001 -d "This is a UDP syslog message"

此外,您還可以參見Logtail採集日誌失敗的排查思路進行排查。

日誌範例

Syslog範例如下所示。

Logtail配置生效

欄位

說明

_hostname_

主機名稱,如果日誌中未提供則擷取當前主機名稱。

_program_

協議中的tag欄位。

_priority_

協議中的priority欄位。

_facility_

協議中的facility欄位。

_severity_

協議中的severity欄位。

_unixtimestamp_

日誌對應的時間戳記。

_content_

日誌內容,如果解析失敗的話,此欄位包含未解析日誌的所有內容。

_ip_

當前主機的IP地址。

_client_ip_

傳輸日誌的用戶端IP地址。

樣本

採集rsyslog轉寄日誌

  1. 為rsyslog添加一條轉寄規則。

    1. 在syslog所在的伺服器上修改rsyslog的設定檔/etc/rsyslog.conf,在設定檔的最後添加一行轉寄規則。

      添加轉寄規則後,rsyslog會將syslog轉寄至指定IP地址和連接埠上。

      • 如果通過當前伺服器採集本機syslog,配置轉寄地址為127.0.0.1,連接埠為任意非知名的空閑連接埠。

      • 如果通過其他伺服器採集本機syslog,配置轉寄地址為其他伺服器的公網IP地址,連接埠為任意非知名的空閑連接埠。

      例如以下配置表示將所有的日誌都通過TCP轉寄至127.0.0.1:9000,設定檔詳細說明請參見RSyslog Documentation

      *.* @@127.0.0.1:9000
    2. 執行以下命令重啟rsyslog,使日誌轉寄規則生效。

      sudo service rsyslog restart
  2. 建立Logtail配置。具體操作,請參見操作步驟

    其中Logtail配置如下所示。

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "tcp://0.0.0.0:9000",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }

採集Nginx日誌

Nginx支援直接把訪問日誌以syslog協議轉寄到指定IP地址和連接埠。如果您希望將伺服器上包括Nginx訪問日誌在內的所有資料都以syslog形式集中投遞到Log Service,您可以根據需求建立Logtail配置進行採集。

  1. 為Nginx添加一條轉寄規則。

    1. 在Nginx伺服器的nginx.conf檔案中增加轉寄規則。更多資訊,請參見Nginx官網說明

      例如,在設定檔中增加如下內容。

      http {
          ...
      
          # Add this line.
          access_log syslog:server=127.0.0.1:9000,facility=local7,tag=nginx,severity=info combined;
      
          ...
      }
                                      
    2. 執行以下命令重啟Nginx服務,使配置生效。

      sudo service nginx restart
  2. 建立Logtail配置。具體操作,請參見操作步驟

    其中Logtail配置如下所示。

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "udp://127.0.0.1:9000",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }

採集防火牆日誌

通常防火牆支援將訪問日誌以syslog協議轉寄到指定IP地址和連接埠。如果您希望將防火牆日誌以syslog形式集中投遞到Log Service,例如構建SIEM,您可以根據需求建立Logtail配置進行採集。

  1. 根據防火牆說明書為防火牆添加一條轉寄規則。

    假設Logtail所在伺服器的IP地址為10.20.30.40,樣本如下。image.png

  2. 建立Logtail配置。具體操作,請參見操作步驟

    其中Logtail配置如下所示。

    {
         "inputs": [
             {
                 "type": "service_syslog",
                 "detail": {
                     "Address": "tcp://0.0.0.0:9000",
                     "ParseProtocol": "rfc3164"
                 }
             }
         ]
     }