機器組心跳用於檢測伺服器與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,該行日誌會包含當前運行中使用的配置,檢查是否和本地檔案一致。
進入專案概覽頁面。