📄 本地 Windows 部署 Logstash 連接本地 Elasticsearch 指南
? 目標
- 在本地 Windows 上安裝并運行 Logstash
- 配置 Logstash 將數據發送至本地 Elasticsearch
- 測試數據采集與 ES 存儲流程
🧰 前提條件
軟件 | 版本要求 | 安裝說明 |
---|---|---|
Java | 17+ | Oracle JDK 下載 或 OpenJDK |
Elasticsearch | 8.x / 7.x | Elasticsearch 下載 |
Logstash | 與 ES 版本一致 | Logstash 下載 |
💡 確保 Elasticsearch 已成功啟動,并監聽
http://localhost:9200
📦 步驟一:下載與解壓
- 下載 Logstash:
- 訪問 Logstash 下載頁面
- 選擇 ZIP 包(如
logstash-8.x.x.zip
)
- 解壓到本地路徑,例如:
C:\elk\logstash-8.x.x
?? 步驟二:配置 Logstash
1. 創建配置文件
在 C:\elk\logstash-8.x.x\config
目錄下新建一個配置文件 logstash-to-es.conf
,內容如下:
input {beats {port => 5044}
}filter {grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:level} %{DATA:logger} - %{GREEDYDATA:message}" }}
}output {elasticsearch {hosts => ["https://localhost:9200"]index => "springboot-logs-%{+YYYY.MM.dd}"ssl_enabled => truessl_verification_mode => "full"ssl_certificate_authorities => ["D:/dev/dev2025/EC0601/elasticsearch-9.0.1/config/certs/http_ca.crt"]# 使用 API Key 認證 id:api_keyapi_key => "V6VUSpcBUPesLBBNVAlH:O7l1zeyOwQFfy9w5Af_JTA"}stdout {codec => rubydebug}
}
stdin
: 從控制臺輸入日志elasticsearch
: 輸出到本地 ES,索引按天分割stdout
: 控制臺輸出處理結果(調試用)
Elasticsearch API Key 權限機制說明
Elasticsearch 的 API key 可以綁定一組權限(privileges),這些權限可以包括:
- 集群權限(Cluster privileges)
- 索引權限(Index privileges)
- 應用程序權限(Application privileges)
API key 的權限不能直接繼承用戶的角色權限,但可以通過創建帶有特定權限的 API key 實現類似效果。
如何給 API key 添加權限
這里通過 REST API 創建帶權限的 API Key
你可以使用如下請求來創建一個具有特定權限的 API key:
POST /_security/api_key
{"name": "logstash_api_key","role_descriptors": {"logstash_writer": {"cluster": ["monitor", "manage_index_templates"],"index": [{"names": ["*"],"privileges": ["read", "write", "create_index"]}]}}
}
🧾 參數說明:
字段 | 含義 |
---|---|
name | API key 的名稱,方便識別 |
role_descriptors | 定義該 API key 所擁有的權限描述符 |
cluster | 集群級別權限,如 monitor , manage_index_templates |
index.names | 索引模式,如 "logs-*" 或 "*" |
index.privileges | 索引級別的權限,如 read , write , create_index |
?? 注意:Elasticsearch 7.10+ 支持
role_descriptors
方式創建 API key 權限。
?? 步驟三:啟動 Logstash
打開命令提示符(CMD),進入 Logstash 根目錄并執行:
bin/logstash.bat -f config/logstash-sample.conf --log.level debug
logstash-9.0.2/logs/logstash-plain.log 注意以下連接es的日志消息,確認output配置是否有問題
📄 Windows 本地部署 Filebeat 連接 Logstash 操作指南
? 一、目標
本指南旨在幫助用戶在 本地 Windows 系統 上完成以下操作:
- 安裝并配置 Filebeat
- 將 Filebeat 采集的日志發送到 本地運行的 Logstash
- 實現日志采集 → 發送 → 接收的完整流程
🧰 二、環境要求
組件 | 版本建議 | 下載地址 |
---|---|---|
操作系統 | Windows 10 / Windows Server(支持 Win7 及以上) | - |
Logstash | 與 Filebeat 版本一致(如 9.0.2) | Elastic 官網 |
Filebeat | 與 Logstash 版本一致(如 9.0.2) | Elastic 官網 |
?? 建議使用相同版本的 Elastic Stack 組件以避免兼容性問題。
🔧 三、部署步驟
安裝 Filebeat
-
訪問 Filebeat 下載頁面
-
下載適用于 Windows 的 ZIP 包,如:
filebeat-9.0.2-windows-x86_64.zip
-
解壓到本地目錄,如:
D:\filebeat
配置 Filebeat
編輯 D:\filebeat\filebeat.yml
文件,進行如下配置:
📁 設置日志輸入路徑(inputs)
filebeat.inputs:- type: filestreampaths:- D:/dev/dev2025/EC0601/logs/springboot-ai-rag-demo.logenabled: truefields:log_type: springboot-appapp_name: springboot-ai-rag-demofields_under_root: truemultiline:pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'negate: truematch: afteroutput.logstash:hosts: ["localhost:5044"]
#output.elasticsearch:
# hosts: [ "localhost:9200" ]
# username: "elastic"
# password: "elastic"
# 啟用 HTTP 狀態接口
http.enabled: true
http.port: 5066
logging.level: debug
logging.selectors: ["*"]
日志內容為spirngboot應用日志:
可以在項目中配置將日志輸出到 D:\dev\dev2025\EC0601\logs\springboot-ai-rag-demo.log
文件中。
logging.file.path=D:/dev/dev2025/EC0601/logs
logging.file.name=${logging.file.path}/springboot-ai-rag-demo.log
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
logging.level.root=INFO
logging.level.com.example.demo=DEBUG
啟動 Filebeat
.\filebeat.exe -e
🔍 四、驗證數據是否到達 Logstash
方法一:查看 Logstash 相關日志, 確認 Filebeat 是否成功連接 Logstash。
方法二:使用 Kibana 查看索引
🧪 五、常見問題排查
問題現象 | 可能原因 | 解決方法 |
---|---|---|
Filebeat 報錯無法連接 Logstash | Logstash 未啟動或端口未監聽 | 確認 Logstash 是否運行,使用 `netstat -ano |
Filebeat 不采集日志 | 路徑錯誤或權限不足 | 檢查 paths 配置;嘗試以管理員身份運行 Filebeat |
Logstash 收不到數據 | 數據格式不匹配 | 檢查 Logstash 的 grok 過濾規則是否適配日志格式 |
Filebeat 卡住不動 | 日志文件過大或編碼問題 | 嘗試小文件測試;檢查日志編碼是否為 UTF-8 |
📌 六、總結
后續可以根據需要擴展功能,例如:
- 添加多輸入源(如 JSON、CSV)
- 使用 TLS 加密通信
- 輸出到遠程 Elasticsearch
- 配置 為 Windows 服務自啟動
- 把es作為ai-rag服務的向量數據庫,使用向量檢索等