什么是openresty
openresty是一个基于nginx与lua的高性能web平台,其内部集成了大量精良的lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态web应用、web服务和动态网关。<br>openresty的目标是让你的web服务直接跑在nginx服务内部,充分利用nginx的非阻塞I/O模型,不仅仅对http客户端请求,甚至于对远程后端诸如mysql、postgreSQL、memcached以及redis等都进行一致的高性能响应。
flume配置优化
tailDirSource有一个小bug,即log文件重命名后会重复采集数据,需要修改flume的源代码ReliableTaildirEventReader,使用Linux的inode作为文件的唯一标识,这样就不会重复采集数据了
kafkaChannel的优化
kafkaChannel其实是kafka的一个producer,我们可以修改kafkaChannel的配置(即producer的配置)实时优化和保证数据不丢失
优化1:配置kafkaChannel的ACK机制为-1,保证数据不丢失,而且创建kafka的topic时,副本数量为2,即数据就保存两份,数据保存2份已经很靠谱了,我们公司的卡夫卡集群配置是2个cpu,24核,48G内存,并且是SSD的磁盘,并且创建topic分区数量的时候,分区的数量为机器的数量*cpu个数*每个cpu的核数
优化2:设置kafkaChannel的压缩核失败重试次数
优化3:数据写入到kafka之前,自定义序列化器,将数据先序列化,这样可以减少网络IO的压力protobuff和kyro、protostuff,现在我们使用protobuff和protostuff其中的一种对数据进行序列化
FileBeat
什么是filebeat
filebeat是一个用于转发和集中日志数据的轻量级传送器。作为代理安装在您的服务器上,filebeat监控您指定的日志文件或位置,收集日志事件,并将它们转发发哦es或者logstash以进行索引
工作原理
当启动filebeat时,它会启动一个或多个输入,这些输入会在您为日志数据指定的位置中查找。对于filebeat定位的每个日志,filebeat都会启动一个收割机。每个harvester读取单个日志以获取新内容并将日志数据发送到libbeat,libbeat聚合事件并将聚合数据发送到您为filebeat配置的传输