Collectd –> Elasticsearch 如果遠端主機無法連接到中央彈性搜尋
目標
中央儲存和分析性能數字的方法:
- CPU負載
- 記憶體使用
- …
目前策略
我想實現這樣的設置:
- 收集
- 日誌儲存
- 彈性搜尋
- 木花
就像這裡解釋的那樣: https ://mtalavera.wordpress.com/2015/02/16/monitoring-with-collectd-and-kibana/
問題:遠端主機無法推送數據
約束:
- 我們只有
ssh
從中央伺服器到遠端主機。ssh
由於網路設置,從遠端主機到中央伺服器不起作用(遺憾的是我無法更改)。- 網路流量跨越多個非公共網路。每月兩次無法訪問主機,因為管理員使用防火牆規則。我不想鬆開一條線。這就是為什麼我想將日誌儲存在遠端主機上並獲取(壓縮)數據。
解決方案?
如何每小時獲取數據?
對於上面列出的問題,您需要在遠端端緩衝統計資訊,以免失去任何內容。
有很多方法可以做到這一點,但沒有一種方法過於簡單,並且需要進行大量測試以確保它們是可行的。它們都涉及在本地寫入
collectd
’s 輸出,然後使用某種方法在中央伺服器上獲取該輸出。我沒有測試以下任何內容,所以有些可能根本不起作用。
沒有特別容易或複雜的順序:
- Socket/Network Output to Script
Write
Collectd
的輸出到套接字或 IP/埠,其中 PHP/Perl/Python/Bash 腳本正在偵聽將命令寫入文件。然後,這些文件可以被中央伺服器推送/拉取,並由 Logstash 攝取。
優點:擷取輸出的簡單腳本;使用的標準 Linux 命令
缺點:如果您要獲取大量統計資訊,則無法擴展;需要維護腳本;不確定 LS 是否會處理普通協議 2. Redis/AMQP/Kafka/MongoDB將輸出 寫入
Collectd
可能的“緩衝區”之一。它們各自的工作方式略有不同,並且具有不同的部署選項,因此我將留給您找出最好的方法,因為這超出了這個問題的範圍。也就是說,它們中的任何一個都應該工作。然後,您需要一種方法將數據從緩衝解決方案返回到中央伺服器。應用程序本機複製/鏡像/集群或每隔 X 間隔執行以傳送數據(在任一端執行)的腳本是兩種可能性。
優點:非常靈活的部署選項;應該可以很好地擴展;使用眾所周知的工具/程序
缺點:緩衝區程序可能需要大量資源,或安裝許多軟體包 3. 套接字/網路輸出到 Logstash 這與選項 1 幾乎相同,但不是將
collectd
輸出輸出到腳本/程序,而是將其寫入每個遠端主機上的本地 Logstash 實例。Logstash 然後會在本地寫入 CSV/JSON,您可以使用任何方法將這些文件返回到中央伺服器,包括 LS 本身。
優點:用於整個解決方案的單一工具集;提供一種在邊緣轉換數據的方法,然後集中攝取;移動元件很少 缺點:所有遠端主機上都需要 Java/LS
除了每個選項的優點/缺點之外,所有選項的一個共同缺點是您需要找到一種方法來維護所有伺服器上的一致配置。如果您有很多遠端節點(或者通常只有很多節點),您可能已經有一個配置管理系統,這將是微不足道的。