美文网首页
关于 OpenShift 应用日志落盘实践

关于 OpenShift 应用日志落盘实践

作者: ragpo | 来源:发表于2019-09-29 16:26 被阅读0次

    概要

    客户应用在容器化上 Openshift的时候日志方面做了些改造,容器化之前在虚拟机的某个路径下读取日志进行故障分析,容器化后通过在web-console查看实时日志和通过EFK查看日志;在这里客户有个需求,主要还是金融行业有这种需求,需要做日志审计,说白了就是把明文的日志文件打包好交给审计部门去审计,这样的话就要求需要单独生成这么一份日志,也方便有问题的时候查看,有些开发与运维人员不喜欢看kibana。我的思路就是将宿主机的路径挂载到容器内,容器将日志打到某个路径下,日志文件就映射到了宿主机的路径下,宿主机配置个定时任务,晚上的时候去收集日志,发送到某个地方去归档。

    关于日志文件名称的问题,一般情况下日志文件的名称都是 app.log什么的,如何做到日志文件都一样呢?比如有多个pod,默认生成的日志文件名称是一样的,这时候写日志就会冲突,我的做法是在容器启动的时候,去替换 app.log为pod的名称,比如一个pod的名称叫做ABC,那么日志的名称就叫ABC.log,具体的方法下面会说明。

    1、在node节点创建目录
    mkdir /APP_LOGS/demo/demo
    2、修改目录权限
    chmod -R 775 demo
    3、登录openshift命令行,oc project切换到指定项目
    oc project demo-test
    4、给sa分配权限
    oc adm policy add-scc-to-user privileged -z default
    5、编辑DC yaml文件,与 volumeMounts 同一级,添加以下内容:
              securityContext:
                privileged: true
    6、编辑DC yaml文件,添加volume
          volumes:
            - hostPath:
                path: /APP_LOGS/demo/demo
                type: ''
              name: logs
    7、编辑DC yaml文件,将volume进行mount
              volumeMounts:
                - mountPath: /projects/logs
                  name: logs
    8、修改应用日志相关配置文件(configmap),将configmap内的文件名修改为application-bak.yaml文件,并且把日志文件名称使用一个大写单词进行替换,如demoLOG
    logging:
      level:
        root: info
      file: demoLOG.log
      path: /projects/logs/
    
    9、编辑DC yaml文件,将application.yml相关的修改为bak
              volumeMounts:
                - mountPath: /projects/configs/application-bak.yml
                  name: application-bak-yml
                  subPath: application-bak.yml
          volumes:
            - configMap:
                defaultMode: 511
                name: demo-application.yml-v1
              name: application-bak-yml
    10、在应用启动脚本里面添加一个sed替换文件,将默认的application-bak.yml内容中的demoLOG修改为pod的主机名,并生成一个新的文件
    sed "s#demoLOG#${HOSTNAME}#g" /projects/configs/application-bak.yml >>/projects/configs/application.yml
    11、这时候在pod内的/projects/logs/路径下就能看到日志,并且在node宿主机的/APP_LOGS/demo/demo路径下也能看到
    pod内:
    sh-4.2$ pwd
    /projects/logs
    sh-4.2$ ls
    demo-66-qv92q.log  demo-66-tm9j9.log  demo-67-6xkqm.log  demo-67-8l4sr.log  demo-67-bh87t.log  daily
    node宿主机内:
    [root@node01 demo]# pwd
    /APP_LOGS/demo/demo
    [root@node01 demo]# ls
    demo-66-qv92q.log  demo-66-tm9j9.log  demo-67-6xkqm.log  demo-67-8l4sr.log  demo-67-bh87t.log  daily

    相关文章

      网友评论

          本文标题:关于 OpenShift 应用日志落盘实践

          本文链接:https://www.haomeiwen.com/subject/etofpctx.html