使用Heapster和Splunk监控Kubernetes运行性能

Kubernetes监控数据集成Splunk Metrics Store:Heapster TCP方案实践 在云原生和容器化技术普及的背景下,基础设施监控与可观测性成为保障系统稳定运行的关键。时间序列指标作为监控数据的核心,记录了系统资源使用、应用性能等动态变化信息,其高效收集、存储与分析直接影响运维效率。StatsD作为一种轻量级指标收集协议,因其简单、低开销的特性,成为跨平台指标传输的常用桥梁。通过将StatsD协议与TCP可靠传输结合,可以构建高完整性的监控数据管道,有效避免UDP协议可能的数据丢失问题。这一技术方案特别适用于需要将异构监控数据统一汇聚到企业级分析平台的场景,能够实现基础设施监控与日志、事件 阅读详情

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

部署架构

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

  • 利用Heapster收集K8s的性能数据,包含CPU,Memory,Network,File System等
  • 利用Heapster的Statsd Sink,发送数据到Splunk的Metrics Store
  • 利用Splunk的搜索命令和仪表盘功能对性能数据进行监控

前期准备

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

  1. 编译最新的Heapster的镜像,并上传到某个公共的Docker镜像仓库,例如docker hub
  2. 在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,参考这个文档

安装配置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)

以下搜索语句列出整个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 Connect for Kubernetes:一体化K8s可观测性数据收集方案详解 在云原生架构中,可观测性数据收集是保障系统稳定运行的核心环节。其原理是通过日志、指标和事件三类数据的统一采集与分析,实现对分布式系统状态的全面洞察。技术价值在于将复杂的多源数据流整合为标准化信息管道,显著提升运维效率与故障定位能力。应用场景广泛覆盖容器化环境监控、微服务链路追踪和业务性能分析等领域。本文聚焦Splunk Connect for Kubernetes(SCK)这一专为Kubernetes设计的解决方案,深入解析其如何通过Fluentd日志收集器和HEC协议实现容器日志、集群事件与性能指标的一体 阅读详情

相关推荐

Splunk 第一次成功运行在k8s上

小试牛刀,把splunk 运行k8s 上面。

shenghuiping2001的专栏 580

【linux性能分析】heaptrack分析内存占用

heaptrack介绍,heaptrack与valgrind massif比较,heaptrack安装,heaptrack_gui安装,heaptrack使用,内存分析,内存瓶颈,使用过程中报错解决

shuaixio的博客 7131

(已经解决)splunk k8s amin 密码不能登入

活用splunk 内部的修改admin 密码的方法,虽然这个是splunk enterprise 的方法,但是在k8s namespace 密码不能启用的情况下也是可以灵活使用的。

shenghuiping2001的专栏 738

自动化部署环境搭建(springboot+jenkins+docker+k8s)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、环境准备二、使用步骤1.引入库2.读入数据总结 前言 笔者去年在公司接触到微服务加自动化构建这一套,对于刚接触java开发的笔者来说,简直是沙漠中的绿洲,如获至宝。但是接触到真正的流程之后大跌眼镜,原来所谓的自动化部署真正要做的只有三件事: 提交代码至git/svn仓库 告知QA工程师构建所需绑定分支,qa修改构建流水模板,生成触发构建链接 点击构建链接,静等服务部署完成 一、环境准备 示例 二、使用步骤 1.引入

qiudaoyudeziwei的博客 1406

helm + k8s + splunk 实验 报错集

helm + k8s + splunk 实验 报错集

shenghuiping2001的专栏 325

docker + splunk 安装

最近要对splunk 的架构快速上手,电脑要装不了VM,只能在docker 上实现,先下载了docker desktop, 发现很好用: 1:打开window10 的power shell, run 下面的命令: 1: create a network: docker network create --driver bridge --attachable skynet 2: Splunk Enterprise: $ docker run --network skynet --name so1 -

shenghuiping2001的专栏 1553

go kubernetes client go 提交 yaml_使用Heapster和Splunk监控Kubernetes运行性能

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

weixin_39574868的博客 289

Splunk:大数据管理与分析的艺术

作者:禅与计算机程序设计艺术 概览 Splunk是一个被广泛应用在日志、安全、网络、应用程序等领域的开源大数据分析工具。其功能强大且简单易用,可用于检索、分析、监控各种数据源,支持复杂的查询语言,并提供直观的图表、仪表板、警报等可视化界面。目前其最高版本为7.3.5,基于商业许可证进行授权销售。 本文将从

AI天才研究院 2439

