0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用Splunk最新的Metrics Store來(lái)對(duì)Kubernetes的集群進(jìn)行性能監(jiān)控

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-04-28 09:28 ? 次閱讀

Kubernetes已經(jīng)成為容器編排的事實(shí)上的王者,連Docker都已經(jīng)向K8s女王大人低頭。對(duì)于Kubernetes的cluster的數(shù)據(jù)收集和監(jiān)控已經(jīng)成為IT運(yùn)維的一個(gè)重要話題。我們今天來(lái)看一看如何利用Splunk最新的Metrics Store來(lái)對(duì)Kubernetes的集群進(jìn)行性能監(jiān)控。

部署架構(gòu)

下圖是該方案的部署架構(gòu),主要包括:

利用Heapster收集K8s的性能數(shù)據(jù),包含CPU,Memory,Network,F(xiàn)ile System等

利用Heapster的Statsd Sink,發(fā)送數(shù)據(jù)到Splunk的Metrics Store

利用Splunk的搜索命令和儀表盤(pán)功能對(duì)性能數(shù)據(jù)進(jìn)行監(jiān)控

前期準(zhǔn)備

前期主要要準(zhǔn)備好兩件事:

編譯最新的Heapster的鏡像,并上傳到某個(gè)公共的Docker鏡像倉(cāng)庫(kù),例如docker hub

在Splunk中配置Metrics Store和對(duì)應(yīng)的網(wǎng)絡(luò)輸入(Network Input UDP/TCP)

這里主要要做的選擇是Statsd的傳輸協(xié)議用UDP還是TCP。這里我推薦使用TCP。 最新的Heapster代碼支持不同的Backend,包含了log, influxdb, stackdriver, gcp monitoring, gcp logging, statsd, hawkular-metrics, wavefront, openTSDB, kafka, riemann, elasticsearch等等。因?yàn)镾plunk的Metrics Store支持statsd協(xié)議,所以可以很容易的和Heapster集成。

首先我們需要利用最新的heapster代碼,編譯一個(gè)容器鏡像,因?yàn)閐ocker hub上的heapsterd的官方鏡像的版本比較舊,并不支持statsd。所以需要自己編譯。

mkdir myheapstermkdir myheapster/srcexport GOPATH=myheapstercd myheapster/srcgit clone https://github.com/kubernetes/heapster.gitcd heapstermake container

運(yùn)行以上的命令來(lái)編譯最新的heapster鏡像。

注意,heapster缺省使用udp協(xié)議,如果想要使用tcp,需要修改代碼

https://github.com/kubernetes/heapster/blob/master/metrics/sinks/statsd/statsd_client.go

func (client *statsdClientImpl) open() error { var err error client.conn, err = net.Dial("udp", client.host) if err != nil { glog.Errorf("Failed to open statsd client connection : %v", err) } else { glog.V(2).Infof("statsd client connection opened : %+v", client.conn) } return err}

把udp改成tcp。

我在docker hub上放了兩個(gè)鏡像,分別對(duì)應(yīng)udp版本的tcp版本,大家可以直接使用

naughtytao/heapster-amd64:v1.5.0-beta.3 udp

naughtytao/heapster-amd64:v1.5.0-beta.4 tcp

然后需要在Splunk中配置Metrics Store,參考這個(gè)文檔

安裝配置Heapster

在K8s上部署heapster比較容易,創(chuàng)建對(duì)應(yīng)的yaml配置文件,然后用kubectl命令行創(chuàng)建就好了。

以下是Deployment和Service的配置文件:

deployment.yaml

apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: heapster namespace: kube-systemspec: replicas: 1 template: metadata: labels: task: monitoring k8s-app: heapster version: v6 spec: containers: - name: heapster image: naughtytao/heapster-amd64:v1.5.0-beta.3 imagePullPolicy: Always command: - /heapster - --source=kubernetes:https://kubernetes.default - --sink=statsd:udp://ip:port?numMetricsPerMsg=1

service.yaml

apiVersion: v1kind: Servicemetadata: labels: task: monitoring # For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons) # If you are NOT using this as an addon, you should comment out this line. kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace: kube-systemspec: ports: - port: 80 targetPort: 8082 selector: k8s-app: heapster

注意這里deployment的--sink的配置,ip是Splunk的IP或者主機(jī)名,port的對(duì)應(yīng)的Splunk的data input的端口號(hào)。當(dāng)使用udp協(xié)議的時(shí)候,需要配置的numMetricsPerMsg的值比較小,當(dāng)這個(gè)值比較大的時(shí)候,會(huì)出message too long的error。當(dāng)使用tcp的時(shí)候可以配置較大的數(shù)值。

運(yùn)行 kubectl apply -f *.yaml 來(lái)部署heapster

