首页 > 其他分享 >ingress 日志切割

ingress 日志切割

时间:2024-05-28 17:24:11浏览次数:20  
标签:httpd ingress 切割 tomcat nginx controller 日志 log

背景

ingress本质上也是个nginx,多个项目日志全部往access.log中输入就显得杂乱无章可读性不高,不利于日志阅读关键信息获取,排错就异常痛苦。

so 闲话少叙开干!

1、部署ingress

我这里ingress是用helm部署的

[root@master ~]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
myingress       default         1               2024-05-28 15:40:52.042004305 +0800 CST deployed        nginx-ingress-controller-9.3.18 1.4.0      
[root@master ~]#

 还不知道咋部署的或者也想简单快速搭建起ingress测试环境,可以参考我前面写的博客,

2、部署测试应用

apache

[root@master nginx-ingress-controller]# cat apache.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: web01
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpd01
  template:
    metadata:
      labels:
        app: httpd01
    spec:
      containers:
      - name: httpd
        image: httpd:latest
---
apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
  namespace: default
spec:
  selector:
    app: httpd01
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

 tomcat

[root@master nginx-ingress-controller]# cat tomcat.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: web02
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat01
  template:
    metadata:
      labels:
        app: tomcat01
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5.45
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
  namespace: default
spec:
  selector:
    app: tomcat01
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

  检查一下应用情况

[root@master nginx-ingress-controller]# kubectl get pod,svc 
NAME                                                      READY   STATUS    RESTARTS   AGE
pod/myingress-nginx-ingress-controller-796ddc4cc7-d7pqq   1/1     Running   0          52m
pod/web01-c94b5464f-xj848                                 1/1     Running   0          29h
pod/web02-6d96d48778-ntl5w                                1/1     Running   0          29h

NAME                                         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/httpd-svc                            ClusterIP   10.68.62.49    <none>        80/TCP                       29h
service/kubernetes                           ClusterIP   10.68.0.1      <none>        443/TCP                      91d
service/myingress-nginx-ingress-controller   NodePort    10.68.133.2    <none>        80:32080/TCP,443:32013/TCP   52m
service/tomcat-svc                           ClusterIP   10.68.78.237   <none>        8080/TCP                     29h
[root@master nginx-ingress-controller]# 

3、测试应用访问情况 

分别创建apache和tomcat的ingress

[root@master nginx-ingress-controller]# cat ingress-httpd.yaml 
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: httpd-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: www.httpd.com
      http:
        paths:
          - backend:
              service:
                name: httpd-svc
                port:
                  number: 80
            path: /
            pathType: Prefix

  

[root@master nginx-ingress-controller]# cat ingress-tomcat.yaml 
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tomcat-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: www.tomcat.com
      http:
        paths:
          - backend:
              service:
                name: tomcat-svc
                port:
                  number: 8080
            path: /tomcat
            pathType: Prefix

  添加本地host访问验证

[root@master nginx-ingress-controller]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.223 www.httpd.com
192.168.0.223 www.tomcat.com

# 访问apache
[root@master nginx-ingress-controller]# curl  www.httpd.com:32080
<html><body><h1>It works!</h1></body></html>
# 访问tomcat
[root@master nginx-ingress-controller]# curl -I  www.tomcat.com:32080/tomcat
HTTP/1.1 200 
Date: Tue, 28 May 2024 08:38:00 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive

查看access日志

I have no name!@myingress-nginx-ingress-controller-796ddc4cc7-d7pqq:/var/log/nginx$ more access.log 
172.20.196.128 - - [28/May/2024:07:42:37 +0000] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0" 84 0.001 [default-httpd-svc-80] [] 172.20.196.134:80 0 0.001 200 d6c33f2841728141dab47129e3b3f0f0
172.20.196.128 - - [28/May/2024:07:42:43 +0000] "GET / HTTP/1.1" 200 45 "-" "curl/7.29.0" 83 0.001 [default-httpd-svc-80] [] 172.20.196.134:80 45 0.001 200 aa51f172de9a0cdb699347d624c7608f
172.20.196.128 - - [28/May/2024:07:43:08 +0000] "GET /tomcat HTTP/1.1" 200 11211 "-" "curl/7.29.0" 90 0.004 [default-tomcat-svc-8080] [] 172.20.196.135:8080 11204 0.005 200 689d4315f3767be1ed9b2d1bae2b7361
172.20.196.128 - - [28/May/2024:08:38:00 +0000] "HEAD /tomcat HTTP/1.1" 200 0 "-" "curl/7.29.0" 91 0.003 [default-tomcat-svc-8080] [] 172.20.196.135:8080 0 0.003 200 3eb1c665887e3a2351324b1c4fcfecc7

可以看到两个应用日志都在一个文件中

4、设置日志格式

修改valus.yaml文件,配置日志格式(这一步不是必要的,但是既然日志做切割了,为什么不让格式更好看一些呢)

[root@master nginx-ingress-controller]# vim values.yaml
...
## ref: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/ ## config: log-format: | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

更新helm应用

[root@master nginx-ingress-controller]# helm upgrade myingress -f values.yaml --namespace default .

  修改apache应用日志的输出文件位置

