本文主要介紹如何系統排查主機情境下的機器組無心跳問題。
機器組安裝樣本
機器組配置:ECS和Log ServiceProject同帳號同地區。
通過Logtail跨地區採集日誌:ECS和Log ServiceProject同帳號不同地區。
通過Logtail跨阿里雲帳號採集日誌:其他雲或、自建伺服器、Project和ECS伺服器屬於不同帳號。
排查預覽
步驟一:檢查Logtail是否正常運行:檢查Logtail在伺服器是否正常運行。
步驟二:確認機器組中的IP地址是否為Logtail擷取的IP地址:確認機器組中的IP地址是否和Logtail的app_info.json檔案中的IP地址一致,不一致會導致心跳失敗。
步驟三:檢查Logtail啟動參數是否正確:檢查
ilogtail_config.json
檔案中配置的Project地區是否正確。步驟四:檢查網路是否通暢:檢查伺服器與Project之間網路是否通暢。
步驟五:檢查Logtail所在伺服器的系統時間是否正確:如果系統時間明顯快於或慢於當前真即時間,需要修改。
步驟六:檢查是否存在使用者標識:如果Project和ECS伺服器屬於不同帳號,其他雲或者自建伺服器,必須檢查使用者標識。
步驟七:檢查是否已配置自訂標識:如果是使用者自訂標識機器組,檢查是否已配置自訂標識。
步驟一:檢查Logtail是否正常運行
Linux系統
登入已安裝Logtail的機器。
執行如下命令。
ps -ef | grep ilogtail
返回結果中出現兩條如下類似資訊(分別代表Logtail守護進程和Logtail背景工作處理序)時,說明Logtail正常運行。
UID PID PPID C STIME TTY TIME CMD ... root 12 1 0 Nov10 ? 00:00:00 /usr/local/ilogtail/ilogtail root 14 12 0 Nov10 ? 03:07:43 /usr/local/ilogtail/ilogtail ...
重要如果返回結果中出現3條及以上Logtail運行資訊,則說明當前伺服器中有多個Logtail執行個體在運行,存在重複採集的風險,請檢查是否為預期行為。
如果返回結果顯示Logtail相關進程未運行。
已經安裝Logtail,但是未啟動。請參見啟動和停止Logtail(Linux系統)。
未安裝Logtail,請安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)。
重要安裝時,請務必選擇支援安裝Logtail的作業系統、按照Simple Log ServiceProject所屬地區選擇安裝參數以及根據網路類型選擇安裝方式。關於網路類型的更多資訊,請參見選擇網路。
Windows系統
登入Logtail所在的機器。
開啟運行視窗,輸入
services.msc
。查看LogtailDaemon服務(Logtail 1.0.0.0及以上版本)或LogtailWorker服務(Logtail 0.x.x.x版本)的運行狀態。
如果上述服務未運行。
已經安裝Logtail,但是未啟動。請參見手動啟動和停止Logtail(Windows系統)。
未安裝Logtail,請安裝Logtail。具體操作,請參見安裝Logtail(Windows系統)。
重要安裝時,請務必選擇支援安裝Logtail的作業系統、按照Simple Log ServiceProject所屬地區選擇安裝參數以及根據網路類型選擇安裝方式。關於網路類型的更多資訊,請參見選擇網路。
步驟二:確認機器組中的IP地址是否為Logtail擷取的IP地址
擷取app_info.json檔案中的
ip
欄位值。該檔案在不同系統下的預設路徑說明如下表所示:
作業系統
Logtail
app_info.json檔案路徑
Linux
Logtail(64位程式)
/usr/local/ilogtail/app_info.json
Windows(64位作業系統)
Logtail (64位程式)
C:\Program Files\Alibaba\Logtail\app_info.json
Logtail(32位程式)
C:\Program Files (x86)\Alibaba\Logtail\app_info.json
Windows (32位作業系統)
Logtail(32位程式)
C:\Program Files\Alibaba\Logtail\app_info.json
Logtail將擷取的IP地址記錄在app_info.json檔案的
ip
欄位中。{ "UUID" : "", "hostname" : "iZ8vbdlzf******azuhZ", "instance_id" : "E9633380-***********-00163E1AA597_172.16.2.200_166****11", "ip" : "172.**.**.200", "logtail_version" : "1.3.1", "os" : "Linux; 4.19.91-26.1.al7.x86_64; #1 SMP Tue Jul 26 17:52:28 CST 2022; x86_64", "update_time" : "2022-12-27 05:38:33" }
確認機器組中使用的是Logtail擷取的IP地址。
Simple Log Service機器組包括IP地址機器組和使用者自訂標識機器組。更多資訊,請參見什麼是機器組。
步驟三:檢查Logtail啟動參數是否正確
ilogtail_config.json檔案記錄了Logtail的相關啟動參數。
登入Logtail所在的機器。
尋找ilogtail_config.json檔案。
該檔案在不同系統下的預設路徑說明如下表所示:
作業系統
Logtail
ilogtail_config.json檔案路徑
Linux
Logtail(64位程式)
/usr/local/ilogtail/ilogtail_config.json
Windows(64位作業系統)
Logtail(64位程式)
\ilogtail_config.json
Logtail(32位程式)
C:\Program Files (x86)\Alibaba\Logtail\ilogtail_config.json
Windows (32位作業系統)
Logtail(32位程式)
C:\Program Files\Alibaba\Logtail\ilogtail_config.json
開啟ilogtail_config.json檔案,確認設定檔參數是否正確。
{ "config_server_address" : "http://logtail.<config_region>.log.aliyuncs.com", "data_server_list" : [ { "cluster" : "<project地區>", "endpoint" : "<endpoint>" } ], ... }
如果ilogtail_config.json檔案中的啟動參數符合下述表格中的說明,則表示Logtail啟動參數正確。
如果Logtail啟動參數錯誤,請根據下述表格修改ilogtail_config.json檔案,然後重啟Logtail。具體操作,請參見附錄:重啟Logtail。
地區具體Project地區資訊請參見開服地區。
情境
網路類型
<config_region>
<endpoint>
伺服器為ECS,且與Project屬於同一地區
阿里雲內網
<project地區>-intranet
<project地區>-intranet.log.aliyuncs.com
其它情況
公網
<project地區>
<project地區>.log.aliyuncs.com
傳輸加速
log-global.aliyuncs.com
步驟四:檢查網路是否通暢
使用Logtail上傳資料成功,至少需要保證Logtail所在伺服器能夠連通下列地址。
如果使用內網,需要在<endpoint>
後添加-intranet
。
ilogtail_config.json
檔案中的config_server_address
欄位指定的地址及其HTTPS版本。http://<project名>.<endpoint>
。Project的名稱和地區,可以通過如下方式查看。
<endpoint>
為ilogtail_config.json
檔案中data_server_list.endpoint
欄位指定的地址。
http://ali-<project地區>-sls-admin.<endpoint>
。其中<endpoint>
為ilogtail_config.json
檔案中data_server_list.endpoint
欄位指定的地址。
具體的網路檢查及解決方案如下:
Linux系統
登入Logtail所在的機器。
執行
curl
命令依次串連上述地址。curl http://<project名>.cn-hangzhou-intranet.log.aliyuncs.com
所有返回結果都為如下類似資訊,說明網路暢通。
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}}
如果網路不暢通,請檢查網路環境中80和443連接埠是否已經開放、目標地址是否被攔截以及其他網路方面的檢查(例如DNS配置、安全性群組等)。
Windows系統
登入Logtail所在的機器。
調用
telnet
命令依次嘗試串連上述地址。telnet <project名>.cn-hangzhou-intranet.log.aliyuncs.com 80 # 如果是HTTPS協議,則連接埠號碼為443。
所有返回結果都為如下類似資訊,說明網路暢通。
Trying 100*0*7*5... Connected to xxx. Escape character is '^]'.
如果網路不暢通,請檢查網路環境中80和443連接埠是否已經開放、目標地址是否被攔截以及其他網路側的檢查(例如DNS配置、安全性群組等)。
步驟五:檢查Logtail所在伺服器的系統時間是否正確
Linux系統
登入Logtail所在的機器。
執行
date
命令查看系統時間。Wed Dec 28 06:59:26 UTC 2022
如果系統時間明顯快於或慢於當前真即時間,請嘗試如下修改。
調整系統時間至真即時間。
如果不能修改系統時間,請修改Logtail啟動參數,即在ilogtail_config.json檔案中增加配置項
"enable_log_time_auto_adjust": true
。修改後,需要重啟Logtail。具體操作,請參見附錄:重啟Logtail。ilogtail_config.json檔案路徑說明請參見步驟三:檢查Logtail啟動參數是否正確。
Windows系統
登入Logtail所在的機器。
查看案頭右下角工作列中時間資訊。
調整系統時間至真即時間。
如果不能修改系統時間,請修改Logtail啟動參數,即在ilogtail_config.json檔案中增加配置項"enable_log_time_auto_adjust": true。修改後,需要重啟Logtail。具體操作,請參見附錄:重啟Logtail。ilogtail_config.json檔案路徑說明,請參見步驟三:檢查Logtail啟動參數是否正確。
步驟六:檢查是否存在使用者標識
如果是其他雲或者自建伺服器,或者Project和ECS伺服器屬於不同帳號,必須檢查使用者標識。
使用者標識必須是阿里雲帳號ID(主帳號ID)。具體操作請參見配置使用者標識。
您可以通過指定目錄下的使用者標識檔案判斷是否存在使用者標識。如果返回結果為空白,則您需要查看指定路徑中是否已有使用者標識檔案。
使用者標識檔案路徑如下:
Linux系統:/etc/ilogtail/users/
Windows系統:C:\LogtailData\users\
如果指定路徑下無使用者標識檔案或使用者標識檔案配置錯誤,請按照如下方法解決。
Linux系統:執行
cd /etc/ilogtail/users/ && touch <uid>
命令,建立使用者標識檔案。其中<uid>
為Project所屬的阿里雲帳號ID。Windows系統:進入
C:\LogtailData\users\
目錄,建立一個名為<uid>
的空檔案。其中<uid>
為Project所屬的阿里雲帳號ID。
如果指定路徑下存在以當前Project所屬的阿里雲帳號ID命名的檔案,則說明使用者標識配置正確。
步驟七:如果是使用者自訂標識機器組,檢查是否已配置自訂標識
您可以通過指定目錄下的user_defined_id檔案判斷是否已在伺服器上配置使用者自訂標識。
如果返回結果為空白,您需要查看是否存在
user_defined_id
檔案或該檔案中是否已配置使用者自訂標識。說明user_defined_id檔案路徑如下:
Linux系統:/etc/ilogtail/user_defined_id
Windows系統:C:\LogtailData\user_defined_id
完成上述修改後,必須重啟Logtail。具體操作,請參見附錄:重啟Logtail方法。
後續步驟
經過上述排查後,仍未解決問題,請提工單。
附錄:重啟Logtail
Linux系統
登入Logtail所在的機器。
運行如下命令。
sudo /etc/init.d/ilogtaild restart
Windows系統
登入Logtail所在的機器。
開啟運行視窗,輸入
services.msc
。重啟LogtailDaemon服務(Logtail 1.0.0.0及以上版本)或LogtailWorker服務(Logtail 0.x.x.x版本)。