云服务器内容精选

  • 统计图表类型 支持使用表格、柱状图、折线图等图表类型展示不同场景数据,详细请参考表1。 表1 图表类型 图表类型 使用场景 表格 表格是最常见的数据展示类型,通过对数据结构化的整理,实现数据的对比与统计。大多数场景均适用。 柱状图 柱状图描述的是分类数据,直观表现每一个分类项的大小对比关系。统计近一天各错误码类型出现的次数等分类统计场景适用。 折线图 折线图需要统计数据具备时序字段,依据时间顺序组织与聚合指标。可直观反映指标随时间的变化趋势。 饼图 饼图描述的是不同分类的占比情况,通过扇区大小来衡量各分类项的占比情况。错误码占比情况分析等占比统计场景适用。 数字图 数字图描述的是单个指标,一般选择具备有业务价值的关键性指标。统计天、周、月PV、UV等单指标场景适用。 数字折线图 折线图和数字图的组合。折线图用于表示数据趋势和变化的,数字图则展示关键性指标。在一些需要同时显示趋势和关键数据点的场合适用。 地图 地图通过图形的位置来表现数据的地理位置,通常来展示数据在不同地理区域上的分布情况。攻击IP地理分布等地理位置统计场景适用。 漏斗图 漏斗图适用于单流向单路径的业务流程,对各环节进行统计并用梯形面积表示某个环节业务量与上一个环节之间的差异。
  • 更多操作 告警行动规则创建完成后,您还可以执行表2中的相关操作。 表2 相关操作 操作 说明 修改告警行动规则 单击“操作”列的“修改”。 导出告警行动规则 选中单个或多个告警行动规则,单击“导出”,若没有选中告警行动规则,则导出全部告警行动规则。 删除告警行动规则 删除单条规则:单击对应规则“操作”列的“删除”,随后在提示页面单击“确定”即可删除。 删除单条或多条规则:勾选对应规则前的复选框,单击“批量删除”,随后在提示页面单击“确定”即可删除。 删除告警行动规则前需要先删除该行动规则绑定的告警规则。 搜索告警行动规则 在右上角的搜索框中输入规则名称关键字,单击后显示匹配对象。
  • 创建告警行动规则 登录 云日志 服务控制台。 在左侧导航栏中选择“日志告警”。 单击“告警行动规则”页签。 在告警行动规则页签,单击“创建”。设置行动规则名称、行动规则配置等信息。 图1 创建告警行动规则 表1 告警行动规则参数说明 参数名称 说明 行动规则名称 只能由数字、字母、中文、下划线、中划线组成,且不能以下划线、中划线开头结尾,长度为1到64个字符。 企业项目 选择已创建的企业项目。 如果当前账号未开通企业项目则不显示该参数。 描述 自定义行动规则的描述,字符长度0-1024个字符。 主题 SMN 主题,请从下拉列表中选择。 若没有合适的主题,请单击主题选择栏下方“创建主题”,在SMN界面创建。 消息模板 通知消息的模板,请从下拉列表中选择。 若没有合适的消息模板,请单击消息模板选择栏右侧“创建消息模板”,新建消息模板。详细操作请参考创建消息模板。 设置完成后,单击“确定”。
  • DynamicLtsTableFactory支持SQL作业 LtsDynamicSource和LtsDynamicSink table作业,支持LTS日志直接接入flink,支持SQL语法,示例如下: public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); EnvironmentSettings environmentSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, environmentSettings); // enable checkpointing Configuration configuration = tableEnv.getConfig().getConfiguration(); configuration.set( ExecutionCheckpointingOptions.CHECKPOINTING_MODE, CheckpointingMode.EXACTLY_ONCE); configuration.set( ExecutionCheckpointingOptions.CHECKPOINTING_INTERVAL, Duration.ofSeconds(10)); tableEnv.executeSql("CREATE TABLE source ( " + " collectTime varchar, " + " lineNum varchar, " + " podName varchar, " + " pathFile varchar, " + " category varchar " + " ) " + " with ( " + // connector 表类型 固定值lts "'connector' = 'lts', " + // LTS 日志服务所属region "'regionName' = 'cn-north-7', " + // LTS 日志租户项目ID "'projectId' = '**************', " + // 注意:认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险, 建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全 // LTS 租户AK "'accessKey' = '**************', " + // LTS 租户SK "'accessSecret' = '**************', " + // LTS 日志组ID "'logGroupId' = '**************', " + // LTS 日志流ID "'logStreamId' = '**************', " + // LTS 日志流的消费组 "'consumerGroup' = '**************', " + // LTS 日志消费起始位置 "'startTime' = '1689836602157000000', " + // LTS 原始日志是否做JSON解析 "'jsonParse' = 'true' " + " )"); tableEnv.executeSql("CREATE TABLE print_sink ( " + " collectTime varchar, " + " lineNum varchar, " + " podName varchar, " + " pathFile varchar, " + " category varchar " + " ) " + " with ( " + // connector 表类型 固定值lts "'connector' = 'lts', " + // LTS 日志服务所属region "'regionName' = 'cn-north-7', " + // LTS 日志租户项目ID "'projectId' = '2a473356cca5487f8373be891bffc1cf', " + // LTS 租户AK "'accessKey' = 'DADYWPUP8JMUV3UGPEI9', " + // LTS 租户SK "'accessSecret' = 'jUtvcc0oIIcGZGoAUvtlSi8Oz6sZdFI2ZqFKBGUZ', " + // LTS 日志组ID "'logGroupId' = 'e83e94db-2e29-49c9-ae15-d3a9f4c3ea1b', " + // LTS 日志流ID "'logStreamId' = '0a423cfc-dbf8-4cf3-8fb9-f5cf95fa1298' " + " )"); tableEnv.executeSql("insert into print_sink select * from source "); }
  • 示例代码 const miniSDK = require('lts-mini-sdk').default; // import miniSDK from 'lts-mini-sdk'; App({ onLaunch(options) { // 初始化 const wxmini = new miniSDK({ // 上报region region: string, // 华为云项目ID projectId: string, // 上报地址 url: string, // LTS日志组ID groupId: string, // LTS日志流ID streamId: string, // 调试日志等级 debug: string, // 当前小程序所属平台 platform: string, // 上报条数阈值 cacheThreshold: number, // 上报时间阈值 timeInterval: number, }); // 立即上报单条带标签 wxmini.reportImmediately({ 'name': 'xiaoming', 'age': 18 }, { 'key': 'value' }); // 立即上报单条 不带标签 wxmini.reportImmediately([{ key: 'value', number: 1, array: [], json: { json: 'json' } }, { 'key': 'value' }]); // 缓存上报多条 带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { 'name': 'xiaobai', 'age': 20 }], { 'key': 'value' }); // 缓存上报多条 不带标签 wxmini.report([{ 'name': 'xiaohong', 'age': 18 }, { key: 'value', number: 1, array: [], json: { json: 'json' } }]); // 缓存上报多条 带多个标签(最多50个) wxmini.report([{ 'name': 'xiaohong', 'name': 'xiaolan' }], {'version': '1.0.0', 'render': 'mini', 'link': '/', from: 'wx'}); } });
  • 版本更新说明 表1 版本更新说明 版本号 更新说明 1.0.24 支持更多region:华东-上海一、华南-广州。 1.0.23 新增支持快应用上报。 1.0.21 废弃config方法,优先使用new SDK创建一个新的实例。 去除代码中对三方包的依赖和存在的中文符号。 1.0.19 修改时间阈值的范围从1-60改为1-1800,其默认值从30改为3。 1.0.18 调整日志级别等级。 支持labels嵌套。 1.0.15 新增多实例。
  • 创建消费组 登录云日志服务控制台。 单击日志组名称对应的按钮。 单击日志流名称进入日志流详情页面,单击右上角,在弹出页面中,选择“日志消费”页签。 单击新建消费组,填写消费组名称,单击“确定”。 (可选)当某个消费组,消费到一定位置时,如果想重头或者指定一个时间继续进行消费,支持重置消费位点。 单击重置消费点位,支持设置最早位置和指定时间点,需要重启SDK后,重置消费位点才能生效。 最早位置:从头开始一直拉取到当前最新时间的日志。 指定时间点:从指定的时间点一直拉取到当前最新时间的日志。 消费期间重置消费位点,会导致消费日志紊乱,建议停止消费后再重置消费位点。
  • 查看LTS实时日志 如果您正在使用实时查看功能,请停留在实时查看页面,请勿切换页面。如果离开实时查看页面,实时查看功能将会停止,重新开启后上一次查看的实时日志将不会显示。 正常情况下,每隔5秒加载一次。如果这5秒内没有产生日志,则不显示;5秒后会继续调用接口,刷新出产生的日志数据。即如果每5秒都有日志数据产生,则加载数据时延为5秒。 登录云日志服务控制台,进入“日志管理”页面。 单击目标日志组或日志流名称,进入日志详情页面。 选择“实时日志”页签,可查看实时日志。 通过来源类型分别筛选主机和K8S的日志。 来源类型选择主机时, 设置主机IP和文件路径。 来源类型选择K8S时,设置实例名称、容器名称和文件路径。 日志每隔大约1分钟上报一次,在日志消息区域,您最多需要等待1分钟左右,即可查看实时上报的日志。 同时,还可以通过页面右上方的“清屏”、“暂停”对日志消息区域进行操作。 字段过滤:从索引配置、结构化配置、最新日志获取。 清屏:清除日志消息区域已经显示出来的日志。 暂停:暂停日志消息的实时显示,页面定格在当前已显示的日志。 暂停后,“暂停”会变成“继续”,再次单击“继续”,日志消息继续实时显示。
  • 创建消息模板 登录云日志服务控制台。 左侧导航选择“日志告警”,进入告警页面,选择“告警行动规则”。 消息模板默认有以下内置模板,当您所选择的消息模板中未配置消息内容时,云日志服务默认使用内置模板。 关键词模板:关键词告警模板 keywords_template:关键词告警英文模板 sql模板:sql告警模板 sql_template:sql告警英文模板 在消息模板页签,单击“创建”,在界面右侧弹出的“创建消息模板”页面中,配置消息模板的相关参数。 邮件内容支持html标签和消息预览。 企业微信、钉钉、飞书支持markdown语法和消息预览。 针对 AOM 和LTS,最多可以创建100(包含)条消息模板,如果消息模板数量已达上限100个时,请删除不需要的消息模板后重新创建。 表1 配置消息模板参数 参数名称 说明 校验规则 样例 模板名称 消息模板的名称 输入内容只能是数字、字母、下划线、汉字、中划线,且不能以下划线、中划线等特殊符号开头和结尾。长度不能超过100个字符。 LTS-test 模板描述 对消息模板的描述 输入内容只能是数字、字母、下划线、汉字,且不能以下划线等特殊符号开头和结尾。长度不能超过1024个字符。 - 消息头语言 系统在发送消息时会默认添加消息头 中文(简体) 英文 中文:“尊敬的用户...” 英文:“Dear User...” 通知方式 消息的通知方式类型 邮件 短信 HTTP/HTTPS 钉钉 飞书 企业微信 语音,此功能仅针对白名单用户提交工单申请使用。详细操作请参考提交工单。 - 主题 消息的主题 支持自定义主题名称和使用变量命名主题两种方式。主题名称长度不能超过512个字符。 仅邮件类型支持配置消息主题。 test 正文 消息的内容 添加变量: 规则原始名称:${event_name} 告警级别:${event_severity} 发生时间:${starts_at} 发生区域:${region_name} 华为云账号:${domain_name} 告警源:$event.metadata.resource_provider 资源类型:$event.metadata.resource_type 资源标识:${resources} 告警状态:$event.annotations.alarm_status 表达式:$event.annotations.condition_expression 当前值:$event.annotations.current_value 表达式带值:$event.annotations.condition_expression_with_value 统计周期:$event.annotations.frequency 规则名称:$event.annotations.alarm_rule_alias 通知频率:$event.annotations.notification_frequency 日志组原始名称:$event.annotations.results[0].log_group_name 日志流原始名称:$event.annotations.results[0].log_stream_name 关键词告警支持的变量 查询时间:$event.annotations.results[0].time 查询日志:(日志长度最多2KB,超过2KB被截断丢弃) $event.annotations.results[0].raw_results 查询URL: $event.annotations.results[0].url 日志组/日志流名称:$event.annotations.results[0].resource_id 只支持添加首次创建的日志组/日志流原始名称,不支持添加修改后的日志组/日志流名称。 日志流的企业项目ID:$event.annotations.results[0].eps_id 查询自定义字段$event.annotations.results[0].fields.xxx xxx表示原始日志的结构化字段和内置字段(hostIP、hostName等),日志字段长度最多1KB,超过1KB被截断丢弃。 SQL告警支持的变量 图表0的日志组/流名称:$event.annotations.results[0].resource_id 只支持添加首次创建的日志组/日志流原始名称,不支持添加修改后的日志组/日志流名称。 0代表第一个图表,1代表第二个图表,以此类推。 图表0的查询语句:$event.annotations.results[0].sql 图表0的查询时间:$event.annotations.results[0].time 图表0的查询URL:$event.annotations.results[0].url 图表0的查询日志:$event.annotations.results[0].raw_results 图表0的日志流的企业项目ID:$event.annotations.results[0].eps_id 复制模板: keywords_template sql_template sql模板 关键词模板 自定义模板(用户通过添加变量创建的消息模板) ${event_name} ${event_severity} ${starts_at} ${region_name} 配置完成后,单击“确定”。 在LTS页面创建消息模板时提示“创建消息模板失败,名称不能重复”,可以参考如下步骤进行排查处理。 请检查消息模板名称是否有重复。 若有重复,请重新修改消息模板名称。因为,LTS的消息模板数据源与AOM消息模板数据源为同一个,消息模板名称不能重复,如果在AOM中创建了名称为test的消息模板,在LTS页面不能创建同名的消息模板。 请检查消息模板数量是否超过100个。 针对AOM和LTS,最多可以创建100(包含)条消息模板,当消息模板数量已达上限100个时,请删除不需要的消息模板后重新创建。
  • e_kv_delimit 通过分隔符提取源字段中的键值对信息。 函数格式 e_kv_delimit(源字段或源字段列表, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto") 参数说明 参数名称 参数类型 是否必填 说明 源字段或源字段列表 字符串或字符串列表 是 字段名或多个字段名的列表。 pair_sep String 否 用于分隔键值对的正则字符集,默认为\s。例如\s\w、abc\s等。 说明 如果您需要使用字符串对字段进行分隔,推荐您使用str_replace或regex_replace将字符串转换成字符作为分隔符,然后再使用e_kv_delimit函数对字段进行分隔。 kv_sep String 否 用于分隔键值对的正则字符串,默认为=,不限于单个字符。 可以使用非捕获分组,但不能使用捕获分组。 prefix String 否 给提取的字段名添加前缀。 suffix String 否 给提取的字段名添加后缀。 mode String 否 字段的覆盖模式。默认为fill-auto。 返回结果 返回附带新字段值的日志。 函数示例 示例1:使用默认分隔符=提取键值对信息。 测试数据 { "data": "i=c1 k1=v1 k2=v2 k3=v3" } 如果测试数据为request_uri: a1=1&a2=&a3=3,a2值为空,则使用e_kv_delimit()函数无法提取出a2。您可以使用e_regex()函数进行提取,例如e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite")。 加工规则 e_kv_delimit("data") 加工结果 data: i=c1 k1=v1 k2=v2 k3=v3 i: c1 k2: v2 k1: v1 k3: v3 示例2:使用分隔符&?提取键值对信息。 测试数据 { "data": "k1=v1&k2=v2?k3=v3" } 加工规则 e_kv_delimit("data",pair_sep=r"&?") 加工结果 data: k1=v1&k2=v2?k3=v3 k2: v2 k1: v1 k3: v3 示例3:使用正则表达式提取键值对信息。 测试数据 { "data": "k1=v1 k2:v2 k3=v3" } 加工规则 e_kv_delimit("data", kv_sep=r"(?:=|:)") 加工结果 data: k1=v1 k2:v2 k3=v3 k2: v2 k1: v1 k3: v3
  • e_csv、e_psv、e_tsv 使用自定义的分隔符与预定义的字段名,从特定字段中提取多个字段。 e_csv:默认分隔符为半角逗号(,)。 e_psv:默认分隔符为竖线(|)。 e_tsv:默认分隔符为\t。 函数格式 e_csv(源字段名, 目标字段列表, sep=",", quote='"', restrict=true, mode="fill-auto") e_psv(源字段名, 目标字段列表, sep="|", quote='"', restrict=true, mode="fill-auto") e_tsv(源字段名, 目标字段列表, sep="\t", quote='"', restrict=true, mode="fill-auto") 参数说明 参数名称 参数类型 是否必填 说明 源字段名 任意 是 源字段名。如果字段不存在,则不进行任何操作。 目标字段列表 任意 是 字段值经过分隔符分隔后的每个值对应的字段名。可以是字符串的列表,例如:["error", "message", "result"]。 当字段名中不包含逗号时,也可以直接用逗号作为分隔字符,例如:"error, message, result"。 sep String 否 分隔符,只能是单个字符。 quote String 否 引用符,用于包裹值的字符。当值包含分隔符时需要使用。 restrict Boolean 否 是否采用严格模式,默认为false表示非严格模式。当分隔值的个数与目标字段列表数不一致时: 严格模式下不进行任何操作。 非严格模式下对前几个可以配对的字段进行赋值。 mode String 否 字段的覆盖模式。默认为fill-auto。 返回结果 返回附带新字段值的日志。 函数示例 以e_csv为例,e_psv和e_tsv功能类似。 测试数据 { "content": "192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aadoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-" } 加工规则 e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid") 加工结果 content: 192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aadoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,- body_bytes_sent: 6404 guid: - host: example.aadoc.com http_referer: https://image.developer.aadoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei http_user_agent: Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 http_x_forwarded_for: - remote_addr: 192.168.0.100 request: GET /zf/11874.html HTTP/1.1 request_time: 0.077 session_id: - status: 200 time_local: 10/Jun/2019:11:32:16 +0800 topic: syslog-forwarder upstream_addr: 192.168.0.100:800 1upstream_response_time: 0.060 upstream_status: 200 更多参考 支持和其他函数组合使用。
  • e_kv 通过quote提取多个源字段中的键值对信息。 函数格式 e_kv(源字段或源字段列表, sep="=", quote='"', escape=false, prefix="", suffix="", mode="fill-auto") 参数说明 参数名称 参数类型 是否必填 说明 源字段或源字段列表 字符串或字符串列表 是 字段名或多个字段名的列表。 sep String 否 关键字与值的正则表达式的分隔符串,默认为=,不限于单个字符。 说明 可以使用非捕获分组,但不能使用捕获分组。 quote String 否 引用符,用于包裹值的字符。默认为"。 说明 提取的动态键值对的值一般需要quote来包括,例如:a="abc",b="xyz"如果提取对象中不包含,则只提取如下字符集的值:中文字母数字_-.%~。例如a=中文ab12_-.%~|abc b=123可以提取a: 中文ab12_-.%~,b: 123。 escape Boolean 否 是否自动提取反转字符的值。默认为false表示否。例如key="abc\"xyz"默认提取字段key的值为abc\,设置escape=true时,提取的值为abc"xyz。 prefix String 否 给提取的字段名添加前缀。 suffix String 否 给提取的字段名添加后缀。 mode String 否 字段的覆盖模式。默认为fill-auto。 返回结果 返回附带新字段值的日志。 函数示例 示例1:使用默认分隔符=提取键值对信息。 测试数据 { "http_refer": "https://video.developer.aadoc.com/s?q=asd&a=1&b=2" } 如果测试数据为request_uri: a1=1&a2=&a3=3,a2值为空,则使用e_kv()函数无法提取出a2。您可以使用e_regex()函数进行提取,例如e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite")。 加工规则 e_kv("http_refer") 加工结果 http_refer: https://video.developer.aadoc.com/s?q=asd&a=1&b=2 q: asd a: 1 b: 2 示例2:给字段名增加前缀和后缀。 测试数据 { "http_refer": "https://video.developer.aadoc.com/s?q=asd&a=1&b=2" } 加工规则 e_kv( "http_refer", sep="=", quote='"', escape=false, prefix="data_", suffix="_end", mode="fill-auto", ) 加工结果 http_refer: https://video.developer.aadoc.com/s?q=asd&a=1&b=2 data_q_end: asd data_a_end: 1 data_b_end: 2 示例3:提取字段content2中的键值对信息,使用escape参数提取反转字符的值。 测试数据 { "content2": "k1:\"v1\\"abc\", k2:\"v2\", k3: \"v3\"" } 加工规则 e_kv("content2", sep=":", escape=true) 加工结果 content2: k1:"v1\"abc", k2:"v2", k3: "v3" k1: v1"abc k2: v2 k3: v3 更多参考 支持和其他函数组合使用。
  • e_json 对特定字段中的JSON对象进行JSON操作,包括JSON展开、JMES提取或者JMES提取后再展开。 函数格式 e_json(key, expand=None, depth=100, prefix="__", suffix="__", fmt="simple", sep=".", expand_array=true, fmt_array="{parent}_{index}", include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*", exclude_node="", include_path="", exclude_path="", jmes="", output="", jmes_ignore_none=false, mode='fill-auto' ) 参数说明 参数名称 参数类型 是否必填 说明 key String 是 源字段名。如果字段不存在,则不进行任何操作。 expand Boolean 否 是否将字段展开。 没有配置jmes参数时,则默认为true,表示展开。 配置jmes参数时,则默认为false,表示不展开。 depth Number 否 字段展开的深度。取值范围为1~2000,1表示只展开第一层,默认为100层。 prefix String 否 展开时添加为字段名的前缀。 suffix String 否 展开时添加为字段名的后缀。 fmt String 否 格式化方式。取值: simple(默认值):表示将节点名作为字段名。展示形式为{prefix}{current}{suffix}。 full:表示将父节点与当前节点合并作为字段名。展示形式为{parent_list_str}{sep}{prefix}{current}{suffix}。分隔符是由sep参数指定,默认为.。 parent:表示用完整的路径作为字段名。展示形式为{parent}{sep}{prefix}{current}{suffix}。分隔符是由sep参数指定,默认为.。 root:表示将根节点与当前节点合并作为字段名。展示形式为{parent_list[0]}{sep}{prefix}{current}{suffix}。分隔符由sep参数指定,默认为.。 sep String 否 父子节点格式化的分隔符。当fmt取值为full、parent或root时需要设置。默认为.。 expand_array Boolean 否 是否将数组展开。默认为true表示展开数组。 fmt_array String 否 数组展开的格式化方式,格式为{parent_rlist[0]}_{index}。也可以使用最多五个占位符自定义格式化字符串:parent_list,current,sep,prefix,suffix。 include_node String/ Number 否 节点允许名单,表示过滤时包含的节点名称。默认只有中文、数字、字母和_.-的节点才会被自动展开。 exclude_node String 否 节点限制名单,表示过滤时排除的节点名称。 include_path String 否 节点允许名单,表示过滤时包含的节点路径。 exclude_path String 否 节点限制名单,表示过滤时排除的节点路径。 jmes String 否 将字段值转化为JSON对象并通过JMES提取特定值。 output String 否 通过JMES提取特定值时输出的字段名。 jmes_ignore_none Boolean 否 当JMES提取不到值时是否忽略。默认为true表示忽略,否则输出一个空字符串。 mode String 否 字段的覆盖模式。默认为fill-auto。 JSON展开过滤 如果设置了节点允许名单,则内容必须包含在节点允许名单中然后才会在结果中出现。节点允许名单正则示例:e_json("json_data_filed", ...., include_node=r'key\d+')。 如果设置了节点限制名单,则内容必须包含在节点限制名单中然后才不会在结果中出现。节点限制名单正则示例:e_json("json_data_filed", ...., exclude_node=r'key\d+')。 展开节点路径:正则include_path 与 exclue_path从路径开头匹配,匹配路径是以.分隔。 JMES过滤 使用JMES选择、计算。 选择特定JSON路径下的元素属性列表:e_json(..., jmes="cve.vendors[*].product",output="product") 用逗号拼接特定JSON路径下的元素属性:e_json(..., jmes="join(',', cve.vendors[*].name)",output="vendors") 计算特定JSON路径下元素的最大属性值:e_json(..., jmes="max(words[*].score)",output="hot_word") 当特定路径不存在或为空时,返回一个空字符串:e_json(..., jmes="max(words[*].score)",output="hot_word", jmes_ignore_none=false) parent_list和parent_rlist,以如下示例说明。 测试数据: { "data": { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}} } parent_list是将父节点从左到右排列。 e_json("data", fmt='{parent_list[0]}-{parent_list[1]}#{current}') 得到的日志: data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}} data-k2#k3:200 data-k2#k5:300 parent_rlist是将父节点从右到左排列。 e_json("data", fmt='{parent_rlist[0]}-{parent_rlist[1]}#{current}') 得到的日志: data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}} k2-data#k3:200 k4-k2#k5:300 返回结果 返回附带新字段值的日志。 函数示例 示例1:字段展开操作。 测试数据 { "data": {"k1": 100, "k2": 200} } 加工规则 e_json("data",depth=1) 加工结果 data: {"k1": 100, "k2": 200} k1: 100 k2: 200 示例2:给字段名添加前缀和后缀。 测试数据 { "data": {"k1": 100, "k2": 200} } 加工规则 e_json("data", prefix="data_", suffix="_end") 加工结果 data: {"k1": 100, "k2": 200} data_k1_end: 100 data_k2_end: 200 示例3:将字段按照不同格式展开。 测试数据 { "data": {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } } fmt=full格式 e_json("data", fmt='full') data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data.k1: 100 data.k2.k3: 200 data.k2.k4.k5: 300 fmt=parent格式 e_json("data", fmt='parent') data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data.k1: 100 k2.k3: 200 k4.k5: 3000 fmt=root格式 e_json("data", fmt='root') data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data.k1: 100 data.k3: 200 data.k5: 300 示例4:使用指定分隔符、字段名前缀和字段名后缀提取JSON 测试数据 { "data": {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } } 加工规则 e_json("data", fmt='parent', sep="@", prefix="__", suffix="__") 加工结果 data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data@__k1__:100 k2@__k3__:200 k4@__k5__:300 示例5:指定fmt_array参数,按照数组方式提取JSON。 测试数据 { "people": [{"name": "xm", "gender": "boy"}, {"name": "xz", "gender": "boy"}, {"name": "xt", "gender": "girl"}] } 加工规则 e_json("people", fmt='parent', fmt_array="{parent_rlist[0]}-{index}") 加工结果 people: [{"name": "xm", "gender": "boy"}, {"name": "xz", "gender": "boy"}, {"name": "xt", "gender": "girl"}] people-0.name: xm people-0.gender: boy people-1.name: xz people-1.gender: boy people-2.name: xt people-2.gender: girl 示例6:使用JMES提取JSON对象。 测试数据 { "data": { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}} } 加工规则 e_json("data", jmes='foo', output='jmes_output0') e_json("data", jmes='foo.bar', output='jmes_output1') e_json("data", jmes='people[0].last', output='jmes_output2') e_json("data", jmes='people[*].first', output='jmes_output3') 加工结果 data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}} jmes_output0: {"bar": "baz"} jmes_output1: baz jmes_output2: d jmes_output3: ["james", "jacob"] 更多参考 支持和其他函数组合使用。
  • 函数列表 类型 函数 说明 正则提取 e_regex 根据正则表达式提取字段的值并赋值给其他字段。支持和其他函数组合使用。 JSON提取 e_json 对特定字段中的JSON对象进行JSON操作,包括JSON展开、JMES提取或者JMES提取后再展开。支持和其他函数组合使用。 分隔符提取 e_csv、e_psv、e_tsv 使用自定义的分隔符与预定义的字段名,从特定字段中提取多个字段。 e_csv:默认分隔符为半角逗号(,)。 e_psv:默认分隔符为竖线(|)。 e_tsv:默认分隔符为\t。 支持和其他函数组合使用。 KV模式提取 e_kv 通过quote提取多个源字段中的键值对信息。支持和其他函数组合使用。 e_kv_delimit 通过分隔符提取源字段中的键值对信息。
  • 配置参数说明 LogConsumerConfig中配置参数说明: startTimeNs(消费开始时间)和endTimeNs(消费结束时间),这里的时间指的是服务端时间。 API消费保证最终一致性,即您可以获取到这条日志流的全部内容,但由于时间为服务端时间,所以在获取日志流的过程中,可能导致获取到的日志数量跟LTS页面查询的日志数量不一致。 表1 配置参数说明 参数名称 描述 类型 是否需要填写 默认值 regionName 云日志服务的区域 String 必填 - projectId 华为云账号的项目ID(project id) String 必填 - logGroupId LTS的日志组ID String 必填 - logStreamId LTS的日志流ID String 必填 - accessKeyId 华为云账号的AK String 必填 - accessKeySecret 华为云账号的SK String 必填 - startTimeNs 消费开始时间,纳秒值 Long 必填 - endTimeNs 消费结束时间,纳秒值 Long 选填 - batchSize 每批次消费数量,可选范围[10, 1000] Integer 选填 -