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

更多版本与API看ES官方文档

TCP测试:

windows测试TCP,得下载个小工具psping

C:Usersliwei>psping 177.168.0.122:9601

监控部署上线可弄个连接TCP或HTTP的定时任务,发邮件通知等。

原文地址:https://www.cnblogs.com/levi125/p/13841555.html