翻譯:如何監(jiān)控Coredns

K8S集群中的許多問題和終端都是來自Coredns組件局雄,因此學習如何監(jiān)控CoreDns是很重要的存炮。
想象一下你的前端突然掛了,你隨后排查了一下宫盔,你發(fā)現(xiàn)你的后端因為DNS返回500的報錯而沒有解析享完,你很快就發(fā)現(xiàn)了這個結(jié)論并盡可能快的恢復了你的應用
監(jiān)控你的Coredns能夠讓你在你集群掛掉之前有時間解決問題而不是掛了之后再去解決,那樣太遲了


image.png

什么是CoreDns彼绷?

CoreDns是k8s從v1.12之后推薦的很關鍵的默認dns組件茴迁,每一個pod和service都有一個完全合格的域名(FQDN),如果dns掛了猜旬,整個集群 也沒了。


image.png

怎么監(jiān)控CoreDns

我們通常將CoreDns運行在master節(jié)點上椿争,但是我們也可以將它運行在沒有k8s集群環(huán)境的裸機上比如docker秘遏。

從CoreDns獲取指標信息

CoreDns和k8s面板一樣是一個組件暴露了9153端口可以讓prom獲取監(jiān)控指標嘉竟。監(jiān)控指標提供了關于dns服務和里面插件的請求信息【腧剑基于集群規(guī)模边苹,副本可以是一個或者多個,我們可以收集每一個CoreDns的信息个束。
我們從endpoint獲取指標信息

curl localhost:9153/metrics  

它將返回帶有此結(jié)構的一長列指標(被截斷):

# HELP coredns_build_info A metric with a constant '1' value labeled by version, revision, and goversion from which CoreDNS was built.
# TYPE coredns_build_info gauge
coredns_build_info{goversion="go1.14.4",revision="f59c03d",version="1.7.0"} 1
# HELP coredns_cache_entries The number of elements in the cache.
# TYPE coredns_cache_entries gauge
coredns_cache_entries{server="dns://:53",type="denial"} 41
coredns_cache_entries{server="dns://:53",type="success"} 15
# HELP coredns_cache_hits_total The count of cache hits.
# TYPE coredns_cache_hits_total counter
coredns_cache_hits_total{server="dns://:53",type="denial"} 366066
coredns_cache_hits_total{server="dns://:53",type="success"} 135
# HELP coredns_cache_misses_total The count of cache misses.
# TYPE coredns_cache_misses_total counter
coredns_cache_misses_total{server="dns://:53"} 106654
# HELP coredns_dns_request_duration_seconds Histogram of the time (in seconds) each request took.
# TYPE coredns_dns_request_duration_seconds histogram
coredns_dns_request_duration_seconds_bucket{server="dns://:53",type="A",zone=".",le="0.00025"} 189356
coredns_dns_request_duration_seconds_bucket{server="dns://:53",type="A",zone=".",le="0.0005"} 189945
coredns_dns_request_duration_seconds_bucket{server="dns://:53",type="A",zone=".",le="0.001"} 190102
coredns_dns_request_duration_seconds_bucket{server="dns://:53",type="A",zone=".",le="0.002"} 235026

要使用Prometheus監(jiān)視coreDNS茬底,您只需添加相應的job:

- job_name: kube-dns
  honor_labels: true
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - action: keep
    source_labels:
    - __meta_kubernetes_namespace
    - __meta_kubernetes_pod_name
    separator: '/'
    regex: 'kube-system/coredns.+'
  - source_labels:
    - __meta_kubernetes_pod_container_port_name
    action: keep
    regex: metrics
  - source_labels:
    - __meta_kubernetes_pod_name
    action: replace
    target_label: instance
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)

監(jiān)視coreDNS:看什么指標阱表?

