• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

HelmによるKubernetesインテグレーションのインストール

Helm は、Kubernetes 上のパッケージマネージャです。インストール、アップグレード、リビジョンの追跡を容易にし、Kubernetesにインストールするサービスの依存関係を管理します。

Helmを使用して統合をインストールするには、Kubernetes自動インストーラーをお勧めします。これにより、いくつかの構成オプションの入力を求められ、シークレットと値が自動入力されます。さらに、自動インストーラーを使用すると、Helmリリースではなくプレーンマニフェストとして統合をインストールすることもできます。自動インストーラーの使用方法の詳細については、Kubernetesの統合:インストールと設定をご覧ください。

インストーラの起動

このページでは、自動インストーラを使わずにNew Relicインテグレーションをインストールして設定する方法をより詳しく説明します。

互換性と要件

Helmがマシンにインストールされていることを確認してください。 Kubernetes Integrationのバージョン3には、Helmバージョン3が必要です。

EOL通知

2022年4月30日をもって、Helmv2を含むいくつかの機能のサポートを終了します。この移行に簡単に備える方法など、詳細については、 ExplorersHubの投稿をご覧ください。

Helmを使ってKubernetesインテグレーションをインストールするには、New Relicアカウントのライセンスキーと、Kubernetesクラスタの名前が必要です。

  1. New Relic のライセンスキー を見つけてコピーしてください。
  2. クラスタの表示名を決めます。例えば、次のような出力が考えられます。
bash
$
kubectl config current-context

これらの値は後でインストール時に必要になるので、安全な場所にメモしておいてください。

HelmによるKubernetesインテグレーションのインストール

New Relicには、プラットフォームの異なる機能を提供するさまざまなコンポーネントのためのいくつかのチャートがあります。

  • newrelic-infrastructure :メインのKubernetes統合とインフラストラクチャエージェントが含まれています。これは、New Relic Kubernetesエクスペリエンスのコアコンポーネントであり、KubernetesダッシュボードとKubernetesクラスターエクスプローラーに表示されるほとんどのデータのレポートを担当します。
  • newrelic-loggingDaemonSetにNewRelicのFluentBit出力プラグインを提供して、ログをNewRelicに簡単に転送します。
  • nri-kube-events :クラスターイベント( kubectl get eventsなど)を収集してNewRelicに報告します。
  • nri-prometheus :NewRelicのPrometheusOpenMetrics統合は、クラスターに存在するPrometheusエンドポイントを自動的にスクレイプし、 メトリックをNewRelicに報告します
  • prometheus-agent : New Relic の Prometheus Configurator は、Prometheus をエージェント モードで構成し、リモート書き込みエンドポイントを使用して指標を New Relic に報告します
  • nri-metadata-injection :コンテナにいくつかの環境変数を挿入する最小限のMutatingAdmissionWebhookを設定します。これらには、クラスターとNew Relicのインストールに関するメタデータが含まれており、後でAPMを使用してインストルメント化されたアプリケーションによって取得され、 APMとインフラストラクチャデータを相互に関連付けることができます。
  • nri-statsd :NewRelicStatsDの統合。

便宜上、New Relicはnri-bundleチャートを提供します。これは、上記のチャートの選択可能なセットをプルします。 nri-bundleは、必要に応じてKubeStateMetricsとPixieをインストールすることもできます。

これらのグラフを個別にインストールすることは可能ですが、Kubernetesのデプロイにはnri-bundleグラフを使用することを強くお勧めします。これにより、すべてのグラフの値に一貫性があり、インストールするコンポーネントを完全に制御できるようになります。それらすべてをHelm依存関係として構成します。これは、自動インストーラーによって使用および参照されるチャートと同じです。

Helmを使用したnri-bundleのインストールと構成

  1. Helmとkubectlを実行するマシンで適切なコンテキストを使用していることを確認してください。

    で利用可能なコンテキストを確認することができます。

    bash
    $
    kubectl config get-contexts

    で、目的のコンテキストに切り替えます。

    bash
    $
    kubectl config use-context _CONTEXT_NAME_
  2. New Relic Helm chartのリポジトリを追加します。

    bash
    $
    helm repo add newrelic https://helm-charts.newrelic.com
  3. 構成を定義するために使用されるvalues-newrelic.yamlという名前のファイルを作成します。

