New RelicのKubernetes インテグレーションを利用することで、クラスタがオンプレミスやクラウドなど、どこでホストされているかに関係なく、クラスターの正常性とパフォーマンス、その上で動くワークロードを簡単に把握できるようになります。
New Relic Kubernetes インテグレーション とは
New RelicのKubernetes インテグレーションはHelm チャートとしてクラスタにインテグレーションをデプロイするのに必要なリソースをすべて含んだパッケージで提供されており、New Relicが提供するCLIもしくはHelmで導入できるようになっています。
Kubernetesのクラスタ上では、コンテナが数分で作成・削除されたり、コンテナがクラッシュ・再起動したりなど、常に多くの事象が発生しており、クラスタとその上で動くワークロードが正常に稼働しているか把握するのが難しいと言われていますが、非常に簡単な作業で導入することで、すぐにクラスタとワークロードで何が起こっているかをすばやく確認できるようになりますよ。
Amazon EKS、Google Kubernetes Engine、Azure Kubernetes Service、OpenShift など、さまざまなプラットフォームと互換性があります。インストール要件の詳細は公式ドキュメントをご確認ください。
インストールしてみよう
今回は、Amazon EKSにHelmでKubernetes インテグレーションをインストールしてみます。
New Relicのアカウントをお持ちでない方は無料アカウントを作成の上、お試しください!全機能使い放題のユーザー1名と100GBのデータ転送が無料で使えます。
インストールの流れ
New Relicの管理画面にログインし、「+ Integrations & Agens」を選択->「Collection」の箇所で「Kubernetes & containers」を選択し、
「Kubernetes」のアイコンをクリックします。
インストール方法は今回はHelmを選択します。その他、New Relicが提供するCLIを使ったインストールやマニフェストを使ったインストール方法、Pixieと連携したインストール方法も選択できます。
Kubernetes インテグレーションがNew Relicにデータを送信する際に利用するライセンスキーを作成します。作成されたキーはコピーして控えておきましょう。
インテグレーションをインストールするクラスタの名前、デプロイするリソースが稼働するNamespaceを入力します。Namespaceはデフォルトはnewrelicになっており、変更することも可能です。今回はデフォルトの値で設定します。
Kubernetes インテグレーションにはPrometheus エージェントも含まれており、クラスター内で公開されている Prometheus エンドポイントからメトリクスを収集することができます。オススメの設定である「Scrape all Prometheus endpoints except core Kubernetes system metrics」を選択します。
クラスタ上で動く全てのコンテナのログを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のメタデータは保持されます。
Helmのコマンドが生成されますのでコピーして実行します。
設定ファイルをカスタマイズしてインストールすることも可能です。
設定ファイルで定義できる設定値についてはこちらをご確認ください。
% 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が返ってくることを確認します。
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に関連するコンポーネントがデプロイされていることを確認します。
% 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になることを確認します。
インストールはこれだけで完了です!!
New Relic UIでデータを確認
New RelicのUIでデータが取れていることを確認します。
左メニューの「Kubernetes」→クラスタ名をクリックします。
クラスタで発生しているイベント情報や、PodやNodeのステータス、稼働しているコンテナのリソース状況を取れていることが確認できます。
とても簡単な手順でNew RelicのKubernetes インテグレーションをAmazon EKSにインストールして、Amazon EKSのクラスタやその上で動くワークロードの監視を開始できることを紹介しました。ぜひ、お試しください。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!