Kubernetes運維,讀懂這6個關(guān)鍵指標竟秫,保證DNS服務的穩(wěn)定

0 - 通過本文你會獲得什么

如何監(jiān)控CoreDNS娃惯,通過了解它的幾個關(guān)鍵指標,查詢歷史趨勢肥败、服務負載趾浅,可以反饋出運行的狀態(tài),及早預知可能出現(xiàn)的異常馒稍,做到心中有數(shù)皿哨,保證服務的穩(wěn)定。

涉及知識點:kubernetes prometheus coredns

1 - 開始前準備

需有一套K8S集群纽谒,使用CoreDNS作為內(nèi)部的域名解析系統(tǒng)证膨,同時集群內(nèi)設置了Prometheus作為指標收集。

在k8s 1.9之前鼓黔,可選的dns服務只有kube-dns(實際由3個容器組成的Pod)央勒,在1.10之后可選coredns替換kube-dns作為集群內(nèi)解析服務,同時官方也推薦后續(xù)均由coredns替代kube-dns組件澳化。

CoreDNS在k8s 1.11的時候GA崔步,正式引入集群作為默認服務是在k8s的1.13版本,DNS在集群中的作用也是至關(guān)重要的缎谷,負責集群內(nèi)服務發(fā)現(xiàn)以及外部域名解析井濒,如果出現(xiàn)異常,對業(yè)務也會造成較大影響列林。

2 - 開啟CoreDNS性能指標

通過在Corefile配置文件中開啟prometheus插件瑞你,語法格式:


. {
    prometheus 0.0.0.0:9253
}

默認監(jiān)聽的地址為: 127.0.0.1:9253,由于需從外部進行數(shù)據(jù)抓取希痴,所以必須監(jiān)聽在0.0.0.0否則Prometheus無法獲取coredns性能數(shù)據(jù)者甲。

3 - CoreDNS性能指標列表

指標名稱 指標類型 用途描述
coredns_dns_request_count_total counter 服務端記錄所有請求查詢的累計值,單位:次
coredns_dns_request_duration_seconds histogram 服務端每個查詢所消耗的時間分布润梯,單位:秒
coredns_dns_request_size_bytes histogram 客戶端通過UDP傳遞的EDNS0數(shù)據(jù)包大小分布过牙,單位:字節(jié)
coredns_dns_request_do_count_total counter 客戶端設置了DO標志位的請求次數(shù)累計值,單位:次
coredns_dns_request_type_count_total counter 請求查詢記錄類型的累計值纺铭,單位:次
coredns_dns_response_size_bytes histogram 服務端響應客戶端數(shù)據(jù)包大小分布寇钉,單位:字節(jié)
coredns_dns_response_rcode_count_total counter 服務端響應狀態(tài)碼次數(shù)的累計值,單位:次
coredns_panic_count_total counter 進程出現(xiàn)異常中斷次數(shù)的累計值舶赔,單位:次
coredns_plugin_enabled gauge 插件的啟用情況
coredns_build_info gauge 編譯的版本信息

這里主要關(guān)注這6個指標:

  • coredns_dns_request_count_total
  • coredns_dns_request_duration_seconds
  • coredns_dns_request_type_count_total
  • coredns_dns_response_size_bytes
  • coredns_dns_response_rcode_count_total
  • coredns_panic_count_total

在下一步我們將會通過它們進行數(shù)值展示扫倡。

3.1 - 幾個通用維度

大部分指標都存在server、zone這兩個維度

維度名稱 維度說明
server 客戶端請求解析所使用的dns服務端地址
zone 客戶端請求解析所匹配到服務端設置的zone

server 有時候會設置監(jiān)聽多個,這樣就有多個server維度值撵溃,格式為:

<scheme>://[<bind>]:<port>

例如:dns://:53 或者 dns://127.0.0.1:53 或者 dns://:9153

3.2 - 指標:coredns_dns_request_count_total

