溫馨提示×

CentOS Filebeat與Logstash配合使用教程

小樊
36
2025-09-30 18:22:18
欄目: 智能運維

CentOS下Filebeat與Logstash配合使用教程

1. 準備工作

確保CentOS系統已聯網,且具備rootsudo權限。本教程基于Elastic Stack 7.x版本(兼容性最佳),需提前安裝Java 8及以上環境(Logstash依賴Java運行)。

2. 安裝Elastic YUM倉庫

Elastic官方提供了YUM倉庫,用于便捷安裝Filebeat、Logstash等組件。執行以下命令添加倉庫:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

3. 安裝Filebeat與Logstash

通過YUM倉庫安裝Filebeat(輕量級日志收集器)和Logstash(數據處理管道):

sudo yum install -y filebeat logstash

4. 配置Filebeat

Filebeat的配置文件位于/etc/filebeat/filebeat.yml,需修改以下內容:

4.1 啟用日志輸入

默認監控/var/log/*.log(系統日志),可根據需求調整路徑(如Nginx日志/var/log/nginx/*.log):

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

4.2 設置輸出到Logstash

將Filebeat收集的日志發送至Logstash,默認監聽localhost:5044(需與Logstash輸入端口一致):

output.logstash:
  hosts: ["localhost:5044"]

4.3 可選:添加自定義字段(便于后續檢索)

為日志事件添加environment(環境)、application(應用)等標簽,提升查詢效率:

fields:
  environment: production
  application: myapp
fields_under_root: true  # 將自定義字段提升至事件頂層

5. 配置Logstash

Logstash的配置文件需新建在/etc/logstash/conf.d/目錄下(推薦),例如創建filebeat.conf

sudo vi /etc/logstash/conf.d/filebeat.conf

配置文件分為**Input(輸入)、Filter(過濾)、Output(輸出)**三部分:

5.1 輸入配置

接收Filebeat發送的Beats協議數據(端口需與Filebeat輸出端口一致):

input {
  beats {
    port => 5044
  }
}

5.2 過濾配置(可選但推薦)

使用Grok插件解析非結構化日志(如Apache/Nginx日志),提取關鍵字段(如時間、IP、請求方法、狀態碼等):

filter {
  # 解析Apache Common Log Format(需根據實際日志格式調整)
  if [fileset][module] == "apache" and [fileset][name] == "access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    # 解析時間戳并轉換為Elasticsearch支持的格式
    date {
      match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
    }
    # 添加地理位置信息(基于客戶端IP)
    geoip {
      source => "clientip"
      target => "geoip"
      database => "/usr/share/logstash/vendor/geoip/GeoLite2-City.mmdb"  # 需下載GeoIP數據庫
    }
  }
  # 通用JSON解析(若日志為JSON格式)
  else if [message] =~ /^\s*\{.*\}\s*$/ {
    json {
      source => "message"
      target => "parsed_json"
    }
  }
}

5.3 輸出配置

將處理后的日志發送至Elasticsearch,索引名稱按日期分割(如filebeat-2025.09.30):

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "filebeat-%{+YYYY.MM.dd}"
    manage_template => false  # 禁用自動生成模板(可選)
  }
  # 輸出到控制臺(調試用,正式環境可注釋)
  stdout {
    codec => rubydebug
  }
}

6. 啟動并啟用服務

配置完成后,啟動Filebeat和Logstash服務,并設置為開機自啟:

# 啟動Filebeat
sudo systemctl start filebeat
sudo systemctl enable filebeat

# 啟動Logstash
sudo systemctl start logstash
sudo systemctl enable logstash

7. 驗證配置

7.1 檢查服務狀態

確保Filebeat和Logstash均處于active (running)狀態:

sudo systemctl status filebeat
sudo systemctl status logstash

7.2 查看Filebeat日志

若Filebeat未正常發送數據,可通過以下命令查看日志:

sudo tail -f /var/log/filebeat/filebeat

7.3 查看Logstash日志

若Logstash未正確處理數據,檢查其日志:

sudo tail -f /var/log/logstash/logstash-plain.log

7.4 驗證Elasticsearch索引

通過Elasticsearch的_cat/indices接口查看是否生成filebeat-*索引:

curl -X GET "localhost:9200/_cat/indices?v"

7.5 使用Kibana查看數據

訪問Kibana(默認http://<服務器IP>:5601),進入Dev Tools,執行以下命令查詢日志:

GET /filebeat-*/_search
{
  "query": {
    "match_all": {}
  }
}

8. 常見問題排查

8.1 Filebeat無法連接到Logstash

  • 檢查Logstash是否監聽5044端口:
    sudo netstat -tulnp | grep 5044
    
  • 確保防火墻允許5044端口(若開啟防火墻):
    sudo firewall-cmd --add-port=5044/tcp --permanent
    sudo firewall-cmd --reload
    

8.2 Logstash無法解析日志

  • 檢查Grok模式是否匹配日志格式(可使用Grok Debugger在線驗證)。
  • 調整date過濾器的match參數,確保與日志中的時間格式一致。

8.3 Elasticsearch索引未生成

  • 檢查Elasticsearch是否正常運行:
    sudo systemctl status elasticsearch
    
  • 確認Elasticsearch的cluster.name與Logstash配置一致(默認均為elasticsearch)。

通過以上步驟,即可完成CentOS下Filebeat與Logstash的配合配置,實現日志的收集、處理與存儲。根據實際需求,可進一步優化過濾規則(如添加更多Grok模式)、調整性能參數(如批量發送大小flush_size),或集成Kibana進行可視化分析。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女