在上一篇中 Chris 有介紹怎麼將 Elasticsearch 安裝起來
安裝好了 Elasticsearch 這強大的資料庫搜尋引擎後,接下來當然是要餵點資料給它了,這個時候 Logstash 就派上用場了,在這篇中有提到
今天就針對 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 安裝成功嘍。
沒有留言:
張貼留言