本文介紹如何通過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協議支援RFC3164和RFC5424。
實現原理
Logtail對指定的地址和連接埠進行監聽,接收syslog協議的資料。
操作步驟
在接入資料地區,選擇自訂資料外掛程式。
選擇目標Project和Logstore,單擊下一步。
建立機器組。
如果您已有可用的機器組,請單擊使用現有機器組。
如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
在ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立。
具體操作,請參見安裝Logtail(ECS執行個體)。
重要如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)或安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識。
確認參數配置無誤後,單擊確定。
安裝完成後,單擊確認安裝完畢。
在建立機器組頁面,輸入名稱,單擊下一步。
Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組和建立使用者自訂標識機器組。
確認目標機器組已在應用機器組地區,單擊下一步。
重要建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。
在資料來源設定頁簽中,設定配置名稱和外掛程式配置,然後單擊下一步。
同時監聽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
,表示解析失敗時丟棄日誌。預覽資料及建立索引,然後單擊下一步。欄位索引的更多資訊,請參見建立索引。
全文索引和欄位索引同時啟用時,以欄位索引為準。
單擊查詢日誌,系統將跳轉至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範例如下所示。
欄位 | 說明 |
| 主機名稱,如果日誌中未提供則擷取當前主機名稱。 |
| 協議中的tag欄位。 |
| 協議中的priority欄位。 |
| 協議中的facility欄位。 |
| 協議中的severity欄位。 |
| 日誌對應的時間戳記。 |
| 日誌內容,如果解析失敗的話,此欄位包含未解析日誌的所有內容。 |
| 當前主機的IP地址。 |
| 傳輸日誌的用戶端IP地址。 |
樣本
採集rsyslog轉寄日誌
為rsyslog添加一條轉寄規則。
在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
執行以下命令重啟rsyslog,使日誌轉寄規則生效。
sudo service rsyslog restart
建立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配置進行採集。
為Nginx添加一條轉寄規則。
在Nginx伺服器的nginx.conf檔案中增加轉寄規則。更多資訊,請參見Nginx官網說明。
例如,在設定檔中增加如下內容。
http { ... # Add this line. access_log syslog:server=127.0.0.1:9000,facility=local7,tag=nginx,severity=info combined; ... }
執行以下命令重啟Nginx服務,使配置生效。
sudo service nginx restart
建立Logtail配置。具體操作,請參見操作步驟。
其中Logtail配置如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://127.0.0.1:9000", "ParseProtocol": "rfc3164" } } ] }
採集防火牆日誌
通常防火牆支援將訪問日誌以syslog協議轉寄到指定IP地址和連接埠。如果您希望將防火牆日誌以syslog形式集中投遞到Log Service,例如構建SIEM,您可以根據需求建立Logtail配置進行採集。
根據防火牆說明書為防火牆添加一條轉寄規則。
假設Logtail所在伺服器的IP地址為10.20.30.40,樣本如下。
建立Logtail配置。具體操作,請參見操作步驟。
其中Logtail配置如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "tcp://0.0.0.0:9000", "ParseProtocol": "rfc3164" } } ] }