• /
  • EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

Kubernetes APM 自動アタッチ

プレビュー

この機能はまだ開発中ですが、ぜひお試しください。

この機能は現在、弊社のプレリリース ポリシーに従ってプレビュー プログラムの一部として提供されています。

KubernetesAPM以前はKubernetes エージェントKubernetes APMKubernetesオペレーターとして知られていた 自動アタッチは、 エージェント デプロイメントとともに インストゥルメンテーションを自動化することで、 環境のフルスタック オブザーバビリティを合理化します。自動インストゥルメンテーションを有効にすると、開発者はAPMエージェントを手動で管理する必要がなくなります。 Kubernetes APM自動アタッチは、 APMエージェントを自動的にインストール、アップグレード、削除します。

現在、Java、.NET、Node.jsをサポートしています。 Python、Ruby に加え、追加言語 (PHP および Go) も開発中です。

使い方

  • MutatingWebHook は、インストール時に、ノードへのデプロイ ポッドのAPIリクエストのインターセプトに関与します。

  • 設定の指定を反映して、Podの仕様を変更してNR initコンテナと環境変数を追加します。

  • ポッドの確立後、New Relic APM エージェントはその中に格納されているアプリケーションにシームレスに統合されます。

Diagram showing how APM agents are auto injected

あなたが始める前に

オペレーターをインストールする前に、次の点を確認してください。

インストール

必要に応じて、 Kubernetes APM自動アタッチを個別にインストールするか、 Kubernetesインテグレーションと一緒にインストールするかを選択できます。

フルスタックのサバビリティエクスペリエンス 全体を活用するには、Kubernetes インテグレーションと一緒にインストールすることを強くお勧めします。

Kubernetesインテグレーションに加えてインストレーションをバンドルする(推奨)

KubernetesAPMnri-bundle自動接続チャートは、完全なKubernetes オブザーバビリティを可能にするために必要なすべてのコンポーネントのインストールを管理する チャートの一部です。

k8s-agents-operator.enabled=true問題を helm コマンドに追加するか、 values.yamlファイルに含めます。 Helm の使用方法の詳細については、「 Kubernetesインテグレーションのインストール」ページを参照するか、 nri-bundleチャートを確認してください。

問題を使用した Helm コマンドのサンプルを参照してください。

bash
$
helm repo add newrelic https://helm-charts.newrelic.com
$
$
helm upgrade --install newrelic-bundle newrelic/nri-bundle \
>
--set global.licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY \
>
--set global.cluster=CLUSTER_NAME \
>
--namespace=newrelic \
>
--set newrelic-infrastructure.privileged=true \
>
--set global.lowDataMode=true \
>
--set kube-state-metrics.enabled=true \
>
--set kubeEvents.enabled=true \
>
--set k8s-agents-operator.enabled=true \
>
--create-namespace

スタンドアロン インストール

Kubernetes APM自動アタッチをデフォルト設定でインストールするには、次のコマンドを実行します。

bash
$
helm repo add k8s-agents-operator https://newrelic.github.io/k8s-agents-operator
$
helm upgrade --install k8s-agents-operator k8s-agents-operator/k8s-agents-operator \
>
--namespace newrelic \
>
--create-namespace \
>
--set licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY

設定オプションの完全なリストについては、 READMEチャートを参照してください。

自動計装を構成する

クラスター内で APM 自動アタッチがすべて設定されたら、次のステップは、それを動作させるために必要な構成を展開することです。 これには、クラスタ内で少なくとも 1 つのインストゥルメンテーション カスタム リソース (CR) をアクティブにすることが含まれます。

インストゥルメンテーション CR で計画できる内容は次のとおりです。

  • インストゥルメンテーション CR の名前
  • インストゥルメンテーション CR が適用される場所 ( podLabelSelectornamespaceLabelSelectorに感謝)
  • APMエージェント (CR ごとに 1 つ)
  • APMエージェントバージョン
  • APM構成の問題 (環境変数)
  • ライセンスキー(オプション)

