在New Relic中监视Kubernetes的方式
首先
为了监视Kubernetes,我尝试使用New Relic Infrastructure的Kubernetes集群浏览器。根据官方文档进行了配置,下面将介绍配置方法。
背景 –
Kubernetes是一种容器编排工具。虽然Kubernetes本身能够进行自动修复,但监控仍然是必要的。另外,不仅限于Kubernetes,监控应该考虑指标易读性和管理易于操作性等方面。
所以我关注的是 New Relic https://newrelic.com/。
它能够将 Kubernetes 复杂的内容以直观易懂的方式展示出来。
因为它看起来很方便,所以我尝试使用了一下。

设置步骤
我将执行以下事项。
-
- Kubernetes に kube-state-metrics を設定する
-
- Kubernetes に New Relic のデーモンセットを設定する
- New Relic にて監視する
kube-state-metrics是作为Kubernetes的插件提供的监控工具。通过kube-state-metrics获取的指标将被发送到New Relic,从而实现在New Relic上集中管理Kubernetes!
kube-state-metrics 的配置
次のコマンドで kube-state-metrics を設定します。
内容は kube-state-metrics をダウンロードし、zipファイルを解凍、Kubectl にて環境へ Apply です。
curl -o kube-state-metrics-1.4.zip https://codeload.github.com/kubernetes/kube-state-metrics/zip/release-1.4 && unzip kube-state-metrics-1.4.zip && kubectl apply -f kube-state-metrics-release-1.4/kubernetes
実行した結果 created と表示されれば成功です。
clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
deployment.apps/kube-state-metrics created
rolebinding.rbac.authorization.k8s.io/kube-state-metrics created
role.rbac.authorization.k8s.io/kube-state-metrics-resizer created
serviceaccount/kube-state-metrics created
service/kube-state-metrics created
上記は Version1.4 の例であるため、最新版は git から取得してください。
https://github.com/kubernetes/kube-state-metrics/
実際に行っていることは、下記ディレクトリに用意されているyamlファイルを使って、Kubernetes に Apply しています。
https://github.com/kubernetes/kube-state-metrics/tree/master/kubernetes
次に Kubernetes に適応されたかを確認します。
$ kubectl get pods --all-namespaces | grep kube-state-metrics
kube-system kube-state-metrics-7d799b9c7d-kd8bd 2/2 Running 0 31m
kube-state-metrics が Running になっていることが分かります。
これで kube-state-metrics の設定は完了です。
设置New Relic的守护进程集合
Kubernets の場合、ノードを複数作成し Pod(コンテナ) を分散配置させるため、各ノードで情報収集し New Relic へデータを送信できる仕組みが必要になります。
そこでデーモンセットを作成することで各ノードに必ず一つの Pod(コンテナ:集めたデータを New Relic へ送信する処理) を配置することができます。
これにより全ノードのデータを New Relic へ送信できるようになります。
由于有一个yaml文件可供使用,因此请进行下载。
curl -O https://download.newrelic.com/infrastructure_agent/integrations/kubernetes/newrelic-infrastructure-k8s-latest.yaml
请将 yaml 文件中的 [YOUR_LICENSE_KEY] 和 [YOUR_CLUSTER_NAME] 进行修改。
env:
- name: NRIA_LICENSE_KEY
value: YOUR_LICENSE_KEY
- name: CLUSTER_NAME
value: YOUR_CLUSTER_NAME
修改后,将创建一个Kubernetes的守护进程集。
kubectl create -f newrelic-infrastructure-k8s-latest.yaml
确认已创建的守护程序集正在运行。
$ kubectl get pods --all-namespaces
default newrelic-infra-65444 1/1 Running 0 1m
default newrelic-infra-9pgbl 1/1 Running 0 1m
default newrelic-infra-kj54p 1/1 Running 0 1m
default newrelic-infra-l5xpr 1/1 Running 0 1m
default newrelic-infra-lzpwk 1/1 Running 0 1m
default newrelic-infra-qmx2j 1/1 Running 0 1m
default newrelic-infra-s976f 1/1 Running 0 1m
default newrelic-infra-tkg85 1/1 Running 0 1m
确认到正在运行中。
如果运行时出现问题,请怀疑yaml文件中的[YOUR_LICENSE_KEY]和[YOUR_CLUSTER_NAME]是否有错误。(您也可以通过kubectl logs来确认情况)
设置在这里完成。
在New Relic上确认
我将登录 https://infrastructure.newrelic.com/ 并确认是否可以进行监控。



以上是设置的方法。
总结
按照公式文档的步骤进行操作,但没有遇到问题并成功进行了设置。
我认为Kubernetes集群可以很方便地进行统一管理,即使创建多个集群。
本次只是完成了设置,下次我希望能加入监控要点等内容!