如果正常運(yùn)行,對(duì)應(yīng)的heapster pod的日志如下

I0117 18:10:56.054746 1 heapster.go:78] /heapster --source=kubernetes:https://kubernetes.default --sink=statsd:udp://ec2-34-203-25-154.compute-1.amazonaws.com:8124?numMetricsPerMsg=10I0117 18:10:56.054776 1 heapster.go:79] Heapster version v1.5.0-beta.4I0117 18:10:56.054963 1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default" and version v1I0117 18:10:56.054978 1 configs.go:62] Using kubelet port 10255I0117 18:10:56.076200 1 driver.go:104] statsd metrics sink using configuration : {host:ec2-34-203-25-154.compute-1.amazonaws.com:8124 prefix: numMetricsPerMsg:10 protocolType:etsystatsd renameLabels:map[] allowedLabels:map[] customizeLabel:0x15fc8c0}I0117 18:10:56.076248 1 driver.go:104] statsd metrics sink using configuration : {host:ec2-34-203-25-154.compute-1.amazonaws.com:8124 prefix: numMetricsPerMsg:10 protocolType:etsystatsd renameLabels:map[] allowedLabels:map[] customizeLabel:0x15fc8c0}I0117 18:10:56.076272 1 heapster.go:202] Starting with StatsD SinkI0117 18:10:56.076281 1 heapster.go:202] Starting with Metric SinkI0117 18:10:56.090229 1 heapster.go:112] Starting heapster on port 8082

在Splunk中進(jìn)行監(jiān)控

好了如果一切正常的化,heapster會(huì)用statsd的協(xié)議和格式發(fā)送metrics到Splunk的metrics store。

然后就可以用利用SPL的mstats和mcatalog命令來(lái)分析,監(jiān)控metrics數(shù)據(jù)了。

以下搜索語(yǔ)句列出所有的Metrics

| mcatalog values(metric_name)

以下搜索語(yǔ)句列出整個(gè)cluster的CPU使用,我們可以用Area或者Line Chart來(lái)可視化搜索結(jié)果。

| mstats avg(_value) WHERE metric_name=cluster.cpu/usage_rate span=30m

kube-system namespace的對(duì)應(yīng)內(nèi)存使用情況

| mstats avg(_value) WHERE metric_name=namespace.kube-system.memory/usage span=30m

大家可以把自己感興趣的分析結(jié)果放在Dashboard中,利用Realtime設(shè)置進(jìn)行監(jiān)控。

好了,更多的分析選項(xiàng)可以參考Splunk文檔。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209424
  • 數(shù)據(jù)收集
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    11126
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    222

    瀏覽量

    8660

