機器組心跳用於檢測伺服器與Log Service間的通訊狀態,若心跳異常將導致資料無法傳輸至Log Service。本文將分析心跳異常的產生原因及常見情境的解決方案。
心跳異常原因分析
伺服器上的LoongCollector通過以下配置項,來確定目標Project並上報心跳,因此解決心跳異常並不複雜,僅需確認配置項取值,並檢查網路情況即可。
-
Log ServiceProject所屬阿里雲主帳號:指定該帳號有許可權訪問、採集這台伺服器的日誌。
-
Project所屬地區與傳輸方式:Log Service訪問網域名稱由地區和傳輸方式動態拼接產生,需確保伺服器與訪問網域名稱之間網路通暢。相關概念請參考網路傳輸方式與網域名稱。
-
使用者自訂標識/IP:通過IP或使用者自訂標識與機器組關聯,建立心跳。
建立心跳的過程
-
LoongCollector擷取配置的一個或多個阿里雲帳號ID資訊,地區與傳輸方式拼接組成的訪問網域名稱,使用者自訂標識或IP資訊。
-
LoongCollector上報心跳與上述資訊至指定地區中的Project。
-
合格一個或多個Project比較機器組中IP或使用者自訂標識與上送資訊是否一致。
-
資訊一致的一個或多個Project將成功建立心跳,機器組顯示心跳為OK。
常見心跳異常情境
新增加的伺服器心跳為FAIL
心跳為FAIL時,可能是初次建立心跳需要花費一些時間,請等待兩分鐘左右後重新整理心跳狀態,若仍為FAIL,請按如下步驟檢查:
-
檢查LoongCollector安裝情境選擇是否有誤,若安裝情境正確進行下一步。否則請卸載後重新安裝。
安裝方式
適用情境
僅當伺服器為阿里雲ECS,且ECS與Project屬於同一個阿里雲帳號,所屬地區也相同時適用。
當伺服器為阿里雲ECS,且ECS與Project屬於同一個阿里雲帳號,但不屬於同一個地區時適用。
當伺服器為阿里雲ECS,且ECS與Project屬於同一個地區,但不屬於同一個阿里雲帳號時適用。
-
當伺服器不是阿里雲ECS,例如自建伺服器或其他雲端服務器時適用。
-
當伺服器為阿里雲ECS,但ECS與Project不屬於同一個阿里雲帳號,也不在同一個地區時,可視為自建伺服器。
-
-
在伺服器上通過
sudo /etc/init.d/loongcollectord status查看LoongCollector啟動狀態,返回loongcollector is running表示啟動成功。否則執行如下命令啟動LoongCollector:若使用的是Logtail採集器,則查看Logtail啟動狀態命令為:
sudo /etc/init.d/ilogtaild status,啟動Logtail命令為:sudo /etc/init.d/ilogtaild start。sudo /etc/init.d/loongcollectord start -
若是跨帳號情境(Project所屬阿里雲帳號與伺服器所屬帳號不同):需手動設定使用者ID檔案,使該帳號有許可權訪問、採集這台伺服器的日誌。
-
確認地區與傳輸方式正確,並能聯通訪問網域名稱:查看伺服器上
/usr/local/ilogtail/ilogtail_config.json檔案中region資訊是否與Log ServiceProject地區的RegionID一致。一致則排查下一步,若不一致則修改: -
檢查使用者自訂標識或IP的值:
-
登入Log Service控制台。在Project列表中,單擊目標Project。
-
單擊資源,單擊機器組,在機器組中單擊目標機器組。
-
查看機器組配置頁面,並確認機器組標識內容後選擇對應操作:
使用者自訂標識
-
確認伺服器上是否存在
/etc/ilogtail/user_defined_id檔案,若不存在請建立。 -
向該檔案中寫入自訂的字串作為使用者自訂標識,此處以
user-defined-test-1為例。#向指定檔案寫入自訂字串 echo "user-defined-test-1" > /etc/ilogtail/user_defined_id -
修改用戶自訂標識的取值為自訂的字串,此例為
user-defined-test-1。
IP地址
將伺服器上
/usr/local/ilogtail/app_info.json中ip欄位的資訊添加到IP地址中。ip取值規則:若已在伺服器的/etc/hosts檔案中設定了主機名稱與IP地址綁定,則自動擷取綁定的IP地址。若沒有設定主機名稱綁定,自動擷取本機第一塊網卡的IP地址。若設定了/usr/local/ilogtail/ilogtail_config.json中的working_ip參數,則以working_ip值作為伺服器的IP地址。請至少保證一種情況下能擷取到ip,否則ip欄位值為空白,無法建立心跳。
-
-
伺服器曾經心跳成功但當前為FAIL
曾經心跳成功說明配置項正確,若機器群組類型為使用者自訂標識型,則配置項中阿里雲主帳號資訊,地區與傳輸方式,使用者自訂標識等是固定值,未修改不會改變心跳狀態,可能需要檢查網路能否聯通訪問網域名稱。若機器群組類型為IP型,則最有可能是IP地址衝突或IP改變導致心跳為FAIL,請參考如下步驟解決:
-
在伺服器上重啟LoongCollector以擷取最新IP資訊。
若使用的是Logtail採集器,重啟命令為:
sudo /etc/init.d/ilogtaild restartsudo /etc/init.d/loongcollectord restart -
在伺服器上查看
/usr/local/ilogtail/app_info.json中ip欄位的資訊。ip取值規則:若已在伺服器的/etc/hosts檔案中設定了主機名稱與IP地址綁定,則自動擷取綁定的IP地址。若沒有設定主機名稱綁定,自動擷取本機第一塊網卡的IP地址。若設定了/usr/local/ilogtail/ilogtail_config.json中的working_ip參數,則以working_ip值作為伺服器的IP地址。
-
登入Log Service控制台。在Project列表中,單擊目標Project。
-
單擊資源,單擊機器組,在機器組中單擊目標機器組。
-
查看機器組配置頁面,確認IP地址中資訊是否包含
/usr/local/ilogtail/app_info.json中ip欄位。若不包含則添加ip欄位的值到IP地址中。 -
若一致但心跳仍為FAIL,則不適合使用IP型機器組,請切換機器群組類型後嘗試。
切換機器組標識類型後心跳FAIL
出現IP地址衝突或IP改變等情況時,不再適合使用IP型機器組,需切換為使用者自訂標識型機器組。切換機器群組類型並不影響網路聯通情況,阿里雲主帳號資訊,地區與傳輸方式等資訊,因此僅需關注使用者自訂標識取值是否正確。
-
確認是否存在
/etc/ilogtail/user_defined_id檔案,若不存在請建立。 -
向該檔案中寫入自訂的字串作為使用者自訂標識,此處以
user-defined-test-1為例。#向指定檔案寫入自訂字串 echo "user-defined-test-1" > /etc/ilogtail/user_defined_id -
登入Log Service控制台。在Project列表中,單擊目標Project。
-
單擊資源,單擊機器組,在機器組中單擊目標機器組。
-
查看機器組配置頁面,並確認以下兩項參數取值,若不正確請單擊右上方修改,修改後儲存。
-
機器組標識:使用者自訂標識。
-
使用者自訂標識:自訂的字串,此例為
user-defined-test-1。
-
常見問題
按文檔排查後,各項配置均正確添加,為何心跳仍FAIL?
如果確認配置正確且網路正常,心跳為FAIL一般有兩種可能:
-
在該地區較長一段時間內無採集配置,心跳發送間隔被抑制
-
向每個返回的地區發送請求擷取配置時,為了降低對服務端的壓力,如果從一個地區得不到採集配置,會降低對該地區的請求頻率,最長間隔可達到 12 分鐘,如果該值超過了該地區心跳 FAIL 的閾值,就會導致心跳 FAIL。
-
解決辦法:忽略心跳 FAIL,直接向該機器所在的機器組上應用採集配置,然後等待下一次向該地區發起請求,心跳即可恢複。如果希望立即恢複的話,重啟即可。
-
-
當前使用的配置並不是
ilogtail_config.json中配置-
樣本:使用了一個非預設配置啟動後,運行期間
ilogtail_config.json被修改而未重啟。 -
檢查方法:
-
最簡單的辦法:重啟後自動載入最新配置。
-
查看日誌:如果擔心對採集有影響,可以查看
/usr/local/ilogtail/ilogtail.LOG檔案,從開頭處尋找關鍵字load logtail config file,該行日誌會包含當前運行中使用的配置,檢查是否和本地檔案一致。
-
-
LoongCollector 報錯“fetch ecs token fail Timeout was reached”如何處理?
問題現象
LoongCollector 報錯fetch ecs token fail Timeout was reached,無法擷取 ECS Metadata 服務資訊。
問題原因
LoongCollector 無法訪問 ECS Metadata 服務100.100.100.200。
解決方案
-
在 ECS 上執行以下命令,測試 ECS Metadata 服務連通性。
curl http://100.100.100.200/latest/meta-data/instance-id -
如果命令無法串連到 Metadata 服務,檢查 ECS 安全性群組配置,確認未限制對
100.100.100.200的訪問;允許存取後重新執行該命令確認連通性。
同地區 ECS 訪問 SLS 內網 Endpoint 連線逾時如何排查?
問題現象
同地區 ECS 訪問 SLS 內網 Endpoint 時連線逾時。
問題原因
ECS 與 SLS Project 不在同一地區、內網 Endpoint 的 DNS 解析或網路連通性異常、ECS 內部防火牆或安全軟體攔截阿里雲內網網段,或者 DNS 未指向阿里雲內網 DNS,均可能導致連線逾時。
解決方案
按以下順序排查:
-
確認 ECS 與 SLS Project 位於同一地區。
-
測試內網 OSS Endpoint 和 SLS Endpoint 的 DNS 解析及連通性。執行命令前,將
<OSS內網Endpoint>替換為當前地區的 OSS 內網 Endpoint,將<Project名稱>替換為目標 Project 名稱,並將<SLS內網Endpoint>替換為當前地區的 SLS 內網 Endpoint。curl -v http://<OSS內網Endpoint> curl -v http://<Project名稱>.<SLS內網Endpoint>如果命令提示網域名稱無法解析或連線逾時,繼續排查防火牆和 DNS 配置。
-
檢查 ECS 內部防火牆(iptables)或安全軟體(例如 Tailscale)是否攔截阿里雲內網網段
100.64.0.0/10、100.115.0.0/16等;如果存在攔截規則,將這些網段加入白名單。 -
檢查 DNS 配置是否正確指向阿里雲內網 DNS
100.100.2.136和100.100.2.138,修正後再次執行 curl 命令確認連通性。
ACK 叢集中 NodeLocalDNS 導致 LoongCollector 擷取錯誤 IP 如何處理?
問題現象
ACK 叢集中啟用 NodeLocalDNS 後,LoongCollector 擷取到錯誤的 IP 位址,導致機器組心跳異常。
問題原因
NodeLocalDNS 建立的虛擬網卡可能干擾 LoongCollector 或 Logtail 擷取伺服器 IP 位址。
解決方案
-
在 LoongCollector 或 Logtail 的設定檔中添加
working_ip參數,並將其設定為正確的物理 IP 位址。 -
儲存配置後重啟採集器,使
working_ip配置生效。使用 LoongCollector 時執行以下命令;使用 Logtail 時執行sudo /etc/init.d/ilogtaild restart。sudo /etc/init.d/loongcollectord restart
SLS 自動安裝 Logtail 時報錯 ClientNotRunning 且 aliyun service 未啟動如何處理?
問題現象
SLS 自動安裝 Logtail 時出現ClientNotRunning錯誤,且 ECS 執行個體上的 aliyun service 未啟動。
問題原因
自動安裝依賴 Cloud Assistant 服務;該服務未啟動時,無法完成 Logtail 的自動安裝。
解決方案
-
在 ECS 執行個體上執行以下命令,啟動並設定 Cloud Assistant 服務開機自動啟動。
systemctl enable aliyun.service --now -
命令執行成功後,重新執行 SLS 採集組件的自動安裝操作。
LoongCollector 啟動失敗報錯“daemon not found, but found orphaned workers”如何處理?
問題現象
LoongCollector 啟動失敗,並報錯daemon not found, but found orphaned workers。
問題原因
組件進程異常或伺服器資源使用率過高,可能導致殘留 worker 進程並使 LoongCollector 無法啟動。
解決方案
按以下順序處理:
-
檢查伺服器記憶體和 CPU 監控,確認資源使用率是否過高;資源使用率過高時,先恢複可用資源後再啟動 LoongCollector。
-
在組件管理中嘗試升級 LoongCollector 組件版本。
-
如果升級後問題仍未解決,卸載 LoongCollector 組件並重新安裝。
-
檢查機器組心跳狀態是否正常,並核對採集配置是否正確。
進入專案概覽頁面。