logstash 监控
简介
要给公司的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的定时任务,发邮件通知等。