マニフェスト ファイルは、 APM自動アタッチをインストールしたのと同じネームスペース (デフォルトでは newrelic) に挿入する必要があります。

bash
$
kubectl apply -f ./values.yaml -n newrelic

セレクタの使い方

インストゥルメンテーション CR がいつAPMエージェントを挿入するかを知るには、セレクターを使用する必要があります。 2 つのラベル セレクターが用意されており、必要に応じて一緒に使用したり (論理 AND (&&) 演算子として機能)、個別に使用したりできます。

  • PodLabelSelector どのポッドをインストゥルメントする必要があるかをAPM自動アタッチに通知します。

    matchLabelを使用した例 (特定のタグと値を含むポッドを選択):

    ...
    podLabelSelector:r43
    matchLabels:
    app.kubernetes.io/name: flask-hello-world
    ...
  • NameSpaceLabelSelector ネームスペースレベルで自動インストゥルメントされたポッドを定義します。

    matchExpressionsを使用した例 (特定のタグと値を含むネームスペースを選択):

    ...
    namespaceLabelSelector:
    matchExpressions:
    - key: "kubernetes.io/metadata.name"
    operator: "In"
    values: ["backend"]
    ...

    ヒント

    kubernetes.io/metadata.nameラベルを適用することは、ネームスペースの名前に基づいて選択することと同じであることに注意してください。

両方のセレクターはmatchLabelmatchExpressionsをサポートします。

APMエージェント

インストゥルメンテーション CR 内でAPMエージェントとそのバージョンを指定する必要があります。 最新の機能を活用するには、最新バージョンを使用することをお勧めします。

画像

言語

利用可能なバージョン

ドットネット

newrelic-dotnet-init:latest

.NET

ジャワ

newrelic-java-init:latest

Java

ノードJS

newrelic-node-init:latest

ノード

パイソン

newrelic-python-init:latest

Python

ルビー

newrelic-ruby-init:latest

Ruby

次の例をご覧ください:

...
spec:
agent:
language: dotnet
image: newrelic/newrelic-dotnet-init:latest
...

APM設定

インストゥルメンテーション CR は、 APMエージェントの設定を合理化するために、ポッドに環境変数を挿入する機能を提供します。 次の例をご覧ください:

...
spec:
env:
# Example overriding the appName configuration by using a label of the pod
- name: NEW_RELIC_APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.labels['app.kubernetes.io/name']
...

上記の例では、環境変数を使用してエージェント設定をグローバルに構成する方法を示しています。 利用可能な設定オプションについては、各エージェントの設定ドキュメントを参照してください。

重要

これらの環境変数をアプリ デプロイメント マニフェストに挿入できます。

ライセンスキー(オプション)

インストールすると、 が作成され、それがデフォルトのライセンスになります。 APMテレメトリーを別のアカウントに送信する必要がある場合は、次の手順に従ってください。

  • 新しいライセンスキーを含むシークレットを作成するには、次のコマンドを実行します。

    bash
    $
    kubectl create secret generic newrelic-key-secret \
    >
    --namespace my-monitored-namespace \
    >
    --from-literal=new_relic_license_key=<NEW RELIC INGEST LICENSE KEY>
  • インストゥルメンテーション CR からシークレットを参照するには、次のコマンドを実行します。

    ...
    spec:
    licenseKeySecret: the-name-of-the-custom-secret
    ...

インストゥルメンテーション CR の例

アプリケーションのAPMインストゥルメンテーションを更新する

デフォルトでは、 Kubernetes APM自動アタッチは、対応するAPMエージェントの利用可能な最新バージョンを自動的にインストールします。

アプリケーションの監視が開始されると、更新を選択しない限り、新しいバージョンに自動的に更新されることはありません。 ポッドを再デプロイするか、デプロイメントを再起動することで、アプリケーションを更新できます。

アプリケーション内のAPMインストゥルメンテーションを削除します

アプリケーションからAPMインストゥルメンテーションを削除するには、使用される podLabelSelector または namespaceLabelSelector 内の一致するラベル セレクターを変更するか、インストゥルメンテーション CR を削除する必要があります。 次に、デプロイメントを再起動します。 削除プロセスには数秒しかかかりません。

