在使用阿里云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的管道批大小和工作線程數,詳細信息請參見通過配置文件管理管道。 |