1.目标
1.收集Java日志文件,并且根据文件的不同将日志分类,比如:订单日志,客户日志等。
2.日志文件多行处理
2.总体架构图
3.ELK组件介绍
ELK 是由三部分组成的一套日志分析系统,
Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
Kibana:可视化视图,将elasticsearh所收集的data通过视图展现。kibana 是一个开源和免费的工具,它可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
4.开始搭建
4.1 使用docker集成镜像
docker search elk
docker pull sebp/elk
4.2查看镜像
$ docker images
sebp/elk latest 5e0d1e6e98a7 5 weeks ago 1.81GB
4.3启动容器
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk
1.报错:
Couln't start Elasticsearch. Exiting.
Elasticsearch log follows below.
原因:
waiting for Elasticsearch to be up (xx/30) counter goes up to 30 and the container exits with Couln't start Elasticsearch. Exiting. and Elasticsearch's logs are dumped, then read the recommendations in the logs and consider that they must be applied.
In particular, in case (1) above, the message max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]means that the host's limits on mmap counts must be set to at least 262144.
解决办法
Docker至少得分配3GB的内存;
Elasticsearch至少需要单独2G的内存;
vm.max_map_count至少需要262144,修改vm.max_map_count 参数
echo "vm.max_map_count = 262144" >>/etc/sysctl.conf
2.报错
WARNING: IPv4 forwarding is disabled. Networking will not work.
开启ip转发
echo 1 > /proc/sys/net/ipv4/ip_forward