在Splunk基础设施监控(SignalFX)中尝试监视Kubernetes资源
首先
我是鈴木,在某家SIer公司就Kubernetes监控进行验证。
在这篇文章中,我想尝试使用Splunk基础设施监控(SignalFX)来监控Kubernetes上的资源。
关于监视
顺便问一下大家都使用什么监视服务或工具呢?
我认为使用 Zabbix 对服务器资源和日志进行监视的人还是相当多的。
当然,Zabbix拥有丰富的功能和众多的实例,可以说是一款功能强大的监视工具,毫无疑问。
不过,在考虑到本地监视基础设施的引入和运营成本之后,我认为考虑使用 mackerel、Datadog、Dynatrace等监视SaaS的情况也越来越多。
顺便提一下,这次要使用的Splunk Infrastructure Monitoring也是SaaS。
另外,监视虽然只是一种形容词,但是实际上有很多不同的方法,其中典型的方法如下所示。
度量
追踪
日志记录
在这次尝试中,Splunk IM 可以通过度量和追踪来进行监视。
环境
Kubernetes: OpenShift 4.6.3(Kubernetes v1.19)
部署于AWS云平台上
Splunk基础设施监控代理5.9.2
macOS Catalina 10.15.7(工作终端)
因为偶然正在验证 Red Hat 的 OpenShift,所以在 OpenShift 上执行,但基础是 Kubernetes,所以在 EKS、GKE、AKS 等平台上的操作方式并没有太大差异。
尝试使用Splunk IM
创建Splunk账号
为了使用Signal IM,您需要拥有Splunk账户,因此请首先在以下页面上创建Splunk账户。
Splunk基础设施监控 | 免费14天试用




如果能成功登录,账户创建就顺利完成了。
代理的安装
首先,确认安装方法。
点击菜单栏上的 “Integrations”,在搜索框中输入 “Kubernetes”。
顺便一提,搜索 “OpenShift” 也没有显示任何结果。


由于代理程序的安装是通过使用Helm来完成的,因此首先需要在工作终端(本例中为Macbook Pro)上使用Homebrew安装Helm。如果尚未安装Homebrew,则需要先进行预先安装。
brew install kubernetes-helm
完成Helm安装后,要将SignalFx Helm的Chart存储库添加到Helm中。
helm repo add signalfx https://dl.signalfx.com/helm-repo
"signalfx" has been added to your repositories
将存储库更新为最新状态。
helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "signalfx" chart repository
Update Complete. ⎈Happy Helming!⎈
使用必需的配置数值选项来安装。
helm install --set signalFxAccessToken=<YOUR_ACCESS_TOKEN> --set clusterName=<YOUR_CLUSTER_NAME> --set agentVersion=<VERSION_NUMBER> --set signalFxRealm=<us1> <SIGNALFX_AGENT_APPNAME> signalfx/signalfx-agent --set kubernetesDistro=openshift
访问令牌:输入 SignalFx 的访问令牌(在我的个人资料中确认)
集群名称:输入 Kubernetes 的集群名称
SignalFx 域:输入 SignalFx 的域(在我的个人资料中确认)
版本:如果不指定,将安装最新版本
Kubernetes 发行版:本次选择 OpenShift,因此请指定为 openshift
请参考以下的设置值确认方法。


helm install --set signalFxAccessToken=<User Api Access Token> --set clusterName=cluster-name --set signalFxRealm=us1 --generate-name signalfx/signalfx-agent --set kubernetesDistro=openshift
NAME: signalfx-agent-1618354753
LAST DEPLOYED: Wed Apr 14 07:59:21 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The SignalFx agent is being deployed in your Kubernetes cluster. You should
see metrics flowing once the agent image is downloaded and started (this may
take a few minutes since it has to download the agent container image).
Assuming you are logged into SignalFx in your browser, visit
https://app.us1.signalfx.com/#/navigator/kubernetes%20pods/kubernetes%20pods
to see all of the pods in your cluster.
在安装 Helm 后,Agent Pod 会在 Kubernetes 上启动。
kubectl get pod
NAME READY STATUS RESTARTS AGE
signalfx-agent-1618354753-7l6fm 1/1 Running 0 4m44s
signalfx-agent-1618354753-7nrb7 1/1 Running 0 4m44s
signalfx-agent-1618354753-dxdfv 1/1 Running 0 4m44s
signalfx-agent-1618354753-pb7bv 1/1 Running 0 4m44s
signalfx-agent-1618354753-sctxw 1/1 Running 0 4m44s


尝试监控容器资源
由于我们已经处于可以监视的状态,所以我想监视容器资源。
首先,使用示例任意运行一个容器。
执行以下命令将创建一个部署资源,并启动nginx的Pod(容器)。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/ja/examples/controllers/nginx-deployment.yaml
deployment.apps/nginx-deployment created
确认 Nginx 容器组的运行状态是否为 Running。
kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-66b6c48dd5-4ltxj 1/1 Running 0 2m16s
nginx-deployment-66b6c48dd5-cbg28 1/1 Running 0 2m16s
nginx-deployment-66b6c48dd5-lfmzq 1/1 Running 0 2m16s
signalfx-agent-1618354753-7l6fm 1/1 Running 0 3h9m
signalfx-agent-1618354753-7nrb7 1/1 Running 0 3h9m
signalfx-agent-1618354753-dxdfv 1/1 Running 0 3h9m
signalfx-agent-1618354753-pb7bv 1/1 Running 0 3h9m
signalfx-agent-1618354753-sctxw 1/1 Running 0 3h9m

我将尝试将 nginx-deployment 资源的副本数从3增加到10,并观察变化的情况。
kubectl edit deployment nginx-deployment
apiVersion: apps/v1
kind: Deployment
...
spec:
progressDeadlineSeconds: 600
replicas: 10
revisionHistoryLimit: 10
...
kubectl edit deployment nginx-deployment
deployment.apps/nginx-deployment edited

最后
嗯,這次我們試著使用Splunk IM進行Kubernetes資源監控,但意外地輕鬆地進行測試。下次我想要嘗試追蹤功能。
另外,現在是試用期間,無任何功能限制地使用,但試用期結束後,想要一起確認可以使用到哪些功能等等。
参考文献
使用Splunk Infrastructure Monitoring监控Red Hat OpenShift
openshift-cluster – SignalFx文件
signalfx-agent/README.md(主文件)- signalfx/signalfx-agent
监控Kubernetes – SignalFx文件
尝试使用SignalFx监控资源。
尝试使用SignalFx监控Kubernetes。
AWS容器环境监控最佳实践
Kubernetes Navigator:现在普遍可用的实时监控和基于AI的Kubernetes环境分析。