详情页标题前

阿里云日志服务SLS特定格式文本数据加工-云淘科技

详情页1

文档中的实践案例主要是根据实际工作中的工单需求产生。本文档将从工单需求,加工编排等方面介绍如何使用LOG DSL编排解决任务需求。

场景:非标准JSON对象转JSON展开

需要对收集的dict数据进行二次嵌套展开操作。首先将dict数据转成JSON数据,再使用e_json函数进行展开即可。

  • 原始日志
    content: {
      'referer': '-',
      'request': 'GET /phpMyAdmin',
      'status': 404,
      'data-1': {
        'aaa': 'Mozilla',
        'bbb': 'asde'
      },
      'data-2': {
        'up_adde': '-',
        'up_host': '-'
      }
    }
  • LOG DSL编排
    1. 将上述content数据转换成JSON格式数据。
      e_set("content_json",str_replace(ct_str(v("content")),"'",'"'))

      处理后的日志为:

      content: {
        'referer': '-',
        'request': 'GET /phpMyAdmin',
        'status': 404,
        'data-1': {
          'aaa': 'Mozilla',
          'bbb': 'asde'
        },
        'data-2': {
          'up_adde': '-',
          'up_host': '-'
        }
      }
      content_json:  {
        "referer": "-",
        "request": "GET /phpMyAdmin",
        "status": 404,
        "data-1": {
          "aaa": "Mozilla",
          "bbb": "asde"
        },
        "data-2": {
          "up_adde": "-",
          "up_host": "-"
        }
      }
    2. 对经过处理后的标准化的content_json数据进行展开。例如要展开第一层只需要设定JSON中的depth参数为1即可。
      e_json("content_json",depth=1,fmt='full')

      展开的日志为:

      content_json.data-1.data-1:  {"aaa": "Mozilla", "bbb": "asde"}
      content_json.data-2.data-2:  {"up_adde": "-", "up_host": "-"}
      content_json.referer:  -
      content_json.request:  GET /phpMyAdmin
      content_json.status:  404

      如果depth设置为2,则展开的日志为:

      content_json.data-1.aaa:  Mozilla
      content_json.data-1.bbb:  asde
      content_json.data-2.up_adde:  -
      content_json.data-2.up_host:  -
      content_json.referer:  -
      content_json.request:  GET /phpMyAdmin
      content_json.status:  404
    3. 综上LOG DSL规则可以如以下形式:
      e_set("content_json",str_replace(ct_str(v("content")),"'",'"'))
      e_json("content_json",depth=2,fmt='full')
  • 加工后数据

    加工后的数据是按照depth为2处理的,具体形式如下:

    content:  {
      'referer': '-',
      'request': 'GET /phpMyAdmin',
      'status': 404,
      'data-1': {
        'aaa': 'Mozilla',
        'bbb': 'asde'
      },
      'data-2': {
        'up_adde': '-',
        'up_host': '-'
      }
    }
    content_json:  {
      "referer": "-",
      "request": "GET /phpMyAdmin",
      "status": 404,
      "data-1": {
        "aaa": "Mozilla",
        "bbb": "asde"
      },
      "data-2": {
        "up_adde": "-",
        "up_host": "-"
      }
    }
    content_json.data-1.aaa:  Mozilla
    content_json.data-1.bbb:  asde
    content_json.data-2.up_adde:  -
    content_json.data-2.up_host:  -
    content_json.referer:  -
    content_json.request:  GET /phpMyAdmin
    content_json.status:  404

其他格式文本转JSON展开

对一些非标准的JSON格式数据,如果进行展开可以通过组合规则的形式进行操作。

  • 原始日志
    content : {
      "pod" => {
        "name" => "crm-learning-follow-7bc48f8b6b-m6kgb"
      }, "node" => {
        "name" => "tw5"
      }, "labels" => {
        "pod-template-hash" => "7bc48f8b6b", "app" => "crm-learning-follow"
      }, "container" => {
        "name" => "crm-learning-follow"
      }, "namespace" => "testing1"
    }
  • LOG DSL编排
    1. 首先将日志格式转换为JSON形式,可以使用str_logtash_config_normalize函数进行转换,操作如下:
      e_set("normalize_data",str_logtash_config_normalize(v("content")))
    2. 可以使用JSON函数进行展开操作,具体如下:
      e_json("normalize_data",depth=1,fmt='full')
    3. 综上LOG DSL规则可以如以下形式:
      e_set("normalize_data",str_logtash_config_normalize(v("content")))
      e_json("normalize_data",depth=1,fmt='full')
  • 加工后数据
    content : {
      "pod" => {
        "name" => "crm-learning-follow-7bc48f8b6b-m6kgb"
      }, "node" => {
        "name" => "tw5"
      }, "labels" => {
        "pod-template-hash" => "7bc48f8b6b", "app" => "crm-learning-follow"
      }, "container" => {
        "name" => "crm-learning-follow"
      }, "namespace" => "testing1"
    }
    normalize_data:  {
      "pod": {
        "name": "crm-learning-follow-7bc48f8b6b-m6kgb"
      },
      "node": {
        "name": "tw5"
      },
      "labels": {
        "pod-template-hash": "7bc48f8b6b",
        "app": "crm-learning-follow"
      },
      "container": {
        "name": "crm-learning-follow"
      },
      "namespace": "testing1"
    }
    normalize_data.container.container:  {"name": "crm-learning-follow"}
    normalize_data.labels.labels:  {"pod-template-hash": "7bc48f8b6b", "app": "crm-learning-follow"}
    normalize_data.namespace:  testing1
    normalize_data.node.node:  {"name": "tw5"}
    normalize_data.pod.pod:  {"name": "crm-learning-follow-7bc48f8b6b-m6kgb"}