原文標(biāo)題:使用Heapster和Splunk監(jiān)控Kubernetes運(yùn)行性能

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購(gòu))開(kāi)源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?232次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝Kubernetes集群

    Kubernetes,通??s寫(xiě)為K8s,是一個(gè)開(kāi)源的容器編排平臺(tái),旨在自動(dòng)化容器化應(yīng)用的部署、擴(kuò)展和管理。有了Kubernetes,您可以輕松地部署、更新和擴(kuò)展應(yīng)用,而無(wú)需擔(dān)心底層基礎(chǔ)設(shè)施。
    的頭像 發(fā)表于 07-15 13:31 ?695次閱讀
    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

     K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube 集群

    ? 什么是Minikube Minikube是一款工具,主要用于在本地運(yùn)行 Kubernetes 集群Kubernetes 開(kāi)源的平臺(tái),用于自動(dòng)化容器化應(yīng)用的部署、擴(kuò)展和管理,而Minikube
    的頭像 發(fā)表于 07-01 15:41 ?222次閱讀
     K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube <b class='flag-5'>集群</b>

    性能計(jì)算集群的能耗優(yōu)化

    性能計(jì)算(HighPerformanceComputing,HPC)是指利用大規(guī)模并行計(jì)算機(jī)集群來(lái)解決復(fù)雜的科學(xué)和工程問(wèn)題的技術(shù)。高性能計(jì)
    的頭像 發(fā)表于 05-25 08:27 ?231次閱讀
    高<b class='flag-5'>性能</b>計(jì)算<b class='flag-5'>集群</b>的能耗優(yōu)化

    淺析Ranther管理K8S集群

    Rancher 基于 Kubernetes 添加了新的功能,包括統(tǒng)一所有集群的身份驗(yàn)證和 RBAC,讓系統(tǒng)管理員從一個(gè)位置控制全部集群的訪問(wèn)。
    的頭像 發(fā)表于 01-21 10:28 ?754次閱讀
    淺析Ranther管理K8S<b class='flag-5'>集群</b>

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 剛剛 GA,旨在改進(jìn)將集群服務(wù)暴露給外部的過(guò)程。這其中包括一套更標(biāo)準(zhǔn)、更強(qiáng)大的 API資源,用于管理已暴露的服務(wù)。在這篇文章中,我將介紹 Gateway
    的頭像 發(fā)表于 01-12 11:32 ?707次閱讀
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    踩坑rust的partial copy導(dǎo)致metrics丟失

    在 RisingWave 的存儲(chǔ)代碼中,我們使用 RAII [1] 的思想來(lái)對(duì) LSM iterator 的 metrics 進(jìn)行監(jiān)控,從而避免在代碼中忘記上報(bào) metrics 而導(dǎo)致
    的頭像 發(fā)表于 01-03 10:02 ?353次閱讀

    使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

    在持續(xù)集成和部署中,我們通常需要部署多個(gè)實(shí)例或組件到Kubernetes集群中。通過(guò)Jenkins的管道腳本,我們可以自動(dòng)化這個(gè)過(guò)程。在本文中,我將演示如何使用Jenkins Pipeline及單個(gè)
    的頭像 發(fā)表于 01-02 11:40 ?557次閱讀
    使用Jenkins和單個(gè)模板部署多個(gè)<b class='flag-5'>Kubernetes</b>組件

    Kubernetes RBAC:掌握權(quán)限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一項(xiàng)關(guān)鍵的安全功能,它通過(guò)細(xì)粒度的權(quán)限控制機(jī)制,確保集群資源僅被授權(quán)的用戶或服務(wù)賬號(hào)訪問(wèn)。
    的頭像 發(fā)表于 12-25 09:43 ?365次閱讀

    Kubernetes開(kāi)發(fā)指南之深入理解CRD

    CRD本身是Kubernetes內(nèi)置的資源類型,全稱是CustomResourceDefinition,可以通過(guò)命令查看,kubectl get查看集群內(nèi)定義的CRD資源。
    的頭像 發(fā)表于 12-13 18:19 ?675次閱讀
    <b class='flag-5'>Kubernetes</b>開(kāi)發(fā)指南之深入理解CRD

    redis查看集群狀態(tài)命令

    Redis 是一個(gè)開(kāi)源的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),提供了一系列命令來(lái)管理和操作數(shù)據(jù)。在 Redis 中,集群是一個(gè)由多個(gè) Redis 實(shí)例組成的分布式系統(tǒng),用于提高數(shù)據(jù)的可用性和性能。在進(jìn)行
    的頭像 發(fā)表于 12-04 11:39 ?849次閱讀

    redis集群性能測(cè)試工具有哪些

    Redis是一種高性能的內(nèi)存鍵值存儲(chǔ)系統(tǒng),它被廣泛應(yīng)用于各種互聯(lián)網(wǎng)應(yīng)用和大規(guī)模的數(shù)據(jù)存儲(chǔ)中。為了評(píng)估Redis在不同場(chǎng)景下的性能,我們需要使用一些性能測(cè)試工具來(lái)對(duì)Redis
    的頭像 發(fā)表于 12-04 11:36 ?601次閱讀

    Kubernetes 集群及其生態(tài)搭建

    上一次接觸到kubernetes集群的時(shí)候已經(jīng)是一年以前了,那個(gè)時(shí)候官方的版本還只是 v1.10 ,而現(xiàn)在過(guò)去一年的時(shí)間了,官方版本已經(jīng)快速的迭代到了 v1.17 了,社區(qū)也越來(lái)越成熟、相關(guān)的生態(tài)
    的頭像 發(fā)表于 11-01 16:04 ?384次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>集群</b>及其生態(tài)搭建

    基于Kubernetes集群的typecho博客搭建方案

    Kubernetes提供了強(qiáng)大的高可用性特性,它可以自動(dòng)管理和調(diào)度容器實(shí)例,確保應(yīng)用程序在集群中始終可用。還可以監(jiān)控和自動(dòng)修復(fù)故障的容器實(shí)例,提高博客的穩(wěn)定性和可靠性。
    發(fā)表于 10-30 10:02 ?324次閱讀
    基于<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的typecho博客搭建方案

    什么是Kubernetes CoreDNS?如何監(jiān)控 CoreDNS?

    如果您在 Kubernetes 中運(yùn)行您的工作負(fù)載,并且您不知道如何監(jiān)控 CoreDNS,請(qǐng)繼續(xù)閱讀本文:如何使用 Prometheus 來(lái)抓取 CoreDNS 指標(biāo),您應(yīng)該檢查哪些指標(biāo),以及它們的含義。
    發(fā)表于 10-30 09:55 ?1951次閱讀
    什么是<b class='flag-5'>Kubernetes</b> CoreDNS?如何<b class='flag-5'>監(jiān)控</b> CoreDNS?