日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

分析和監控CoreDNS日志

阿里云容器服務ACK部署了CoreDNS作為集群內的DNS服務器,您可以通過查看CoreDNS日志來分析CoreDNS解析慢、訪問高危請求域名等問題。本文介紹如何開啟CoreDNS日志分析與監控能力。

前提條件

  • 已安裝日志組件logtail-ds。

    在創建集群時,ACK默認選中日志組件logtail-ds。如果您未安裝日志組件logtail-ds,關于如何手動安裝的操作,請參見通過日志服務采集Kubernetes容器日志

  • 確保日志應用alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。logcontroller

    如果alibaba-log-controller版本低,可直接升級logtail-ds組件。關于如何升級組件,請參見管理組件

步驟一:開啟CoreDNS日志插件

注意事項

  • 開啟前,請確保CoreDNS組件為最新版本。升級具體操作,請參見管理組件

  • 全新部署的CoreDNS默認開啟log插件,如已開啟請忽略本步驟。

操作步驟

說明

開啟CoreDNS日志會消耗額外的CPU(約10%,與實際請求有關)及網絡流量。如果當前已經部署的CoreDNS副本CPU使用量較高,您可以對CoreDNS進行擴容。關于如何擴容CoreDNS副本數,請參見手動伸縮容器組

在命名空間kube-system下,ACK集群有一個coredns配置項。您可以通過在coredns配置項中的Corefile字段中加上log插件,開啟CoreDNS域名解析的日志。關于如何修改配置項的具體步驟,請參見修改配置項

默認日志格式的coredns的配置如下。

Corefile: |
    .:53 {
        errors
        log # 此處添加Log插件。
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
          ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
    # 如果有其它的域,且該域容器需要被采集日志,也需要增加Log插件,格式一致。
    demo.com:53 {
        ... 
        log # 此處添加Log插件。
    }

步驟二:開啟CoreDNS日志服務

方式一:通過ACK控制臺開啟

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇運維管理 > 日志中心

  3. 日志中心頁面,單擊網絡組件日志頁簽,然后單擊開始安裝

    控制臺會自動安裝相關組件,開啟CoreDNS日志服務。

方式二:通過命令行開啟

日志采集配置針對ACK進行了自定義資源CRD擴展,您可以直接部署AliyunLogConfig的CRD配置,Log Controller會自動創建日志服務相關采集配置和報表資源。關于如何創建自定義資源AliyunLogConfig的具體步驟,請參見管理自定義資源

    重要

    下述配置只針對默認CoreDNS中的日志格式生效。如果您自定義了CoreDNS的日志格式,請修改上述CRD配置中的正則表達式Regex部分。

    關于自定義CoreDNS的日志格式的更多信息,請參見log

    關于更詳細的日志采集流程及采集配置,請參見通過DaemonSet-CRD方式采集容器日志

  1. 創建YAML文件k8s-coredns-log.yaml,YAML文件完整樣例如下。

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #     Your config name, must be unique in you k8s cluster.
      name: k8s-coredns-log
      namespace: kube-system
    spec:
      # logstore name to upload log
      logstore: coredns-log
      # logtail config detail
      productCode: k8s-coredns
      logtailConfig:
        inputType: plugin
        # logtail config name, should be same with [metadata.name]
        configName: k8s-coredns-log
        inputDetail:
          plugin:
            inputs:
            - type: service_docker_stdout
              detail:
                IncludeLabel:
                  io.kubernetes.container.name: coredns
                Stderr: true
                Stdout: true
            processors:
            - type: processor_regex
              detail:
                KeepSource: false
                KeepSourceIfParseError: true
                Keys:
                - level
                - remote
                - port
                - id
                - type
                - class
                - name
                - proto
                - size
                - do
                - bufsize
                - rcode
                - rflags
                - rsize
                - duration
                NoKeyError: true
                NoMatchError: false
                FullMatch: false
                Regex: \[([^]]+)]\s([^:]+):(\S+)\s+-\s+(\S+)\s+"(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+([^"]+)"\s+(\S+)\s+(\S+)\s+(\S+)\s+([\d\.]+).*
                SourceKey: content
            - type: processor_regex
              detail:
                KeepSource: false
                KeepSourceIfParseError: true
                Keys:
                - error
                - rcode
                - name
                - type
                - errorMsg
                NoKeyError: false
                NoMatchError: false
                FullMatch: false
                Regex: \[ERROR]\s+(plugin/errors):\s+(\S)+\s+(\S+)\s+([^:]*):\s+(.*)
                SourceKey: content
  2. 執行以下命令,開啟CoreDNS日志服務。

    kubectl apply -f k8s-coredns-log.yaml

