簡介
要給公司的logstash集群添加監控,因為有時候logstash突然掛了,會導致ELK沒有數據,往往等需要查日志的時候,才發現已經來不及了。
思路,logstash 5.x 以上提供了API端口監聽等接口,只要每個logstash實例啟動分別指定一個端口號,再通過TCP,HTTP等方式,定時連接IP和端口,就可以發郵件等方式通知到運維去重啟logstash。
所以接下來重點只介紹如何把logstash集群全部改為指定ip和端口啟動。
1. 開啟防火牆端口號
logstash 不指定端口的情況下,會默認從 9600-9700之間獲取第1個可用端口啟動
因為我每台機都要啟動3-6個實例,所以開這么多端口
sudo iptables -A INPUT -ptcp --dport 9600 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9601 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9602 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9603 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9604 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9605 -j ACCEPT sudo iptables -A INPUT -ptcp --dport 9606 -j ACCEPT
保存防火牆
sudo service iptables save
重啟防火牆
sudo service iptables restart
查看防火牆配置
sudo more /etc/sysconfig/iptables
2. 修改logstash.yml 配置的 IP
如果不改成宿主機的IP,默認使用 127.0.0.1,這樣外面的機器是無法通過TCP/HTTP等方式訪問的
vim logstash.yml # 修改如下 # Bind address for the metrics REST endpoint # # http.host: "127.0.0.1" http.host: "177.168.0.122"
3. 查看logstash集群每台實例占用的端口
如果是第一次啟動,可跳過這一步,直接執行第4步
因為已啟動的6台logstash,已經分別占用了9600-9700的端口
我只是為了減少對線上的影響,先查看具體占用了哪些端口,再記錄下來,kill掉后按自定義端口啟動,避免端口占用
#查看logstash進程號 ps -ef | grep logstash #根據進程號,查看綁定的 IP:PORT sudo netstat -nap | grep 27892
#或者直接查看端口號綁定信息
lsof -i:9600
#記錄好PORT后kill掉進程
kill -9 27892
4. 指定端口號啟動logstash
nohup ./logstash -f logstsash1.conf --http.port 9601 & >/dev/null &
遇到了第2步修改host不生效的情況,直接使用啟動參數方式啟動:
nohup ./logstash -f logstsash1.conf --http.host 177.168.0.122 --http.port 9601 & >/dev/null &
5. TCP/HTTP訪問
HTTP測試:
# Linux訪問 curl -XGET '177.168.0.122:9601/_node/pipeline?pretty=true' # 網頁訪問 http://177.168.0.122:9601/_node/pipeline?pretty=true
TCP測試:
C:\Users\liwei>psping 177.168.0.122:9601
監控部署上線可弄個連接TCP或HTTP的定時任務,發郵件通知等。