容器生态系统:拆解容器三大技术层次,上手部署第一个容器

本章全面介绍了容器技术生态系统,从容器技术的整体认知到具体实践。首先阐述了学习容器技术的重要性,然后系统性地讲解了容器生态系统的三个层次:核心技术(容器规范、runtime、管理工具、定义工具、Registry、容器OS)、平台技术(编排引擎、管理平台、基于容器的PaaS)和支持技术(网络、服务发现、监控、数据管理、日志管理、安全性)。最后通过详细的 CentOS Stream 8 环境下的 Docker 安装教程和 C/S 分离部署实践,帮助读者快速搭建实验环境并运行第一个容器,为后续深入打下坚实基础。

2602_95508776的博客 456

splunk-otel-collector-chart:用于Kubernetes的Splunk OpenTelemetry连接器

用于Kubernetes的Splunk OpenTelemetry连接器 Kubernetes的Splunk OpenTelemetry连接器是的图表。 该图表在Kubernetes集群中创建了一个Kubernetes DaemonSet以及其他Kubernetes对象,以收集该集群的: 指标 跟踪 Splunk日志观察器的日志 :construction: 该项目目前在BETA中。 入门 先决条件 使用舵图需要以下组件: 如何安装 要在k8s集群中安装splunk-otel-collector,必须至少提供三个参数: splunkRealm (默认为us0 ):Splunk领域,用于向其发送遥测数据。 splunkAccessToken :您的Splunk组织访问令牌。 clusterName :任意值,它将标识您在Splunk中的Kubernetes集群。 要部署图表,请运行以下命令,将上面的参数替

splunk-connect-for-kubernetes:与kubernetes插件关联的Helm图表

Splunk Connect for Kubernetes有什么作用? Splunk Connect for Kubernetes提供了一种在Splunk平台部署中导入和搜索Kubernetes日志,对象和指标数据的方法。 Splunk Connect for Kubernetes支持使用以下技术导入和搜索容器日志: Amazon Elastic Kubernetes服务(Amazon EKS) Azure Kubernetes服务(AKS) Google Kubernetes引擎(GKE) 开班 Splunk Inc.是Cloud Native Computing Foundati

go+vue自建运维管理平台

我猜作者之所以不想把新sql打入mysql镜像是因为不想每次版本更新 都在Dockerfile需要把新SQL文件copy进去,然后重新构建镜像。但是如果是容器平台则选择的余地很大,优秀的如kubersphere、kuboard、Rancher。如果不把sql 打到mysql镜像的话就需要手动到mysql容器执行sql脚本。kuboard 免费版只可以管理3个集群,而这个你自己可以改。鲁班的文档写的也不是很详细,入门会把很多人挡在外面。这个平台和spug很像,感觉就像是spug运维平台的容器版本。

MyySophia的博客 2441

Geant4学习一:写一个简单程序

1、 基本介绍

ccwwNUAA的博客 7699

SPLUNK之Docker配置

Windows环境下,利用Docker配置Splunk

mexel310的专栏 4018

Keil中搭建自动化单元测试框架Unity

前言:   虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动化测试框架。Unity是一个简单且直接的自动化单元测试框架,它由很少的几个文件构成。 搭建环境:   1.从github上下载最新版本的Unity源码,下载链接:https://github...

程序员的自我修炼 3900

【Unity动画优化插件】BT - OptiAnimX —— AAA级动画优化框架深度剖析

BT - OptiAnimX 是一款面向 Unity 的高性能动画优化框架,核心目标是解决多角色动画场景中的性能瓶颈问题。该插件对标《战争机器5》和《巫师3》等 AAA 游戏中的动画优化技术,通过一整套自动化与智能化的优化策略,将动画性能提升与视觉质量控制结合在一起。它适用于从移动端、VR 到高端 PC 的多平台项目,尤其在“多人角色 + 高频动画”的场景中表现突出,例如 MMO、开放世界、动作游戏等。BT - OptiAnimX 本质上是一套“动画性能调度系统”,而不仅仅是优化工具。

2403_88403568的博客 433

SIEM之基于Splunk的日志监控

Splunk是什么?Splunk是一个功能强大的机器数据分析平台,包括机器数据的收集、索引、搜索、监控、可视化和告警等。另一方面来说,Splunk是一个时间序列索引器,因为Splunk索引数据的时候,是基于数据时间戳把数据拆分成事件。Splunk支持从任何IT设备和应用(服务器、路由交换、应用程序、数据库等)收集日志,支持对日志进行高效搜索、索引和可视化。可应用于:IT运营、安全合规、商业分析等。Splunk功能概述Splunk支持各种格式(如XML、JSON)和非结构化机器数据的获取。Splunk。

