本文档为您介绍数据加工服务进行数据加工后,将加工结果写入目标Logstore产生错误的原因以及排查处理方法。

日志事件被加工完之后,会被输出到预先配置好的目标Logstore中。LOG DSL引擎每次读取一个批次的源日志(从1条到近万条不等),数据加工后,并不是加工一条日志就输出一条,而是会先将加工好的数据存放在一个缓存池中,等源数据批次处理完,再一起输出。目标Logstore输出错误
该环节产生错误主要是由于对目标Logstore的访问异常。可能的异常原因为:
  • 目标Logstore信息配置错误。
  • 目标Logstore信息发生变化。
  • 网络错误。
错误影响:
  • 在输出到目标Logstore产生错误时,加工任务会一直重试,直到重试成功或被手动停止。如果重试成功,加工任务会继续正常工作,不会产生日志的丢失和冗余。
  • 如果已经输出了部分数据后才报错,例如配置了两个目标,一个目标成功,另外一个目标失败。会保存断点并一直重试,重试成功后,不会有数据的丢失与冗余。如果这时停止加工任务再重新启动时,会从断点继续,不会有数据丢失,但可能会有冗余的数据。

常见错误排查

  • 目标Logstore配置了非法的AccessKey。
    非法的AccessKey主要分为两种:非法的AccessKeyId和非法的AccessKeySecret。
    • 错误日志:
      #非法的AccessKeyId
      {
        "errorCode": "Unauthorized", 
        "errorMessage": "AccessKeyId not found: LTAIL3gUus8AEu11"
      }
      #非法的AccessKeySecret
      { 
        "errorCode": "SignatureNotMatch", 
        "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWtajpM= not match"
      }
    • 排查方法:

      检查任务配置项,查看对应的目标Logstore的AccessKeyID和AccessKeySecret是否存在且正确。

  • 目标Project不存在。
    • 错误日志:
      {
        "errorCode": "ProjectNotExist", 
        "errorMessage": "The Project does not exist : your_project_name"
      }
    • 原因分析:
      错误日志提示Project does not exist有三种可能的原因:
      • 任务配置项中的目标Project名称输入错误。
      • 目标Project名称输入正确,但是在加工任务过程中,对应的Project被删除。
      • 目标Project和加工任务所在的Project不在同一地域内。
        说明 目前LOG DSL只支持同一地域内的不同Project之间的数据传输,不支持不同地域下的Project之间的数据传输。
    • 排查方法:
      • 检查任务配置项中的目标Project名称是否输入有误。
      • 检查目标Project是否被删除。
      • 检查目标Project和当前加工任务所在的Project是否属于同一地域内。
  • 输出目标不存在。
    加工规则样例:
    e_coutput("target1")
    • 错误日志:
      {
        "errorMessage": "transform_data: output target target1 is not found in configurations"
      }
    • 原因分析:

      上述LOG DSL规则将日志事件输出到target1中,而错误日志提示target1 is not found in configurations,说明该加工规则的配置中并没有定义和target1关联的目标Project和Logstore。

    • 排查方法:

      检查LOG DSL规则的配置项,确保配置项中定义了加工规则中涉及到的所有存储目标。

  • 目标Logstore信息发生变化。
    • 原因分析:

      用户配置了正确的目标Logstore信息,可能也已经进行了部分加工任务。但是在数据加工的过程中,目标Logstore信息发生了变化,导致原有的配置信息无法访问目标Logstore。

    • 错误日志:
      目标Logstore信息发生变化有主要是如下两种情况:
      • 目标Logstore被删除。
        {
          "errorMessage": "Logstore [logstore_name] does not exist."
        }
      • 目标Logstore的AccessKey信息发生变化。
        #非法的AccessKeyId
        {
          "errorCode": "Unauthorized", 
          "errorMessage": "AccessKeyId not found: LTAIL3gUus8AEu11"
        }
        #非法的AccessKeySecret
        { 
          "errorCode": "SignatureNotMatch", 
          "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWtajpM= not match"
        }
    • 排查方法:
      • 检查目标Logstore是否被删除。
      • 检查目标Logstore的AccessKey信息是否发生改变。
  • 网络错误。
    • 错误日志:
      {
        "errorCode": "LogRequestError",
        "errorMessage": "HTTPConnectionPool(host='your_host', port=80): Max retries exceeded with url: your_url (Caused by NewConnectionError: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'"
      }
    • 排查方法:

      检查网络连接是否正常。