[root@master ~]# kubectl edit ingress httpd-ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/server-snippet: |       # 添加这两行
      access_log /var/log/nginx/httpd_access.log;
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: httpd-ingress
  namespace: default
spec:
  ingressClassName: nginx
  rules:
  - host: www.httpd.com
    http:
      paths:
      - backend:
          service:
            name: httpd-svc
            port:
              number: 80
        path: /
        pathType: Prefix

 修改好之后在去看nginx controller pod 日志文件路径

I have no name!@myingress-nginx-ingress-controller-796ddc4cc7-d7pqq:/var/log/nginx$ ls
access.log  error.log  httpd_access.log  

 再访问几次看看内容

I have no name!@myingress-nginx-ingress-controller-796ddc4cc7-d7pqq:/var/log/nginx$ more httpd_access.log 
172.20.196.128 - - [28/May/2024:07:52:43 +0000] "GET / HTTP/1.1" 200 45 "-" "curl/7.29.0"
172.20.196.128 - - [28/May/2024:07:52:45 +0000] "GET / HTTP/1.1" 200 45 "-" "curl/7.29.0"

 到这里日志按项目切割就完成了

5、按日期切割

其实这里我主要纠结点在于ingress是在k8s中的,而不是二进制的,是不是不太好操作呢。  其实是自己瞎自己O(∩_∩)O

步骤跟二进制的nginx日志按日期切割一样

第一步:重命名旧的access.log
第二部:执行 kill -USR1 `cat /tmp/nginx/nginx.pid` 让ingress生成新的access.log

 

 

辛苦你看到最后,奖励一张美女图片

 

标签:httpd,ingress,切割,tomcat,nginx,controller,日志,log
From: https://www.cnblogs.com/ggborn-001/p/18218474

相关文章

  • 二进制日志(bin log)
    binlog主要应用场景:一是用于数据恢复二是用于数据复制5.1查看默认情况查看记录二进制日志是否开启:在MySQL8中默认情况下,二进制文件是开启的。mysql>showvariableslike'%log_bin%';+---------------------------------+----------------------------------+|Variabl......
  • 激光切割机选购技巧
    随着科技的飞速发展,激光切割机已成为制造业中不可或缺的一部分。然而,如何选择一台满足你需求的、性能卓越的激光切割机?这就需要一些专业的选购技巧。以下是你需要考虑的一些重要因素。明确需求:首先,你需要明确你的需求。你是需要进行金属切割还是非金属材料的切割?切割的材......
  • 金属激光切割机价格多少钱一台?
    金属激光切割机价格多少钱一台?金属激光切割机的价格并不是唯一的决定因素。设备的性能、精度、耐用性、维护需求以及供应商的服务都是影响价格的重要因素。因此,在选择金属激光切割机时,不仅要考虑价格,还需要综合考虑上述因素。其次,金属激光切割机的价格范围可以非常广泛。根据......
  • python 日志
    importloggingfromlogging.handlersimportTimedRotatingFileHandler#创建一个loggerlogger=logging.getLogger(__name__)logger.setLevel(logging.INFO)#设置日志级别#创建一个handler,用于写入日志文件,级别为INFOhandler=TimedRotatingFileHandler('/data/c......
  • SpringBoot项目增加日志
    1、需求:在项目下每天创建一个日志文件1、在项目resources目录下新建logback-spring.xml文件2、编辑logback-spring.xml<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--控制台输出--><appendername="CONSOLE"class="ch.......
  • 日志模块
    介绍在学习了sylar的C++高性能分布式服务器框架后,想把自己在学习过程中的感想记录下来。当然主要原因还是sylar的B站视频过于难以理解了,也是想加强一下自己对这个框架的理解。很多内容也是借鉴了其他大佬的博文,比如找人找不到北,zhongluqiang日志模块概述日志模块的目的:用于格......
  • 记录接口操作日志, 原始数据和变更数据 这几个工具可以看看
    mzt-biz-log支持Springboot,基于注解的可使用变量、可以自定义函数的通用操作日志组件此组件解决的问题是:「谁」在「什么时间」对「什么」做了「什么事」Github地址:https://github.com/mouzt/mzt-biz-logMyBatis-Plus数据变动记录插件https://baomidou.com/plugins/data-ch......
  • Istio-Ingress 与 nginx-ingress的差别
    istio-Ingress和nginx-ingress的差别istio-Ingress和nginx-ingress都是Kubernetes环境中的Ingress解决方案,但它们有以下几点主要差异:架构差异:Istio-Ingress:是IstioServiceMesh的一部分,由Envoy代理实现,与Istio的其他组件如Pilot等协作。nginx-in......
  • 创新实训2024.05.26日志:落地基于硬盘的数据库服务
    1.需求任务列表以下描述易学大模型软件的web应用的功能。用户注册用户邮箱,密码,验证码开启官方邮箱,用来发验证码(QQ网易都支持开启smtp协议,找教程,用邮箱不用手机号是为了省买发短信云服务的钱)验证码缓存于redis,5min内有效验证密码长度,验证码是否正确新用户信息保存于mysq......
  • ELK+kafka+filebeat企业内部日志分析系统
    1、组件介绍1、Elasticsearch:  是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计......