ELK+filebeat+kafka远程收集不同主机上的httpd、mysql 日志实验
实验目的:远程收集日志,高并发情况下流量削峰,异步通信
实验条件:
主机名 | IP地址 | 作用 | 组件 | 硬件 | 集群 |
test1 | 20.0.0.10 | 异步通信 流量削峰 …… | zookeeper+kafka(3.4.1版本) | 4核8G | zookeeper + kafka集群 |
test2 | 20.0.0.20 | zookeeper+kafka(3.4.1版本) | 2核4G | ||
test3 | 20.0.0.30 | zookeeper+kafka(3.4.1版本) | 2核4G | ||
EKL1 | 20.0.0.15 | 过滤日志 | logstash+kibana | 2核4G | ELK集群 |
ELK2 | 20.0.0.25 | es服务器 | ES+node+phantomjs+elasticsearch-head-master组件 | 2核4G | |
ELK3 | 20.0.0.35 | es服务器 | ES+node+phantomjs+elasticsearch-head-master组件 | 2核4G | |
nginx1 | 20.0.0.11 | 提供nginx | nginx+filebeat服务 | 2核4G | |
mysql1 | 20.0.0.13 | 提供nginx | mysql+filebeat服务 | 2核4G |
数据流向:filebeat—>kafka—>logstash—>ES—>kibana
-> filebeat收集日志传输给kafka;
-> kafka创建主题,日志存储在主题的分区里;
-> 然后传输给es集群,存储日志数据;
-> 用户访问图形化界面获取日志
实验步骤:
1、搭建ELK集群【注意服务器IP地址】
2、搭建zookeeper+kafka集群【注意服务器IP地址】
3、安装filebeat
4、查看nginx和mysql的日志路径
(1)mysql
vim /etc/my.cnf
打开mysql 的日志转发功能
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
(2)nginx
5、分别在nginx服务器和mysql服务器上修改filebeat配置文件
vim /opt/filebeatfilebeat.yml
赋权日志文件
6、启动filebeat
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
若无法启动filebeat,则tail -f filebeat.out查看日志
7、在安装logstash的服务器上创建conf文件
运行logstash的conf文件
logstash -f system.conf --path.data /opt/test2 &
8、查看主题
kafka-topics.sh --list --bootstrap-server 20.0.0.10:9092,20.0.0.20:9092,20.0.0.30:9092
9、消费消息
kafka-console-consumer.sh --bootstrap-server 20.0.0.10:9092,20.0.0.20:9092,20.0.0.30:9092 --topic mysql
10、访问nginx、mysql服务,查看索引
再查看消费消息