部署架构
下图是该方案的部署架构,主要包括:
利用Heapster收集K8s的性能数据,包含CPU,Memory,Network,File System等
利用Heapster的Statsd Sink,发送数据到Splunk的Metrics Store
利用Splunk的搜索命令和仪表盘功能对性能数据进行监控
前期主要要准备好两件事:
编译最新的Heapster的镜像,并上传到某个公共的Docker镜像仓库,例如docker hub
在Splunk中配置Metrics Store和对应的网络输入(Network Input UDP/TCP)
这里主要要做的选择是Statsd的传输协议用UDP还是TCP。这里我推荐使用TCP。 最新的Heapster代码支持不同的Backend,包含了log, influxdb, stackdriver, gcp monitoring, gcp logging, statsd, hawkular-metrics, wavefront, openTSDB, kafka, riemann, elasticsearch等等。因为Splunk的Metrics Store支持statsd协议,所以可以很容易的和Heapster集成。
首先我们需要利用最新的heapster代码,编译一个容器镜像,因为docker hub上的heapsterd的官方镜像的版本比较旧,并不支持statsd。所以需要自己编译。
mkdir myheapster mkdir myheapster/src export GOPATH=myheapster cd myheapster/src git clone https://github.com/kubernetes/heapster.git cd heapster make container登录后复制
运行以上的命令来编译最新的heapster镜像。
注意,heapster缺省使用udp协议,如果想要使用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上放了两个镜像,分别对应udp版本的tcp版本,大家可以直接使用
naughtytao/heapster-amd64:v1.5.0-beta.3 udp
naughtytao/heapster-amd64:v1.5.0-beta.4 tcp
然后需要在Splunk中配置Metrics Store,参考这个文档
在K8s上部署heapster比较容易,创建对应的yaml配置文件,然后用kubectl命令行创建就好了。
以下是Deployment和Service的配置文件:
deployment.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: heapster namespace: kube-system spec: 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: v1 kind: Service metadata: 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-system spec: ports: - port: 80 targetPort: 8082 selector: k8s-app: heapster登录后复制
注意这里deployment的--sink的配置,ip是Splunk的IP或者主机名,port的对应的Splunk的data input的端口号。当使用udp协议的时候,需要配置的numMetricsPerMsg的值比较小,当这个值比较大的时候,会出message too long的error。当使用tcp的时候可以配置较大的数值。
运行 kubectl apply -f *.yaml 来部署heapster
如果正常运行,对应的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=10 I0117 18:10:56.054776 1 heapster.go:79] Heapster version v1.5.0-beta.4 I0117 18:10:56.054963 1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default" and version v1 I0117 18:10:56.054978 1 configs.go:62] Using kubelet port 10255 I0117 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 Sink I0117 18:10:56.076281 1 heapster.go:202] Starting with Metric Sink I0117 18:10:56.090229 1 heapster.go:112] Starting heapster on port 8082登录后复制 在Splunk中进行监控
好了如果一切正常的化,heapster会用statsd的协议和格式发送metrics到Splunk的metrics store。
然后就可以用利用SPL的mstats和mcatalog命令来分析,监控metrics数据了。
以下搜索语句列出所有的Metrics
| mcatalog values(metric_name)登录后复制
以下搜索语句列出整个cluster的CPU使用,我们可以用Area或者Line Chart来可视化搜索结果。
| mstats avg(_value) WHERE metric_name=cluster.cpu/usage_rate span=30m登录后复制
kube-system namespace的对应内存使用情况
| mstats avg(_value) WHERE metric_name=namespace.kube-system.memory/usage span=30m登录后复制
大家可以把自己感兴趣的分析结果放在Dashboard中,利用Realtime设置进行监控。
好了,更多的分析选项可以参考Splunk文档。
以上就是细说利用Splunk监控Kubernetes运行性能的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 细说利用Splunk监控Kubernetes运行性能
发表评论 取消回复