輪撥

2018年3月14日 星期三

如何在 CentOS 7 環境中安裝 Logstash 教學

在上一篇中 Chris 有介紹怎麼將 Elasticsearch 安裝起來

安裝好了 Elasticsearch 這強大的資料庫搜尋引擎後,接下來當然是要餵點資料給它了,這個時候 Logstash 就派上用場了,在這篇中有提到
  • Logstash:支援 48 種以上不同的輸入來源,及 50 種以上的輸出種類,可幫助你去收集各式各樣的 Log 或是資訊,並且根據你的 Log 來 Parser 成你要的資料欄位 
今天就針對 Logstash 的安裝來做說明

軟體版本

  • 作業系統:CentOS 7
  • Logstash:6.2.1
  • JDK:1.8.0

1.修改HostName

# hostnamectl set-hostname elk-logstash-01

2.更新以及安裝有用到的工具

# yum -y update
# yum -y install wget
# yum -y install vim

3.安裝 JDK 1.8.0

確認一下版本,如果是1.8.0 此步驟即可省略 

# java -version


# yum install java-1.8.0-openjdk

4.下載Logstash

Logstash下載後,透過 SCP 或 WinSCP 放到 /tmp/,執行以下指令安裝:

# cd /tmp/

5.安裝Logstash

# rpm -ivh /tmp/logstash-*.rpm

6.防火牆開通

安裝完 CentOS 7 預設會開啟防火牆,所以當安裝完 Logstash 後一定要開通 Policy 喔,不然外部會有連不到的狀況喔。下面的範例是透過syslog來接收資料,所以我是開UDP 514 Port,如果要收Beats的資料要開TCP 5044 Port喔。

# firewall-cmd --add-port=5044/tcp —permanent
# firewall-cmd --add-port=514/udp --permanent
# firewall-cmd —reload


你也可以將防火牆完全關閉,當然測試時可以這樣用,但線上環境為了安全上的考量不建議全關喔。

# systemctl stop firewalld
# systemctl disable firewalld

7.測試

Chris 本身有一台測試用的 Fortigate 剛好可以將Fortiget 的 Log 透過 syslog 丟給 Logstash,先寫一個簡單的 Config 檔 

# vim /etc/logstash/conf.d/01.syslog.conf

input {
    syslog {
        port => 514
    }
}
output {
  elasticsearch { hosts => ["192.168.1.2:9200"] }
}

8.啟動Logstash

Config 檔寫好後,執行以下指令啟動
# systemctl start logstash

當初在這邊 Chris 卡了超久,啟動了 Logstash 但一直收不到資料,查看一下 Error Log 出現 syslog listener died 訊息,才知道 syslog listener 死掉了,原因是因為 syslog 要 bind 的 port 是 514,小於 1024,在 Linux 裡面不是 root 身份則不允許 bind 小於 1024 的 port,因此我修改 Logstash 的身份,指定 Logstash 的執行身份為 root,問題就會得到解決,不過 Chris 總覺得這樣設定好像有點不安全,如果有更好更安全的設定方法請務必告知 Chris 謝謝。


修改完成後執行:
# systemctl stop logstash
# systemctl start logstash

9.設定 Logstash 為背景服務

# systemctl daemon-reload
# systemctl enable logstash.service

10.確認狀態

查看狀態:
# systemctl status logstash


查看連接Port
# net stat -ntlp
有看到 514 就代表 Logstash 有在聽 514 Port了

在 Elasticsearch Head 上看到有資料進來,代表 Logstash 安裝成功嘍。


沒有留言:

張貼留言

網頁