本文主要介紹如何系統排查主機情境下的機器組無心跳問題。
步驟一:檢查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的作業系統、按照Simple Log ServiceProject所屬地區選擇安裝參數以及根據網路類型選擇安裝方式。關於網路類型的更多資訊,請參見選擇網路。
Windows系統
登入Logtail所在的機器。
開啟運行視窗,輸入
services.msc
。查看LogtailDaemon服務(Logtail 1.0.0.0及以上版本)或LogtailWorker服務(Logtail 0.x.x.x版本)的運行狀態。
如果上述服務未運行,請安裝Logtail。具體操作,請參見安裝Logtail(Windows系統)。
重要安裝時,請務必選擇支援安裝Logtail的作業系統、按照Simple Log ServiceProject所屬地區選擇安裝參數以及根據網路類型選擇安裝方式。關於網路類型的更多資訊,請參見選擇網路。
步驟二:確認機器組中的IP地址是否為Logtail擷取的IP地址
Logtail擷取伺服器IP地址的方式如下:
如果您沒有設定主機名稱綁定,則Logtail會擷取伺服器中第一塊網卡的IP地址。
如果您在
/etc/hosts
檔案中設定了主機名稱綁定,則Logtail會擷取綁定的主機名稱對應的IP地址。
您可以根據下述步驟完成排查。
開啟app_info.json檔案。
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
擷取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檔案。
先執行如下命令確認環境變數中是否指定了該檔案的儲存路徑。
echo $ALIYUN_LOGTAIL_CONFIG
如果返回結果為空白,則說明未使用環境變數指定ilogtail_config.json檔案的儲存路徑。您可以通過如下預設路徑尋找。
作業系統
Logtail
ilogtail_config.json檔案路徑
Linux
Logtail(64位程式)
/usr/local/ilogtail/ilogtail_config.json
Windows(64位作業系統)
Logtail(64位程式)
C:\Program Files\Alibaba\Logtail\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。
情境
網路類型
<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 xxx
所有返回結果都為如下類似資訊,說明網路暢通。
{"Error":{"Code":"OLSInvalidMethod","Message":"The script name is invalid : /","RequestId":"5D****09"}}
如果網路不暢通,請檢查網路環境中80和443連接埠是否已經開放、目標地址是否被攔截以及其他網路側的檢查(例如DNS配置、安全性群組等)。
Windows系統
登入Logtail所在的機器。
調用
telnet
命令依次嘗試串連上述地址。telnet xxx 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啟動參數是否正確。
步驟六:檢查是否存在使用者標識
重要使用者標識必須是阿里雲帳號ID(主帳號ID)。如何擷取,請參見擷取Log Service所在的阿里雲帳號ID。
您可以通過環境變數ALIYUN_LOGTAIL_USER_ID或指定目錄下的使用者標識檔案判斷是否存在使用者標識。如果已通過環境變數設定使用者標識,則以環境變數配置方式為準。因此,您需要先執行如下命令,確認是否已通過環境變數指定使用者標識。
echo $ALIYUN_LOGTAIL_USER_ID
如果返回結果中包含當前Project所屬阿里雲帳號ID,則說明已正確配置使用者標識。
如果返回結果非空但未包含當前Project所屬阿里雲帳號ID,則需修改該環境變數的值為Project所屬的阿里雲帳號ID或在現有值後面增加Project所屬的阿里雲帳號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命名的檔案,則說明使用者標識配置正確。
重要完成上述修改後,必須重啟Logtail。具體操作,請參見附錄:重啟Logtail。
步驟七:如果是使用者自訂標識機器組,檢查是否已配置自訂標識
您可以通過環境變數ALIYUN_LOGTAIL_USER_DEFINED_ID或指定目錄下的user_defined_id檔案判斷是否已在伺服器上配置使用者自訂標識。如果已通過環境變數設定使用者自訂標識,則以環境變數配置為準。因此,您需要先執行如下命令,確認是否已通過環境變數指定使用者自訂標識。
echo $ALIYUN_LOGTAIL_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版本)。