ACK部署了CoreDNS作為叢集內的DNS伺服器,您可以通過查看CoreDNS日誌來分析CoreDNS解析慢、訪問高危請求網域名稱等問題。本文介紹如何開啟CoreDNS日誌分析與監控能力。
前提條件
已安裝日誌採集組件。
日誌組件為Logtail組件時,確保日誌應用alibaba-log-controller版本不低於0.2.0.0-76648ee-aliyun。
如果alibaba-log-controller版本低,可直接升級Logtail組件。關於如何升級組件,請參見組件。
LoongCollector組件,無版本限制。
步驟一:開啟CoreDNS日誌外掛程式
注意事項
確保CoreDNS組件為最新版本,升級具體操作,請參見管理組件。
新版CoreDNS預設域已開啟log外掛程式,如果您需要為其他域開啟,請參見以下操作步驟。
操作步驟
開啟CoreDNS日誌會消耗額外的CPU(約10%,與實際請求有關)及網路流量。如果當前已經部署的CoreDNS副本CPU使用量較高,您可以對CoreDNS進行擴容。關於如何擴容CoreDNS副本數,請參見手動伸縮容器組。
在ACK叢集的kube-system命名空間下,選擇,單擊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外掛程式。
}步驟二:開啟CoreDNSLog Service
方式一:通過控制台開啟
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在日誌中心頁面,單擊頁簽,然後單擊開始安裝,並開啟CoreDNS日誌。
方式二:通過kubectl開啟
日誌採集配置針對ACK進行了自訂資源CRD擴充,您可以直接部署AliyunLogConfig的CRD配置,Log Controller會自動建立Log Service相關採集配置和報表資源。關於如何建立自訂資源AliyunLogConfig的具體步驟,請參見管理自訂資源。
下述配置只針對預設CoreDNS中的日誌格式生效。如果您自訂了CoreDNS的日誌格式,請修改上述CRD配置中的RegexRegex部分。
關於自訂CoreDNS的日誌格式的更多資訊,請參見log。
關於更詳細的日誌採集流程及採集配置,請參見通過DaemonSet-CRD方式採集容器日誌。
關於如何配置儲存、網路、Auto Scaling等資源的AliyunLogConfig的CRD,請參見步驟一:建立資料面組件的日誌設定檔。
步驟三:查詢和分析日誌(日誌庫)
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在日誌中心頁面,單擊網路組件日誌頁簽,然後在CoreDNS頁簽下單擊日誌庫,即可查詢和分析DNS日誌。
在輸入框中輸入查詢和分析語句,然後選中最近1周,設定查詢的時間範圍。
單擊查詢/分析,查看查詢分析結果。
Log Service為您提供日誌分布長條圖、原始日誌和統計圖表形式的展示查詢分析結果。關於查詢和分析日誌的詳細資料,請參見查詢與分析快速指引。
日誌長條圖
日誌分布長條圖主要展示查詢到的日誌在時間上的分布。

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

各個欄位含義如下所示。
欄位
含義
樣本值
{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日誌採集(儀錶盤)
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在日誌中心頁面,單擊網路組件日誌頁簽,然後在CoreDNS頁簽下單擊儀錶盤,即可查看Kubernetes CoreDNS日誌分析。
在Kubernetes CoreDNS日誌分析頁面,您可以查看CoreDNS請求數、請求成功率和請求延遲等彙總資訊,同時提供了各類Top網域名稱請求列表、錯誤網域名稱列表、慢解析網域名稱列表和高危請求網域名稱訪問分析。
步驟五:建立CoreDNS日誌警示
在Kubernetes CoreDNS日誌分析儀錶盤頁面中,您可以根據儀錶盤中單個圖表進行警示設定。此操作僅支援在Log Service控制台上進行操作。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,單擊基本資料頁簽,然後單擊Log ServiceProject右側的連結跳轉至Log Service控制台。
在日誌庫頁面左側導覽列,單擊儀錶盤
表徵圖,然後單擊在儀錶盤列表中找到並單擊Kubernetes CoreDNS日誌分析。在Kubernetes CoreDNS日誌分析頁面的靶心圖表表卡片右上方,選擇。
關於警示配置的參數設定,請參見建立日誌警示監控規則。

建立完成警示規則後,您可以查看、修改警示規則,關閉警示規則等。更多資訊,請參見警示監控規則相關操作。
相關操作
關閉日誌採集
如果您不再需要CoreDNS日誌採集,執行以下命令,可以通過卸載日誌採集自訂資源的方式停止採集。
kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log刪除成功後,CoreDNS輸出的日誌將不再上報到Log ServiceSLS中。