Instana バックエンドのインストール
Custom Edition用の Instana バックエンドをインストールします。
Instana バックエンドをインストールするには、 Core オブジェクトを作成し、関連する Unit オブジェクトを作成するという、いくつかの主要な手順を実行します。 メイン・ステップを開始する前に、いくつかの準備ステップを実行して名前空間とシークレットを作成します。
ヒント: Instana ( kubectl )プラグインには、名前空間やカスタムリソース用の YAML テンプレートを生成するコマンドが用意されており、導入の助けとなります。
kubectl instana template --output-dir <dir>
前提条件
- Instana の kubectl プラグインをインストールする必要があります。
- 必要なデータ・ストアが稼働している必要があります。 「データストアの設定」 を参照してください。
- Instana Enterpriseオペレーターがインストールされている必要があります。
準備ステップ
Core および Unitを作成する前に、 artifact-public.instana.io レジストリーから Core および Unit イメージをプルできるように、名前空間を作成し、名前空間の一連のシークレットを配置する必要があります。
名前空間の作成
Core および Units は、異なる名前空間にインストールする必要があります。 各 Core には、独自の名前空間が必要です。 同じ コア に属する複数の ユニット を同じ名前空間にインストールできます。
名前空間の名前は自由に選択できます。 このガイドでは、名前空間 instana-core および instana-units を使用します。
Instana Enterpriseオペレーターは、名前空間にラベル app.kubernetes.io/name が存在することを必要とします。 この値は名前空間の名前でなければなりません。 これらのラベルがない場合、オペレーターによってラベルが追加されます。 特にデプロイ用に GitOps を使用する場合は、これらのラベルを直接追加するのが理にかなっています。
「 YAML 」という名前のファイル namespaces.yamlを作成します。 以下の例を参照してください。
apiVersion: v1
kind: Namespace
metadata:
name: instana-core
labels:
app.kubernetes.io/name: instana-core
---
apiVersion: v1
kind: Namespace
metadata:
name: instana-units
labels:
app.kubernetes.io/name: instana-units
次に、以下のコマンドを実行してファイルを適用します。
kubectl apply -f namespaces.yaml
イメージのプル用シークレットの作成
artifact-public.instana.io をミラーリングする独自の Docker レジストリーがあり、プル・シークレットを必要としない場合を除き、以下のいずれかの方法を使用して、作成した 2 つの名前空間にイメージ・プル・シークレットを作成する必要があります。
シークレットを直接作成します。
kubectl create secret docker-registry instana-registry \ --namespace=<namespace> \ --docker-username=_ \ --docker-password=<agent_key> \ --docker-server=artifact-public.instana.io- < namespace_name> を、作成したばかりの Core の名前空間または Units の名前空間の名前に置き換えます。
- < agent_key> をエージェント・キーに置き換えます。
「 YAML 」を適用せずに、そのシークレット用の「 YAML 」を作成します。 秘密は作成されずに印刷されます。
kubectl create secret docker-registry instana-registry \ --namespace=<namespace> \ --docker-username=_ \ --docker-password=<agent_key> \ --docker-server=artifact-public.instana.io \ --dry-run=client \ --output=yaml次に、シークレットを作成します。
kubectl create -f <secret-file-name.yaml> --namespace <namespace>- <secret-file-name> を「 YAML 」というファイル名に置き換えてください。
- < namespace_name> を、作成したばかりの Core の名前空間または Units の名前空間の名前に置き換えます。
(任意):社内イメージレジストリで認証が必要な場合は、イメージプル用シークレットを作成してください。
kubectl create secret docker-registry <secret_name> --namespace <namespace> \ --docker-username=<registry_username> \ --docker-password=<registry_password> \ --docker-server=<internal-image-registry>:<internal-image-registry-port> \ --docker-email=<registry_email>
ライセンスファイルのダウンロード
Instana をアクティブ化するには、SalesKey に基づくライセンスが必要です。 Instana の kubectl プラグインを使用してこのライセンスファイルを取得するには、次のコマンドを実行してください:
kubectl instana license download --sales-key <SalesKey>
あるいは、ライセンスを手動でダウンロードする必要がある場合は、以下のコマンドを実行します。
curl https://instana.io/onprem/license/download/v2/allValid?salesId=<your-SalesKey> -o license.json
このライセンス・キーは、後で生成される Unitsの config.yaml ファイルの一部です。
秘密の作成
シークレットの値は、 コア ・リソースおよび ユニット ・リソースを使用して構成されません。 これらの値は、Kubernetes シークレットに格納する必要があります。
TLS 証明書の場合、 Core のネームスペース内にシークレットを作成 instana-tls する必要があります。
「コア」 および 「ユニット」 リソースごとに、対応する名前のシークレットをそれぞれの名前空間に作成する必要があります。
シークレットにはconfig.yamlファイルが必要で、その構造はそれぞれCoreSpecまたはUnitSpecに似ており、認証情報を追加する。
秘密のインスタナ-TLS
ingressの設定には、secret instana-tls が必要です。 シークレットは「 Core 」ネームスペース内に作成する必要があります。
| キー | 値 |
|---|---|
tls.crt |
Instana に到達可能なドメインの TLS 証明書。 CN(共通名)は baseDomain 、 CoreSpec で設定されているものと一致している必要があります。 |
tls.key |
TLS キー。 |
kubernetes.io/tls。シークレット instana-tlsを作成するには、以下の手順を実行します。
以下の例に示すように、
san.confファイルを作成します。[req] default_bits = 4096 prompt = no default_md = sha256 x509_extensions = req_ext req_extensions = req_ext distinguished_name = dn [ dn ] C=<two_letter_country_code> ST=<site> L=<location> O=<organization> OU=<organizational_unit> emailAddress=<email_address> CN = <base_domain> [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = <base_domain> DNS.2 = agent-acceptor.<base_domain> DNS.3 = oopamp-acceptor.<base_domain> DNS.4 = otlp-grpc.<base_domain> DNS.5 = otlp-http.<base_domain> DNS.6 = <unit_name>-<tenant_name>.<base_domain><base_domain> を、 Instana のバックエンドをインストールしたいドメイン名に置き換えてください。 < country>、 < site>、 < location>、 < organization>、 < organizational_unit>、 < email_address>、 < unit_name> 、および < tenant_name> は、実際の情報に置き換えてください。
以下のステップのいずれかを実行します。
社内またはパブリックのCAから取得した証明書を使用してください。
自己署名証明書を作成する:
openssl req -x509 -newkey rsa:2048 -keyout tls.key -out tls.crt -days 365 -nodes -config san.conf
証明書を格納するシークレットを作成します。
kubectl create secret tls instana-tls --namespace instana-core \ --cert=path/to/tls.crt \ --key=path/to/tls.key
核心の秘密
以下の例に示すように、内容を含む config.yaml ファイルを作成します。 このファイルの構造は、以下のようにしてさらに作成される CoreSpec の構造とまったく同じです。
シークレット値は、このコア・シークレットに入れる必要があります。 それ以外のものはすべて、 CoreSpecに入ります。
# Diffie-Hellman parameters to use
dhParams: |
-----BEGIN DH PARAMETERS-----
<snip/>
-----END DH PARAMETERS-----
# The repository password for accessing the Instana agent repository.
# Use the download key that you received from us
repositoryPassword: mydownloadkey
# The sales key you received from us
salesKey: mysaleskey
# Seed for creating crypto tokens. Pick a random 12 char string
tokenSecret: mytokensecret
# Configuration for raw spans storage
storageConfigs:
rawSpans:
# Required if using S3 or compatible storage bucket.
# Credentials should be configured.
# Not required if IRSA on EKS is used.
s3Config:
accessKeyId: ...
secretAccessKey: ...
# Required if using Google Cloud Storage.
# Credentials should be configured.
# Not required if GKE with workload identity is used.
gcloudConfig:
serviceAccountKey: ...
# SAML/OIDC configuration
serviceProviderConfig:
# Password for the key/cert file
keyPassword: mykeypass
# The combined key/cert file
pem: |
-----BEGIN RSA PRIVATE KEY-----
<snip/>
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<snip/>
-----END CERTIFICATE-----
# Required if a proxy is configured that needs authentication
proxyConfig:
# Proxy user
user: myproxyuser
# Proxy password
password: my proxypassword
emailConfig:
# Required if SMTP is used for sending e-mails and authentication is required
smtpConfig:
user: mysmtpuser
password: mysmtppassword
# Required if using for sending e-mail.
# Credentials should be configured.
# Not required if using IRSA on EKS.
sesConfig:
# The sesConfig configuration is mandatory when you use the Simple Email Service (SES) of Amazon for sending emails from the application. The sesConfig section includes two fields: accessKeyId and secretAccessKey, which are used to authenticate the application with Amazon SES allowing it to send emails on behalf of the specified AWS account.
accessKeyId: ...
secretAccessKey: ...
# Optional: You can add one or more custom CA certificates to the component trust stores
# in case internal systems (such as LDAP or alert receivers) which Instana talks to use a custom CA.
# Optional: You can use the following fields to override the default values.
geoDbUser: <GeoDB download username>
geoDbPassword: <GeoDB download password>
customCACert: |
-----BEGIN CERTIFICATE-----
<snip/>
-----END CERTIFICATE-----
# Add more certificates if you need
# -----BEGIN CERTIFICATE-----
# <snip/>
# -----END CERTIFICATE-----
datastoreConfigs:
kafkaConfig:
adminUser: strimzi-kafka-user
adminPassword: <RETRIEVED_FROM_SECRET>
consumerUser: strimzi-kafka-user
consumerPassword: <RETRIEVED_FROM_SECRET>
producerUser: strimzi-kafka-user
producerPassword: <RETRIEVED_FROM_SECRET>
elasticsearchConfig:
adminUser: elastic
adminPassword: <RETRIEVED_FROM_SECRET>
user: elastic
password: <RETRIEVED_FROM_SECRET>
postgresConfigs:
- user: <username in Postgres data store>
password: <RETRIEVED_FROM_SECRET>
adminUser: <username in Postgres data store>
adminPassword: <RETRIEVED_FROM_SECRET>
cassandraConfigs:
- user: instana-superuser
password: <RETRIEVED_FROM_SECRET>
adminUser: instana-superuser
adminPassword: <RETRIEVED_FROM_SECRET>
clickhouseConfigs:
- user: clickhouse-user
password: <USER_GENERATED_PASSWORD>
adminUser: clickhouse-user
adminPassword: <USER_GENERATED_PASSWORD>
注:
サードパーティ製の Kubernetes オペレーターを使用して Instana データストアを設定する場合、 「ユーザー名とパスワードを含む最終構成ファイルの確認」 セクションに記載されているファイル
config.yamlの一部datastoreConfigsを、このCoreconfig.yamlSecretファイルにコピーする必要があります。Diffie-Hellman パラメーターを指定します。 Diffie-Hellman パラメーターを生成するには、次のコマンドを実行します。
openssl dhparam -out dhparams.pem 2048IDP と交換されるメッセージの署名または検証のための暗号化された鍵を構成する必要があります。 暗号化されていない鍵は、受け入れられません。
- 以下のコマンドを実行して、鍵を作成します。
openssl genrsa -aes128 -out key.pem 2048 - 以下のコマンドを実行して、証明書を作成します。
openssl req -new -x509 -key key.pem -out cert.pem -days 365 - 以下のコマンドを実行して、2 つを 1 つのファイルに結合します。
cat key.pem cert.pem > sp.pem
- 以下のコマンドを実行して、鍵を作成します。
コアの名前空間に同じ名前のシークレットを作成する必要があります。 例えば、Core オブジェクトの名前が
instana-coreの場合、以下のコマンドを実行して秘密を作成します。kubectl create secret generic instana-core --namespace instana-core --from-file=path/to/config.yamlconfig.yamlファイルを構成することにより、複数の証明書を連結できます。 以下の例を参照してください。customCACert: | -----BEGIN CERTIFICATE----- 74ZaqWwi/JDwLnpi4HnW7h6OlM39I9qeKv1o9qbGUaXdgL+IkcJB4PVgCgeQKGlZ B3ng/iOFe47dTV6Dx3D5v3j7lxuihPJXwcHtRRjSD0GBH0IJeQAL2fK3rk4ldqhI FouqgoyjdONrV0YInRdNWzpl2Nxob33B/U4pwdvKVqDzWDk17+tZEdFvaoqzXFgt hGfnmDtNiGVSLrJjbH+lwN0JHVeUSZHQ0iTfHOna5f39ConGgwIkVDVsDjfYqAW1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 1fm2rJVtuImDPnFMjH75d3SwYPyca+4ZLZwnXgMjE7PJFtUe0niEr40wsPuq4i5L B6LrAoGBAPl/PnwPBdst4AhbNn8FmxLje/DZWtpmZoyITBDq129KCM4xGjS3FyDY 7l69VdaiiFDBXHVDQ6SxQ85z69rk45oGgaU0AVzOb+ZCfTocYb6/xcOVFhLc8h6E HzdlW/vjyvYij+o5hNAyo+2VV7y8DZ92V0fMaVsxQzcU+6vKy6VRAoGBAPK/Jnqg I0MWhP7zgWo4g+9TM67OxeYkXHV1UUEirjH7LQrMhomlJ7yEYUencfY1md/Fssl1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- 3LzEkVtMxHiusHVq7a7q8ZMMNEQpdSkPcJU7AoGBAIdw9gjU9IztBJbSbgpwweWu sP8W6C1qyfSEgRB/fEO6ec8EtnRjZFOo9m3xwOI6+Yrsn+fir7EtB41U3x8Oii8K 2Koji7YJqnWvEMfGQ7CxP3jNRn9EvfNPCaG6rkbpX4zuMN48e0xzQwvx/G3FK/d6 waqiKpCXFdwStIHUfS3bAoGAUzo5FBmlsJoBtn9fkiIBWV5a3Nkt6IF+yS+JkqzO AoIA0ICjJ+DabIUoqtpS9VQ0wcAgCo6T5SMrBWOJi7yVaFgMqfe3Sq5tochSI7DC -----END CERTIFICATE-----注: コンポーネントの信頼ストアに、1つ以上のカスタムCA証明書を追加することができます。 LDAP やアラート受信システムなどの内部システムについては、 Instana はカスタムCAを使用します。
ユニットの秘密
以下の例に示すように、内容を含む config-unit.yaml ファイルを作成します。 このファイルの構造は、以下のようにしてさらに作成される UnitSpec の構造とまったく同じです。
シークレット値は、このユニット・シークレットに入れる必要があります。 その他はすべて、 UnitSpecに入ります。
# The initial user of this tenant unit with admin role, default admin@instana.local.
# Must be a valid e-mail address.
# NOTE:
# This only applies when setting up the tenant unit.
# Changes to this value won't have any effect.
initialAdminUser: myuser@example.com
# The initial admin password.
# NOTE:
# This is only used for the initial tenant unit setup.
# Changes to this value won't have any effect.
initialAdminPassword: mypass
# A list of Instana licenses. Multiple licenses may be specified.
licenses: [ "license1", "license2" ]
# A list of agent keys. Specifying multiple agent keys enables gradually rotating agent keys.
agentKeys:
- myagentkey
# The download key that you received from us (in the license e-mail, this is called initial agent key).
downloadKey: mydownloadkey
注:
licensesフィールドを構成するには、以下のようにして、 「ライセンス・ファイルのダウンロード」 セクションでダウンロードしたライセンスを取得します。# cat /path/to/license.json && echo ["abcdefghijklmnopqrstuvwxyz0123456789"]ユニットの名前空間に同じ名前のシークレットを作成する必要があります。 例えば、 Unit オブジェクトの名前が
tenant0-unit0である場合、以下のコマンドを実行して秘密を作成します。kubectl create secret generic tenant0-unit0 --namespace instana-units --from-file=config.yaml=/path/to/config-unit.yaml
コアの作成
コア は、共有コンポーネントを表し、データ・ストア・アクセスの構成を担当します。 結果として、ほとんどの構成がここで行われます。
詳細については、 『 API リファレンス』 を参照してください。
Core カスタム・リソースには、バージョン instana.io/v1beta2 および種類 Coreが必要です。 「コア」 の構成は、 spec セクションに移動します。
core.yaml ファイルを作成します。 Core の構成は、 spec セクションにあります。
apiVersion: instana.io/v1beta2
kind: Core
metadata:
namespace: instana-core
name: instana-core
spec:
...
IBM Z® および LinuxONE に対する許容誤差とノードセレクタを指定する ( s390x )
クラスタ内の少なくとも1つのノードが「untainted」であり、ラベルを持っていない node-role.kubernetes.io/monitor: "true"ことを確認してください。 tolerations とノードセレクタを指定するには、 core.yaml 以下の行を に追加してください。
spec:
tolerations:
- key: node.instana.io/monitor
operator: Equal
effect: NoSchedule
value: "true"
nodeSelector:
node-role.kubernetes.io/monitor: "true"
基本構成
以下のように、いくつかの基本構成を行います。
apiVersion: instana.io/v1beta2
kind: Core
metadata:
namespace: instana-core
name: instana-core
spec:
# The domain under which Instana is reachable
baseDomain: <instana.example.com>
# Depending on your cluster setup, you may need to specify an image pull secret.
imagePullSecrets:
- name: my-registry-secret
# This configures an SMTP server for sending e-mails.
# Alternatively, Amazon SES is supported. Please see API reference for details.
emailConfig:
smtpConfig:
from: smtp@example.com
host: smtp.example.com
port: 465
useSSL: true
CPU/メモリリソース
オペレーターは、個々のコンポーネント・ポッドに割り当てられるリソースを決定する一連の事前定義リソース・プロファイルを使用します。 以下のプロファイルを使用できます。 デフォルトでは、何も構成されていない場合は medium が使用されます。
smallmediumlarge
spec:
resourceProfile: large
さらに、コンポーネント・ポッドごとにカスタム CPU およびメモリー・リソースを構成できます。 以下の例では、 filler コンポーネントが使用されます。 filler を、使用するコンポーネントに置き換え、提供する合計を使用して CPU およびメモリー・リソースを指定します。
spec:
componentConfigs:
- name: filler
resources:
requests:
cpu: 2.5
memory: 5000Mi
limits:
cpu: 4
memory: 20000Mi
エージェント・アクセプター
以下の設定は非推奨です。 「ゲートウェイ設定」 で指定された設定を使用してください。
アクセプターとは、 Instana エージェントがトレースやメトリクスを Instana バックエンドに送信するために到達する必要があるエンドポイントのことです。 アクセプターは通常、以前に 「基本構成」 セクションで構成された baseDomain のサブドメインです。
spec:
agentAcceptorConfig:
host: ingress.<instana.example.com>
port: 443
ゲートウェイ構成
以下の種類のイングリッストラフィックについて、ホストとポートを設定できます:
- Instana エージェント
- シンセティック
- サーバーレス
- OTLP (HTTP/gRPC)
- EUM
- OpAMP
各種 Instana アクセプタのホストとポートを設定するには、 CoreSpec に以下の設定を追加してください:
host が空の場合、デフォルト値はベースドメインとなります。また、ポートフィールドが空の場合、デフォルト値は443となりますspec:
gatewayConfig:
enabled: true # enables gateway-v2 and gateway-controller
acceptors:
agent:
host: ingress.<instana.example.com>
port: 443
opamp:
host: opamp-acceptor.<instana.example.com>
port: 443
otlp:
http:
host: otlp-http.<instana.example.com>
port: 443
grpc:
host: otlp-grpc.<instana.example.com>
port: 443
eum:
host: eum.<instana.example.com>
port: 443
synthetics:
host: synthetics.<instana.example.com>
port: 443
serverless:
host: serverless.<instana.example.com>
port: 443
以下の例は、さまざまな要件に応じてアクセプターのトラフィック取り込みを設定する方法を示しています:
単一のポート(443)でサブドメインを使用する。この方法により、サブドメインを使用して各アクセプターへのトラフィックを区別しつつ、公開するポートを1つ(443)に限定することができます。
spec: acceptors: agent: host: ingress.<instana.example.com> port: 443 opamp: host: opamp-acceptor.<instana.example.com> port: 443 otlp: http: host: otlp-http.<instana.example.com> port: 443 grpc: host: otlp-grpc.<instana.example.com> port: 443 eum: host: eum.<instana.example.com> port: 443 synthetics: host: synthetics.<instana.example.com> port: 443 serverless: host: serverless.<instana.example.com> port: 443単一のドメインで異なるポートを使用する この方法により、単一のドメインを使用しつつ、ポート番号に基づいて受信トラフィックを区別することができます。 「Custom Edition 」 1.3.0 以降のみ、単一のドメインで設定できます。
spec: acceptors: agent: port: 1444 otlp: http: port: 4318 grpc: port: 4317 eum: port: 1555 synthetics: port: 1666 serverless: port: 1777この場合、クラスタ内のロードバランサーの設定を更新し、異なるアクセプタポートを公開する必要があります。 「ロードバランサーの設定」および「 DNS 」を参照してください。
単一のインジェストドメインのサポートを有効にする
カスタムエディション環境では、すべてのテナントのトラフィックを単一のベースドメイン経由でルーティングできます。 この動作を有効にするには、 CoreSpec で次のプロパティを設定してください:
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
...
- name: config.url.format.pathStyle
value: "true"
...
この動作を有効にすると、すべての Instana テナントのUIにアクセスするための URL は、 <unitname>-<tenantname>.<basedomain>.comではなく <basedomain>.com/<unitname>/<tenantname> で提供されます。 「 Instana 」のすべてのIngressトラフィックは、「 ゲートウェイ設定 」 の2番目の例にある設定と組み合わせることで、 DNS 内の単一のAレコードを経由してルーティングできます。
LoadBalancer サービスの自動作成
Custom Edition 環境では、 gateway-v2 コンポーネント用の KubernetesLoadBalancer サービスの自動作成がサポートされています。 LoadBalancer のサービスを手動で作成する必要はありません。
この機能を有効にするには、 CoreSpec に以下の設定を追加してください:
spec:
gatewayConfig:
enabled: true
gateway:
loadBalancerConfig:
enabled: true # enables automatic loadbalancer creation
ip: <your public IP>
externalTrafficPolicy: Local # default
annotations:
your-annotation-key: your-annotation-value
Gateway-v2 での「 TLS 」の終了を無効にする
この機能を有効にする前に、すべての Instana のインバウンドトラフィックを gateway-v2 サービスにルーティングするためのフロントプロキシがデプロイされていることを確認してください。 各アクセプタごとに個別のポートが設定されている場合は、フロントプロキシがトラフィックをそれらのポートに転送するようにしてください。 gateway-v2 上のポートは、フロントプロキシによって公開されるポートと1対1で対応していなければなりません。
Custom Edition 環境では、 TLS による接続終了を無効にする(つまり、 SSL を含まない着信トラフィックを受け入れる)ことも可能です。 このオプションは、Custom Edition 環境の前に、 TLS の接続終了を処理するフロントプロキシを展開する場合に役立ちます。
この動作を有効にするには、 CoreSpec に以下の設定を追加してください:
spec:
gatewayConfig:
enabled: true
disableTLS: true # disables TLS termination for all ingress traffic
Rawのストレージ容量
生のスパン・データを保管するには、以下の 3 つのオプションのいずれかを使用する必要があります。
- S3 (または互換)
- Google Cloud Storage (GCS)
- Azure ファイル・システム
- ファイル・システム
S3 (または互換)
S3 エンドポイントは、リージョンによって異なります。
S3 (または互換性のあるもの) を使用して生スパン・データを保管するには、以下の例に示すように Core を構成します。
spec:
storageConfigs:
rawSpans:
s3Config:
# Endpoint address of the object storage.
# S3 Endpoint Ref: https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region
endpoint:
# Region.
region: eu-central-1
# Bucket name.
bucket: mybucket
# Prefix for the storage bucket.
prefix: myspans
# Storage class.
storageClass: STANDARD
# Bucket name for long-term storage.
bucketLongTerm: mybucket
# Prefix for the long-term storage bucket.
prefixLongTerm: myspans-longterm
# Storage class for objects that are written to the long-term bucket.
storageClassLongTerm: STANDARD
# If using IRSA
# Appropriate IAM Role should be provisioned including IAM policy with sufficient privileges.
serviceAccountAnnotations:
eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-role
accessKeyId注: また、当該セクションに規定 核心の秘密されている secretAccessKey とおりに、その コア 秘密に踏み込まなければならない。 あるいは、 サービスアカウント用のIAMロールもサポートされています。Google Cloud Storage
GCS を使用して生のスパン・データを保管するには、 Core を以下のように構成します。
spec:
storageConfigs:
rawSpans:
gcloudConfig:
# Bucket name.
bucket: mybucket
# Prefix for the storage bucket.
prefix: myspans
# Storage class.
storageClass: STANDARD
# Bucket name for long-term storage.
bucketLongTerm: mybucket
# Prefix for the long-term storage bucket.
prefixLongTerm: myspans-longterm
# Storage class for objects that are written to the long-term bucket.
storageClassLongTerm: STANDARD
# If using Workload Identity
serviceAccountAnnotations:
iam.gke.io/gcp-service-account: rawspans@myproject.iam.gserviceaccount.com
serviceAccountKey とおり、Core Secret に設定する必要があります。 あるいは、 Workload Identity もサポートされています。Azure ファイル・システム
未加工のスパン・データを保管するために Azure Filesystem を使用するには、以下の手順を実行します。
- ストレージ・アカウント名とボリュームを使用してシークレットを作成します。
kubectl create secret generic storage-account --from-literal=azurestorageaccountname={storage_account_name} --from-literal=azurestorageaccountkey={storage_account_key} -n instana-core pv.yamlを作成して、永続ボリュームを作成します。apiVersion: v1 kind: PersistentVolume metadata: name: my-nfs-volume spec: capacity: storage: 100Gi accessModes: - ReadWriteMany azureFile: secretName: storage-account shareName: <storage_account_name> readOnly: false persistentVolumeReclaimPolicy: Retain- 以下の例に示すように、 Core を構成します。
spec: storageConfigs: rawSpans: pvcConfig: accessModes: - ReadWriteMany resources: requests: storage: 100Gi volumeName: my-nfs-volume
ファイル・システム
生のスパン・データを保管するためにファイル・システムを使用するには、 「コア」 を以下のように構成します。
spec:
storageConfigs:
rawSpans:
pvcConfig:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
volumeName: my-nfs-volume
storageClassName: ""
pvcConfig設定する必要があります。 そのボリュームにはアクセスモードが設定 ReadWriteManyされている必要があります。データ・ストア
Coreの spec セクションで、以下のデータ・ストアを構成する必要があります。
cassandrapostgresclickhouseelasticsearchkafka
注:
少なくとも、データ・ストアごとにアドレスを構成する必要があります。 以下の例を参照してください。
spec: datastoreConfigs: cassandraConfigs: - hosts: - <IP address or hostname> clickhouseConfigs: - hosts: - <IP address or hostname> postgresConfigs: - hosts: - <IP address or hostname> elasticsearchConfig: hosts: - <IP address or hostname> kafkaConfig: hosts: - <IP address or hostname>< IP address or hostname> をデータ・ストアの IP アドレスまたはホスト名に置き換えます。
サードパーティ製のOperatorを使用してデータストアを同じクラスタにインストールする場合、以下の設定例に示すように、クラスタ内の DNS ホスト名を使用してデータストアに接続するように
datastoreConfigs設定できますspec: datastoreConfigs: cassandraConfigs: - authEnabled: true datacenter: cassandra hosts: - <IP address or hostname> clickhouseConfigs: - authEnabled: true clusterName: local hosts: - <IP address or hostname> - <IP address or hostname> elasticsearchConfig: authEnabled: true clusterName: instana hosts: - <IP address or hostname> kafkaConfig: saslMechanism: SCRAM-SHA-512 authEnabled: true hosts: - <IP address or hostname> postgresConfigs: - authEnabled: true hosts: - <IP address or hostname>datacenter属性を使用して、コア仕様のcassandraConfigsセクションで正確な Cassandra データ・センター名 (デフォルト:cassandra) が構成されていることを確認します。Power アーキテクチャーの場合:
datacenter属性を使用して、コア仕様のcassandraConfigsセクションで正確な Cassandra データ・センター名 (デフォルト:datacenter1) が構成されていることを確認します。ClickHouse (デフォルト:
local) および Elasticsearch (デフォルト:onprem_onprem) は、clusterName属性を介してクラスター名を受け入れます。データ・ストアでは、
tcpポートを構成できます。 さらに、clickhouseおよびelasticsearch用にhttpポートを構成することもできます。spec: datastoreConfigs: clickhouseConfigs: - clusterName: local hosts: - <IP address or hostname> ports: - name: tcp port: 9000 - name: http port: 8123
ポートが構成されていない場合は、以下のデフォルト値が適用されます。
| データストア | デフォルト・ポート |
|---|---|
cassandra |
tcp=9042 |
postgres |
tcp=5432 |
clickhouse |
tcp=9000, http=8123 |
elasticsearch |
tcp=9300, http=9200 |
kafka |
tcp=9092 |
データ保持期間の既定値を上書きする
デフォルトの保存設定の上書きはオプションであり、意識的に行う必要があります。 これらの保存設定値は、 CoreSpecのプロパティーとして構成されます。
インフラストラクチャのメトリクスの保存期間設定
以下の保存プロパティーはメトリック・ロールアップ・テーブル用であり、リストされている値は秒単位のデフォルト値です。 値がゼロの場合、この期間のロールアップは除去されません。 サイズが小さいロールアップの値がゼロになると、ディスクがすぐに満杯になってしまう可能性があります。
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
- name: retention.metrics.rollup5
value: "86400"
- name: retention.metrics.rollup60
value: "2678400"
- name: retention.metrics.rollup300
value: "8035200"
- name: retention.metrics.rollup3600
value: "34214400"
- name: retention.metrics.rawPayload
value: "2592000"
...
アプリケーションの保持設定
アプリケーションの監視とエンドユーザー監視(EUM)では、短期データと長期データの両方に同じ保存設定が適用されます。 短期保存領域には完全なデータが保存され、デフォルトの保存期間は7日間です。 長期保存では、データの1%をランダムに抽出して保存され、デフォルトでは13ヶ月間保存されます。 デフォルト設定でデータを継続的に取り込む場合、長期保存データは短期保存データの約半分程度のディスク容量しか使用しません。
短期保存期間は2日から31日の間で設定できます。 長期保存期間は31日から396日の間で設定できます。 これらの範囲外の値を指定すると、 Instana のサービスは起動時に失敗します。
Instana は、完全な短期データとサンプリングされた長期データに加え、クエリのパフォーマンスを向上させるために集計メトリクスを保持しています。 Instana 集計メトリクスの保持期間を設定することはできず、デフォルトで31日に設定されます。
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
- name: config.appdata.shortterm.retention.days
value: "7"
- name: config.appdata.longterm.retention.days
value: "396"
...
保持設定の変更は、アプリケーションのパースペクティブおよびエンドユーザーの監視データに、それぞれ異なる影響を与えます:
- アプリケーションの観点からの短期的な保持:システムは新しい設定を新規データにのみ適用します。 保存時に適用されていた保存期間の設定に従って、以前に保存されたデータを削除します。 変更後、実際のデータ保持期間は徐々に新しい値に合わせて調整されます。
- EUMの短期保持:システムは、既存データと新規データの両方に新しい設定を適用します。 現在の保存期間の設定に基づいて、すべてのデータを削除します。
- 長期保存:システムは、アプリケーションの視点およびEUMにおいて、既存および新規のすべての長期データに変更を適用します。
アプリケーション・パースペクティブ・データに対する以下の影響を確認してください。
例:
config.appdata.shortterm.retention.days7日間から14日間に変更されます:変更前に保存されたデータは、7日を経過するとシステムによって削除されます。 変更後に保存されたデータは、14日以上経過すると削除されます。 システムが完全な 14‑day の履歴データを構築するには、14日間かかります。 ただし、 Instana は、14日分の完全なデータが利用可能であると即座に想定するため、移行期間中は一時的に不正確な結果が生じる可能性があります。config.appdata.shortterm.retention.days14日間から7日間に変更されます:変更前、14日以上経過したデータはシステムによって削除されます。 変更後に保存されたデータは、7日以上経過すると削除されます。 保存されている短期データの容量は、14日間かけて新しいサイズまで縮小されます。 ただし、 Instana では、過去7日を超えるクエリは、長期データまたは集計データに限定されます。config.appdata.longterm.retention.days396日から60日に変更されます:システムは、60日以上経過した長期のサンプリングデータを削除します。 次回のクリーンアップサイクルにおいて、現在保存されているデータのうち、60日以上経過したものを削除します。config.appdata.longterm.retention.daysが60日から120日に変更されました:システムは、120日以上経過した長期サンプリングデータのみを削除します。 すでに60日を経過したデータも、 120‑day の延長期間中は引き続き利用可能です。
エンドユーザーの監視データに与える影響については、以下をご覧ください:
例:
config.appdata.shortterm.retention.days保存期間が7日から14日に変更されました:14日以上経過した短期データは削除されます。config.appdata.shortterm.retention.days14日間から7日間に変更されました:7日以上経過した短期データは削除されます。config.appdata.longterm.retention.days396日から60日に変更されました:60日以上経過した長期のサンプリングデータはすべて削除されます。config.appdata.longterm.retention.days60日から120日に変更されます:120日以上経過したすべての長期サンプリングデータは削除されます。
合成モニタリングの保持設定
シンセティック・モニターには、デフォルトが 60 日の別個のデータ保存プロパティーがあります。 シンセティック・テスト結果とシンセティック・テスト結果の詳細の両方の保存は、この設定によって制御されます。
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
- name: config.synthetics.retention.days
value: "60"
...
シンセティック・モニター・データに対する以下の影響を確認してください。
例:
config.synthetics.retention.daysは 60 日から 90 日に変更されます。構成変更前に保管されたデータは、60 日より古い場合は削除され、構成変更後に保管されたデータは、90 日より古い場合は削除されます。config.synthetics.retention.daysは 60 日から 7 日に変更されます。構成変更前に保管されたデータは、60 日より古い場合は削除され、構成変更後に保管されたデータは、7 日より古い場合は削除されます。
コア設定の適用
Core の構成ファイルの準備ができたら、以下のように適用します。
kubectl apply -f path/to/core.yaml
すべてのポッドが実行されているかどうかを確認してから、以下の手順を実行します。
kubectl get pods -n instana-core
「instana-core」ネームスペース内の「core」リソースの状態を確認してください:
kubectl get core -n instana-core
出力例を以下に示します:
NAME VERSION INSTANA VERSION DB MIGRATION STATUS COMPONENTS STATUS
instana-core 1.2.0 3.289.589-0 Ready Ready
ユニットとテナントの作成
ユニットとテナントを作成するのは簡単です。
ユニットとテナントを作成するには、次の例のように unit.yaml 「Unit YAML 」ファイルを作成します
apiVersion: instana.io/v1beta2
kind: Unit
metadata:
namespace: instana-units
name: tenant0-unit0
spec:
# Must refer to the namespace of the associated Core object that was created previously
coreName: instana-core
# Must refer to the name of the associated Core object that was created previously
coreNamespace: instana-core
# The name of the tenant
# Tenant name must match the regular expression pattern `^[a-z][a-z0-9]*$`
# Tenant name must not exceed a maximum length of 15 characters
# Tenant name must begin with an alphabetical character
# Tenant name can consist of alphanumeric characters
# Characters must be in lowercase
tenantName: tenant0
# The name of the unit within the tenant
unitName: unit0
# The same rules apply as for Cores. May be ommitted. Default is 'medium'
resourceProfile: large
構成の準備ができたら、以下のように設定を適用します。
kubectl apply -f path/to/unit.yaml
すべてのポッドが実行されているかどうかを確認してから、以下の手順を実行します。
kubectl get pods -n instana-units
「instana-units」ネームスペース内のユニットのリストを取得します:
kubectl get unit -n instana-units
出力例を以下に示します:
AME VERSION INSTANA VERSION DB MIGRATION STATUS COMPONENTS STATUS
instana-unit 1.2.0 3.289.589-0 Ready Ready
IBM Z® および LinuxONE に対する許容誤差とノードセレクタを指定する ( s390x )
tolerations およびノードセレクタを指定するために、 unit.yaml 以下の行を に追加してください
spec:
tolerations:
- key: node.instana.io/monitor
operator: Equal
effect: NoSchedule
value: "true"
nodeSelector:
node-role.kubernetes.io/monitor: "true"
オプション機能の有効化
一部の機能は、デフォルトでは自己ホスト・バックエンドで有効になっていません。 このような機能は、追加の構成オプションを使用して有効にすることができます。
オプション機能の詳細および有効化方法については、 「オプション機能の有効化」 を参照してください。