第二步:配置 Logstash(接收 Filebeat 日誌,處理後發送到 Elasticsearch)

1. 創建 Logstash 管道配置文件

進入 Logstash 安裝目錄的 config 文件夾(如 C:\logstash-9.2.1\config),新建一個文件 springcloud-pipeline.conf,內容如下:

conf

 

 

# 1. 輸入:接收來自 Filebeat 的日誌(端口必須與 Filebeat 輸出一致)
input {
  beats {
    port => 5044  # 與 Filebeat 中 output.logstash.hosts 的端口一致
  }
}

# 2. 過濾:處理日誌(以 JSON 格式日誌為例,微服務輸出 JSON 時用)
filter {
  # 解析 JSON 格式的日誌(如果你的微服務日誌是 JSON 格式)
  json {
    source => "message"  # 從 message 字段解析 JSON
    target => "log_details"  # 解析後的字段放入 log_details 中
    remove_field => ["message"]  # 解析後刪除原始 message 字段(可選)
  }

  # 補充一個字段,標記該日誌經過 Logstash 處理(可選)
  mutate {
    add_field => { "processed_by" => "logstash" }
  }
}

# 3. 輸出:發送到 Elasticsearch
output {
  elasticsearch {
    hosts => ["https://localhost:9200"]  # Elasticsearch 地址(9.x 需用 https)
    username => "elastic"
    password => "你的elastic密碼"  # 與 Elasticsearch 一致
    index => "springcloud-logs-%{+yyyy.MM.dd}"  # 按日期生成索引
    # 9.x 強制 SSL,需指定 CA 證書路徑(Elasticsearch 安裝目錄下)
    ssl => true
    cacert => "C:/ElasticSearch/elasticsearch-9.2.1/config/certs/http_ca.crt"
  }

  # 調試用:同時輸出到控制枱(生產環境可註釋)
  stdout {
    codec => rubydebug  # 格式化顯示,方便查看處理結果
  }
}

 

2. 關鍵説明

  • filter 部分:如果你的微服務日誌是 純文本(非 JSON),需要用 grok 插件解析(參考之前的示例);如果是 JSON 格式,上述配置直接可用。
  • cacert 路徑:確保 http_ca.crt 文件存在於 Elasticsearch 的 config/certs 目錄下(9.x 啓動時自動生成)。

第三步:啓動 Filebeat 和 Logstash(按順序!)

1. 啓動 Logstash(先啓動,等待接收日誌)

打開 CMD管理員,進入 Logstash 的 bin 目錄,執行:

logstash.bat -f ../config/springcloud-pipeline.conf  # 指定剛才創建的配置文件
logstash.bat -f "C:\ElasticSearch\Logstash\logstash-9.2.1-windows-x86_64\logstash-9.2.1\config\springcloud-pipeline.conf"

 

  • 啓動成功標誌:控制枱顯示 Successfully started Logstash API endpoint,且無 ERROR 日誌(首次啓動可能需要 10-20 秒)。