将NewRelic与EKS进行集成
首先
这篇文章是关于新日志2022年12月14日的文章。
为了实现针对Kubernetes的可观测性,选择适合系统配置和要求的监控工具非常重要。
Kubernetes的环境状态是不稳定的,无法事先预测在特定节点上特定的Pod将运行等等,因此无法进行监控。
此外,由于多个组件和服务的组合,传统的监控无法快速排查和调查问题,并进行特定问题的定位。
基于以上背景,我认为实际操作多种监控工具非常重要,即了解可以获取的信息、如何可视化以及适用于哪些项目等等。
“前提条件”的中文本地化改写如下:先决条件
-
- Amazon Elastic Kubernetes Service(EKS)v1.23
- New Relic One(執筆時点:2022/12/14)
引入步骤 rù bù zé)
请设置NewRelic账户ID和将要关联的EKS集群的名称(这将在未来显示在NewRelic控制台上)。
另外,Kubernetes上已安装NewRelic代理的命名空间被设定为newrelic。
关于上述选项的说明如下。
抓取普罗米修斯的端点
-
- クラスター内のPrometheusエンドポイントからメトリクスを収集するか(ON:収集)
- ⇒ 今回はPrometheus形式のメトリクスは収集しないためOFFとしました。
收集日志数据
-
- Kubernetesコントロールプレーン及び、全てなコンテナログを収集するか(ON:収集)
- ⇒ 今回はログ収集ありに設定しています。
通过Pixie,即时的服务层洞察、全身请求和应用程序概要。
-
- Pixieを導入するか(ON:導入)
-
- ⇒ Pixieは、アプリケーションパフォーマンスデータやリクエストデータを収集できるモニタリングツールです。
-
- 詳しくはこちらで紹介されています。
- 今回はONにしました。
妖精已经在这个集群中运行。
-
- Pixieがすでにクラスタ上で起動状態か(ON:起動済)
- ⇒ 未導入なのでOFFにしました。
为非特权模式进行设置
-
- 非特権モードのセットアップを有効化するか(ON:有効)
-
- ⇒ 今回は特権モードでセットアップしメトリクス収集します。
- ※セキュリティ要件レベルが高い場合は、非特権モードでインストールすることを推奨。
减少摄入数据的量
-
- 取込データ量を削減するか(ON:削減)
- ⇒ 取込データ量を減らし、NewRelicへの転送コストを減らしたい場合に選択します。今回は削減します。
关于其他参数的说明已经在下面列出,请根据需要查阅。
通过Helm安装Kubernetes集成 | NewRelic
请从可连接到EKS的终端上执行Helm命令。如果终端尚未安装,请事先从此处安装。
$ helm repo add newrelic https://helm-charts.newrelic.com && helm repo update && \
kubectl create namespace newrelic ; helm upgrade --install newrelic-bundle newrelic/nri-bundle \
--set global.licenseKey=YOUR_LICENSE_KEY \
--set global.cluster=eks-work-cluster \
--namespace=newrelic \
--set newrelic-infrastructure.privileged=true \
--set global.lowDataMode=true \
--set ksm.enabled=true \
--set kubeEvents.enabled=true \
--set logging.enabled=true \
--set newrelic-pixie.enabled=true \
--set newrelic-pixie.apiKey=YOUR_PIXIE_API_KEY \
--set pixie-chart.enabled=true \
--set pixie-chart.deployKey=YOUR_PIXIE_DEPLOY_KEY \
--set pixie-chart.clusterName=eks-work-cluster
执行后,请稍等片刻,然后使用kubectl命令确认Pod已启动。
如果您还没有安装终端,请提前安装。
$ kubectl get pod -n newrelic
NAME READY STATUS RESTARTS AGE
kelvin-7756fb8f47-bvjdg 1/1 Running 0 72s
newrelic-bundle-kube-state-metrics-547fc6d94f-8m78p 1/1 Running 0 111s
newrelic-bundle-newrelic-logging-2v78z 1/1 Running 0 111s
newrelic-bundle-newrelic-logging-csps4 1/1 Running 0 111s
newrelic-bundle-newrelic-pixie-xx58v 0/1 Completed 0 111s
newrelic-bundle-nri-kube-events-f8ffcd4db-sn8jx 2/2 Running 0 111s
newrelic-bundle-nri-metadata-injection-df5b566d6-k4fnz 1/1 Running 0 111s
newrelic-bundle-nrk8s-ksm-769dcc4d5c-mwt5s 2/2 Running 0 111s
newrelic-bundle-nrk8s-kubelet-tjftj 2/2 Running 0 111s
newrelic-bundle-nrk8s-kubelet-zg5s4 2/2 Running 0 111s
pl-nats-0 1/1 Running 0 76s
vizier-cloud-connector-d578bcf4f-56pnx 1/1 Running 0 72s
vizier-metadata-0 1/1 Running 0 72s
vizier-pem-c6gff 1/1 Running 0 72s
vizier-pem-flmpr 1/1 Running 0 72s
vizier-query-broker-6b795b84b7-q95mk 1/1 Running 0 72s
被安装的资源
導入程序已經結束,現在我們來詳細介紹已安裝的代理人。
在本次環境中安裝的Kubernetes資源中,我們選取了一些並進行了描述。
參考資料:Kubernetes統合版本3中引入的變更| NewRelic
kube-state-metricsは、Podの情報やDeploymentやStatefulSetの正常に稼働しているPodの数などの多くの情報を収集する。ReplicaSetnewrelic-bundle-nrk8s-ksmkube-state-metricsからメトリクスを収集しNewRelicに送信する。ReplicaSetnewrelic-bundle-nri-kube-eventsKubernetesイベントをNewRelicに送信する 。DaemonSetnewrelic-bundle-nrk8s-kubeletKubeletから取得したCPU、メモリなどのインフラメトリクスを収集し、NewRelicに送信する。DaemonSetnewrelic-bundle-newrelic-loggingログをNewRelicに転送するためのコンポーネント。
FluentBitプラグインを利用し転送する。DaemonSetvizier-pemPixieのコンポーネント。
eBPFを用いてテレメトリーデータの収集やデータの一時保管を行う。
在NewRelic中进行可视化处理。
那么,接下来我们来确认一下在NewRelic上如何被可视化。
Kubernetes仪表板
Kubernetes集群探索器
总结
我在NewRelic和EKS之间进行了整合。
整合非常简单,我惊讶地发现可以在几分钟内完成安装并在仪表板上进行可视化。
而且,当集群出现任何问题时,通过Cluster Explorer可以检查Pod和节点的状态,
从而能够快速确定瓶颈,我觉得这些非常有用的仪表板非常齐全。
选择Pod并进行钻取,可以快速查看每个容器的指标、日志和跟踪数据,这也非常好。
参考资料
这篇文章是根据以下信息进行撰写的。
-
- 从监控到可观察性的转变:New Relic实践入门 | 翔泳社
-
- 为AWS上的Kubernetes做准备:应用工程师的生产环境 | 里克电讯
- 介绍Kubernetes集成功能 | NewRelic