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

在Linux伺服器中,您可以通過rsyslog等syslog agent將本地的syslog資料轉寄到指定伺服器IP地址和連接埠上。Logtail對指定的地址和連接埠進行監聽,以TCP協議或UDP協議接收轉寄過來的syslog資料,並根據指定的syslog協議進行解析,提取日誌中的facility、tag(program)、severity、content等欄位。
前提條件
已建立Project、標準型Logstore。具體操作,請參見管理Project、建立Logstore。
本功能只支援Linux系統,並且需要基於最新版本Logtail,如何升級Logtail請參見安裝Logtail(Linux系統)。
操作步驟
本文以採集ECS伺服器Syslog的為例。
在接入資料地區,選擇自訂資料外掛程式。

選擇目標Project和Logstore,單擊下一步。
建立機器組。
如果您已有可用的機器組,請單擊使用現有機器組。
如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
在ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立。
具體操作,請參見安裝Logtail(ECS執行個體)。
重要如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)或安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識。
確認參數配置無誤後,單擊確定。
安裝完成後,單擊確認安裝完畢。
在建立機器組頁面,輸入名稱,單擊下一步。
Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組和建立使用者自訂標識機器組。
確認目標機器組已在應用機器組地區,單擊下一步。
重要建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。
在資料來源設定頁簽中,設定配置名稱,並複製以下配置指令碼粘貼到外掛程式配置輸入框中,然後單擊下一步。
{ "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" } } ] }指令碼中參數說明如下所示:
參數
類型
是否必選
說明
typestring
是
資料來源類型,固定為
service_syslog。Addressstring
否
指定Logtail監聽的協議、地址和連接埠,Logtail會根據Logtail配置進行監聽並擷取日誌資料。格式為
[tcp/udp]://[ip]:[port]。不配置時,預設為tcp://127.0.0.1:9999,即表示只能接收本地轉寄的日誌。說明Logtail配置中設定的監聽協議、地址和連接埠號碼必須與rsyslog設定檔設定的轉寄規則相同。
如果安裝Logtail的伺服器有多個IP地址可接收日誌,可以將地址配置為
0.0.0.0,表示監聽伺服器的所有IP地址。
ParseProtocolstring
否
指定解析日誌所使用的協議,預設為空白,表示不解析。其中:
空:不解析。
rfc3164:指定使用RFC3164協議解析日誌。
rfc5424:指定使用RFC5424協議解析日誌。
auto:指定Logtail根據日誌內容自動選擇合適的解析協議。
IgnoreParseFailureboolean
否
指定解析失敗後的操作,不配置時,預設為
true,表示放棄解析,直接填充所返回的content欄位。配置為false,表示解析失敗時丟棄日誌。在查詢分析配置頁簽中,單擊自動產生索引。此時還不能採集到資料,您只需繼續單擊下一步完成Logtail採集配置即可。
開啟Log Service控制台,在目標Logstore中查看採集到的Syslog資料。更多資訊,請參見查詢與分析快速指引。

日誌欄位說明
欄位 | 說明 |
| 主機名稱,如果日誌中未提供則擷取當前主機名稱。 |
| 協議中的tag欄位。 |
| 協議中的priority欄位。 |
| 協議中的facility欄位。 |
| 協議中的severity欄位。 |
| 日誌對應的時間戳記。 |
| 日誌內容,如果解析失敗的話,此欄位包含未解析日誌的所有內容。 |
| 當前主機的IP地址。 |
| 傳輸日誌的用戶端IP地址。 |
更多樣本
採集Nginx日誌
Nginx支援直接把訪問日誌以syslog協議轉寄到指定IP地址和連接埠。如果您希望將伺服器上包括Nginx訪問日誌在內的所有資料都以syslog形式集中投遞到Log Service,您可以根據需求建立Logtail配置進行採集。
建立Logtail採集配置。具體操作,請參見採集Linux系統Syslog。
其中外掛程式配置指令碼如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://127.0.0.1:9001", "ParseProtocol": "rfc3164" } } ] }為Nginx添加一條轉寄規則。
在Nginx伺服器的nginx.conf檔案中增加轉寄規則。更多資訊,請參見Nginx官網說明。
例如,在設定檔中增加如下內容。
server { ... # Add this line. access_log syslog:server=127.0.0.1:9001,facility=local7,tag=nginx,severity=info combined; ... }執行以下命令重啟Nginx服務,使配置生效。
sudo service nginx restart
採集防火牆日誌
通常防火牆支援將訪問日誌以syslog協議轉寄到指定IP地址和連接埠。如果您希望將防火牆日誌以syslog形式集中投遞到Log Service,例如構建SIEM,您可以根據需求建立Logtail配置進行採集。
建立Logtail採集配置。具體操作,請參見採集Linux系統Syslog。
其中外掛程式配置指令碼如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://0.0.0.0:9001", "ParseProtocol": "rfc3164" } } ] }根據防火牆說明書為防火牆添加一條轉寄規則。假設Logtail所在伺服器的IP地址為10.20.30.40,樣本如下。

問題排查
使用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採集日誌失敗的排查思路進行排查。