Nginx 日志输出配置json格式,Linux运维内存泄漏总结

                    '"up_resp_time": "$upstream_response_time",'
                    '"request_time": "$request_time"'
                    ' }';

access_log  logs/access.log log_json; # 引用日志格式名称

(省略内容)

}


在 Nginx 的配置文件nginx.conf中,我们定义了两种的日志格式:main和log\_json,其中main为普通的文本格式,log\_json为 json 格式。


log\_json其实就是手工构造一个 json 字符串。定义了 json 的日志格式后,便可以指定 access log 为 json 格式,修改 Nginx 的配置,重启 Nginx ,便可以看到 json 格式的日志,重启 Nginx。




#### 附加:可能遇到的问题


![](https://img-blog.csdnimg.cn/direct/7e6e5300e1844f40be9f994fde69fbf2.png)


背景:  
   因为我这边是通过nginx去代理了很多域名,所以会有很多平台访问的日志,通过在nginx.conf主配置文件增加  include vhosts/\*.conf; 导入主机配置,所以会存在一个server段中只能有一个名称的问题。 


#### 正确操作:


修改nginx.conf配置文件



[root@elk-nginx-01 conf]# cd /data/services/nginx/conf/
[root@elk-nginx-01 conf]# pwd
/data/services/nginx/conf
[root@elk-nginx-01 conf]# ll
总用量 72
-rw-r–r-- 1 root root 1077 9月 3 09:45 fastcgi.conf
-rw-r–r-- 1 root root 1077 9月 3 09:45 fastcgi.conf.default
-rw-r–r-- 1 root root 1007 9月 3 09:45 fastcgi_params
-rw-r–r-- 1 root root 1007 9月 3 09:45 fastcgi_params.default
-rw-r–r-- 1 root root 2837 9月 3 09:45 koi-utf
-rw-r–r-- 1 root root 2223 9月 3 09:45 koi-win
-rw-r–r-- 1 root root 5231 9月 3 09:45 mime.types
-rw-r–r-- 1 root root 5231 9月 3 09:45 mime.types.default
-rw-r–r-- 1 root root 3729 9月 3 15:49 nginx.conf
-rw-r–r-- 1 root root 2656 9月 3 13:59 nginx.conf-bak0903
-rw-r–r-- 1 root root 2656 9月 3 09:45 nginx.conf.default
-rw-r–r-- 1 root root 636 9月 3 09:45 scgi_params
-rw-r–r-- 1 root root 636 9月 3 09:45 scgi_params.default
drwxr-xr-x 2 root root 134 9月 3 11:34 sslkeys
-rw-r–r-- 1 root root 664 9月 3 09:45 uwsgi_params
-rw-r–r-- 1 root root 664 9月 3 09:45 uwsgi_params.default
drwxr-xr-x 2 root root 87 9月 3 16:53 vhosts
-rw-r–r-- 1 root root 3610 9月 3 09:45 win-utf
[root@elk-nginx-01 conf]# vim nginx.conf

http {
include mime.types;
default_type application/octet-stream;
charset utf-8;

# 原有日志格式,不能注释
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" $request_time';
# json日志格式
log_format json '{"@timestamp": "$time_local", '
                    '"remote_addr": "$remote_addr", '
                    '"referer": "$http_referer", '
                    '"request": "$request", '
                    '"status": $status, '
                    '"bytes": $body_bytes_sent, '
                    '"agent": "$http_user_agent", '
                    '"x_forwarded": "$http_x_forwarded_for", '
                    '"up_addr": "$upstream_addr",'
                    '"up_host": "$upstream_http_host",'
                    '"up_resp_time": "$upstream_response_time",'
                    '"request_time": "$request_time"'
                    ' }';

#导入主机配置
include vhosts/*.conf;

(省略内容)

}
保存退出!

[root@elk-nginx-01 conf]# pwd
/data/services/nginx/conf
[root@elk-nginx-01 conf]# cd vhosts/
[root@elk-nginx-01 vhosts]# ll
总用量 12
-rw-r–r-- 1 yfbkf yfbkf 921 9月 3 15:37 gonggao.conf
-rw-r–r-- 1 yfbkf yfbkf 1482 9月 3 16:50 gongdan.conf
-rw-r–r-- 1 yfbkf yfbkf 1151 9月 3 14:42 gongmo.conf


![](https://img-blog.csdnimg.cn/direct/d9c186a0ada24903b1785e0886fdbc7b.png)


然后重启nginx


总结:  
 1、原有的日志格式不能注释或者去掉,只能新增一个log\_format  
 2、新增自定义一份日志记录格式,需要注意,log\_format指令设置的名称在配置文件中是不能重复的(比如我json日志格式名称 json)  
 3、原有的日志格式如果调整了,需要在log后加上名称才生效




### Nginx日志常用参数详解




---



log_format json '{"@timestamp":"$time_iso8601",'
                 '"scheme":"$scheme",'
                 '"http_referer":"$http_referer",'
                 '"args":"$args",'
                 '"http_user_agent":"$http_user_agent",'
                 '"remote_addr":"$remote_addr",'
                 '"hoste":"$host",'
                 '"server_name":"$server_name",'
                 '"server_protocol":"$server_protocol",'
                 '"request_method":"$request_method",'
                 '"request_uri":"$request_uri",'
                 '"uri":"$uri",'

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

9e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值