New Relic Kubernetes インテグレーションでAmazon EKSをモニタリングしよう！

New RelicのKubernetes インテグレーションを利用することで、クラスタがオンプレミスやクラウドなど、どこでホストされているかに関係なく、クラスターの正常性とパフォーマンス、その上で動くワークロードを簡単に把握できるようになります。

# New Relic Kubernetes インテグレーション とは
New RelicのKubernetes インテグレーションはHelm チャートとしてクラスタにインテグレーションをデプロイするのに必要なリソースをすべて含んだパッケージで提供されており、New Relicが提供するCLIもしくはHelmで導入できるようになっています。

Kubernetesのクラスタ上では、コンテナが数分で作成・削除されたり、コンテナがクラッシュ・再起動したりなど、常に多くの事象が発生しており、クラスタとその上で動くワークロードが正常に稼働しているか把握するのが難しいと言われていますが、非常に簡単な作業で導入することで、すぐにクラスタとワークロードで何が起こっているかをすばやく確認できるようになりますよ。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/6128f8f3-e3da-2cc5-42e3-50be0c94d556.png" width="95%">

https://docs.newrelic.com/jp/docs/kubernetes-pixie/kubernetes-integration/get-started/kubernetes-components/#components

Amazon EKS、Google Kubernetes Engine、Azure Kubernetes Service、OpenShift など、さまざまなプラットフォームと互換性があります。インストール要件の詳細は公式ドキュメントをご確認ください。

https://docs.newrelic.com/jp/docs/kubernetes-pixie/kubernetes-integration/get-started/kubernetes-integration-compatibility-requirements/#reqs

# インストールしてみよう
今回は、Amazon EKSにHelmでKubernetes インテグレーションをインストールしてみます。

New Relicのアカウントをお持ちでない方は**無料アカウント**を作成の上、お試しください！**全機能使い放題のユーザー1名と100GBのデータ転送が無料**で使えます。

https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa

## インストールの流れ
New Relicの管理画面にログインし、「＋ Integrations & Agens」を選択->「Collection」の箇所で「Kubernetes ＆ containers」を選択し、

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/e3031c1d-23c6-1190-675a-5213b30f1b9f.png" width="85%">

「Kubernetes」のアイコンをクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/17ce5bb9-6372-2774-190f-9bf56f7b755d.png" width="85%">

インストール方法は今回はHelmを選択します。その他、New Relicが提供するCLIを使ったインストールやマニフェストを使ったインストール方法、Pixieと連携したインストール方法も選択できます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/457efc8b-70b1-d3a6-ffb8-69a8360a9eeb.png" width="85%">

Kubernetes インテグレーションがNew Relicにデータを送信する際に利用するライセンスキーを作成します。作成されたキーはコピーして控えておきましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/765a6c22-12c9-cd73-5eab-1a12e0ebdc7c.png" width="85%">

インテグレーションをインストールするクラスタの名前、デプロイするリソースが稼働するNamespaceを入力します。Namespaceはデフォルトはnewrelicになっており、変更することも可能です。今回はデフォルトの値で設定します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/78765741-df58-b9e3-7bce-98fa14f2f12b.png" width="55%">

Kubernetes インテグレーションにはPrometheus エージェントも含まれており、クラスター内で公開されている Prometheus エンドポイントからメトリクスを収集することができます。オススメの設定である「Scrape all Prometheus endpoints except core Kubernetes system metrics」を選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/65a2d9d1-c48b-433f-8651-87c55a24f850.png" width="80%">

クラスタ上で動く全てのコンテナのログをNew Relicに収集する設定を選択します。デフォルトで指定されている「Forward all logs with minimal enrichment (low data mode)

」を選択します。low data modeでは、ログからlabelsとannotationsが除外されますが、cluster_name、container_name、namespace_name、pod_name などの最小限のKubernetesのメタデータは保持されます。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/7d741dc2-7666-7ce2-f971-2f7fa04fb771.png" width="75%">

Helmのコマンドが生成されますのでコピーして実行します。
設定ファイルをカスタマイズしてインストールすることも可能です。
設定ファイルで定義できる設定値については[こちら](https://github.com/newrelic/helm-charts/tree/master/charts/nri-bundle)をご確認ください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/825d9fa5-7163-471b-606b-cd4bbc62d3a3.png" width="95%">

```bash:コマンド実行例
% KSM_IMAGE_VERSION="v2.10.0" && 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=******** --set global.cluster=dev --namespace=newrelic --set newrelic-infrastructure.privileged=true --set global.lowDataMode=true --set kube-state-metrics.image.tag=${KSM_IMAGE_VERSION} --set kube-state-metrics.enabled=true --set kubeEvents.enabled=true --set newrelic-prometheus-agent.enabled=true --set newrelic-prometheus-agent.lowDataMode=true --set newrelic-prometheus-agent.config.kubernetes.integrations_filter.enabled=false --set logging.enabled=true --set newrelic-logging.lowDataMode=true
```

Completeが返ってくることを確認します。

```bash:コマンド出力結果例
Update Complete. ⎈Happy Helming!⎈
namespace/newrelic created
Release "newrelic-bundle" does not exist. Installing it now.
NAME: newrelic-bundle
LAST DEPLOYED: Tue Nov  5 14:42:10 2024
NAMESPACE: newrelic
STATUS: deployed
REVISION: 1
TEST SUITE: Non
```

newrelicのNamespaceに関連するコンポーネントがデプロイされていることを確認します。

```bash
% kubectl get pods -n newrelic
NAME                                                      READY   STATUS    RESTARTS   AGE
newrelic-bundle-kube-state-metrics-6cdbb869-pl8m4         1/1     Running   0          3m9s
newrelic-bundle-newrelic-logging-t4b6v                    1/1     Running   0          3m9s
newrelic-bundle-newrelic-prometheus-agent-0               1/1     Running   0          3m9s
newrelic-bundle-nri-kube-events-5d6c68d696-82v2s          2/2     Running   0          3m9s
newrelic-bundle-nri-metadata-injection-8449999bf8-q6czq   1/1     Running   0          3m9s
newrelic-bundle-nrk8s-ksm-5fb4b58c7f-ck2dr                2/2     Running   0          3m9s
newrelic-bundle-nrk8s-kubelet-gdnjn                       2/2     Running   0          3m9s
```

New RelicのUIに戻り、「Test connection」をクリックしてSuccessfulになることを確認します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/4a256e77-705c-190e-a133-a247753b4338.png" width="95%">

インストールはこれだけで完了です！！

## New Relic UIでデータを確認

New RelicのUIでデータが取れていることを確認します。

左メニューの「Kubernetes」→クラスタ名をクリックします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/e80c133e-e469-7723-8b6f-a4700a5fbd02.png" width="55%">

クラスタで発生しているイベント情報や、PodやNodeのステータス、稼働しているコンテナのリソース状況を取れていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/05052eb1-91ce-5ac6-c9e6-adee1a4827de.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/64206fda-def6-3f44-4303-88bd921c057c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485441/a7c662c0-f64e-89f7-a630-2b1581739b7c.png)


とても**簡単な手順**でNew RelicのKubernetes インテグレーションをAmazon EKSにインストールして、Amazon EKSのクラスタやその上で動くワークロードの監視を開始できることを紹介しました。ぜひ、お試しください。

# その他
New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

:::note info
New Relic株式会社の[X(旧Twitter)](https://x.com/NewRelicJapan) や [Qiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::