global:
licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
cluster: _K8S_CLUSTER_NAME_
newrelic-prometheus-agent:
# Automatically scrape prometheus metrics for annotated services in the cluster
# Collecting prometheus metrics for large clusters might impact data usage significantly
enabled: true
nri-metadata-injection:
# Deploy our webhook to link APM and Kubernetes entities
enabled: true
nri-kube-events:
# Report Kubernetes events
enabled: true
newrelic-logging:
# Report logs for containers running in the cluster
enabled: true
kube-state-metrics:
# Deploy kube-state-metrics in the cluster.
# Set this to true unless it is already deployed.
enabled: true
  1. 次のコマンドを実行して、チャートですべてが正しく構成されていることを確認します。 --dry-run--debugを指定しているため、このステップでは何もインストールされないことに注意してください。

    bash
    $
    helm upgrade --install newrelic newrelic/nri-bundle \
    >
    --namespace newrelic --create-namespace \
    >
    -f values-newrelic.yaml \
    >
    --dry-run \
    >
    --debug

    以下のフラグに注意して調整してください。

  • global.licenseKey=YOUR_NEW_RELIC_LICENSE_KEY:アカウントの有効なライセンスキーに設定する必要があります。
  • global.cluster=K8S_CLUSTER_NAME:New Relic UIでクラスターを識別するために使用されるため、NewRelicアカウントで構成されている他のKubernetesクラスターでは使用されない説明的な値である必要があります。
  • kube-state-metrics.enabled=true:これをtrueに設定すると、統合を実行するために必要なKube State Metrics(KSM)が自動的にインストールされます。 KSMがクラスターにすでに存在する場合は、別の名前空間にある場合でも、これをfalseに設定できます。
  • newrelic-prometheus-agent.enabled=true: クラスターに存在する Prometheus エンドポイントからデータを自動的に収集する Prometheus Agent をデプロイします。
  • nri-metadata-injection.enabled=true:最小限のWebhookをインストールします。これにより、環境変数が追加され、NewRelicAPMを搭載したアプリケーションをKubernetesにリンクできるようになります。

私たちのKubernetesチャートには、お客様の特定のニーズに合わせて編集可能なフラグとチューナブルの包括的なセットが用意されています。以下の Configure the integration のセクションで、変更可能な項目を確認してください。

  1. --debug--dry-runを指定せずにコマンドを実行して、Kubernetes統合をインストールします。
bash
$
helm upgrade --install newrelic newrelic/nri-bundle \
>
--namespace newrelic --create-namespace \
>
-f values-newrelic.yaml

重要

サポートされている Kubernetes バージョン 1.24.x 以下のバージョンを使用していることを確認してください。ポッド セキュリティ ポリシーは、バージョン 1.25 以降で削除されました。

バージョン 1.25 以降を使用している場合、上記のコマンドを実行すると次のエラーが発生します。

bash
$
Error: UPGRADE FAILED: pre-upgrade hooks failed: unable to build kubernetes object for deleting hook nri-bundle/charts/nri-metadata-injection/templates/admission-webhooks/job-patch/psp.yaml: resource mapping not found for name: "newrelic-nri-metadata-injection-admission" namespace: "" from "": no matches for kind "PodSecurityPolicy" in version "policy/v1beta1"
$
ensure CRDs are installed first
  1. ポッドがデプロイされ、安定した状態になっていることを確認します。
bash
$
kubectl -n newrelic get pods -w

見るべきです。

  1. 1つのnewrelic-nrk8s-ksmポッド。
  2. クラスタ内のノードごとに1つのnewrelic-nrk8s-kubeletポッド。
  3. クラスタ内のマスターノードごとに1つのnewrelic-nrk8s-control-planeポッド(存在する場合)。
  4. インストールにKSMが含まれている場合は、1つのnewrelic-kube-state-metricsポッド。
  5. Kubernetesイベントレポートを有効にした場合は、1つのnewrelic-nri-kube-eventsポッド。
  6. Prometheus統合を有効にした場合は、1つのnewrelic-nri-prometheusポッド。
  7. ロギング統合を有効にした場合は、クラスター内のノードごとに1つのnewrelic-newrelic-loggingポッド。

Helm 2とnri-bundle(レガシー)でのインストール

While you wait for your data to come in...

Did this doc help you install?

統合を構成する

nri-bundleチャート。そのインストール手順は上記にあり、ソリューションのコンポーネントを含む他のいくつかのチャートのラッパーまたはメタパッケージとして機能します。このようなラッパーを提供することにより、コンポーネントのチャートを比較的単純に保ちながら、相互に互換性があることがわかっているバージョンのコンポーネントの制御されたセットを提供できます。

個々の統合コンポーネントを構成するには、Helmの依存関係システムを使用する必要があります。つまり、子グラフの構成は、そのグラフの名前のセクションの下に配置する必要があります。たとえば、 newrelic-infrastructureチャートを構成するには、 values-newrelic.yamlに以下を追加します。

global:
licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
cluster: _K8S_CLUSTER_NAME_
# ... Other settings as shown above
# Configuration for newrelic-infrastructure
newrelic-infrastructure:
verboseLog: true # Enable debug logs
privileged: false # Install with minimal privileges
# Other options from https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-infrastructure-v3

調整可能なフラグの完全なリストは、私たちのチャートのリポジトリにあります。

