kubernetes ingress更改日志格式
Ingress Nginx默认访问日志都输出到/var/log/nginx/access.log
文件中,但是对于一般的生产环境来说,不可能把所有日志都输到一个日志文件中,一般情况都是根据域名分别输出到各个文件中。所以这里区分http指令域默认配置以及单独域名的日志的配置方式。
1.默认日志格式更改为json
修改mandatory.yaml部署文件nginx-configuration ConfigMap配置中log-format-upstream字段,具体修改如下:
log-format-upstream: '{"time": "$time_iso8601", "remote_addr": "$proxy_protocol_addr","x-forward-for": "$proxy_add_x_forwarded_for", "request_id": "$req_id", "remote_user":"$remote_user", "bytes_sent": $bytes_sent, "request_time": $request_time, "status":$status,"vhost": "$host", "request_proto": "$server_protocol", "path": "$uri", "request_query":"$args", "request_length": $request_length, "duration": $request_time,"method":"$request_method", "http_referrer": "$http_referer", "http_user_agent": "$http_user_agent"}'第二种:log-format-upstream: '{"nginx_timestamp":"$time_iso8601","clientip":"$remote_addr","nginx_host":"$server_addr","host":"$http_host","request":"$request","url":"$request_uri","upstreamhost":"$upstream_addr","status":"$status","body_bytes_sent":"$body_bytes_sent","request_time":"$request_time","upstream_response_time":"$upstream_response_time","xff":"$http_x_forwarded_for","referer":"$http_referer","http_user_agent":"$http_user_agent","request_length":"$request_length","request_method":"$request_method"}'
注意:mandatory.yaml是官方ingress-nginx的默认安装yaml文件,其中也有configmap的配置,这是配置为空,留给运维人员自定义发挥。这里只是截出configmap的配置。(安装ingress这里不做演示,参考本人ingress安装博客)
kind: ConfigMap apiVersion: v1 metadata:name: nginx-configurationnamespace: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginx data:log-format-upstream: '{"nginx_timestamp":"$time_iso8601","clientip":"$remote_addr","nginx_host":"$server_addr","host":"$http_host","request":"$request","url":"$request_uri","upstreamhost":"$upstream_addr","status":"$status","body_bytes_sent":"$body_bytes_sent","request_time":"$request_time","upstream_response_time":"$upstream_response_time","xff":"$http_x_forwarded_for","referer":"$http_referer","http_user_agent":"$http_user_agent","request_length":"$request_length","request_method":"$request_method"}'
部署了上述文件后,查看一下ingress-nginx的配置文件中发生了什么变化
#先将nginx配置文件拷贝出来比较容易查看 kubectl cp -n ingress-nginx nginx-ingress-controller-8f68db9b5-2flsq:/etc/nginx/nginx.conf /test/nginx.conf #找到文件变化的配置文件
目前ingress-nginx配置日志文件格式为json输出已经完成了。一般默认中server指令域中如果不配置单独的日志输出,会使用http中默认的日志配置。如果需要为每一个域名独立配置文件,见如下。
重启ingress才会生效
nginx -s reload
2.根据域名配置访问日志输出
这里使用一个测试网站的ingress的yaml文件来作为演示。
cat gcc-21ldj-frontend-ingress.yaml --- apiVersion: extensions/v1beta1 kind: Ingress metadata:name: gcc-21ldj-frontendnamespace: devannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/configuration-snippet: |access_log /var/log/nginx/gcc-h5-test01.access.log upstreaminfo if=$loggable;# 这里直接引用了http指令域的upstreaminfo。error_log /var/log/nginx/gcc-h5-test01.error.log;rewrite /gcc/21ldj/(.*) /$1 break; spec:tls:- hosts:- gcc-h5-test01.mbgadev.cnsecretName: mbgadev-20210908rules:- host: gcc-h5-test01.mbgadev.cnhttp:paths:- path: /gcc/21ldj/backend:serviceName: gcc-21ldj-frontendservicePort: 80
部署该ingress文件后,查看一下nginx文件的变化。
#将最新的nginx文件拷贝一下 kubectl cp -n ingress-nginx nginx-ingress-controller-8f68db9b5-2flsq:/etc/nginx/nginx.conf /test/nginx.conf #找到文件变化的配置文件
注:if=$loggable的含义
#参数 if,设置是否记录日志,当参数值的条件成立,即不为 0 或空时,才记录日志。 下面是ingress-nginx中的配置文件 map $status $loggable {~^[23] 0;default 1; }access_log logs/access.log combined if=$loggable; 具体可参考:Nginx日志管理
3.参考
Log format - ingress-nginx-docs-cn
Ingress配置参考:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/configmap.md
Ingress注释参考https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
kubernetes ingress更改日志格式相关推荐
- 宝塔修改Nginx服务器类型,宝塔面板nginx更改日志格式的方法
宝塔默认的日志格式比较简单,可能有些站长需要自定义日志格式,而不知道从何下手,其实这个就是简单的定义nginx的过程 只是宝塔的nginx配置文件存放位置与一般nginx不一样 宝塔存放nginx配置 ...
- Linux系统中的日志管理 ---systemd-journald日志(journalctl命令的用法)和 rsyslog 日志(自定义日志采集路径、更改日志采集格式和日志的远程同步)
一.实验环境 Horizon_carry: 172.25.254.10 carry: 172.25.254.20 Horizon_carry & carry: systemctl stop f ...
- nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数
nginx-ingress设置日志格式-配置转发真实ip-白名单限制 参考官方文档 nginx-ingress官方文档 修改nginx-ingrss的configmap配置文件 apiVersion: ...
- Ingress Nginx 日志配置
前言 1.Ingress Nginx 默认访问日志都输出到 /var/log/nginx/access.log 文件中,但是对于生产环境来说,不可能把所有日志都输到一个日志文件中,一般情况都是根据域名 ...
- Kubernetes集群日志详解
服务器和应用程序日志记录是开发人员.运维人员和安全团队了解应用程序在其生产环境中运行状态的重要工具.日志记录使运维人员能够确定应用程序和所需组件是否运行平稳,并检测是否发生了异常情况,以便他们能够对这 ...
- Nginx内置变量以及日志格式变量参数详解
Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有 ...
- 更改应用程序图标_基于安卓11的ColorOS 11的主要功能和更改日志
Oppo正式发布了基于Android 11的ColorOS 11的全球版本,并带来了完全可定制的UI设计.它声称将系统资源利用率提高了45%,系统响应速度提高了32%,帧速率稳定性提高了17%. Op ...
- nginx日志格式、参数及切分
2019独角兽企业重金招聘Python工程师标准>>> 日志格式 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log ...
- oracle 二进制日志格式,二进制日志
二进制日志记录了对数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,如果你还想记录SELECT和SHOW操作,那只能使用查询日志,而不是二进制日志了 ...
最新文章
- 助力企业利润快跑的下一只轮子——移动应用?【创新时代】
- Kubernetes中的nodePort,targetPort,port的区别和意义
- [MySQL] mysql地理位置服务geometry字段类型
- get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
- 网络交换机功能和原理详解
- USACO-Section2.2 Runaround Numbers
- 分页池内存持续增长_鸿蒙内核源码分析(从进程/线程视角看内存)
- 数据结构(十七)最小生成树
- Java中多线程访问冲突的解决方式
- Go error 处理实践
- 源码追踪,解决Could not locate executable null\bin\winutils.exe in the Hadoop binaries.问题
- MySQL与PostgreSQL比较,哪个更好、我们该选用哪个?
- pytorch版本问题:AttributeError: 'module' object has no attribute '_rebuild_tensor_v2'
- python经典实例下载_python经典实例
- 揭示行业返修机背后的深层次问题
- 这一年,这些书:2021年读书笔记
- PHP集成环境 Xampp,PHPwamp等等国内外著名的集成环境
- 学习shell推荐书籍清单
- 联想拯救者笔记本加固态硬盘过程重点
- java后端开发需要会什么技能,从事Java后端开发,需要掌握哪些知识和技能?
热门文章
- appnode 接管_为什么django接管了网络
- 关于ant-design-vue的table内嵌输入框性能问题
- 2022最新CSS高频面试题指南
- Android 设置listview在scrollView中不滚动的方法
- HTML5期末大作业:HTML+CSS+JS制作鲜花网站(学生网页设计作业源码)
- 【C#】(二维) 直线外一点在直线上的投影点
- 云队友丨如何成为解决问题的高手?
- 从自动驾驶安全报告看谷歌百度双龙会
- 4.1 用户和组管理
- 计算机专业近几年的参考文献,近几年计算机系本科参考文献 计算机系本科参考文献怎么写...