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

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

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

問題を作成する

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

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

Helmを使用して統合をインストールするには、当社のKubernetes自動化インストーラーをお勧めします。このインストーラーは、いくつかの構成オプションを求め、秘密と値を自動的に入力します。さらに、私たちの自動インストーラは、Helmリリースではなくプレーンマニフェストとして統合をインストールすることもできます。自動インストーラの使用方法の詳細については、 Kubernetes integration: install and configure を参照してください。

インストーラの起動

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

互換性および要件

お使いのマシンに Helm がインストールされていることを確認してください。Kubernetes Integrationのバージョン3には、Helmのバージョン3が必要です。まだHelm 2を使用している場合は、統合のレガシーバージョンをインストールすることができます。

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 DashboardやKubernetes Cluster Explorerで表示されるデータのほとんどを報告する役割を担っています。
  • newrelic-logging : New Relic の Fluent Bit output plugin を使って、ログを簡単に New Relic に転送する DaemonSet を提供します。
  • nri-kube-events : クラスタのイベント(例えば kubectl get events)を収集し、New Relic に報告します。
  • nri-prometheus : New Relic の Prometheus OpenMetrics Integration, クラスタに存在する Prometheus のエンドポイントを自動的にスクレイピングし、 メトリクスを New Relic にレポートします.
  • nri-metadata-injection : 最小限の MutatingAdmissionWebhook をセットアップし、コンテナにいくつかの環境変数を注入します。これらには、クラスターと New Relic のインストールに関するメタデータが含まれており、後に APM を使用してインスツルメンテーションされたアプリケーションによってピックアップされ、 APM とインフラストラクチャのデータを相関させることができます
  • nri-statsd : New Relic StatsD の統合。

便宜上、New Relic は nri-bundle チャートを提供しており、これは上述のチャートの選択可能なセットを引き出すものです。 nri-bundle は、必要に応じて Kube State Metrics と Pixie もインストールしてくれます。

これらのチャートを個別にインストールすることも可能ですが、Kubernetesのデプロイメントには、 nri-bundle チャートを使用することを強くお勧めします。これは、すべてのチャートの値が一貫していることを保証し、どのコンポーネントをインストールするかを完全に制御できるだけでなく、すべてのコンポーネントを Helm dependencies として設定することができるからです。これは、当社の自動インストーラが使用し、参照するチャートと同じです。

nri-bundle を Helm でインストール、設定する。

  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がインストールされます。 変更点はこちら

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

  • global.licenseKey=YOUR_NEW_RELIC_LICENSE_KEY: お客様のアカウントの有効なライセンスキーを設定する必要があります。
  • global.cluster=K8S_CLUSTER_NAME: New RelicのUIでクラスタを識別するために使用されるため、New Relicアカウントで設定された他のKubernetesクラスタでは使用されていない記述的な値を指定します。
  • ksm.enabled=true: これを true に設定すると、Kube State Metrics (KSM) が自動的にインストールされます。これは、当社の統合を実行するために必要です。KSMがすでにクラスタ内に存在する場合は、別の名前空間であっても、これをfalseに設定することができます。
  • prometheus.enabled=true: Prometheus OpenMetricsインテグレーションが展開され、クラスタ内のPrometheusエンドポイントから自動的にデータを収集します。
  • webhook.enabled=true: 最小限のwebhookをインストールし、環境変数を追加することで、 New Relic APMでインスツルメントされたアプリケーションを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. One newrelic-nrk8s-ksm pod.
  2. newrelic-nrk8s-kubelet ポッドを、クラスタの各ノードに1つずつ用意します。
  3. クラスターの各マスターノードに、 newrelic-nrk8s-control-plane ポッドがあれば1つ。
  4. 1つの newrelic-kube-state-metrics ポッド(KSMをインストールに含めていた場合)。
  5. newrelic-nri-kube-events ポッド(Kubernetesのイベントレポートを有効にしている場合)が1つ。
  6. 1つの newrelic-nri-prometheus ポッド(Prometheusの統合を有効にした場合)。
  7. Loggingの統合を有効にしている場合は、クラスタの各ノードに1つの newrelic-newrelic-logging ポッド。

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

インテグレーションの設定

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

個々の統合コンポーネントを設定するには、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秒の間の間隔を選択することをお勧めします。

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

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データページの詳細検索を参照してください。

データ取り込みを減らす

当社のチャートでは、詳細な情報を落とす代わりに、取り込まれるデータ量を減らすオプションの設定がサポートされています。これを有効にするには、 global.lowDataModetrue nri-bundle のチャートで設定します。

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 セクション で Labels and Annotations が Off に設定されます。これは、この詳細がコンテナのログファイルから削除されることを意味し、New Relicへのデータ取り込み全体が減少します。

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

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.