ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kubernetes ingress更改日志格式

2021-07-23 19:00:32  阅读:300  来源: 互联网

标签:ingress http log kubernetes gcc nginx 日志


  Ingress Nginx默认访问日志都输出到/var/log/nginx/access.log文件中,但是对于一般的生产环境来说,不可能把所有日志都输到一个日志文件中,一般情况都是根据域名分别输出到各个文件中。所以这里区分http指令域默认配置以及单独域名的日志的配置方式。

 

1.默认日志格式更改为json

  修改mandatory.yaml部署文件nginx-configuration ConfigMap配置中log-format-upstream字段,具体修改如下:
  注意:mandatory.yaml是官方ingress-nginx的默认安装yaml文件,其中也有configmap的配置,这是配置为空,留给运维人员自定义发挥。这里只是截出configmap的配置。(安装ingress这里不做演示,参考本人ingress安装博客)

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.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中默认的日志配置。如果需要为每一个域名独立配置文件,见如下。

 

2.根据域名配置访问日志输出

  这里使用一个测试网站的ingress的yaml文件来作为演示。

cat gcc-21ldj-frontend-ingress.yaml 
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gcc-21ldj-frontend
  namespace: dev
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.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.cn
      secretName: mbgadev-20210908
  rules:
    - host:  gcc-h5-test01.mbgadev.cn
      http:
        paths:
          - path: /gcc/21ldj/
            backend:
              serviceName: gcc-21ldj-frontend
              servicePort: 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.参考

  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

标签:ingress,http,log,kubernetes,gcc,nginx,日志
来源: https://www.cnblogs.com/lizexiong/p/15050188.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有