采集Syslog
本文介紹如何通過日志服務(wù)控制臺創(chuàng)建Logtail配置來采集Syslog。
前提條件
已在服務(wù)器上安裝Linux Logtail 0.16.13及以上版本或Windows Logtail 1.0.0.8及以上版本。具體操作,請參見安裝Logtail(Linux系統(tǒng))或安裝Logtail(Windows系統(tǒng))。
簡介
在Linux服務(wù)器中,您可以通過rsyslog等syslog agent將本地的syslog數(shù)據(jù)轉(zhuǎn)發(fā)到指定服務(wù)器IP地址和端口上。為指定服務(wù)器添加Logtail配置后,Logtail會以TCP協(xié)議或UDP協(xié)議接收轉(zhuǎn)發(fā)過來的syslog數(shù)據(jù),并根據(jù)指定的syslog協(xié)議進(jìn)行解析,提取日志中的facility、tag(program)、severity、content等字段。syslog協(xié)議支持RFC3164和RFC5424。
實現(xiàn)原理
Logtail對指定的地址和端口進(jìn)行監(jiān)聽,接收syslog協(xié)議的數(shù)據(jù)。
操作步驟
登錄日志服務(wù)控制臺。
在接入數(shù)據(jù)區(qū)域,選擇自定義數(shù)據(jù)插件。
選擇目標(biāo)Project和Logstore,單擊下一步。
創(chuàng)建機(jī)器組。
如果您已有可用的機(jī)器組,請單擊使用現(xiàn)有機(jī)器組。
如果您還沒有可用的機(jī)器組,請執(zhí)行以下操作(以ECS為例)。
在ECS機(jī)器頁簽中,通過手動選擇實例方式選擇目標(biāo)ECS實例,單擊創(chuàng)建。
具體操作,請參見安裝Logtail(ECS實例)。
重要如果您的服務(wù)器是與日志服務(wù)屬于不同賬號的ECS、其他云廠商的服務(wù)器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統(tǒng))或安裝Logtail(Windows系統(tǒng))。手動安裝Logtail后,您必須在該服務(wù)器上手動配置用戶標(biāo)識。具體操作,請參見配置用戶標(biāo)識。
確認(rèn)參數(shù)配置無誤后,單擊確定。
安裝完成后,單擊確認(rèn)安裝完畢。
在創(chuàng)建機(jī)器組頁面,輸入名稱,單擊下一步。
日志服務(wù)支持創(chuàng)建IP地址機(jī)器組和用戶自定義標(biāo)識機(jī)器組,詳細(xì)參數(shù)說明請參見創(chuàng)建IP地址機(jī)器組和創(chuàng)建用戶自定義標(biāo)識機(jī)器組。
確認(rèn)目標(biāo)機(jī)器組已在應(yīng)用機(jī)器組區(qū)域,單擊下一步。
重要創(chuàng)建機(jī)器組后立刻應(yīng)用,可能因為連接未生效,導(dǎo)致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機(jī)器組無心跳進(jìn)行排查。
在數(shù)據(jù)源設(shè)置頁簽中,設(shè)置配置名稱和插件配置,然后單擊下一步。
同時監(jiān)聽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" } } ] }
參數(shù)
類型
是否必選
說明
type
string
是
數(shù)據(jù)源類型,固定為
service_syslog
。Address
string
否
指定Logtail監(jiān)聽的協(xié)議、地址和端口,Logtail會根據(jù)Logtail配置進(jìn)行監(jiān)聽并獲取日志數(shù)據(jù)。格式為
[tcp/udp]://[ip]:[port]
。不配置時,默認(rèn)為tcp://127.0.0.1:9999
,即表示(只能接收本地轉(zhuǎn)發(fā)的日志。說明Logtail配置中設(shè)置的監(jiān)聽協(xié)議、地址和端口號必須與rsyslog配置文件設(shè)置的轉(zhuǎn)發(fā)規(guī)則相同。
如果安裝Logtail的服務(wù)器有多個IP地址可接收日志,可以將地址配置為
0.0.0.0
,表示監(jiān)聽服務(wù)器的所有IP地址。
ParseProtocol
string
否
指定解析日志所使用的協(xié)議,默認(rèn)為空,表示不解析。其中:
空:不解析。
rfc3164:指定使用RFC3164協(xié)議解析日志。
rfc5424:指定使用RFC5424協(xié)議解析日志。
auto:指定Logtail根據(jù)日志內(nèi)容自動選擇合適的解析協(xié)議。
IgnoreParseFailure
boolean
否
指定解析失敗后的操作,不配置時,默認(rèn)為
true
,表示放棄解析,直接填充所返回的content字段。配置為false
,表示解析失敗時丟棄日志。- 預(yù)覽數(shù)據(jù)及創(chuàng)建索引,然后單擊下一步。日志服務(wù)默認(rèn)開啟全文索引。您也可以根據(jù)采集到的日志,手動創(chuàng)建字段索引,或者單擊自動生成索引,日志服務(wù)將自動生成字段索引。更多信息,請參見創(chuàng)建索引。重要 如果您要查詢和分析日志,那么全文索引和字段索引必須至少啟用一種。同時啟用時,以字段索引為準(zhǔn)。
- 單擊查詢?nèi)罩?/b>,系統(tǒng)將跳轉(zhuǎn)至Logstore查詢分析頁面。您需要等待1分鐘左右,待索引生效后,才能在原始日志頁簽中,查看已采集到的日志。更多信息,請參見查詢和分析日志。
問題排查
使用Logtail采集數(shù)據(jù)后,如果預(yù)覽頁面或查詢頁面無數(shù)據(jù),您可以使用logger命令向本地Logtail發(fā)送數(shù)據(jù),用于判斷是寫入端問題、網(wǎng)絡(luò)問題還是Logtail端問題。
如果本地Logtail能接收到數(shù)據(jù),則可能是寫入端問題或網(wǎng)絡(luò)問題。
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采集日志失敗的排查思路進(jìn)行排查。
日志樣例
Syslog樣例如下所示。
字段 | 說明 |
| 主機(jī)名,如果日志中未提供則獲取當(dāng)前主機(jī)名。 |
| 協(xié)議中的tag字段。 |
| 協(xié)議中的priority字段。 |
| 協(xié)議中的facility字段。 |
| 協(xié)議中的severity字段。 |
| 日志對應(yīng)的時間戳。 |
| 日志內(nèi)容,如果解析失敗的話,此字段包含未解析日志的所有內(nèi)容。 |
| 當(dāng)前主機(jī)的IP地址。 |
| 傳輸日志的客戶端IP地址。 |
示例
采集rsyslog轉(zhuǎn)發(fā)日志
為rsyslog添加一條轉(zhuǎn)發(fā)規(guī)則。
在syslog所在的服務(wù)器上修改rsyslog的配置文件
/etc/rsyslog.conf
,在配置文件的最后添加一行轉(zhuǎn)發(fā)規(guī)則。添加轉(zhuǎn)發(fā)規(guī)則后,rsyslog會將syslog轉(zhuǎn)發(fā)至指定IP地址和端口上。
如果通過當(dāng)前服務(wù)器采集本機(jī)syslog,配置轉(zhuǎn)發(fā)地址為127.0.0.1,端口為任意非知名的空閑端口。
如果通過其他服務(wù)器采集本機(jī)syslog,配置轉(zhuǎn)發(fā)地址為其他服務(wù)器的公網(wǎng)IP地址,端口為任意非知名的空閑端口。
例如以下配置表示將所有的日志都通過TCP轉(zhuǎn)發(fā)至
127.0.0.1:9000
,配置文件詳細(xì)說明請參見RSyslog Documentation。*.* @@127.0.0.1:9000
執(zhí)行以下命令重啟rsyslog,使日志轉(zhuǎn)發(fā)規(guī)則生效。
sudo service rsyslog restart
創(chuàng)建Logtail配置。具體操作,請參見操作步驟。
其中Logtail配置如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "tcp://0.0.0.0:9000", "ParseProtocol": "rfc3164" } } ] }
采集Nginx日志
Nginx支持直接把訪問日志以syslog協(xié)議轉(zhuǎn)發(fā)到指定IP地址和端口。如果您希望將服務(wù)器上包括Nginx訪問日志在內(nèi)的所有數(shù)據(jù)都以syslog形式集中投遞到日志服務(wù),您可以根據(jù)需求創(chuàng)建Logtail配置進(jìn)行采集。
為Nginx添加一條轉(zhuǎn)發(fā)規(guī)則。
在Nginx服務(wù)器的nginx.conf文件中增加轉(zhuǎn)發(fā)規(guī)則。更多信息,請參見Nginx官網(wǎng)說明。
例如,在配置文件中增加如下內(nèi)容。
http { ... # Add this line. access_log syslog:server=127.0.0.1:9000,facility=local7,tag=nginx,severity=info combined; ... }
執(zhí)行以下命令重啟Nginx服務(wù),使配置生效。
sudo service nginx restart
創(chuàng)建Logtail配置。具體操作,請參見操作步驟。
其中Logtail配置如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "udp://127.0.0.1:9000", "ParseProtocol": "rfc3164" } } ] }
采集防火墻日志
通常防火墻支持將訪問日志以syslog協(xié)議轉(zhuǎn)發(fā)到指定IP地址和端口。如果您希望將防火墻日志以syslog形式集中投遞到日志服務(wù),例如構(gòu)建SIEM,您可以根據(jù)需求創(chuàng)建Logtail配置進(jìn)行采集。
根據(jù)防火墻說明書為防火墻添加一條轉(zhuǎn)發(fā)規(guī)則。
假設(shè)Logtail所在服務(wù)器的IP地址為10.20.30.40,示例如下。
創(chuàng)建Logtail配置。具體操作,請參見操作步驟。
其中Logtail配置如下所示。
{ "inputs": [ { "type": "service_syslog", "detail": { "Address": "tcp://0.0.0.0:9000", "ParseProtocol": "rfc3164" } } ] }