ヒント

これらのグラフのオプションを指定するときは、 values-newrelic.yamlのグラフ名の下にそれらを配置する必要があることに注意してください。

Helmによるアップグレード

Helm経由でインストールしたKubernetesインテグレーションをアップデートするには

  1. ローカルチャートのリポジトリを更新します。

    bash
    $
    helm repo update
  2. 上記のセクションで適切なhelm upgrade --install ...コマンドを再度実行して、リリースを更新します

    bash
    $
    helm upgrade --install newrelic newrelic/nri-bundle \
    >
    --namespace newrelic --create-namespace \
    >
    -f values-newrelic.yaml

Kubernetesで実行されているサービスを監視する

Kubernetesインテグレーションをインストールした後は、クラスタ内で実行されるサービスのインスツルメンテーションを開始できます。この方法の詳細については、 Kubernetes上で動作するサービスの監視 ページをご確認ください。

Kubernetesデータの使用

Kubernetesデータの使用方法の詳細については、Kubernetesデータページの詳細検索を参照してください。

データ取り込みを減らす

私たちのチャートは、詳細情報をドロップすることを犠牲にして、取り込まれるデータの量を減らすオプションの設定をサポートしています。有効にするには、 nri-bundleチャートでglobal.lowDataModetrueに設定します。

lowDataMode 以下に概説するnri-bundleチャートの4つの特定のコンポーネントに影響します。

New Relicのインフラ

lowDataModeが有効になっている場合、デフォルトのスクレイプ間隔は15sから30sに変更されます。 config.intervalを使用してカスタム値を指定することもできます。これはlowDataModeよりも優先されます。

Prometheus OpenMetricsの統合

lowDataModeが有効になっている場合、次のメトリックはNew Relic Kubernetes Integrationによってすでに収集および使用されているため、デフォルトで除外されます。

- kube_
- container_
- machine_
- cadvisor_

New Relic のロギング

lowDataModeが有効になっている場合、fluent-bit.confファイルのFilterセクションでLabelsandAnnotationsがOffに設定されます。これは、この詳細がコンテナログファイルから削除されることを意味し、NewRelicへの全体的なデータの取り込みが減少します。

以下のフィールドが保持されます。

Allowlist_key container_name
Allowlist_key namespace_name
Allowlist_key pod_name
Allowlist_key stream
Allowlist_key log

ローデータモードのログ例

完全なログ記録

[
{
"cluster_name": "api-test",
"kubernetes": {
"annotations": {
"kubernetes.io/psp": "eks.privileged"
},
"container_hash": "fryckbos/test@sha256:5b098eaf3c7d5b3585eb10cebee63665b6208bea31ef31a3f0856c5ffdda644b",
"container_image": "fryckbos/test:latest",
"container_name": "newrelic-logging",
"docker_id": "134e1daf63761baa15e035b08b7aea04518a0f0e50af4215131a50c6a379a072",
"host": "ip-192-168-17-123.ec2.internal",
"labels": {
"app": "newrelic-logging",
"app.kubernetes.io/name": "newrelic-logging",
"controller-revision-hash": "84db95db86",
"pod-template-generation": "1",
"release": "nri-bundle"
},
"namespace_name": "nrlogs",
"pod_id": "54556e3e-719c-46b5-af69-020b75d69bf1",
"pod_name": "nri-bundle-newrelic-logging-jxnbj"
},
"message": "[2021/09/14 12:30:49] [ info] [engine] started (pid=1)\n",
"plugin": {
"source": "kubernetes",
"type": "fluent-bit",
"version": "1.8.1"
},
"stream": "stderr",
"time": "2021-09-14T12:30:49.138824971Z",
"timestamp": 1631622649138
}
]

lowDataModeを有効にした後のログレコード。

[
{
"cluster_name": "api-test",
"container_name": "newrelic-logging",
"namespace_name": "nrlogs",
"pod_name": "nri-bundle-newrelic-logging-jxnbj",
"message": "[2021/09/14 12:30:49] [ info] [engine] started (pid=1)\n",
"stream": "stderr",
"timestamp": 1631622649138
}
]

New Relic Pixieの統合

lowDataModeが有効になっている場合、 newrelic-pixie統合はPixieスパンでより重いサンプリングを実行し、収集間隔を10秒から15秒に短縮します。

lowDataMode 設定:

HTTP_SPAN_LIMIT: 750
DB_SPAN_LIMIT: 250
COLLECT_INTERVAL_SEC: 15

これらのパラメータやその他のパラメータのデフォルト設定は、 newrelic-pixie-integration Github repoにあります。

Kubernetesインテグレーションのアンインストール

Helmを使ってKubernetesインテグレーションをアンインストールするには、以下のコマンドを実行します。

bash
$
helm uninstall newrelic -n newrelic
Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.