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服务,查看索引
再查看消费消息