一.簡介
日志服務SLS支援通過logtial用戶端采集機器組的系統日志到日志服務中,syslog是Linux系統預設的日志守護程序,預設的主配置檔案和輔助配置檔案分别是/etc/syslog.conf和/etc/sysconfig/syslog檔案,在配置采集的過程中,經常會遇到無法采集的情況,本篇文檔主要是采集syslog日志的基本概念和采集方法的說明,還有采集失敗常見的排查方法。
二.rsyslog配置檔案
檔案名稱:/etc/syslog.conf
檔案内容格式:facility.level action
facility代表消息類型,level代表級别,action代表動作
在 /etc/rsyslog.conf 中根據需要修改配置,例如:
$WorkDirectory /var/spool/rsyslog # where to place spool files
$ActionQueueFileName fwdRule1 # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1 # infinite retries if host is down
# 定義日志資料的字段
$template ALI_LOG_FMT,"0.1 sys_tag %timegenerated:::date-unixtimestamp% %fromhost-ip% %hostname% %pri-text% %protocol-version% %app-name% %procid% %msgid% %msg:::drop-last-lf%\n"
*.* @@10.101.166.173:11111;ALI_LOG_FMT
配置檔案最後一行,. @@10.101.166.173:11111;ALI_LOG_FMT
第一個*代表所有的消息類型
第二個*代表所有級别的消息
@@代表TCP協定(@代表UDP)
10.101.166.173代表該syslog消息要轉發到的主機
11111代表11111端口
ALI_LOG_FMT代表模版名稱
是以整個一行代表,所有類型、所有級别的消息都通過TCP協定轉發到10.101.166.173主機的11111端口,消息内容使用模版 ALI_LOG_FMT
配置檔案倒數第二行,$template ALI_LOG_FMT,"0.1 sys_tag %timegenerated:::date-unixtimestamp% %fromhost-ip% %hostname% %pri-text% %protocol-version% %app-name% %procid% %msgid% %msg:::drop-last-lf%n"
$template :模版辨別
ALI_LOG_FMT:模版名稱
雙引号:模版内容
0.1:該日志格式的版本号,Logtail使用該版本号解析user-defined-field 字段。
sys_tag:資料标簽,用于尋找Project或Logstore,在控制台中的tag名稱
timegenerated:::date-unixtimestamp%:該條日志的時間戳。
%fromhost-ip%:該條日志的對應的機器IP,如果日志中的該字段是 127.0.0.1,最終發往服務端的日志資料中該字段會被替換成 TCP socket的對端位址。
%hostname% ~~ %msgid%:使用者自定義字段,中括号表示是可選字段。
%msg:::drop-last-lf%:日志消息正文。
三.ilogtial配置檔案
檔案名稱:/usr/local/ilogtail/ilogtail_config.json
檔案格式:
"config_server_address" : "http://logtail.cn-shanghai.log.aliyuncs.com",日志服務通路域名
"data_server_list" :
[
{
"cluster" : "cn-shanghai",所在區域
"endpoint" : "cn-shanghai.log.aliyuncs.com",接入點
}
],
"cpu_usage_limit" : 0.4,CPU占用率門檻值
"mem_usage_limit" : 256,常駐記憶體使用門檻值
"max_bytes_per_sec" : 20971520,Logtail發送原始資料的流量限
"buffer_file_num" : 25,緩存檔案的最大數目
"buffer_file_size" : 20971520,緩存檔案可以實際使用的最大磁盤空間
"streamlog_open" : false,是否打開接受syslog功能(非常重要,和rsyslog功能相關)
"streamlog_pool_size_in_mb" : 50,用于緩存接收到的syslog資料。
"streamlog_rcv_size_each_call" : 1024,linux socket rcv 接口使用的緩沖區大小
"streamlog_formats":[],定義接收到的 syslog 日志解析方式。
"streamlog_tcp_port" : 11111,logtail 用于接收 syslog 日志的 TCP 端口
整個配置檔案隻有三個參數和rsyslog采集有直接關系,streamlog_open、streamlog_tcp_port和streamlog_formats
streamlog_open:rsyslog采集是否開啟
streamlog_tcp_port:ilogtail采集rsyslog日志端口
streamlog_formats:ilogtail采集日志的類型
streamlog_formats:
[
{"version": "2.1", "fields": ["level", "method"]},
{"version": "2.2", "fields": []},
{"version": "2.3", "fields": ["pri-text", "app-name", "syslogtag"]}
]
其中"version": "2.1"對應的/etc/rsyslog.conf 中的0.1,fields對應/etc/rsyslog.conf 中的%hostname% ~~ %msgid%,可以設定提取那個字段,如果将/etc/rsyslog.conf 中的0.1改為2.1,就會比對到{"version": "2.1", "fields": ["level", "method"]},進而日志服務loghub中提取到使用者自定義字段的日志格式就是level和method。
四.日志服務配置步驟
1.安裝logtial
2.建立syslog類型配置
3.配置/usr/local/ilogtail/ilogtail_config.json
4./etc/syslog.conf
日志服務官網采集syslog日志文檔五.排查步驟
現象:控制台資料無法采集
1.排查rsyslog服務
(1)按照rsyslog排查,了解rsyslog配置檔案,可以很簡單的排查syslog.conf配置錯誤的問題,可以配置多個模版。
(2)排查rsyslog服務是否啟動使用service rsyslog status
(3)排查rsyslog監聽端口和轉發端口
這裡可以看到一個rsyslog程序,兩個sockets監聽,一個監聽本機的53552端口,轉發到本機的11111端口,另一個監聽本機的53554端口,轉發到本機的11111端口,有兩個是因為syslog.conf中配置了兩個規則,而ilogtial服務也啟動了三個,兩個ESTABLISHED狀态的監聽與兩個ESTABLISHED狀态的rsyslog監聽在進行資料傳輸。
2.排查ilogtail服務
(1)排查ilogtial服務運作狀态,通過/etc/init.d/ilogtaild status判斷ilogtial服務的運作狀态。
(2)排查ilogtial日志是否有報錯,通過ilogtail.LOG判斷ilogtial服務是否有報錯。
3.排查機器組狀态
(1)排查機器組狀态是否是OK狀态,可參考
文檔4.控制台上檢查
(1)可以通過控制台診斷判斷問題所在,查到的報錯關鍵字對比
(2)通過預覽資料看下是否采集到了資料,如果采集到,倒是查詢無法查到,應該是沒有開啟日志索引,或者設定索引錯誤導緻的,可以參考