本文主要介紹如何系統排查主機場景下的機器組無心跳問題。
機器組安裝示例
機器組配置:ECS和日志服務Project同賬號同地域。
通過Logtail跨地域采集日志:ECS和日志服務Project同賬號不同地域。
通過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的操作系統、按照日志服務Project所屬地域選擇安裝參數以及根據網絡類型選擇安裝方式。關于網絡類型的更多信息,請參見選擇網絡。
Windows系統
登錄Logtail所在的機器。
打開運行窗口,輸入
services.msc
。查看LogtailDaemon服務(Logtail 1.0.0.0及以上版本)或LogtailWorker服務(Logtail 0.x.x.x版本)的運行狀態。
如果上述服務未運行。
已經安裝Logtail,但是未啟動。請參見手動啟動和停止Logtail(Windows系統)。
未安裝Logtail,請安裝Logtail。具體操作,請參見安裝Logtail(Windows系統)。
重要安裝時,請務必選擇支持安裝Logtail的操作系統、按照日志服務Project所屬地域選擇安裝參數以及根據網絡類型選擇安裝方式。關于網絡類型的更多信息,請參見選擇網絡。
步驟二:確認機器組中的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地址。
日志服務機器組包括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版本)。