Nginx作为网站的第一入口,其日志记录了除用户相关的信息之外,还记录了整个网站系统的性能,对其进行性能排查是优化网站性能的一大关键。
Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。一般情景下,Logstash用来和ElasticSearch和Kibana搭配使用,简称ELK,本站除了用作ELK,还配合了Kafka进行使用。它使用JRuby编写,开源,主流,免费,使用简单。
kafka是一个分布式的基于push-subscribe的消息系统,它具备快速、可扩展、可持久化的特点。它现在是Apache旗下的一个开源系统,作为hadoop生态系统的一部分,被各种商业公司广泛应用。它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/spark流式处理引擎。
下面是本站日志系统的搭建
一、Nginx日志为了配合ELK的使用,把日志变成json的格式,方便ElasticSearch对其检索。
log_format main '{"@timestamp":"$time_iso8601",' '"host": "$server_addr",' '"clientip": "$remote_addr",' '"size": $body_bytes_sent,' '"responsetime": $request_time,' '"upstreamtime": "$upstream_response_time",' '"upstreamhost": "$upstream_addr",' '"http_host": "$host",' '"url": "$uri",' '"xff": "$http_x_forwarded_for",' '"referer": "$http_referer",' '"agent": "$http_user_agent",' '"status": "$status"}'; access_log logs/access.log main;