文档首页/ 云解析服务 DNS/ 最佳实践/ 运维/ 为DNS配置日志云端结构化解析
更新时间:2025-09-04 GMT+08:00
分享

为DNS配置日志云端结构化解析

应用场景

日志搜索与分析是运维中不可或缺的一环。日志接入成功后,云日志服务LTS支持对采集成功的日志数据进行搜索与分析。通过合理的日志收集、高效的搜索方法和专业的分析工具,可以实现对系统或应用的全面监控和精细化管理。

执行搜索与分析前,需要将上报的日志进行结构化配置和索引配置。结构化后的数据具有统一的长度和格式,能够显著提升搜索与分析的效率和准确性。

云日志服务LTS目前支持五种日志结构化方式,分别是正则分析、JSON、分隔符、Nginx和结构化模板。您可以根据日志内容的实际场景进行选择。

本文主要介绍如何为DNS解析器配置日志云端结构化解析以及DNS服务常用的SQL语句。

约束与限制

您的业务所在区域已开通DNS解析器功能。

配置流程

实施步骤

  1. 创建日志组

    创建日志组,请参见创建日志组

    配置DNS访问日志,请参见配置DNS访问日志

  2. 创建日志流

    创建日志流,请参见创建日志流

  3. 配置云端结构化解析
    1. 日志流创建完成后,单击页面右上角的“日志设置”。

    2. 选择“云端结构化解析”,根据界面提示配置相关参数。
      • 保留原始日志:打开保留原始日志开关后,原始日志将作为content字段的值存储到云日志服务。本实践保持默认打开。
      • 上传解析失败日志:打开上传解析失败日志开关后,原始日志将作为_content_parse_fail_字段的值上传到云日志服务。本实践保持默认关闭。
      • 结构化方式:目前支持5种日志结构化方式,请根据日志内容的实际场景选择。本实践选择结构化模板。
      • 选择模板本实践选择系统模板中的“DNS解析请求日志”。

        日志示例如下,提取的关键字段说明如表1所示。

        2025-04-16 10:23:56.377 ws-api-hu.xfyun.cn. A NOERROR UDP cnnorth4a CNAME_hd-kaicp.xf-gtm.com.|A_120.92.238.203|A_120.92.238.23|A_120.92.238.24|A_120.92.238.30 192.168.0.8 d3b08f84-12ef-411f-8eae-5c2726f42c14
        表1 DNS解析请求日志关键字段

        参数

        描述

        取值示例

        Time

        时间

        2025-04-16 10:23:56.377

        QueryName

        解析域名

        ws-api-hu.xfyun.cn.

        QueryType

        解析类型

        A

        Rcode

        响应码

        NOERROR

        Protocol

        协议

        UDP

        DNS-Region

        区域

        cnnorth4a

        Answer

        响应信息

        CNAME_hd-kaicp.xf-gtm.com.|A_120.92.238.203|A_120.92.238.23|A_120.92.238.24|A_120.92.238.30

        Client

        客户端

        192.168.0.8

        VpcId

        VPC ID

        d3b08f84-12ef-411f-8eae-5c2726f42c14

    3. 单击“保存”。
  4. 配置索引
    1. 单击日志流页面右上角的“日志设置”。

    2. 选择“索引配置”,在字段索引处单击“自动配置”,其余参数保持默认配置。

      步骤3.b中提取的关键字段将被自动配置为索引。

    3. 单击“确定”,配置索引的字段会显示在“日志搜索”下。
  5. 创建定时SQL
    1. 单击日志流页面右上角的“日志设置”。

    2. 选择“索引配置”,单击“创建自动SQL”。

    3. 根据界面提示完成计算配置和调度配置。
      DNS常用SQL语句请参见DNS常用SQL语句
      图1 计算配置
      图2 调度配置
    4. 单击“确定”。

      通过定时SQL可以将查询到的数据转存到其他日志流或上传至AOM Prometheus实例中进行二次分析。

  6. 创建告警规则
    1. 单击日志流页面右上角的“日志设置”。

    2. 选择“告警规则”,单击“创建”。

    3. 根据界面提示配置相关参数。

      详细请参见配置日志告警规则

  7. 配置DNS访问日志
    1. 进入解析器列表页面
    2. 单击“访问日志”,进入访问日志页面。
    3. 在访问日志页面,单击“配置访问日志”。

    4. 根据界面提示配置日志组、日志流、VPC等参数。

    5. 单击“确定”,配置完成。

  8. 查看DNS访问日志
    1. 在访问日志列表中,在需要查看的访问日志所在行单击“查看详细日志”。

      默认进入云日志服务的日志管理页面,并在日志列表中展示监听器对应的日志组和日志流信息。

    2. 单击日志流名称,可查看该流日志记录的详细信息。

      日志显示示例如下,日志字段说明如表2所示。不支持修改日志格式。

      {
          "content": "2024-07-02 09:28:00.304 baidu.com. A NOERROR TCP cnsouthwest2d _ 192.168.0.138 c1e159ce-ac25-4908-8e31-8ff73ad2f57d",
          "_resource_id": "c1e159ce-ac25-4908-8e31-8ff73ad2f57d",
          "_resource_name": "c1e159ce-ac25-4908-8e31-8ff73ad2f57d",
          "_service_type": "DNS",
          "category": "LTS",
          "collectTime": 1719883683977
      }
      表2 字段说明

      参数

      描述

      取值说明

      取值示例

      content

      DNS解析日志

      字符串

      2024-07-02 09:28:00.304 baidu.com. A NOERROR TCP cnsouthwest2d _ 192.168.0.138 c1e159ce-ac25-4908-8e31-8ff73ad2f57d

      _resource_id

      资源id

      uuid

      95c2b814-99dc-939a-e811-ae84c61ea9ee

      _resource_name

      资源名称

      Resource_id对应的名称

      95c2b814-99dc-939a-e811-ae84c61ea9ee

      _service_type

      流日志所属服务

      固定值:DNS

      DNS

      category

      日志类别

      固定值:LTS

      LTS

      collectTime

      LTS服务日志收集时间

      整型

      1704158708902

DNS常用SQL语句

本节提供DNS服务常用的SQL语句,如您有其他统计需求,请提交工单联系我们补充。

  • 解析请求量统计分析
    • 解析请求量支持时间条件查询
      select time_series(__time, 'PT1M', 'yyyy-MM-dd HH:mm:ss', '0', '+08:00') as t_time, count(*) as num group by t_time order by t_time

    • 解析请求量支持域名名称查询
      select time_series(__time, 'PT1M', 'yyyy-MM-dd HH:mm:ss', '0', '+08:00') as t_time, count(*) as num where QueryName='域名.' group by t_time order by t_time

  • 解析请求来源分析
    高频请求来源IP解析请求量排名
    SELECT Client, COUNT(*) AS request_count GROUP BY Client ORDER BY request_count LIMIT 10 

  • 解析应答特征分析
    • 域名解析应答状态占比
      SELECT Rcode, count(*) as rcode_count group by Rcode order by rcode_count

    • 否定应答域名解析请求量排序
      SELECT QueryName, count(*) as rcode_count where Rcode='NXDOMAIN' group by QueryName order by rcode_count

  • 解析应答明细分析
    关键词查询
    SELECT * where 待查询字段='期望值'

相关文档