簡體   English   中英

如何將日志收集到 Elasticsearch

[英]How to gather logs to Elasticsearch

我在不同的服務器(許多機器)上有網絡應用程序的日志。 如何在安裝了 Elastic search 和 Kibana 的系統中收集這些日志。 當我搜索我只找到的教程介紹的設置,其中logslogstashbeatselasticsearchkibana都在一起。

由於您有許多生成日志的機器,因此您需要使用 Filebeat、Logstash、Elasticsearch 和 Kibana 設置 ELK 堆棧。

  • 您需要在每台機器上設置filebeat實例。

它會在每台機器上監聽你的日志文件,並將它們轉發到你在filebeat.yml配置文件中提到的 logstash 實例,如下所示:

#=========================== Filebeat inputs =============================

filebeat.inputs:

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /path_to_your_log_1/ELK/your_log1.log
    - /path_to_your_log_2/ELK/your_log2.log

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["private_ip_of_logstash_server:5044"]
  • Logstash 服務器偵聽端口 5044 並通過 logstash 配置文件流式傳輸所有日志:

     input { beats { port => 5044 } } filter { # your log filtering logic is here } output { elasticsearch { hosts => [ "elasticcsearch_server_private_ip:9200" ] index => "your_idex_name" } }
  • 在 logstash 中,您可以過濾日志並將其拆分為字段並將它們發送到 elasticsearch。

  • Elasticsearch 將我們通過 logstash 發送的所有數據保存在索引中。
  • elasticsearch 數據庫中的所有數據都可以通過 Kibana 讀取。 我們可以使用 kibana 根據我們的數據創建具有多種類型圖表的儀表板。

下面是帶有 filebeat 的 ELK 的基本架構:

  • 您需要先安裝 Filebeat,它會從所有 Web 服務器收集日志。
  • 之后需要從 Filebeat -> Logstash 傳遞日志。
  • 在 Logstash 中,您可以根據 Grok 模式格式化和刪除不需要的日志。
  • 從 Logstash -> Elasticsearch 轉發日志以進行存儲和索引。
  • 將 Kibana 與 Elasticsearch 連接起來,根據選定的索引在 Matrix 中添加索引和查看日志。

如其他答案中所述,您需要在所有實例上安裝 Filebeat 以偵聽日志文件並發送日志。 您的 Filebeat 配置將取決於您的日志格式(例如 log4j)以及您希望將其傳送到何處(例如:Kafka、Logstash、Elasticsearch)。

配置示例:

filebeat.inputs:
- type: log
  paths:
    - /var/log/system.log
  multiline.pattern: '^\REGEX_TO_MATCH_YOUR_LOG_FORMAT'
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ["https://localhost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD"

此外Logstash是不是強制性的,如果你不想使用它,日志可以直接發送到Elasticsearch,但你需要設置攝取你Elasticsearch集群處理傳入的日志管道,更多的攝取piplelines 這里

還有一個更有用的鏈接: 在 ElasticSearch 和 Filebeat 中使用攝取管道

為了獲取所有 Web 應用程序日志,您需要設置 ELK 堆棧。 現在你有彈性搜索設置,它只是一個保存所有日志數據的數據庫。 為了查看這些日志,您需要 Kibana 這是 UI,然后您需要 Logstash 和 Filebeat 來讀取應用程序的這些日志並將其傳輸到 Logstash 或直接傳輸到 Elasticsearch。
如果您想要一個合適的集中式日志系統,那么我建議您也將 Logstash 與 Filebeat 一起使用。 由於您的服務器與每台服務器上的服務器不同,因此您安裝 Filebeat,並在您擁有 kibana 和 Elasticsearch 的主服務器上安裝 Logstash 並將所有 Filebeats 指向該服務器。

FileBeats 是輕量級數據傳送器,我們將其作為代理安裝在服務器上,以將特定類型的操作數據發送到 Logstash,然后由 Logstash 進行過濾並將日志數據發送到 elasticsearch。

按照本網站上的說明檢查如何設置 ELK 另外,看看FileBeat + ELK Setup

您可以使用 Splunk 和 Splunk forwarder 將所有日志收集在一起。 在您的 Web 服務器中使用 Splunk 轉發器將所有日志轉發到具有 Splunk 的中央服務器。

如果您不想在 Elasticsearch 和 Kibana 堆棧中添加其他工具,您可以直接將日志發送到 Elasticsearch,但在構建管道以擁有更穩定的系統時應小心。

要收集日志,您可以使用 python 或其他語言,但對於 python,我會使用這個庫: https : //elasticsearch-py.readthedocs.io/en/master/

還有另一個python的中等教程:

https://medium.com/naukri-engineering/elasticsearch-tutorial-for-beginners-using-python-b9cb48edcedc

如果您更喜歡其他語言將日志推送到 elasticsearch,當然您也可以使用它們。 我只是建議使用 python,因為我對它更熟悉,而且你可以使用它來創建一個快速原型,然后再將它變為實際產品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM