当前位置: 首页 > 科技观察

如何格式化日志并推送到远程服务器?看了之后发现其实很简单!!

时间:2023-03-17 13:08:35 科技观察

作者个人研发在高并发场景下提供了一个简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。开源半年多以来,已成功为十几家中小企业提供精准定时调度解决方案,经受住了生产环境的考验。为了造福更多童鞋,这里提供一个开源框架地址:https://github.com/sunshinelyz/mykit-delay写在前面Nginx是最常用的反向代理和负载均衡服务器,应用广泛在很多互联网项目的前端服务中,很多互联网项目直接使用Nginx服务器作为整个项目的流量入口。这样我们就可以通过对Nginx服务器日志的分析,分析出整个网站的总访问量、PV、UV、VV等信息。事实上,企业的业务线很多,很难用一台Nginx服务器代理所有在线服务,导致企业在线部署多台Nginx服务器。而如果我们要分析所有Nginx服务器的总流量信息,如果我们单独分析每台Nginx服务器,然后汇总所有的信息,一方面会增加分析的复杂度,另一方面,将很难维护这些日志信息。因此,大多数企业会将这些日志信息聚合到一定的数据存储集群中,以方便数据的存储、维护、分析和统计。那么如何格式化Nginx日志并推送到远程服务器呢?今天,我们就一起来探讨一下这个问题。配置Nginx,格式化Nginx日志,推送到远程服务器,其实很简单。我们只需要在Nginx服务器的配置文件nginx.conf中进行简单配置即可。比如我们可以在nginx.conf文件中添加如下配置。log_formatcommon"$remote_addr,$http_ip,$http_mac,$time_local,$status,$request_length,$bytes_sent,$body_bytes_sent,$http_user_agent,$http_referer,$request_method,$request_time,$request_uri,$server_protocol,$request_body,$http_token";log_formatmain"$remote_addr,$http_ip,$http_mac,$time_local,$status,$request_length,$bytes_sent,$body_bytes_sent,$http_user_agent,$http_referer,$request_method,$request_time,$request_uri,$server_protocol,$request_body,$http_token";access_loglogs/access.logcommon;access_logsyslog:server=192.168.1.100:9999,facility=local7,tag=nginx,severity=infomain;map$http_upgrade$connection_upgrade{defaultupgrade;''close;}以上配置是log的Nginx各个参数以逗号分隔的形式输出,Nginx日志实时推送到192.168.1.100:9999。此时我们只需要在192.168.1.100服务器上部署一个TCP或者UDP服务,监听端口为9999,并在192.168.1.100服务器的防火墙上开放9999端口即可。我们写的TCP或者UDP服务会实时接收到Nginx服务器发送过来的日志。这样我们就可以将Nginx日志实时收集到一个存储集群中,对Nginx日志进行统一的存储、维护和分析。本文转载自微信公众号“冰河科技”,可通过以下二维码关注。转载本文请联系冰川团队公众号。