跳到主內容
版本:3.0

設定 Logstash 將日誌轉發至 syslog 伺服器

概要

本指南說明如何設定 Logstash,以收集系統元件的日誌,並將其轉發至遠端 syslog 伺服器。 透過這種方式集中記錄日誌,便能實現遠端監控與分析。

Logstash 作為一個日誌處理器,負責從多個來源擷取資料、進行轉換,並將其輸出至目的地(例如 syslog 伺服器)。 此設定:

  • 從 Kafka 主題中收集日誌
  • 透過 Logstash 管線進行處理
  • 透過 UDP 將處理過的日誌轉發至遠端 syslog 伺服器

開始之前

開始之前,請確認:

  • 您對 /etc/logstash/conf.d/ 具有寫入權限。
  • 您的遠端 syslog 伺服器已設定為在 514 號埠接收 UDP 流量。
  • 已確認與 syslog 伺服器的網路連線正常。

設定 syslog 輸出外掛程式

建立一個設定檔,用以定義 syslog 處理流程的輸入與輸出。

檔案: /etc/logstash/conf.d/rsyslog-persister.conf

請新增以下設定,並替換下列佔位符的值。

佔位符描述
\<CLUSTER_VIP>您的 CubeCOS 叢集的叢集虛擬 IP 位址
\<SYSLOG_SERVER_IP>您的 syslog 伺服器的 IP 位址
\<SYSLOG_PORT>您的 syslog 伺服器所監聽的埠號(通常為 514)
\<udp|tcp>所使用的傳輸協定
/etc/logstash/conf.d/rsyslog-persister.conf
input {
kafka {
bootstrap_servers => "<CLUSTER_VIP>:9095"
topics => "logs"
group_id => "rsyslog_persister"
client_id => "rsyslog_persister_cpu014"
consumer_threads => "2"
codec => json
}
}

output {
syslog {
host => "<SYSLOG_SERVER_IP>"
port => <SYSLOG_PORT>
protocol => "<udp|tcp>"
rfc => "rfc5424"
facility => "local0"
severity => "notice"
procid => "-"
msgid => "-"
sourcehost => "%{[host][name]}"
message => "%{message}"
}
}

註冊管線

更新 Logstash 管線設定檔,將您的新 syslog 管線加入其中。

將新的管線新增至 /etc/logstash/pipelines.yml

Addition section to the /etc/logstash/pipelines.yml
- pipeline.id: syslog-persister
path.config: "/etc/logstash/conf.d/rsyslog-persister.conf"

完整的檔案應包含所有已啟用的處理流程。 供參考,典型的配置包含:

/etc/logstash/pipelines.yml
- pipeline.id: log-transformer
path.config: "/etc/logstash/conf.d/log-transformer.conf"
- pipeline.id: auditlog-transformer
path.config: "/etc/logstash/conf.d/auditlog-transformer.conf"
- pipeline.id: hex-event-mapper
path.config: "/etc/logstash/conf.d/hex-event-mapper.conf"
- pipeline.id: ops-event-mapper
path.config: "/etc/logstash/conf.d/ops-event-mapper.conf"
- pipeline.id: telegraf-persister
path.config: "/etc/logstash/conf.d/telegraf-persister.conf"
- pipeline.id: telegraf-hc-persister
path.config: "/etc/logstash/conf.d/telegraf-hc-persister.conf"
- pipeline.id: telegraf-events-persister
path.config: "/etc/logstash/conf.d/telegraf-events-persister.conf"
- pipeline.id: ceph-event-mapper
path.config: "/etc/logstash/conf.d/ceph-event-mapper.conf"
- pipeline.id: kernel-event-mapper
path.config: "/etc/logstash/conf.d/kernel-event-mapper.conf"
- pipeline.id: rsyslog-persister
path.config: "/etc/logstash/conf.d/rsyslog-persister.conf"

將配置傳播至所有控制節點

更新主控制節點後,請將設定檔同步至所有其他控制節點:

Shell
cubectl node -r control rsync /etc/logstash/pipelines.yml
cubectl node -r control rsync /etc/logstash/conf.d/rsyslog-persister.conf

這可確保所有控制節點具有相同的設定,並能一致地處理日誌。

重新啟動 Logstash

請在所有控制節點上重新啟動 Logstash 服務,以套用配置變更。

Shell
cubectl node -r control exec -p "systemctl restart logstash"

-p 選項會讓該指令在所有節點上並行執行。

驗證設定

檢查管線狀態

請檢查 Logstash 服務日誌,以確認管線是否已成功執行。

Shell
grep "rsyslog-persister" /var/log/logstash/logstash-plain.log

成功的結果如下:

Shell
[2025-04-10T14:08:15,997][INFO ][logstash.agent] Pipelines running {:count=>10, :running_pipelines=>[:, :"rsyslog-persister", ...], :non_running_pipelines=>[]}

running_pipelines 中的 rsyslog-persister 項目確認了該管線處於活躍狀態。

下一步

確認設定無誤後,請考慮:

  • 監控 Logstash 的資源使用情況與管道效能
  • 設定管道失敗的警示
  • 在 syslog 伺服器上設定日誌保留政策
  • 根據需要向處理流程中新增篩選器或轉換