一、综述
1、JAVA项目,基于tomcat容器挂载启动的,我们需要统一一下tomcat的日志格式。
2、tomcat日志,主要涉及catalina.log和access_log两种。日志名为:access.log
3、catalina.log中主要包含tomcat启动信息,重要性和价值都不高,但是为了与日志收集系统对接,我们需要将新旧项目tomcat相关配置保持一致即可。
4、access_log主要针是记录tomcat容器接收到的HTTP请求记录,通常我们一个tomcat下只有一个project;所以我们可以根据access_log来记录有关于:
1)请求量
2)请求的HTTP状态
3)请求内容,包括header(cookie等),请求来源等。
4)响应延迟
5)响应数据包大小
最终,access_log可以与nginx日志互相对应,用于分析请求链路、转发效率、接口性能等。对于排查问题、监控接入非常有价值。
5、涉及到的team:运维组、开发组、大数据组、BI组、安全组。
6、输出价值:
1)ELK:日志收集,开发、运维排查问题,机器容量预留等。
2)业务监控:流量监控、业务错误监控、QPS统计、异常报警等。
3)BI:商业数据分析。
4)安全:用户异常行为、异常流量侵入等评估和防范。
7、access_log日志规范:
access_log
prefix="access.log" suffix="" renameOnRotate="true" pattern="%{yyyy-MM-dd HH:mm:ss}t|%A|%a|%p|%m|%s|%D| %b|%{begin:msec}t|%{end:msec}t|^_^| %{X-Request-ID}i|%{X-Request-Seq}i|^_^| %S|%r|%{Referer}i|%{User-Agent}i" /> 字段名解释 %A本机IP地址,内网IP %a远端机器IP,通常是nginx层IP地址 %H请求的协议 %p接收请求的本地Port。 %mHTTP请求的方面名:GET,POST等 %q请求的查询字符串,即URL中“?”后的部分 %D请求处理的时间 %rHTTP请求行—首行 %{Referer}iHTTP标头中“Referer”值 %{User-Agent}iHTTP标头中“User-Agent”值 %sHTTP响应状态码(tomcat返回) %SHTTP请求中的Session ID %bHTTP响应的数据大小,不包含Headers %{X-Request-ID}iHTTP标头中“X-Request-ID”值 %{X-Request-Seq}HTTP标头中“X-Request-Seq”值 %{begin:msec}t请求开始处理的时间戳 %{end:msec}t请求处理结束的时间戳 模式:%{key}iHTTP请求标头中key的值 模式:%{key}oHTTP响应标头中key的值 模式:%{key}c请求/响应cookie中key的值 模式:%{key}rServletRequest属性中key的值 模式:%{key}s保存在HttpSession中key的值 规范基本与nginx、ELB保持一致,仍然使用“^_^”进行分域,当需要增加字段时,请在相应域的最后面增加。