注意:CoreDns監(jiān)控指標在不同的K8S版本之間可能不同,這里拿k8s 1.18的版本距離最爬,具體信息查看下列鏈接
(https://github.com/kubernetes/kubernetes/releases/tag/v1.18.8) (link for the 1.18.8 version).*
請求延遲:按照https://sysdig.com/blog/golden-signals-kubernetes/,請求延遲是一個很重要的指標去發(fā)現(xiàn)任何惡化的服務烤送。為了檢查這個糠悯,我們應該經(jīng)常拿百分位數(shù)和平均值比較,在prom中執(zhí)行此操作的方法是使用運算符直方圖叶沛。

histogram_quantile(0.99, sum(rate(coredns_dns_request_duration_seconds_bucket{job="kube-dns"}[5m])) by(server, zone, le))

錯誤率:錯誤率是一個非常重要的監(jiān)控指標忘朝。盡管錯誤不一定都是dns引起,但它是我們必須仔細觀察的指標。coredns_dns_responses_total是一個CoreDns出錯時緊密聯(lián)系的重要指標晦墙。比如肴茄,NXDOMAIN錯誤意味著DNS請求失敗因為域名請求不存在。

# HELP coredns_dns_responses_total Counter of response status codes.
# TYPE coredns_dns_responses_total counter
coredns_dns_responses_total{rcode="NOERROR",server="dns://:53",zone="."} 1336
coredns_dns_responses_total{rcode="NXDOMAIN",server="dns://:53",zone="."} 471519

在Sysdia中監(jiān)控CoreDns指標

類似于我們監(jiān)控etcd https://sysdig.com/blog/monitor-etcd/抗楔,默認情況下不對coreDNS的pod進行注釋拦坠。為了讓Sysdig客戶端獲得CoreDns指標,我們得對其進行注釋
想偷懶贞滨,可以按照https://promcat.io/apps/kubernetes-control-plane 中給出的步驟進行監(jiān)視晓铆,以監(jiān)控整個控制平面,并僅使用所需指標將Prom服務器聯(lián)合起來骄噪,丟棄其他的一切。
如果你有helm了那就都簡單了尾组,如果沒有示弓,那就去官網(wǎng)下一個 https://helm.sh/docs/intro/install/ 然后去github上找一個https://github.com/roboll/helmfile奏属,然后直接用helm部署一套prom配置一套正確的規(guī)則。包含一些文件如:helmfile.yaml,recording_rules.yaml,prometheus.yaml, andprometheus.yml.gotmpl.
也可以執(zhí)行這行命令

helmfile sync

只要你裝好了prom server勇婴,接下來配置sysdig 客戶端嘱腥,直接粘貼復制

apiVersion: v1
kind: ConfigMap
metadata:
  name: sysdig-agent
  namespace: sysdig-agent
data:
  prometheus.yaml: |-
    global:
      scrape_interval: 15s
      evaluation_interval: 15s
    scrape_configs:
    - job_name: 'prometheus' # config for federation
      honor_labels: true
      metrics_path: '/federate'
      metric_relabel_configs:
      - regex: 'kubernetes_pod_name'
        action: labeldrop
      params:
        'match[]':
          - '{sysdig="true"}'
      sysdig_sd_configs:
      - tags:
          namespace: monitoring

然后從promcat添加一個控制面板:


image.png

執(zhí)行命令:

docker  run -it --rm \ 
    sysdiglabs/promcat-connect:0.1 \ 
    install \ 
    kubernetes-control-plane:1.18.0\ 
    -t YOUR-API-TOKEN

總結(jié)

CoreDns在K8S集群中經(jīng)常出問題齿兔,如果DNS掛了础米,很多服務都無法使用應用也掛了添诉。監(jiān)控Coredns能幫我們解決很多問題省去麻煩
用Sysdig監(jiān)控Coredns是比較簡單的,只用一個工具就監(jiān)控CoreDns和K8S栏赴,豈不美哉?而且安裝也簡單竖瘾,還有告警功能柒爸,推薦一用事扭。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市今野,隨后出現(xiàn)的幾起案子罐农,更是在濱河造成了極大的恐慌,老刑警劉巖涵亏,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件气筋,死亡現(xiàn)場離奇詭異,居然都是意外死亡宠默,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門抹沪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓤球,“玉大人卦羡,你說我怎么就攤上這事权她。” “怎么了隅要?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵董济,是天一觀的道長。 經(jīng)常有香客問我廓啊,道長封豪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任第步,我火速辦了婚禮缘琅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翩隧。我一直安慰自己呻纹,他們只是感情好堆生,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布淑仆。 她就那樣靜靜地躺著太闺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蟀淮。 梳的紋絲不亂的頭發(fā)上钞澳,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音轧粟,去河邊找鬼脓魏。 笑死通惫,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的珊燎。 我是一名探鬼主播遵湖,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谋国!你這毒婦竟也來了迁沫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旅急,失蹤者是張志新(化名)和其女友劉穎牡整,沒想到半個月后溺拱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡沐扳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年句占,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杨拐。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡擂啥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屋吨,到底是詐尸還是另有隱情,我是刑警寧澤至扰,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布敢课,位于F島的核電站,受9級特大地震影響翎猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萨咳,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一疫稿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遗座,春花似錦、人聲如沸猛遍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宽堆。三九已至,卻和暖如春壁肋,著一層夾襖步出監(jiān)牢的瞬間籽慢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工乙帮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留极景,地道東北人驾茴。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓氢卡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親译秦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容