Kubernetes APM自動アタッチを更新する

バンドル インストレーション

次のコマンドを使用して、 nri-bundleチャートの更新を実行します。

bash
$
k8s-agents-operator.enabled=true

スタンドアロン インストール

helm upgradeコマンドを実行して、Kubernetes APM 自動アタッチの新しいバージョンに更新します。

bash
$
helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic

Kubernetes APM自動アタッチのアンインストール

バンドル インストレーション

nri-bundle チャートをアンインストールするか、 Kubernetes APM自動アタッチのみを削除する場合は、次の引数で helm upgrade を実行します。

bash
$
k8s-agents-operator.enabled=false

スタンドアロン インストール

Kubernetes APM 自動アタッチをアンインストールして削除するには、次のコマンドを実行します。

bash
$
helm uninstall k8s-agents-operator -n newrelic

データを見つけて使用する

  • アプリケーションのサイトを取得し、 APMサマリーページを使用して問題を解決します。

  • Kubernetes の概要ページを確認してください。 モニターアプリケーションのコンテキストでKubernetesインサイト を提供します。

証明書

Kubernetes APM 自動アタッチは、必要に応じてcert-managerサポートできます。

  • このコマンドを実行して、 cert-manager Helm チャートをインストールします。

    bash
    $
    helm install cert-manager jetstack/cert-manager \
    >
    --namespace cert-manager \
    >
    --create-namespace \
    >
    --set crds.enabled=true
  • values.yamlファイルで、 admissionWebhooks.autoGenerateCert.enabled: falseadmissionWebhooks.certManager.enabled: trueを設定します。 その後、通常どおりチャートをインストールします。

利用可能なチャートリリース

利用可能なチャートを表示するには、次のコマンドを実行します。

bash
$
helm search repo k8s-agents-operator

よくあるご質問

トラブルシューティング

アプリケーションがインストゥルメントされていない場合は、次の点を確認してください。

  • Kubernetes APM 自動アタッチをインストールした後は、必ず再デプロイするか、新しいアプリケーションをデプロイしてください。 自動インストゥルメントされた新しいアプリケーションのみがクラスタ内でデプロイされることに注意してください。

  • 次のコマンドを実行して、アプリのネームスペースにシークレットがインストールされていることを確認します。

    bash
    $
    kubectl get secrets -n NAMESPACE
  • podLabelSelectorの使用時に CR による自動インストゥルメンテーションを有効にする必要なラベルがポッドにあることを確認してください。 同様に、CR 内でnamespaceLabelSelector使用する場合は、ネームスペースに必要なラベルがあることを確認してください。

    bash
    $
    kubectl get pod POD_NAME -n NAMESPACE -o jsonpath='{.metadata.annotations}'
  • APM 自動アタッチ ポッドからログを取得するには、次のコマンドを実行します。

    bash
    $
    kubectl logs AGENT_OPERATOR_POD -n newrelic
  • このコマンドを実行して、 initコンテナがアプリケーションのポッド内に挿入され、正常に実行されたことを確認します。

    bash
    $
    kubectl describe pod POD_NAME -n NAMESPACE

注釈を必要とした以前のバージョンから移行する方法

バージョン 0.14 以降、アプリケーションが自動インストゥルメントされるために、アプリケーション デプロイメント マニフェスト内の注釈は必要なくなりました。

0.14 より前のバージョンをアンインストールし、最新リリースのインストールを続行することをお勧めします。 インストゥルメンテーション CR 内のラベル セレクターを利用すると、 APMエージェントの正確なデプロイメントが可能になり、それによって注釈の要件が不要になります。

サポート

Kubernetes APM自動アタッチは現在、Java、.NET、Node.jsなどのAPMエージェントの最新バージョンをサポートしています。 Python と Ruby。

一般提供開始後は、各APMエージェントの最新 3 バージョンがサポートされます。

問題がある場合は:

Copyright © 2024 New Relic株式会社。

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