2017-08-17 109 views
0

我想將錯誤從我的node.js服務器記錄到另一臺服務器。我正在考慮使用elasticsearch,logstash和kibana。我想知道如何用我的節點服務器設置ELK。如何使用node.js設置ELK

回答

1

我在我的舊組織中恰好使用了這個用例。使用Beats + ELK啓動的基本教程 - https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html

所以基本上它是如何工作的 - 您的nodejs應用程序將以不同格式(如錯誤/警告/信息等)登錄文件(您可以使用bunyan)。 Filebeat會將這些日誌文件拖尾併發送到logstash服務器。 Logstash input.conf將有一些輸入過濾器(在你的情況下它將是錯誤過濾器)。當任何日誌消息通過這些過濾器時,logstash會根據output.conf文件中的決定將其轉發到某個端點。

這是我們所做的事情 -

初始架構 - 安裝filebeat(之前我們使用logstash轉發)客戶端尾日誌服務器的NodeJS並轉發給logstash機。 Logstash將對輸入日誌進行一些處理並將它們發送到ES羣集(可以與Logstash位於同一臺機器上)。 Kibana只是這個ES上的一個可視化。

最終體系結構 - 初始設置對於小流量很酷,但是我們意識到logstash可能是單點故障,並且在流量增加時可能會導致日誌丟失。因此,我們將Kafka與Logstash一起整合,以便系統順利地進行擴展。這裏是一篇文章 - https://www.elastic.co/blog/logstash-kafka-intro

希望這有助於!

+0

感謝回覆@aky。你能指導我通過setup,conf文件以及如何從node.js層登錄所需的基本安裝步驟。 –

+0

編輯答案與每個組件和步驟的教程:) –

+0

它有幫助嗎?或者你需要其他幫助? –

1

可以使用運行代理的logstash從應用程序收集日誌。 Logstash具有輸入插件(https://www.elastic.co/guide/en/logstash/current/input-plugins.html)。這可以在管道中配置。一個基本的設置是配置TCP(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html)或者UDP(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-udp.html)input插件),Logstash可以監聽插件中配置的端口 然後應用程序可以將日誌直接發送到logstash服務器,然後流水線可以轉換並轉發到ES。 通過配置Logstash管道是持久的,可避免數據丟失,這種方法是較好的,當應用程序服務器是短暫的(如在容器中)。

對於的NodeJS,https://www.npmjs.com/package/winston-logstash是一個包這是相當活躍的,這要點https://gist.github.com/jgoodall/6323951爲其他語言的整體方法提供了一個很好的例子。

這是示例(最小)TCP inpu t插件配置

input { 
    tcp { 
    'port' => '9563' 
    } 
} 
相關問題