docker集群ELK部署读取本地日志--(八)部署过程中遇到的问题
1、第一次启动docker-compose,elasticsearch报错
解决办法:
解决:
1)sudo vi /etc/sysctl.conf 文件最后添加一行
vm.max_map_count=262144
- 加载设置好的系统参数
sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
sudo sysctl -p
2、启动kibana报错
"Unable to revive connection: http://elasticsearch:9200/"}
"No living connections"}
"Unable to revive connection: http://elasticsearch:9200/"}
"No living connections"}
在kibana.yml更改IP为服务器IP:172.16.10.12,同样无法解决,网络查找解决方案,在kibana.yml中更改
elasticsearch.hosts: [ " http://elasticsearch:9200/" ] 为elasticsearch的容器IP地址
docker inspect 3dab5d09dba0 |grep IPAddress获取容器IP地址 3dab5d09dba0为容器ID
具体参照:https://www.cnblogs.com/wenhuazzz/p/12055747.html
#本来 为了以后方便,要指定elasticsearch固定IP地址.指定网段为docker swarm的子网网段,但是docker-compose配置文件的指定固定IP的配置一直不生效,暂且放弃。
networks:
esnet:
ipv4_address: 192.168.10.12
………………………………………………
………………………………………………
networks:
esnet:
ipam:
config:
- subnet: 192.168.10.0/24
3、logstash报错、日志文件一直读取不了
注:修改配置后,日志文件还是无法读取,最终排查问题是日志文件存储位置没有挂载到容器内
logstash配置文件:
input {
file {
path => "/logdata/dnslog/20200714/*"#日志路径
start_position => "beginning"
exclude => "*.gz" #输入文件日志、并排除gz压缩包
}
}
解决办法:
经过问题排查是日志文件路径的读取问题。没有将存储日志文件的硬盘挂载映射到logstash容器内部。
docker-compose.yml中的logstash配置添加卷映射:
volumes:
- ./elk-config/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
- ./elk-config/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
- ./logdata:/usr/share/logstash/data
修改/logdata的目录权限以便容器的读取和写入:
Chmod 775 /logdata
修改配置文件的文件读取路径为容器内的映射目录:
path => "/usr/share/logstash/data/dnslog/5566.txt"