在使用阿里雲Logstash將資料寫入Elasticsearch(output指定為Elasticsearch)時,您可能會遇到網路不通、管道配置錯誤、負載高、管道正常啟動但無資料寫入目標端以及服務正常但缺少資料等問題,此時您可以參考本文的排查方案進行排查解決。
網路不通
排查方案 | 常見錯誤案例 | 建議解決方案 |
分別檢查Logstash是否與源端和目標端服務在同一網路下。 說明 阿里雲Logstash和Elasticsearch服務部署在專用網路環境下,建議您將業務部署在相同的專用網路下。 | 源端服務在公網環境下,而Logstash在專用網路環境下。 | 選擇以下任意一種方式處理:
|
檢查NAT配置是否錯誤。 |
| 根據具體情況,按照以下方式處理:
|
檢查是否上傳了正確的JDBC驅動外掛程式。 | PolarDB資料同步情境中,使用高版本的JDBC驅動,日誌無報錯,但資料寫不到目標端,換成低版本後正常。 | 選擇正確版本的JDBC驅動,詳細資料請參見配置擴充檔案。 |
檢查白名單或安全性群組是否有限制。 | 通過Filebeat將資料擷取到Logstash中處理,Filebeat部署在使用者側ECS上,但ECS未在安全性群組開放監聽連接埠。 | 根據具體情況,按照以下方式處理:
|
檢查Logstash管道配置的源端或目標端是否涉及到RAM使用者未授權,導致RAM使用者無法訪問對應服務。 |
| 根據具體情況,按照以下方式處理:
|
管道配置錯誤
排查方案 | 常見錯誤案例 | 建議解決方案 |
參見查詢日誌,查看Logstash的主日誌,檢查日誌是否存在報錯。 | 未安裝外掛程式。例如日誌中出現 | 選擇以下任意一種方式處理:
|
配置中存在隱藏的特殊字元。 | 手動輸入配置。 | |
filter過濾代碼有誤,例如ruby代碼存在錯誤。 | 選擇以下任意一種方式處理:
| |
管道參數名或參數值寫入錯誤。例如logstash-output-elasticsearch外掛程式中的hosts寫成了host、RDS執行個體名稱不正確等。 | 參見Logstash官方文檔或阿里雲Elasticseatch官方最佳實務文檔編寫管道配置。 | |
Logstash和源端或目標端連線逾時。例如無法訪問Elasticsearch時,會出現 | 確保Logstash和Elasticsearch網路互連,並輸入正確的源端和目標端地址。 | |
Elasticsearch開啟了HTTPS協議,但Logstash管道配置時使用了http。 | 修改管道配置,使用與源端和目標端相同的訪問協議。 |
負載問題
排查方案 | 常見錯誤案例 | 建議解決方案 |
參見叢集監控章節,檢查節點磁碟使用率是否過高。 |
| 根據具體情況,按照以下方式處理:
|
參見叢集監控章節,檢查節點記憶體是否溢出OOM(Out Of Memory)。 | 記憶體OOM,節點未拉起。 | 在控制台重啟對應節點。 |
檢查源端或目標端是否存在負載問題。 | Elasticsearch叢集不健康,影響寫入。 | 暫停寫入,優先恢複叢集健康,建議擴容。 |
管道正常啟動,但無資料寫入目標端
排查方案 | 常見錯誤案例 | 建議解決方案 |
參見使用Logstash管道配置調試功能,開啟Logsatsh的管道配置調試功能(需要安裝logstash-output-file_extend外掛程式),查看調試日誌,判斷是否有資料流入Logstash服務:
| 無資料流入Logstash:
| 根據具體情況,選擇以下方式處理:
|
有資料流入Logstash:
| 根據具體情況,選擇以下方式處理:
|
服務正常缺少資料
排查方案 | 常見錯誤案例 | 建議解決方案 |
根據管道配置情境,結合管道外掛程式屬性排查:
| JDBC情境:
| 根據具體情況,選擇以下方式處理:
|
使用logstash-input-elasticsearch外掛程式情境:
| Logstash不適用於資料即時同步情境。如果源端存在即時寫入,建議通過拉長定時查詢時間,減少頻繁在源端和目標端查詢和寫入。 | |
參見查詢日誌,查看Logstash慢日誌,檢查是否存在寫入慢的問題。 | 源端和目標端壓力均未達到瓶頸,但Logstash的管道背景工作執行緒數使用了官方的預設值。 | 增加Logstash的管道批大小和背景工作執行緒數,詳細資料請參見通過設定檔管理管道。 |