将NewRelic与EKS进行集成

首先

这篇文章是关于新日志2022年12月14日的文章。

为了实现针对Kubernetes的可观测性,选择适合系统配置和要求的监控工具非常重要。

Kubernetes的环境状态是不稳定的,无法事先预测在特定节点上特定的Pod将运行等等,因此无法进行监控。

此外,由于多个组件和服务的组合,传统的监控无法快速排查和调查问题,并进行特定问题的定位。

基于以上背景,我认为实际操作多种监控工具非常重要,即了解可以获取的信息、如何可视化以及适用于哪些项目等等。

fig21.png

“前提条件”的中文本地化改写如下:先决条件

    • Amazon Elastic Kubernetes Service(EKS)v1.23

 

    New Relic One(執筆時点:2022/12/14)

引入步骤 rù bù zé)

fig9.png

请设置NewRelic账户ID和将要关联的EKS集群的名称(这将在未来显示在NewRelic控制台上)。
另外,Kubernetes上已安装NewRelic代理的命名空间被设定为newrelic。

fig10.png
fig11.png

关于上述选项的说明如下。

抓取普罗米修斯的端点

    • クラスター内のPrometheusエンドポイントからメトリクスを収集するか(ON:収集)

 

    ⇒ 今回はPrometheus形式のメトリクスは収集しないためOFFとしました。

收集日志数据

    • Kubernetesコントロールプレーン及び、全てなコンテナログを収集するか(ON:収集)

 

    ⇒ 今回はログ収集ありに設定しています。

通过Pixie,即时的服务层洞察、全身请求和应用程序概要。

    • Pixieを導入するか(ON:導入)

 

    • ⇒ Pixieは、アプリケーションパフォーマンスデータやリクエストデータを収集できるモニタリングツールです。

 

    •   詳しくはこちらで紹介されています。

 

      今回はONにしました。

妖精已经在这个集群中运行。

    • Pixieがすでにクラスタ上で起動状態か(ON:起動済)

 

    ⇒ 未導入なのでOFFにしました。

为非特权模式进行设置

    • 非特権モードのセットアップを有効化するか(ON:有効)

 

    • ⇒ 今回は特権モードでセットアップしメトリクス収集します。

 

     ※セキュリティ要件レベルが高い場合は、非特権モードでインストールすることを推奨。

减少摄入数据的量

    • 取込データ量を削減するか(ON:削減)

 

    ⇒ 取込データ量を減らし、NewRelicへの転送コストを減らしたい場合に選択します。今回は削減します。
画像31.png

关于其他参数的说明已经在下面列出,请根据需要查阅。
通过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
fig13.png

被安装的资源

導入程序已經結束,現在我們來詳細介紹已安裝的代理人。
在本次環境中安裝的Kubernetes資源中,我們選取了一些並進行了描述。
參考資料:Kubernetes統合版本3中引入的變更| NewRelic

オブジェクト名前説明ReplicaSetnewrelic-bundle-kube-state-metricskube-state-metricsのエクスポータ。
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を用いてテレメトリーデータの収集やデータの一時保管を行う。
fig14.png

在NewRelic中进行可视化处理。

那么,接下来我们来确认一下在NewRelic上如何被可视化。

Kubernetes仪表板

fig15.png
fig17.png

Kubernetes集群探索器

fig23.png
画像30.png

总结

我在NewRelic和EKS之间进行了整合。
整合非常简单,我惊讶地发现可以在几分钟内完成安装并在仪表板上进行可视化。
而且,当集群出现任何问题时,通过Cluster Explorer可以检查Pod和节点的状态,
从而能够快速确定瓶颈,我觉得这些非常有用的仪表板非常齐全。
选择Pod并进行钻取,可以快速查看每个容器的指标、日志和跟踪数据,这也非常好。

参考资料

这篇文章是根据以下信息进行撰写的。

    1. 从监控到可观察性的转变:New Relic实践入门 | 翔泳社

 

    1. 为AWS上的Kubernetes做准备:应用工程师的生产环境 | 里克电讯

 

    介绍Kubernetes集成功能 | NewRelic
广告
将在 10 秒后关闭
bannerAds