Installation du backend « Instana »
Installez le backend « Instana » pour l'édition personnalisée.
Pour installer le backend « Instana », suivez plusieurs étapes principales afin de créer un objet Core, puis un objet Unit associé. Avant de commencer les étapes principales, effectuez plusieurs étapes de préparation pour créer des espaces de nom et des secrets.
Astuce : le plug-in « Instana » ( kubectl ) dispose d'une commande permettant de générer des modèles YAML pour les espaces de noms et les ressources personnalisées, afin de vous aider à démarrer.
kubectl instana template --output-dir <dir>
Prérequis
- Le plug-in « Instana » ( kubectl ) doit être installé.
- Les magasins de données requis doivent être opérationnels. Voir la section « Configuration des magasins de données ».
- L'opérateur Enterprise d' Instana doit être installé.
Etapes de préparation
Avant de créer Core et Unit, vous devez créer des espaces de nom et placer un ensemble de secrets pour les espaces de nom afin de pouvoir extraire des images Core et Unit du registre artifact-public.instana.io .
Création d'espaces de nom
Core et Units doivent être installés dans des espaces de nom différents. Chaque coeur a besoin de son propre espace de nom. Plusieurs unités appartenant au même coeur peuvent être installées dans le même espace de nom.
Les noms d'espace de nom peuvent être librement choisis. Les espaces de nom instana-core et instana-units sont utilisés dans ce guide.
L'opérateur « Enterprise » de l' Instana exige qu'une étiquette app.kubernetes.io/name soit présente dans l'espace de noms. La valeur doit être le nom de l'espace de nom. L'opérateur ajoute ces libellés s'ils sont manquants. Il est judicieux d'ajouter ces étiquettes directement, en particulier lorsque l'on utilise l' GitOps e de déploiement.
Créez un fichier « YAML » avec un nom tel que namespaces.yaml. Voir l'exemple suivant :
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
Ensuite, appliquez le fichier en exécutant la commande suivante:
kubectl apply -f namespaces.yaml
Création de secrets pour le téléchargement d'images
A moins que vous ne possédiez votre propre registre Docker qui met en miroir artifact-public.instana.io et ne nécessite pas de secrets d'extraction, vous devez créer des secrets d'extraction d'image dans les deux espaces de nom que vous avez créés en utilisant l'une des méthodes suivantes:
Créez le secret directement.
kubectl create secret docker-registry instana-registry \ --namespace=<namespace> \ --docker-username=_ \ --docker-password=<agent_key> \ --docker-server=artifact-public.instana.io- Remplacez < nom_espace_nom> par le nom de l'espace de nom du coeur ou de l'espace de nom des unités que vous venez de créer.
- Remplacez < agent_key> par votre clé d'agent.
Créez l' YAML pour le secret sans appliquer l' YAML. Le secret est imprimé sans création.
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=yamlEnsuite, créez le secret.
kubectl create -f <secret-file-name.yaml> --namespace <namespace>- Remplacez <secret-file-name> par le nom du fichier « YAML ».
- Remplacez < nom_espace_nom> par le nom de l'espace de nom du coeur ou de l'espace de nom des unités que vous venez de créer.
Facultatif : créez un secret de récupération d'image si votre registre d'images interne nécessite une authentification.
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>
Téléchargement du fichier de licence
Instana nécessite une licence basée sur votre adresse SalesKey pour l'activation. Pour obtenir ce fichier de licence avec le plug-in Instana kubectl, exécutez la commande suivante :
kubectl instana license download --sales-key <SalesKey>
Sinon, si vous devez télécharger manuellement la licence, exécutez la commande suivante:
curl https://instana.io/onprem/license/download/v2/allValid?salesId=<your-SalesKey> -o license.json
Cette clé de licence fait partie du fichier config.yaml pour Units, qui sera généré ultérieurement.
Création de secrets
Les valeurs de secret ne sont pas configurées à l'aide des ressources Core et Unit . Elles doivent être dans les secrets Kubernetes.
Pour les certificats d' TLS, un secret instana-tls doit être créé dans l'espace de noms Core.
Pour chaque ressource Core et chaque ressource Unit , un secret avec le nom correspondant doit être créé dans l'espace de nom respectif.
Le secret doit contenir un fichier config.yaml dont la structure ressemble à CoreSpec ou UnitSpec, respectivement, en ajoutant des informations d'identification.
Secret instana-tls
Le secret instana-tls est nécessaire pour la configuration de l'Ingress. Vous devez créer le secret dans l'espace de noms Core.
| Clé | Valeur |
|---|---|
tls.crt |
Certificat TLS pour le domaine sous lequel Instana est accessible. Le nom commun (CN) doit correspondre à baseDomain celui configuré dans CoreSpec. |
tls.key |
La clé « TLS ». |
kubernetes.io/tls.Pour créer le secret instana-tls, procédez comme suit:
Créez le fichier
san.confcomme illustré dans l'exemple suivant:[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>Remplacez <base_domain> par le nom de domaine sur lequel vous souhaitez installer le backend d' Instana. Remplacez < country>, < site>, < location>, < organization>, < organizational_unit>, < email_address>, < unit_name> et < tenant_name> par vos informations.
Effectuez l'une des étapes suivantes :
Utilisez un certificat délivré par une autorité de certification interne ou publique.
Générer un certificat auto-signé :
openssl req -x509 -newkey rsa:2048 -keyout tls.key -out tls.crt -days 365 -nodes -config san.conf
Créez un secret contenant le certificat.
kubectl create secret tls instana-tls --namespace instana-core \ --cert=path/to/tls.crt \ --key=path/to/tls.key
Le secret ultime
Créez un fichier config.yaml avec le contenu indiqué dans l'exemple suivant. La structure du fichier est exactement la même que celle de CoreSpec qui sera créée de la manière suivante.
Les valeurs de secret doivent être incluses dans ce secret de base. Tout autre élément est intégré à 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>
<username in Postgres data store> par le nom d'utilisateur indiqué dans la section « Création d'un magasin de données Postgres ».Remarques :
Si vous configurez des magasins de données d' Instana à l'aide d'opérateurs d' Kubernetes tiers, vous devez copier la
datastoreConfigspartie duconfig.yamlfichier décrite dans la section « Vérification du fichier de configuration final contenant les noms d'utilisateur et les mots de passe » dans ce fichier Coreconfig.yamlSecret.Spécifiez les paramètres Diffie-Hellman. Pour générer des paramètres Diffie-Hellman, exécutez la commande suivante:
openssl dhparam -out dhparams.pem 2048Une clé chiffrée pour la signature ou la validation des messages échangés avec le fournisseur d'identité doit être configurée. Les clés non chiffrées ne seront pas acceptées.
- Créez la clé en exécutant la commande suivante:
openssl genrsa -aes128 -out key.pem 2048 - Créez le certificat en exécutant la commande suivante:
openssl req -new -x509 -key key.pem -out cert.pem -days 365 - Combinez les deux dans un seul fichier en exécutant la commande suivante:
cat key.pem cert.pem > sp.pem
- Créez la clé en exécutant la commande suivante:
Vous devez créer un secret portant le même nom dans l'espace de nom du coeur. Par exemple, si le nom de l'objet Core est
instana-core, créez un secret en exécutant la commande suivante:kubectl create secret generic instana-core --namespace instana-core --from-file=path/to/config.yamlVous pouvez concaténer plusieurs certificats en configurant le fichier
config.yaml. Voir l'exemple suivant :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-----Remarque : vous pouvez ajouter un ou plusieurs certificats d'autorité de certification personnalisés aux magasins de confiance des composants. Pour les systèmes internes, tels que LDAP ou les récepteurs d'alertes, Instana utilise une autorité de certification personnalisée.
Le secret de l'unité
Créez le fichier config-unit.yaml avec le contenu indiqué dans l'exemple suivant. La structure du fichier est exactement la même que celle de UnitSpec qui sera créée de la manière suivante.
Les valeurs de secret doivent être incluses dans ce secret d'unité. Tout autre élément est intégré à 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
Remarques :
Pour configurer la zone
licenses, obtenez les licences qui ont été téléchargées dans la section Téléchargement du fichier de licence comme suit:# cat /path/to/license.json && echo ["abcdefghijklmnopqrstuvwxyz0123456789"]Vous devez créer un secret portant le même nom dans l'espace de nom de l'unité. Par exemple, si le nom de l'objet Unit est
tenant0-unit0, créez un secret en exécutant la commande suivante:kubectl create secret generic tenant0-unit0 --namespace instana-units --from-file=config.yaml=/path/to/config-unit.yaml
Création d'un cœur
Un coeur représente les composants partagés et est responsable de la configuration de l'accès au magasin de données. Par conséquent, la plupart des configurations vont se produire ici.
Pour plus d'informations, consultez la documentation d' API.
Une ressource personnalisée Core doit avoir la version instana.io/v1beta2 et le type Core. Les configurations pour Core sont décrites dans la section spec .
Créez un fichier core.yaml. Les configurations pour Core sont décrites dans la section spec .
apiVersion: instana.io/v1beta2
kind: Core
metadata:
namespace: instana-core
name: instana-core
spec:
...
Spécifiez les tolérances et le sélecteur de nœuds pour IBM Z® et LinuxONE ( s390x )
Assurez-vous qu'au moins un nœud du cluster n'est pas marqué et ne porte pas l'étiquette node-role.kubernetes.io/monitor: "true". Ajoutez les lignes suivantes dans le fichier core.yaml pour définir les tolérances et le sélecteur de nœuds.
spec:
tolerations:
- key: node.instana.io/monitor
operator: Equal
effect: NoSchedule
value: "true"
nodeSelector:
node-role.kubernetes.io/monitor: "true"
Configuration de base
Effectuez certaines configurations de base comme suit:
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
Ressources processeur/mémoire
L'opérateur utilise un ensemble de profils de ressource prédéfinis qui déterminent les ressources affectées aux pods de composant individuels. Les profils suivants sont disponibles. Par défaut, medium est utilisé si rien n'est configuré.
smallmediumlarge
spec:
resourceProfile: large
En outre, vous pouvez configurer des ressources d'UC et de mémoire personnalisées pour chaque pod de composant. Dans l'exemple suivant, le composant filler est utilisé. Remplacez filler par le composant que vous souhaitez utiliser et désignez les ressources d'UC et de mémoire avec les totaux que vous souhaitez fournir.
spec:
componentConfigs:
- name: filler
resources:
requests:
cpu: 2.5
memory: 5000Mi
limits:
cpu: 4
memory: 20000Mi
Agent-récepteur
La configuration suivante est obsolète. Utilisez la configuration indiquée dans la section « Configuration de la passerelle ».
L'acceptor est le point de terminaison que les agents d' Instana ation doivent atteindre pour transmettre les traces ou les métriques au backend d' Instana. L'accepteur est généralement un sous-domaine pour le baseDomain configuré précédemment dans la section Configuration de base .
spec:
agentAcceptorConfig:
host: ingress.<instana.example.com>
port: 443
Configuration de la passerelle
Vous pouvez configurer les hôtes et les ports pour les types de trafic entrant suivants :
- Agent Instana
- Synthétiques
- Sans serveur
- OTLP (HTTP/gRPC)
- EUM
- OpAMP
Pour configurer les hôtes et les ports des différents récepteurs d' Instana, ajoutez la configuration suivante dans le fichier CoreSpec :
host champ est vide, la valeur par défaut est le domaine de base; si le champ « port » est vide, la valeur par défaut est 443spec:
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
.spec.gatewayConfig, consultez GatewayConfig.Les exemples suivants montrent comment configurer la collecte du trafic par votre acceptor en fonction de différents besoins :
Utilisez des sous-domaines avec un seul port (443). Cette approche vous permet de n'exposer qu'un seul port (443) tout en utilisant des sous-domaines pour différencier le trafic destiné à chaque serveur.
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: 443Utiliser un seul domaine avec différents ports. Cette approche vous permet d'utiliser un seul domaine tout en différenciant le trafic entrant en fonction des numéros de port. Seule la version Custom Edition d' 1.3.0, et les versions ultérieures, peut être configurée avec un seul domaine.
spec: acceptors: agent: port: 1444 otlp: http: port: 4318 grpc: port: 4317 eum: port: 1555 synthetics: port: 1666 serverless: port: 1777Dans ce cas, vous devez mettre à jour la configuration de votre équilibreur de charge au sein de votre cluster afin d'exposer les différents ports d'acceptation. Voir la section « Configuration des équilibreurs de charge » et DNS.
Activation de la prise en charge d'un domaine d'entrée unique
Votre environnement Custom Edition peut acheminer le trafic de tous les locataires via un seul domaine de base. Pour activer cette fonctionnalité, configurez la propriété suivante dans votre CoreSpec :
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
...
- name: config.url.format.pathStyle
value: "true"
...
Une fois cette fonctionnalité activée, l' URL, qui permet d'accéder à l'interface utilisateur de tous vos locataires Instana, est accessible à l'adresse <basedomain>.com/<unitname>/<tenantname> au lieu de <unitname>-<tenantname>.<basedomain>.com. Tout le trafic entrant vers Instana peut être acheminé via un seul enregistrement A dans votre fichier DNS, en l'associant à la configuration présentée dans le deuxième exemple de la section « Configuration de la passerelle ».
Création automatique de services d' LoadBalancer
Votre environnement Custom Edition prend en charge la création automatique des services LoadBalancerKubernetes pour le composant gateway-v2. Vous n'avez pas besoin de créer manuellement les services d' LoadBalancer.
Pour activer cette fonctionnalité, ajoutez la configuration suivante à votre 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
Désactivation de la fermeture d' TLS dans Gateway-v2
Avant d'activer cette fonctionnalité, assurez-vous qu'un proxy frontal est déployé pour acheminer tout le trafic entrant de Instana vers le service gateway-v2. Si des ports distincts sont configurés pour chaque acceptor, assurez-vous que le proxy frontal transfère le trafic vers ces ports. Les ports sur gateway-v2 doivent correspondre exactement aux ports exposés par le proxy frontal.
Votre environnement Custom Edition permet également de désactiver la terminaison de l' TLS (c'est-à-dire d'accepter le trafic entrant sans SSL ). Cette option est utile lorsque vous déployez un proxy frontal chargé de la terminaison de l' TLS en amont de votre environnement Custom Edition.
Pour activer cette fonctionnalité, ajoutez la configuration suivante à votre fichier CoreSpec :
spec:
gatewayConfig:
enabled: true
disableTLS: true # disables TLS termination for all ingress traffic
Stockage des segments bruts
Vous devez utiliser l'une des trois options suivantes pour stocker les données d'intervalles brutes:
- S3 (ou compatible)
- Google Cloud Storage (GCS)
- Système de fichiers Azure
- Système de fichiers
S3 (ou compatible)
Le noeud final S3 varie en fonction de la région.
Pour utiliser S3 (ou compatible) pour stocker des données de plages brutes, configurez Core comme illustré dans l'exemple suivant:
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 et secretAccessKey doivent être inclus dans le secret principal, comme indiqué dans la section « Secret principal ». Il est également possible d'utiliser des rôles IAM pour les comptes de service.Google Cloud Storage
Pour utiliser GCS pour le stockage de données d'étendues brutes, configurez Core comme suit:
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 doit être intégré au Core Secret, comme indiqué dans la section Core Secret. Sinon, la fonctionnalité « Workload Identity » est prise en charge.Système de fichiers Azure
Pour utiliser le système de fichiers Azure pour stocker des données de plages brutes, procédez comme suit:
- Créez un secret avec le nom de compte de stockage et le volume:
kubectl create secret generic storage-account --from-literal=azurestorageaccountname={storage_account_name} --from-literal=azurestorageaccountkey={storage_account_key} -n instana-core - Créez un volume persistant en créant
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 - Configurez Core comme illustré dans l'exemple suivant:
spec: storageConfigs: rawSpans: pvcConfig: accessModes: - ReadWriteMany resources: requests: storage: 100Gi volumeName: my-nfs-volume
Système de fichiers
Pour utiliser le système de fichiers pour stocker les données de plages brutes, configurez Core comme suit:
spec:
storageConfigs:
rawSpans:
pvcConfig:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
volumeName: my-nfs-volume
storageClassName: ""
pvcConfig, qui est un PersistentVolumeclaimSpec. Le volume doit être en mode d'accès ReadWriteMany.Magasins de données
Vous devez configurer les magasins de données suivants dans la section spec de Core:
cassandrapostgresclickhouseelasticsearchkafka
Remarques :
Au minimum, les adresses doivent être configurées pour chaque magasin de données. Voir l'exemple suivant :
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>Remplacez < adresse IP ou nom d'hôte > par l'adresse IP ou le nom d'hôte du magasin de données.
Si des magasins de données sont installés dans le même cluster à l'aide d'opérateurs tiers, vous pouvez configurer
datastoreConfigsla connexion à ces magasins en utilisant les noms d'hôte de l' DNS e interne au cluster, comme le montre l'exemple de configuration suivant :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>Vérifiez que le nom exact du centre de données Cassandra (par défaut:
cassandra) est configuré dans la sectioncassandraConfigsde la spécification Core via l'attributdatacenter.Pour l'architecture Power: vérifiez que le nom exact du centre de données Cassandra (par défaut:
datacenter1) est configuré dans la sectioncassandraConfigsde la spécification Core via l'attributdatacenter.ClickHouse (par défaut:
local) et Elasticsearch (par défaut:onprem_onprem) acceptent un nom de cluster via l'attributclusterName.Les magasins de données permettent de configurer un port
tcp. De plus, un porthttppeut également être configuré pourclickhouseetelasticsearch.spec: datastoreConfigs: clickhouseConfigs: - clusterName: local hosts: - <IP address or hostname> ports: - name: tcp port: 9000 - name: http port: 8123
Si aucun port n'est configuré, les valeurs par défaut suivantes s'appliquent:
| Magasin de données | Ports par défaut |
|---|---|
cassandra |
tcp=9042 |
postgres |
tcp=5432 |
clickhouse |
tcp=9000, http=8123 |
elasticsearch |
tcp=9300, http=9200 |
kafka |
tcp=9092 |
Remplacer les paramètres par défaut de conservation des données
Le remplacement des paramètres de conservation par défaut est facultatif et ne doit être effectué que consciemment. Ces valeurs de paramètre de conservation sont configurées en tant que propriétés dans CoreSpec.
Paramètres de conservation des métriques d'infrastructure
Les propriétés de conservation suivantes s'appliquent aux tables de cumul de métriques et les valeurs répertoriées sont les valeurs par défaut en secondes. Une valeur de zéro indique au système de ne pas supprimer les cumuls de cette période. Une valeur nulle pour les rollups de petite taille peut entraîner un remplissage rapide des disques.
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"
...
Paramètres de conservation des applications
Les perspectives d'application et la surveillance des utilisateurs finaux (EUM) utilisent les mêmes paramètres de conservation pour les données à court terme et à long terme, respectivement. La conservation à court terme enregistre l'intégralité des données et est fixée par défaut à 7 jours. La conservation à long terme conserve un échantillon aléatoire de 1 % des données; la durée par défaut est de 13 mois. Avec les paramètres par défaut et une alimentation constante en données, les données à long terme occupent environ la moitié de l'espace disque par rapport aux données à court terme.
Vous pouvez définir une durée de conservation à court terme comprise entre 2 et 31 jours. Vous pouvez définir une durée de conservation à long terme comprise entre 31 et 396 jours. Si vous indiquez des valeurs en dehors de ces plages, les services d' Instana s échoueront au démarrage.
Outre les données complètes à court terme et les données échantillonnées à long terme, Instana conserve des indicateurs agrégés afin d'améliorer les performances des requêtes. Instana ne vous permet pas de configurer la durée de conservation des métriques agrégées et la définit par défaut sur 31 jours.
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"
...
Les modifications apportées aux paramètres de conservation ont des répercussions variables sur les vues de l'application et les données de surveillance des utilisateurs finaux :
- Conservation à court terme pour les applications : le système n'applique le nouveau paramètre qu'aux nouvelles données. Il supprime les données précédemment enregistrées conformément au paramètre de conservation qui était en vigueur au moment de leur enregistrement. Une fois la modification effectuée, la durée de conservation effective des données s'adapte progressivement à la nouvelle valeur.
- Conservation à court terme pour l'EUM : le système applique le nouveau paramètre aussi bien aux données existantes qu'aux nouvelles données. Il supprime toutes les données conformément au paramètre de conservation actuel.
- Conservation à long terme : le système applique les modifications à toutes les données à long terme, existantes et nouvelles, pour les perspectives applicatives et l'EUM.
Consultez l'impact suivant sur les données des perspectives d'application:
Exemples :
config.appdata.shortterm.retention.dayspasse de 7 à 14 jours : le système supprime les données enregistrées avant cette modification dès qu'elles datent de plus de 7 jours. Il supprime les données enregistrées après la modification dès qu'elles datent de plus de 14 jours. Le système a besoin de 14 jours pour établir un historique complet de l' 14‑day. Cependant, Instana part immédiatement du principe que 14 jours de données complètes sont disponibles, ce qui peut entraîner des résultats temporairement inexacts pendant la période de transition.config.appdata.shortterm.retention.dayspasse de 14 à 7 jours : le système supprime les données enregistrées avant cette modification dès qu'elles datent de plus de 14 jours. Il supprime les données enregistrées après la modification dès qu'elles datent de plus de 7 jours. Le volume des données à court terme stockées diminue pour atteindre ce nouveau niveau en l'espace de 14 jours. Cependant, Instana limite immédiatement les requêtes portant sur une période supérieure aux 7 derniers jours aux données à long terme ou agrégées.config.appdata.longterm.retention.dayspasse de 396 jours à 60 jours : le système supprime les données d'échantillonnage à long terme dès qu'elles datent de plus de 60 jours. Il supprime les données actuellement stockées datant de plus de 60 jours lors du prochain cycle de nettoyage.config.appdata.longterm.retention.daysest modifiée de 60 à 120 jours : le système ne supprime les données d'échantillonnage à long terme que lorsqu'elles datent de plus de 120 jours. Les données qui avaient déjà atteint 60 jours restent désormais disponibles pendant la période prolongée de l' 120‑day.
Consultez les conséquences suivantes sur les données de surveillance des utilisateurs finaux :
Exemples :
config.appdata.shortterm.retention.dayspasse de 7 à 14 jours : les données récentes sont supprimées lorsqu'elles datent de plus de 14 jours.config.appdata.shortterm.retention.dayspasse de 14 à 7 jours : les données à court terme sont supprimées lorsqu'elles datent de plus de 7 jours.config.appdata.longterm.retention.daysest ramenée de 396 jours à 60 jours : toutes les données d'échantillonnage à long terme sont supprimées dès lors qu'elles datent de plus de 60 jours.config.appdata.longterm.retention.daysest portée de 60 à 120 jours : toutes les données d'échantillonnage à long terme sont supprimées lorsqu'elles datent de plus de 120 jours.
Paramètres de conservation des données de surveillance synthétiques
La surveillance synthétique possède une propriété de conservation des données distincte avec une valeur par défaut de 60 jours. La rétention des résultats des tests synthétiques et des détails des résultats des tests synthétiques est contrôlée par ce paramètre.
kind: Core
metadata:
name: instana-core
namespace: instana-core
spec:
properties:
- name: config.synthetics.retention.days
value: "60"
...
Consultez l'impact suivant sur les données de surveillance synthétique:
Exemples :
config.synthetics.retention.dayspasse de 60 jours à 90 jours: les données stockées avant le changement de configuration sont supprimées lorsqu'elles sont antérieures à 60 jours, et les données stockées après le changement de configuration sont supprimées lorsqu'elles sont antérieures à 90 jours.config.synthetics.retention.dayspasse de 60 jours à 7 jours: les données stockées avant la modification de la configuration sont supprimées lorsqu'elles datent de plus de 60 jours et les données stockées après la modification de la configuration sont supprimées lorsqu'elles datent de plus de 7 jours.
Application des configurations de base
Une fois que votre fichier de configuration pour Core est prêt, appliquez-le comme suit:
kubectl apply -f path/to/core.yaml
Vérifiez si tous les pods sont en cours d'exécution avant de procéder comme suit:
kubectl get pods -n instana-core
Vérifiez l'état de la ressource « core » dans l'espace de noms « instana-core » :
kubectl get core -n instana-core
L'exemple suivant présente un aperçu du résultat :
NAME VERSION INSTANA VERSION DB MIGRATION STATUS COMPONENTS STATUS
instana-core 1.2.0 3.289.589-0 Ready Ready
Création d'une unité et d'un locataire
La création d'une unité et d'un locataire est simple.
Pour créer un logement et un locataire, créez un fichier de configuration de logement ( YAML ) tel que unit.yaml celui présenté dans l'exemple suivant :
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
Une fois votre configuration prête, appliquez vos paramètres comme suit:
kubectl apply -f path/to/unit.yaml
Vérifiez si tous les pods sont en cours d'exécution avant de procéder comme suit:
kubectl get pods -n instana-units
Récupérer la liste des unités dans l'espace de noms « instana-units » :
kubectl get unit -n instana-units
L'exemple suivant présente un aperçu du résultat :
AME VERSION INSTANA VERSION DB MIGRATION STATUS COMPONENTS STATUS
instana-unit 1.2.0 3.289.589-0 Ready Ready
Spécifiez les tolérances et le sélecteur de nœuds pour IBM Z® et LinuxONE ( s390x )
Ajoutez les lignes suivantes dans le fichier unit.yaml pour définir les tolérances et le sélecteur de nœuds
spec:
tolerations:
- key: node.instana.io/monitor
operator: Equal
effect: NoSchedule
value: "true"
nodeSelector:
node-role.kubernetes.io/monitor: "true"
Activation des fonctions facultatives
Certaines fonctions ne sont pas activées dans un système de back end auto-hébergé par défaut. Vous pouvez activer ces fonctions à l'aide d'options de configuration supplémentaires.
Pour plus d'informations sur les fonctionnalités optionnelles et la manière de les activer, consultez la section « Activation des fonctionnalités optionnelles ».