搭建nginx-logstash-kafka-elasticsearch服务

1、nginx作为web服务器,用来做服务访问入口、及静态资源服务器。对access.log日志格式化为json,这里要注意$变量的取值,否则会启动异常。

 log_format access_log_json '{"user_ip":"$http_x_real_ip","lan_ip":"$remote_addr","log_time":"$time_iso8601","user_requrl":"$url","reqargs":"$args","http_code":"$status","body_bytes_sents":"$body_bytes_sent","req_time":"$request_time","user_ua":"$http_user_agent"}';

  access_log  /etc/nginx/log/access.log access_log_json;


我们使用docker容器部署服务,必须建立物理路径和容器路径的映射关系,可将容器理解为一个小型系统,包含自己的独立分区,配置取的是容器内的文件,如果是取物理机文件,所以必须加映射。



2、logstash通过file设定 监听nginx accesslog 文件、发生增量变化时 则取出日志推入kafka,

logstash 使用file方式配置input,定义path 文件路径,type,自定义项,这里作为output的条件,sincedb_path 作为文件读取记录,即每次读取的位置 行数,若设置为/etc/logstash/null,或start_positioni为beginning 则logstash重启时每次都会从头开始。

filter这里先不设定

output定义kafka,配置一个kafka节点及topic,这样当input取到nginx日志时,则自动将日志作为消息推至kafka.

input{
    file {
        path => "/data/log/access.log"
        codec => "json"
type => "nginx-accesslog"
discover_interval => 5   
#sincedb_path => "/dev/null"
sincedb_path => "/etc/logstash/.sincedb"   
#start_position => "beginning"   
#start_position => "end"    
    }
}
filter{
}
output{
     if[type]=="nginx-accesslog"{
kafka {
bootstrap_servers => "192.168.90.222:9092"    
topic_id => "data"    
#compression_type => "snappy"
}
     }
    stdout{
        codec => rubydebug
    }
}

3、Java脚本监听kafka消息,接收后做数据处理,入es.


待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值