美文网首页
Jenkins Log Parser 的不足

Jenkins Log Parser 的不足

作者: jaymz明 | 来源:发表于2019-03-01 16:33 被阅读0次

    本文提到的Log parser是jenkins 的一个插件

    Log Parser Plugin

    存在的价值:jenkins 的console打印了太多的log,当报错信息发生时,不方便查看error的日志,经常会出现日志卡死,引用该插件可以方便做到根据过滤条件显示日志。

    组成部分

    log可以分块展示(error,warning,info),级别之后可以根据匹配的关键字,分配log到对应的块中。正如你所发现的它是存在一个rule,rule文件里定义了你扫描日志的规则。例如:

        ok /not really/
         
        # match line starting with 'error ', case-insensitive
        error /[Ee]rror/
        error /ERROR/
         
        # list of warnings here...
        warning /[Ww]arning/
        warning /WARNING/
         
        # create a quick access link to lines in the report containing 'INFO'
        info /INFO/
         
        # each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line.
        # also creates a quick access link.
        start /BUILD/
    
    • error 块定义了log中出现Error或者error字眼,会将这部分log link到error里。同理 warning 和info也是。该规则定义支持正则表达式。
    • start块,定义了过滤出哪些log段,文中默认是出现BUILD。

    配置部分

    1. 手动配置

      可以在全局配置中


      image

      然后在job的配置页面post-build Actions

      image

      这样在扫描日志的时候会应用你配置的rule。

    2. pipeline

       node {
           stage("log parser") {
               step([$class: 'LogParserPublisher', parsingRulesPath: "${JENKINS_HOME}/userContent/minimal_rules", useProjectRule: false, failBuildOnError: failBuildOnError, unstableOnWarning: unstableOnWarning])
           }
       }
      

    pipeline的方式很简单,只需要在job的开头或者结尾的地方加上上述代码,就可以实现对整个output console进行分析。其中failBuildOnError参数的意思是当我出现Error的时候,我会将整个build的结果修改为fail。告知用户这个job有错误。一般我们把这个功能作为检查code 的duplicate,checkstyle等。

    Sample

    1. write rule file

          error /Error/
          start /ZZM|TEST/
      
    2. write pipeline job

       try {
         node {
             stage("ZZM"){
              echo 'INfo: oh no'
              echo 'Error:zzm'
             }
             stage("adc"){
              echo 'Error: oh no'
             }
             stage("TEST"){
                 echo 'Info ;222'
             }
              stage("TEST"){
                 echo 'Error 444'
             }
         }
       } 
       finally {
         node {
           step([$class: 'LogParserPublisher', parsingRulesPath: "${JENKINS_HOME}/userContent/test_rule", useProjectRule: false, failBuildOnError: true, unstableOnWarning: true])
         }
       }
      
    3. result

    image

    缺陷

    自认为的缺陷,但是我相信使用的人也会遇到这部分需求。当我在大的pipeline中,单单log文件就几个G的情况下,无法针对某个指定的stage进行log分析,一旦log中出现检查点不过的情况立即停止,目前该插件无法做到。当然如果能够指定解析一个文件,也是能够解决这个问题。但是目前看下来并没有该功能。希望在未来的release中会有吧。

    参考文档

    github address

    wiki 文档

    相关文章

      网友评论

          本文标题:Jenkins Log Parser 的不足

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