部分文本特殊编码转换

在日常工作环境中,会遇到一些十六进制字符,需要对其解码才能正常阅读。可以使用str_hex_escape_encode函数对一些十六进制字符进行转义操作。

  • 原始日志
    content : "你好"
  • LOG DSL编排
    e_set("hex_encode",str_hex_escape_encode(v("content")))
  • 加工后数据
    content : "你好"
    hex_encode : "你好"

XML字段展开

在工作中会遇到各种类型数据,例如xml数据。如果要展开xml数据可以使用xml_to_json函数处理。

  • 测试日志
    str : 
    
        
            1
            2008
            141100
            
            
        
        
            4
            2011
            59900
            
        
        
            68
            2011
            13600
            
            
        
    
  • LOG DSL编排
    e_set("str_json",xml_to_json(v("str")))
  • 加工后的日志
    str : 
    
        
            1
            2008
            141100
            
            
        
        
            4
            2011
            59900
            
        
        
            68
            2011
            13600
            
            
        
    
    str_dict :{
      "data": {
        "country": [{
          "@name": "Liechtenstein",
          "rank": "1",
          "year": "2008",
          "gdppc": "141100",
          "neighbor": [{
            "@name": "Austria",
            "@direction": "E"
          }, {
            "@name": "Switzerland",
            "@direction": "W"
          }]
        }, {
          "@name": "Singapore",
          "rank": "4",
          "year": "2011",
          "gdppc": "59900",
          "neighbor": {
            "@name": "Malaysia",
            "@direction": "N"
          }
        }, {
          "@name": "Panama",
          "rank": "68",
          "year": "2011",
          "gdppc": "13600",
          "neighbor": [{
            "@name": "Costa Rica",
            "@direction": "W"
          }, {
            "@name": "Colombia",
            "@direction": "E"
          }]
        }]
      }
    }

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/163470.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云日志服务SLS预览调试概述-云淘科技

    预览功能用于调试数据加工脚本,包括快速预览和高级预览。本文介绍两种预览方式。 快速预览 快速预览支持免费、快速检验数据加工脚本语法正确性,验证加工语句的输出结果是否符合预期,并且支持自定义测试数据或者从Logstore中选取特定日志进行测试。具体操作,请参见快速预览。 快速预览时,日志服务不能真正连接到资源函数(res_local、res_rds_mysql…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云对象存储OSS查看选项-云淘科技

    您可以通过-h命令查看ossutil支持的所有选项。 说明 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门。 命令格式 ./ossutil64 -h 若要查看某个命令支持哪些选项,请使用./ossutil64 help [command]命令来…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库恢复方案概览-云淘科技

    本文介绍RDS SQL Server的恢复方案概览。 场景 功能 相关操作 数据恢复 恢复到已有实例 恢复SQL Server数据说明 恢复单库到已有实例时,建议先手动备份单库,再将单库备份的作为数据库恢复的起始点,在应用的版本升级或发布等场景下,该方式可更灵活回滚数据。 恢复到全新实例 通过临时实例恢复到原实例说明 临时实例恢复到原实例仅适用于RDS SQ…

    阿里云数据库 2023年12月10日
  • 视觉智能平台身份证识别,状态码返回464,是什么问题?-云小二-阿里云

    身份证识别,状态码返回464,是什么问题{“body”:”Invalid Result – algorithm runtime exception”,”contentType”:”application/json;charset=UTF-8″,&#82…

    2023年12月17日
  • 阿里云日志服务SLS创建Trace实例-云淘科技

    日志服务Trace实例用于管理各类已采集到的Trace数据,包括查询和分析Trace数据、查看Trace数据详情、查看服务指标等。本文介绍创建Trace实例的操作步骤。 操作步骤 登录日志服务控制台。 在日志应用区域的智能运维页签下,单击Trace服务。 单击创建实例。 在创建实例页面,配置如下参数,然后单击确定。 参数 描述 Trace实例名称 Trace…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。