docker pull sebp/elk
//Elasticsearch至少须要单独2G的内存 //增长了一个volume绑定,以避免重启container之后ES的数据丢失 docker run -d -p 5044:5044 -p 127.0.0.1:5601:5601 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -v /var/data/elk:/var/lib/elasticsearch --name=elk sebp/elk
若启动过程出错通常是由于elasticsearch用户拥有的内存权限过小,至少须要262144docker
切换到root用户 执行命令: sysctl -w vm.max_map_count=262144 查看结果: sysctl -a|grep vm.max_map_count 显示: vm.max_map_count = 262144
上述方法修改以后,若是重启虚拟机将失效,因此: 解决办法: 在 /etc/sysctl.conf文件最后添加一行 vm.max_map_count=262144 便可永久修改
启动成功以后访问:http://
docker exec -it <container-name> /bin/bash
/opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }' /* 注意:若是看到这样的报错信息 Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting. 请执行命令:service logstash stop 而后在执行就能够了。 */
当命令成功被执行后,看到:Successfully started Logstash API endpoint {:port=>9600} 信息后,输入:this is a dummy entry 而后回车,模拟一条日志进行测试。
打开浏览器,输入:http://
input { kafka{ //此处注意:logstash5.x版本之前kafka插件配置的是zookeeper地址,5.x之后配置的是kafka实例地址 bootstrap_servers =>["192.168.121.205:9092"] client_id => "test" group_id => "test" consumer_threads => 5 decorate_events => true topics => "logstash" } } filter{ json{ source => "message" } } output { elasticsearch { hosts => ["192.168.121.205"] index=> "hslog_2" codec => "json" } }