阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

细说利用Splunk监控Kubernetes运行性能

304次阅读
没有评论

共计 4101 个字符,预计需要花费 11 分钟才能阅读完成。

导读 Kubernetes 已经成为容器编排的事实上的王者,连 Docker 都已经向 K8s 女王大人低头。对于 Kubernetes 的 cluster 的数据收集和监控已经成为 IT 运维的一个重要话题。我们今天来看一看如何利用 Splunk 最新的 Metrics Store 来对 Kubernetes 的集群进行性能监控。
部署架构

下图是该方案的部署架构,主要包括:

利用 Heapster 收集 K8s 的性能数据,包含 CPU,Memory,Network,File System 等

利用 Heapster 的 Statsd Sink,发送数据到 Splunk 的 Metrics Store

利用 Splunk 的搜索命令和仪表盘功能对性能数据进行监控
细说利用 Splunk 监控 Kubernetes 运行性能

前期准备

前期主要要准备好两件事:

编译最新的 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,参考这个文档
细说利用 Splunk 监控 Kubernetes 运行性能

安装配置 Heapster

在 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)

细说利用 Splunk 监控 Kubernetes 运行性能

以下搜索语句列出整个 cluster 的 CPU 使用,我们可以用 Area 或者 Line Chart 来可视化搜索结果。

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

细说利用 Splunk 监控 Kubernetes 运行性能

kube-system namespace 的对应内存使用情况

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

细说利用 Splunk 监控 Kubernetes 运行性能

大家可以把自己感兴趣的分析结果放在 Dashboard 中,利用 Realtime 设置进行监控。
细说利用 Splunk 监控 Kubernetes 运行性能

好了,更多的分析选项可以参考 Splunk 文档。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-27发表,共计4101字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7799029
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...