qq_53058639的博客 896

“华为杯“第十四届中国研究生数学建模竞赛-E题:多波次导弹发射中的规划问题(续)(附MATLAB代码实现)

将最长暴露时间的发射装置按照“优先隐蔽于转载地”,即增加该种发射装置的隐蔽时长,从而达到缩短最长暴露时间的目的。8.2 模型建立。

getusushu的博客 300

【亲测免费】 Splunk OpenTelemetry Collector for Kubernetes 部署与使用指南

Splunk OpenTelemetry Collector for Kubernetes 部署与使用指南 1. 项目介绍 Splunk OpenTelemetry Collector for Kubernetes 是一个专为 Kubernetes 设计的 Helm 图表,它基于 Splunk 分发版的 OpenTelemetry Collector。该图表在 Kubernetes 集群中创建 D...

gitblog_00768的博客 830

Python 爬虫教程:美食网站 + 社交平台餐馆评论抓取(评分提取 + 情感分析)

在当今数字化时代,数据无处不在,而爬虫技术则是获取数据的强大工具之一。无论是市场调研、学术研究还是个人兴趣探索,爬虫都能帮助我们从海量的网络信息中提取有价值的数据。本文将通过一个实战案例,带领大家学习如何使用 Python 爬虫技术抓取美食网站和社交平台上的餐馆评论,并进行评分提取与情感分析。通过这个项目,你将掌握爬虫的基本原理、数据解析、以及如何结合情感分析技术来挖掘数据背后的洞察。

u014481728的博客 311

uniapp(安卓苹果APP端):解决video组件播放视频卡顿,视频一直加载非常缓慢或加载不出来解决方案,解决多个video组件视频播放很卡一直加载非常慢怎么办(无论真机调试还是本地测试都完美搞定)

uni-app APP端video组件播放视频卡顿,uniapp video app 加载不出来解决方案,uniapp app使用video视频播放卡顿,uni-app APP端video组件播放视频卡顿_uniapp video老是加载,uniapp开发app视频在真机上卡顿,安卓app播放视频很卡,苹果ios真机运行播放视频加载很慢怎么办,解决UniApp中MP4视频播放卡顿问题,解决m3u8视频播放很卡的问题,uniapp 使用video组件,部分视频加载非常慢,uniapp视频播放卡顿,安卓视频播放

✅ 精选推荐文章 7919

Splunk工具学习(下载、安装、简单使用、核心概念)

目录什么是Splunk?介绍Splunk的应用场景Splunk架构Splunk下载与安装docker安装(推荐)手动安装Splunk简单使用登录搜索参考 什么是Splunk? 介绍 splunk的一个可扩展且可靠的数据平台,用于调查、监控、分析和处理您的数据,在加速创新的同时确保安全性和系统弹性,释放资源来发现数据中的机会并提供创新,即使面对不可预测性也是如此。随着攻击的复杂性和攻击面不断扩大,确保强大的安全态势越来越具有挑战性。Splunk 使客户能够实现其安全运营的现代化,在混合、多云环境中提供更强大

关注网络安全、云原生安全 1万+

杰理AC695N芯片跑iic接口的oled驱动分享

本文介绍了一个基于IIC接口的0.96寸OLED显示屏驱动程序,适用于SSD1306控制器。驱动采用软件模拟IIC方式,支持字符、数字、字符串、汉字和图片显示,测试平台为杰理AC695N系列芯片。硬件参数包括128×64分辨率,IIC接口(地址0x78),使用IO_PORTA_02(SDA)和IO_PORTA_03(SCL)引脚。驱动包含OLED主文件(oled.c/h)、软件IIC实现(soft_iic.c/h)和字体/图片数据文件(oledfont.h/bmp.h),可通过修改soft_iic.h中的引

qq_42014563的博客 883

探索数据海洋:Splunk Docker 容器化解决方案

探索数据海洋:Splunk Docker 容器化解决方案 项目简介 上,我们可以找到官方提供的项目,这是一个将 Splunk 集成到容器环境中的解决方案,使得在 Kubernetes 或 Docker Compose 等平台上部署和管理 Splunk 变得简单易行。 技术分析 容器化:Docker-Splunk 使用 Docker 容器化技术,封装了完整的 Splunk 环境,包括所需的所有依...

gitblog_00077的博客 478

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 用Python实现一个大数据搜索引擎
刚是程序员
博客等级 码龄9年 47粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值