維度名稱 維度說明
server 見通用維度
zone 見通用維度
proto 響應傳輸層的協(xié)議疚鲤,值為:tcp或udp
family 網(wǎng)絡層IP協(xié)議版本,值為:1(ipv4)或者2(ipv6)

3.3 - 指標:coredns_dns_request_duration_seconds

是一個histogram類型的指標缘挑,所以存在三個具體的指標名:

  • coredns_dns_request_duration_seconds_bucket
  • coredns_dns_request_duration_seconds_sum
  • coredns_dns_request_duration_seconds_count
維度名稱 維度說明
server 通用維度
zone 通用維度
le 請求所消耗的時間集歇,單位秒

其中l(wèi)e維度只有X_bucket才有。

le維度取值范圍:0.00025语淘,0.0005诲宇,..., 后一個以前值的2被數(shù)增加,最多16個惶翻,最后一個為無窮大姑蓝。

3.4 - 指標:coredns_dns_request_size_bytes

是一個histogram類型的指標,所以存在三個具體的指標名:

  • coredns_dns_request_size_bytes_bucket
  • coredns_dns_request_size_bytes_sum
  • coredns_dns_request_size_bytes_count
維度名稱 維度說明
server 通用維度
zone 通用維度
proto 響應傳輸層的協(xié)議吕粗,值為:tcp或udp
le 通過UDP傳遞的EDNS0數(shù)據(jù)包大小分布情況纺荧,單位字節(jié)

其中l(wèi)e維度只有X_bucket才有

le維度取值范圍:0, 100, 200, 300, 400, 511, 1023, 2047, 4095, 8291, 16000, 32000, 48000, 64000

3.5 - 指標:coredns_dns_request_do_count_total

維度名稱 維度說明
server 通用維度
zone 通用維度

有時候可能會看不到這個指標,可能沒有存在dnssec的請求颅筋,你可以通過以下dig命令

dig www.google.com +dnssec @127.0.0.1 -p 53

通過該DNS查詢宙暇,這樣該指標值累加1次

3.6 - 指標:coredns_dns_request_type_count_total

維度名稱 維度說明
server 通用維度
zone 通用維度
type DNS的解析記錄類型

可支持大部分主流的記錄類型,如下表:

DNS解析記錄 說明
AAAA 域名指向一個IPv6地址
A 域名指向一個IPv4地址
CNAME 域名指向一個域名
DNSKEY 在DNSSEC內(nèi)使用的關(guān)鍵記錄
DS 委托簽發(fā)者垃沦,用于鑒定DNSSEC已授權(quán)區(qū)域的簽名密鑰
MX 電郵交互記錄客给,引導域名到該域名的郵件傳輸代理列表
NSEC3 NSEC記錄第三版
NSEC DNSSEC的一部分,用來驗證一個未存在的服務器肢簿,使用與NXT記錄的格式
NS 名稱服務器記錄,指定DNS區(qū)域使用已有的權(quán)威域名服務器
PTR 指針記錄蜻拨,最常用來運行反向DNS查找
RRSIG DNSSEC 安全記錄集證書
SOA 權(quán)威記錄的起始池充,指定有關(guān)DNS區(qū)域的權(quán)威性信息
SRV 服務定位器,被新式協(xié)議使用而避免產(chǎn)生特定協(xié)議的記錄缎讼,例如:MX 記錄
TXT 文本記錄
IXFR 增量區(qū)域轉(zhuǎn)移收夸,請求只有與先前流水式編號不同的特定區(qū)域的區(qū)域轉(zhuǎn)移
AXFR 全域轉(zhuǎn)移,由主域名服務器轉(zhuǎn)移整個區(qū)域文件至二級域名服務器
ANY 所有緩存的記錄或者全部已知的記錄類型
other 不屬于以上類型的血崭,均歸屬為此類

3.7 - 指標:coredns_dns_response_size_bytes

