• /
  • ログイン
  • 無料アカウント

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

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

問題を作成する

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-v3 :メインのKubernetes統合とインフラストラクチャエージェントが含まれています。これは、New Relic Kubernetesエクスペリエンスのコアコンポーネントであり、KubernetesダッシュボードとKubernetesクラスターエクスプローラーに表示されるほとんどのデータのレポートを担当します。
  • newrelic-loggingDaemonSetにNewRelicのFluentBit出力プラグインを提供して、ログをNewRelicに簡単に転送します。
  • nri-kube-events :クラスターイベント( kubectl get eventsなど)を収集してNewRelicに報告します。
  • nri-prometheus :NewRelicのPrometheusOpenMetrics統合は、クラスターに存在するPrometheusエンドポイントを自動的にスクレイプし、 メトリックをNewRelicに報告します
  • 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_
  1. New Relic Helm chartのリポジトリを追加します。
bash
$
helm repo add newrelic https://helm-charts.newrelic.com
  1. 構成を定義するために使用されるvalues-newrelic.yamlという名前のファイルを作成します。
global:
licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
cluster: _K8S_CLUSTER_NAME_
prometheus:
# Automatically scrape prometheus metrics for annotated services in the cluster
# Collecting prometheus metrics for large clusters might impact data usage significantly
enabled: true
lowDataMode: true # Skip ingesting cluster-level metrics
webhook:
# Deploy our webhook to link APM and Kubernetes entities
enabled: true
kubeEvents:
# Report Kubernetes events
enabled: true
logging:
# Report logs for containers running in the cluster
enabled: true
ksm:
# 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 \
>
--devel \
>
--dry-run \
>
--debug

ヒント

--develを指定すると、現在ベータ版であり、2022年春に一般提供される予定のバージョン3のソリューションをインストールすることになります。v2よりも大幅に改善されているため、試してみることを強くお勧めします。何が変更されたかを確認してください

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

  • global.licenseKey=YOUR_NEW_RELIC_LICENSE_KEY:アカウントの有効なライセンスキーに設定する必要があります。
  • global.cluster=K8S_CLUSTER_NAME:New Relic UIでクラスターを識別するために使用されるため、NewRelicアカウントで構成されている他のKubernetesクラスターでは使用されない説明的な値である必要があります。
  • ksm.enabled=true:これをtrueに設定すると、統合を実行するために必要なKube State Metrics(KSM)が自動的にインストールされます。 KSMがクラスターにすでに存在する場合は、別の名前空間にある場合でも、これをfalseに設定できます。
  • prometheus.enabled=true:クラスターに存在するPrometheusエンドポイントからデータを自動的に収集するPrometheusOpenMetrics統合を展開します。
  • webhook.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 \
>
--devel
  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(レガシー)でのインストール

統合を構成する

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のグラフ名の下にそれらを配置する必要があることに注意してください。

スクラップ間隔の変更

Kubernetes Integration v3以降では、クラスターからメトリクスを収集する間隔を変更することができます。これにより、データの解像度と使用量の間のトレードオフを選択することができます。最適な使用感を得るためには、15秒から30秒の間の間隔を選択することをお勧めします。

スクレイプ間隔を変更するには、 newrelic-infratructureセクションの下のvalues-newrelic.yamlに以下を追加します。

common:
config:
interval: 25s

という感じで終わってしまいます。

global:
licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_
cluster: _K8S_CLUSTER_NAME_
# ... Other settings as shown above
# Configuration for newrelic-infrastructure
newrelic-infrastructure:
# ... Other settings as shown above
common:
config:
interval: 25s

重要

interval40sより大きい値に設定することは許可されていません。

変更可能な設定の全リストは、 チャートの README にあります。

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 \
    >
    --devel

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

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

Kubernetesデータの使用

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

データ取り込みを減らす

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

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

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.