1.环境规划
IP地址 | 部署的服务 | 主机名 |
---|
192.168.81.210 | es+kafka+zookeeper+kibana+logstash | elk-1 |
192.168.81.220 | es+kafka+zookeeper | elk-2 |
192.168.81.230 | es+kafka+zookeeper+nginx+filebeat | elk-3 |
日志系统架构图
nginx—>filebeat—>kafka—>logstash—>elasticsearch—>kibana
2.部署elasticsearch集群
2.1.配置es-1节点
2.2.配置es-2节点
只是配置文件中node.name和network.host不同,其他操作方式一致
2.3.配置es-3节点
只是配置文件中node.name和network.host不同,其他操作方式一致
2.4.使用es-head插件查看集群状态
3.部署kibana
kibana部署成功
4.部署zookeeper
4.1.配置zookeeper-1节点
4.2.配置zookeeper-2节点
与zookeeper-1节点只有配置文件和节点id文件有点不同,其余全一样
4.3.配置zookeeper-3节点
4.4.启动所有节点
zookeeper集群必须保证有两个节点存活,也就是说必须同时要启动两个节点,否则集群将启动不成功,因此要都修改好配置文件后,再统一启动
5.部署kafka
注意:不要使用kafka2.11版本,有严重的bug,filebeat无法写入数据到kafka集群,写入的协议版本不同,存在问题
5.1.配置kafka-1节点
5.2.配置kafka-2节点
只是配置文件不同,其余与kafka-1节点操作一致
配置文件需要改的地方:broker.id改成2,表示第二个节点 listeners host.name advertised.listeners advertised.host.name改成本机ip地址
5.3.配置kafka-3节点
只是配置文件不同,其余与kafka-1节点操作一致
配置文件需要改的地方:broker.id改成3,表示第三个节点 listeners host.name advertised.listeners advertised.host.name改成本机ip地址
5.4.启动kafka
6.测试kafka与zookeeper连接
kafka能够产生数据并消费,整个集群就可以使用了
7.配置filebeat收集nginx、tomcat日志并存储到kafka中
7.1.安装并配置nginx服务
7.2.安装tomcat服务
7.3.安装filebeat服务
[root@elk-3 ~]\# rpm -ivh filebeat-7.6.0-x86_64.rpm
7.5.产生程序日志数据观察数据是否存储kafka
1.产生程序日志
2.观察kafka中是否创建对应的topic
3.观察kafka日志的输出
8.配置logstash从kafka中读取数据并存储到es集群
部署logstash,配置logstash从kafka中读取topic数据并存储到es集群
8.1.部署logstash服务
8.2.配置logstash从kafka读取数据存储到es集群
8.3.启动logstash并观察日志
观察日志的输出,已经从nginx-access、tomcat-cata topic中读取了数据并存到了es集群中
8.4.查看elasticsearch集群是否增加了对应的索引库
es集群已经生成了tomcat-cata以及nginx-access索引库
到此为止logstash已经成功从kafka集群读取到日志数据,然后传入到elasticsearch集群不同的索引库
9.在kibana上关联elasticsearch索引库浏览日志数据
9.1.在kibana上添加nginx-access索引模式
1)点击创建索引
2)填写索引名
采用通配符的方式,填写完点击下一步完成创建即可
3)添加一个时间筛选字段
4)创建成功
9.2.同样方法添加tomcat-cata索引模式
9.3.查询nginx-access索引日志数据
9.4.查看tomcat-cata索引日志数据
10.报错合集
10.1.es启动时报错无法指定被请求的地址
报错内容如下
解决方法:仔细检查配置文件,肯定是某个地址配置错了,我的就是监听地址的ip写错了
10.2.filebeat写入数据到kafka api版本报错
报错如下:
分析解决思路:初步判定为kafka2.11版本问题导致的,换成2.13问题解决
来自:https://blog.51cto.com/jiangxl/4597031
仅做个人备份学习使用。