是一個histogram類型的指標卧惜,所以存在三個具體的指標名:

  • coredns_dns_response_size_bytes_bucket
  • coredns_dns_response_size_bytes_sum
  • coredns_dns_response_size_bytes_count
維度名稱 維度說明
server 通用維度
zone 通用維度
proto 響應傳輸層的協(xié)議,值為:tcp或udp
le 響應返回客戶端的數(shù)據(jù)大小夹纫,單位:字節(jié)

le維度取值范圍:0, 100, 200, 300, 400, 511, 1023, 2047, 4095, 8291, 16000, 32000, 48000, 64000

3.8 - 指標:coredns_dns_response_rcode_count_total

維度名稱 維度說明
server 通用維度
zone 通用維度
rcode 響應狀態(tài)碼

常見的幾個響應狀態(tài)碼咽瓷,如下表:

DNS響應狀態(tài)碼 說明
NOERROR 查詢請求成功完成
FORMERR 查詢請求格式錯誤
SERVFAIL 服務端處理失敗
NXDOMAIN 請求查詢的域名不存在
NOTIMP 功能未實現(xiàn)
REFUSED 服務端拒絕回復該查詢

3.8 - coredns_panic_count_total

進程出現(xiàn)中斷的次數(shù),這個比較嚴重舰讹,需判斷是否新加了什么插件導致的茅姜,需要關(guān)注了。

3.9 - 指標:coredns_plugin_enabled

維度名稱 維度說明
server 通用維度
zone 通用維度
name 啟用插件的名稱

當前各個server下的zone開啟了哪些插件功能月匣。

3.10 - 指標:coredns_build_info

維度名稱 維度說明
version 運行coredns的版本
revision 編譯coredns時的git修訂號
goversion 編譯coredns的go版本

記錄coredns編譯時的版本

4 - 關(guān)鍵指標展示

同時制作了一個視圖模版钻洒,可在Grafana官方地址:https://grafana.com/grafana/dashboards/10639 下載奋姿,

以下通過展示幾個promQL查詢語句,示例均以維度server=172.23.243.136:9153素标。

4.1 - 請求時間耗時

示例1: 以維度server,zone,le分組称诗,最近5分鐘內(nèi),平均每秒耗時小于le維度的變化數(shù)量

sort_desc(
    avg(
        rate(
            coredns_dns_request_duration_seconds_bucket{instance="172.23.243.136:9153"}[5m]
            )
    ) by(server,zone,le)
)

示例2:計算示例1結(jié)果90%的范圍小于多少头遭,也就是第90百分位數(shù)

百分位數(shù): 用99個數(shù)值或99個點寓免,將按從小到大順序排列的觀測值劃分為100個等分,則這99個數(shù)值或99個點就稱為百分位數(shù)任岸,比如:第90百分位數(shù)的值再榄,表示有90%的值均小于該數(shù)值。

histogram_quantile(0.90,
    sum(
        rate(
            coredns_dns_request_duration_seconds_bucket{instance="172.23.243.136:9153"}[5m]
        )
    ) by(server,zone,le)
)

4.2 - 客戶端數(shù)據(jù)包大小

示例1:以維度proto,server,zone,le分組享潜,最近5分鐘內(nèi)困鸥,平均每秒數(shù)據(jù)包大小小于le維度的變化數(shù)量

sort_desc(
    avg(
        rate(
            coredns_dns_response_size_bytes_bucket{instance="172.23.243.136:9153",zone!="dropped"}[5m]
        )
    ) by (proto,server,zone,le)
)

示例2:計算示例1結(jié)果90%的范圍小于多少,也就是第90百分位數(shù)

histogram_quantile(0.90,
    avg(
        rate(
            coredns_dns_response_size_bytes_bucket{instance="172.23.243.136:9153",zone!="dropped"}[5m]
        )
    ) by (proto,server,zone,le)
)

4.3 - 服務端處理請求數(shù)

示例1:最近5分鐘內(nèi)剑按,平均每秒處理的請求次數(shù)