關于如何配置存儲、網絡、彈性伸縮等資源的AliyunLogConfig的CRD,請參見步驟一:創建系統插件的日志配置文件

步驟三:查詢和分析日志(日志庫)

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇運維管理 > 日志中心

  3. 日志中心頁面,單擊網絡組件日志頁簽,然后在CoreDNS頁簽下單擊日志庫,即可查詢和分析DNS日志。

  4. 在輸入框中輸入查詢和分析語句,然后單擊1周(相對),設置查詢的時間范圍。

  5. 單擊查詢/分析,查看查詢分析結果。

    日志服務為您提供日志分布直方圖、原始日志和統計圖表形式的展示查詢分析結果。關于查詢和分析日志的詳細信息,請參見查詢和分析日志

    • 日志直方圖

      日志分布直方圖主要展示查詢到的日志在時間上的分布。

      image..png

    • 原始日志

      原始日志頁簽中展示當前查詢結果,您可單擊表格原始查看日志,通過分析日志來確認當前域名解析是否存在異常。請重點關注返回碼RCODE的值,關于RCODE的釋義,請參見 DNS解析異常問題排查

      image..png

      各個字段含義如下所示。

      字段

      含義

      示例值

      {level}

      日志級別

      INFO

      {remote}

      客戶端IP地址

      172.16.0.10

      {port}

      客戶端端口

      58008

      {id}

      查詢ID

      34518

      {type}

      請求類型

      A

      {class}

      請求類別

      IN

      {name}

      請求域名的名稱

      kube-dns.kube-system.svc.cluster.local.

      {proto}

      使用的協議

      tcp

      {size}

      請求大小(字節)

      56

      {do}

      查詢中是否設置了EDNS0 DO(DNSSEC OK)位

      false

      {bufsize}

      在查詢中定義的EDNS0緩沖區大小(字節)

      65535

      {rcode}

      響應代碼

      NOERROR

      {rflags}

      響應標志位,設置的每個標志位都會顯示

      qr,aa,rd

      {rsize}

      未壓縮的響應大小(字節)

      110

      {duration}

      響應時間(秒)

      0.00011

    • 統計圖表

      執行查詢分析語句后,您可以在統計圖表頁簽中查看可視化的查詢分析結果。

    • 日志聚類

      日志聚類頁簽中,單擊開啟日志聚類,可實現在采集日志時將相似度高的日志聚合。更多信息,請參見日志聚類

步驟四:查看CoreDNS日志采集(儀表盤)

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇運維管理 > 日志中心

  3. 日志中心頁面,單擊網絡組件日志頁簽,然后在CoreDNS頁簽下單擊儀表盤,即可查看Kubernetes CoreDNS日志分析

    Kubernetes CoreDNS日志分析頁面,您可以查看CoreDNS請求數、請求成功率和請求延遲等聚合信息,同時提供了各類Top域名請求列表、錯誤域名列表、慢解析域名列表和高危請求域名訪問分析。coredns log

步驟五:創建CoreDNS日志告警

Kubernetes CoreDNS日志分析儀表盤頁面中,您可以根據儀表盤中單個圖表進行告警設置。此操作僅支持在日志服務控制臺上進行操作。

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇集群信息

  3. 集群信息頁面,單擊基本信息頁簽,然后單擊日志服務Project右側的鏈接跳轉至日志服務控制臺。

  4. 在日志庫頁面左側導航欄,單擊儀表盤儀表盤圖標,然后單擊在儀表盤列表中找到并單擊Kubernetes CoreDNS日志分析

  5. Kubernetes CoreDNS日志分析頁面的目標圖表卡片右上方,選擇more > 另存為告警

    關于告警配置的參數設置,請參見創建日志告警監控規則alert

    創建完成告警規則后,您可以查看、修改告警規則,關閉告警規則等。更多信息,請參見告警監控規則相關操作

相關操作

關閉日志采集

如果您不再需要CoreDNS日志采集,執行以下命令,可以通過卸載日志采集自定義資源的方式停止采集。

kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log

刪除成功后,CoreDNS輸出的日志將不再上報到日志服務SLS中。