搭建nginx-logstash-kafka-elasticsearch服务

来源:互联网 发布:青岛网络电视台回放 编辑:程序博客网 时间:2024/06/06 20:16

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 0
原创粉丝点击