sort_desc(
    avg(
        rate(
            coredns_dns_request_count_total{instance="172.23.243.136:9153"}[5m]
        )
    ) by (proto,server,zone)
)

4.4 - 客戶端請求記錄類型

示例1:最近5分鐘內(nèi)疾就,各請求記錄類型,平均每秒處理的次數(shù)

sort_desc(
    avg(
        rate(
            coredns_dns_request_type_count_total{instance="172.23.243.136:9153"}[5m]
        )
    ) by (server,zone,type)
)

4.5 - 服務端響應狀態(tài)碼分布

示例1:最近5分鐘艺蝴,平均每秒響應狀態(tài)碼的次數(shù)

sort_desc(
    avg(
        rate(
            coredns_dns_response_rcode_count_total{instance="172.23.243.136:9153"}[5m]
        )
    ) by(server,zone,rcode)
)

4.6 - 服務異常統(tǒng)計

  • 出現(xiàn)panic時候猬腰,記錄drop
  • 不存在dns question section(向DNS請求的部分)
  • 其他原因被拒絕解析的

所以不需要關(guān)注 zone=droped 的數(shù)據(jù),可以通過rcode其他指標反應出來

示例1:響應狀態(tài)碼非正常的處理請求猜敢,平均每秒次數(shù)姑荷,單位:次/秒

sort_desc(
    avg(
        rate(
            coredns_dns_response_rcode_count_total{instance="172.23.243.136:9153",rcode!="NOERROR"}[10m]
        )
    ) by(server,zone,rcode)
)

示例2: 進程出現(xiàn)panic的次數(shù)

avg(coredns_panic_count_total{instance="172.23.243.136:9153"})

5 - 總結(jié)討論

在配合prometheus的alertmanager組件,根據(jù)以上指標設置告警規(guī)則缩擂,做到及時預警鼠冕。Kubernetes是分布式系統(tǒng),帶來了一定的維護復雜度胯盯,必須有一套完善的監(jiān)控體系去做支撐懈费。

本人關(guān)注云原生生態(tài),今天這里只是針對DNS服務的內(nèi)容博脑,后續(xù)還會有其他相關(guān)的分享憎乙,如有興趣,歡迎關(guān)注我叉趣,對于存在的疑問點泞边,歡迎留言討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末君账,一起剝皮案震驚了整個濱河市繁堡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖椭蹄,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闻牡,死亡現(xiàn)場離奇詭異,居然都是意外死亡绳矩,警方通過查閱死者的電腦和手機罩润,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翼馆,“玉大人割以,你說我怎么就攤上這事∮γ模” “怎么了严沥?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長中姜。 經(jīng)常有香客問我消玄,道長,這世上最難降的妖魔是什么丢胚? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任翩瓜,我火速辦了婚禮,結(jié)果婚禮上携龟,老公的妹妹穿的比我還像新娘兔跌。我一直安慰自己,他們只是感情好峡蟋,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布坟桅。 她就那樣靜靜地躺著,像睡著了一般蕊蝗。 火紅的嫁衣襯著肌膚如雪桦卒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天匿又,我揣著相機與錄音,去河邊找鬼建蹄。 笑死碌更,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的洞慎。 我是一名探鬼主播痛单,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劲腿!你這毒婦竟也來了旭绒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挥吵,沒想到半個月后重父,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡忽匈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年房午,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丹允。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡郭厌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雕蔽,到底是詐尸還是另有隱情折柠,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布批狐,位于F島的核電站扇售,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贾陷。R本人自食惡果不足惜缘眶,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望髓废。 院中可真熱鬧巷懈,春花似錦、人聲如沸慌洪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冈爹。三九已至涌攻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間频伤,已是汗流浹背恳谎。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工若未, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熬拒,地道東北人蜜唾。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓哪痰,卻偏偏與公主長得像行冰,于是被迫代替她去往敵國和親姜胖。 傳聞我的和親對象是個殘疾皇子朴艰,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355