问题描述:同一台服务器使用Docker部署ElasticSearch、Logstash、Kibana、Filebeat容器【其版本均为V6.6.2】,搭建ELK平台采集各容器日志。Logstash提示“Error: Cannot assign requested address”,不能正常采集日志至elasticsearch,求教解决方案,谢谢。
错误日志【Logstash日志】:
Logstash配置文件:
FileBeat配置文件:
问题描述:同一台服务器使用Docker部署ElasticSearch、Logstash、Kibana、Filebeat容器【其版本均为V6.6.2】,搭建ELK平台采集各容器日志。Logstash提示“Error: Cannot assign requested address”,不能正常采集日志至elasticsearch,求教解决方案,谢谢。
错误日志【Logstash日志】:
Logstash配置文件:
FileBeat配置文件:
在 Logstash 启动之前,可以先查看下端口 5043 有没有被其他进程占用
Error: Cannot assign requested address
Exception: Java::JavaNet::BindException
确保 Logstash 配置的端口与 Elasticsearch 服务的端口没有冲突。在 Docker 容器中,用 docker ps
来查看容器的端口映射
启动命令依次为:
docker run -d
–user root
-p 9200:9200
-p 9300:9300
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name elasticsearch
–restart=always
-e “discovery.type=single-node”
-v /home/data/elasticsearch:/usr/share/elasticsearch/data
docker.elastic.co/elasticsearch/elasticsearch:6.6.2
docker run -p 5043:5043 -d
–user root
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name logstash
–link elasticsearch
–restart=always
-v /home/data/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
docker.elastic.co/logstash/logstash:6.6.2
docker run -p 5601:5601 -d
–user root
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name kibana
–link elasticsearch
–restart=always
-e ELASTICSEARCH_URL=http://10.7.13.200:9200
-v /home/data/elastalert-kibana-plugin:/usr/share/kibana/plugins/elastalert-kibana-plugin
docker.elastic.co/kibana/kibana:6.6.2
docker run -d
–name filebeat
–user root
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–restart=always
-v /home/data/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
-v /home/docker/containers/:/var/lib/docker/containers/
-v /var/run/docker.sock:/var/run/docker.sock:ro
docker.elastic.co/beats/filebeat:6.6.2
IP地址是有效的吗,确定下
netstat -a|grep TIME_WAIT 运行这个看看
执行命令修改如下2个内核参数 (需要root权限)
sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收
试试这个,要是不行,明天我问问其他老师
net.ipv4.tcp_fin_timeout=15
net.ipv4.ip_local_port_range=1024 65535
设置下这两个参数试试,改下默认的时间和端口范围
老师,设置参数了,不生效,辛苦帮忙再看看,谢谢
啥错误
是不是命令没生效呢,重新配置下,再执行这个看看 sysctl -p
这个错误的问题应该就是连接数过多,达到连接数的上限了
docker inspect xxx 看看各自容器的ip配置对了没
或者 使用docker network 创建一个网卡 让这些容器使用一个网卡
老师,容器IP是公司服务器内网IP,设置没问题。我试一下您说的创建一个网络,各容器使用这个网络
老师好,创建了一个自定义网络elk,将四个容器通过设置该网络进行重新部署,结果还是提示该问题,辛苦老师帮忙再看看,谢谢。
docker network create elk
docker run -d
–user root
-p 9200:9200
-p 9300:9300
–network=elk
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name elasticsearch
–restart=always
-e “discovery.type=single-node”
-v /home/data/elasticsearch:/usr/share/elasticsearch/data
docker.elastic.co/elasticsearch/elasticsearch:6.6.2
docker run -p 5043:5043 -d
–user root
–network=elk
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name logstash
–link elasticsearch
–restart=always
-v /home/data/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
docker.elastic.co/logstash/logstash:6.6.2
docker run -p 5601:5601 -d
–user root
–network=elk
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–name kibana
–link elasticsearch
–restart=always
-e ELASTICSEARCH_URL=http://10.7.14.205:9200
-v /home/data/elastalert-kibana-plugin:/usr/share/kibana/plugins/elastalert-kibana-plugin
docker.elastic.co/kibana/kibana:6.6.2
docker run -d
–name filebeat
–user root
–network=elk
–log-driver json-file
–log-opt max-size=10m
–log-opt max-file=3
–restart=always
-v /home/data/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
-v /home/docker/containers/:/var/lib/docker/containers/
-v /var/run/docker.sock:/var/run/docker.sock:ro
docker.elastic.co/beats/filebeat:6.6.2