> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Ingestion de données avec Vector pour ClickStack - La stack d’observabilité ClickHouse

# Ingestion avec Vector

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

[Vector](https://vector.dev) est un pipeline de données d’observabilité hautes performances, indépendant des fournisseurs. Il est couramment utilisé pour collecter, transformer et acheminer des logs et des métriques provenant d’un large éventail de sources, et il est particulièrement apprécié pour l’ingestion de logs grâce à sa flexibilité et à sa faible consommation de ressources.

Lorsqu’ils utilisent Vector avec ClickStack, les utilisateurs doivent définir leurs propres schémas. Ces schémas peuvent suivre les conventions OpenTelemetry, mais ils peuvent aussi être entièrement personnalisés et représenter des structures d’événements définies par l’utilisateur. En pratique, l’ingestion via Vector est surtout utilisée pour les **logs**, lorsque les utilisateurs veulent garder un contrôle total sur l’analyse et l’enrichissement avant l’écriture des données dans ClickHouse.

Ce guide explique comment ingérer des données dans ClickStack à l’aide de Vector, aussi bien pour ClickStack Open Source que pour Managed ClickStack. Par souci de simplicité, il ne couvre pas en détail les sources Vector ni la configuration du pipeline. Il se concentre plutôt sur la configuration du **sink** qui écrit les données dans ClickHouse, et sur la compatibilité du schéma résultant avec ClickStack.

La seule exigence stricte de ClickStack, qu’il s’agisse d’un déploiement open-source ou Managed, est que les données incluent une **colonne timestamp** (ou un champ temporel équivalent), qui peut être déclarée lors de la configuration de la source de données dans la ClickStack UI.

<div id="sending-data-with-vector">
  ## Envoyer des données avec Vector
</div>

<br />

<Tabs>
  <Tab title="Managed ClickStack">
    Le guide suivant suppose que vous avez déjà créé un service Managed ClickStack et enregistré vos identifiants de service. Si ce n'est pas le cas, suivez le guide [Getting Started](/fr/clickstack/getting-started/managed) pour Managed ClickStack jusqu'à l'étape de configuration de Vector.

    <Steps>
      <Step>
        ### Créer une base de données et une table

        Vector nécessite qu’une table et un schéma soient définis avant toute ingestion de données.

        Commencez par créer une base de données. Cela peut se faire dans la [ClickHouse Cloud console](/fr/products/cloud/features/sql-console-features/sql-console).

        Dans l’exemple ci-dessous, nous utilisons `logs` :

        ```sql theme={null}
        CREATE DATABASE IF NOT EXISTS logs
        ```

        Créez une table pour vos données. Celle-ci doit correspondre au schéma de sortie de vos données. L’exemple ci-dessous repose sur une structure Nginx classique. Adaptez-la à vos données, en respectant les [bonnes pratiques relatives aux schémas](/fr/concepts/best-practices/select-data-type). Nous **vous recommandons vivement** de vous familiariser avec le [concept des clés primaires](/fr/concepts/core-concepts/primary-indexes), en choisissant votre clé primaire selon les recommandations décrites [ici](/fr/clickstack/managing/performance-tuning#choosing-a-primary-key).

        ```sql theme={null}
        CREATE TABLE logs.nginx_logs
        (
            `time_local` DateTime,
            `remote_addr` IPv4,
            `remote_user` LowCardinality(String),
            `request` String,
            `status` UInt16,
            `body_bytes_sent` UInt64,
            `http_referer` String,
            `http_user_agent` String,
            `http_x_forwarded_for` LowCardinality(String),
            `request_time` Float32,
            `upstream_response_time` Float32,
            `http_host` String
        )
        ENGINE = MergeTree
        ORDER BY (toStartOfMinute(time_local), status, remote_addr)
        ```

        <Info>
          **Clé primaire Nginx**

          La clé primaire ci-dessus correspond aux modes d’accès typiques dans ClickStack UI pour les logs Nginx, mais il peut être nécessaire de l’adapter selon votre charge de travail en production.
        </Info>
      </Step>

      <Step>
        ### Ajouter le sink ClickHouse à la configuration Vector

        Modifiez votre configuration Vector pour y inclure le sink ClickHouse, en mettant à jour le champ `inputs` pour recevoir les événements de vos pipelines existants.

        Cette configuration suppose que votre pipeline Vector en amont a déjà **préparé les données pour qu'elles correspondent au schéma ClickHouse cible** : les champs sont correctement analysés, nommés et typés pour l'insertion. Consultez l'[**exemple Nginx ci-dessous**](#example-dataset-with-vector) pour une illustration complète de l'analyse et de la normalisation de lignes de logs brutes en un schéma adapté à ClickStack.

        ```yaml theme={null}
        sinks:
          clickhouse:
            type: clickhouse
            inputs:
              - your_input
            endpoint: "<CLICKHOUSE_ENDPOINT>"
            database: logs
            format: json_each_row
            table: nginx_logs
            skip_unknown_fields: true
            auth:
              strategy: "basic"
              user: "default"
              password: "<CLICKHOUSE_PASSWORD>"
        ```

        Par défaut, nous recommandons d’utiliser le format **`json_each_row`**, qui encode chaque événement sous la forme d’un objet JSON unique par ligne. Il s’agit du format par défaut et recommandé pour ClickStack lors de l’ingestion de données JSON, et il est préférable aux autres formats, comme les objets JSON encodés sous forme de chaînes.

        Le sink ClickHouse prend également en charge **l’encodage Arrow en flux** (actuellement en bêta). Cela peut offrir un débit plus élevé, mais s’accompagne de contraintes importantes : la base de données et la table doivent être statiques, car le schéma n’est récupéré qu’une seule fois au démarrage, et le routage dynamique n’est pas pris en charge. Pour cette raison, l’encodage Arrow convient particulièrement aux pipelines d’ingestion fixes et bien définis.

        Nous vous recommandons de consulter les options de configuration disponibles pour le sink dans la [documentation Vector](https://vector.dev/docs/reference/configuration/sinks/clickhouse) :

        <Note>
          L’exemple ci-dessus utilise l’utilisateur par défaut pour Managed ClickStack. Pour les déploiements en production, nous recommandons de [créer un utilisateur d’ingestion dédié](/fr/clickstack/ingesting-data/collector#creating-an-ingestion-user) avec les autorisations et limites appropriées.
        </Note>
      </Step>

      <Step>
        ### Accédez à la ClickStack UI

        Accédez à votre service Managed ClickStack et sélectionnez "ClickStack" dans le menu de gauche. Si vous avez déjà terminé l’onboarding, la ClickStack UI s’ouvrira dans un nouvel onglet et vous serez automatiquement authentifié. Sinon, vous pouvez poursuivre l’onboarding et sélectionner « Launch ClickStack » une fois Vector choisi comme source d’ingestion.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/launch-clickstack-vector.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=17ddb1720ed82d5007b4bd747f26480d" alt="Lancer ClickStack pour Vector" size="lg" width="1920" height="918" data-path="images/clickstack/launch-clickstack-vector.png" />
      </Step>

      <Step>
        ### Créer une source de données

        Créez une source de données pour les logs. Si aucune source de données n’existe, il vous sera demandé d’en créer une lors de votre première connexion. Sinon, accédez à Team Settings et ajoutez une nouvelle source de données.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/GaEHa-fd8w_5w7tQ/images/clickstack/create-vector-datasource.png?fit=max&auto=format&n=GaEHa-fd8w_5w7tQ&q=85&s=bcf6923c4843a0a9ba198628ea3cfd87" alt="Créer une source de données - vector" size="lg" width="3600" height="1938" data-path="images/clickstack/create-vector-datasource.png" />

        La configuration ci-dessus suppose un schéma de type Nginx, avec une colonne `time_local` utilisée comme horodatage. Il doit s’agir, dans la mesure du possible, de la colonne d’horodatage déclarée dans la clé primaire. Cette colonne est obligatoire.

        Nous vous recommandons également de mettre à jour `Default SELECT` afin de définir explicitement les colonnes renvoyées dans la vue des logs. Si des champs supplémentaires sont disponibles, comme le nom du service, le niveau de log ou une colonne `body`, ils peuvent également être configurés. La colonne d’affichage de l’horodatage peut aussi être redéfinie si elle diffère de la colonne utilisée dans la clé primaire de la table et configurée ci-dessus.

        Dans l’exemple ci-dessus, il n’existe pas de colonne `Body` dans les données. Elle est définie à la place à l’aide d’une expression SQL qui reconstitue une ligne de log Nginx à partir des champs disponibles.

        Pour les autres options possibles, consultez la [référence de configuration](/fr/clickstack/managing/config).
      </Step>

      <Step>
        ### Explorer les données

        Accédez à la vue des logs pour explorer les données et commencer à utiliser ClickStack.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/nginx-logs-vector-search.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=62db4cb133326072330b5ec95d12f349" alt="Logs Nginx dans CLickStack" size="lg" width="3600" height="1906" data-path="images/clickstack/nginx-logs-vector-search.png" />
      </Step>
    </Steps>
  </Tab>

  <Tab title="ClickStack open source">
    <Steps>
      <Step>
        ### Créer une base de données et une table

        Vector nécessite qu’une table et un schéma soient définis avant l’ingestion des données.

        Créez d’abord une base de données. Vous pouvez le faire depuis l’[interface utilisateur Web de ClickHouse](/fr/concepts/features/interfaces/http#web-ui), à l’adresse [http://localhost:8123/play](http://localhost:8123/play). Utilisez le nom d’utilisateur et le mot de passe par défaut `api:api`.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/play-ui-clickstack.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=1bac3511fb24ff4669f04db8998f310f" alt="Interface Play de ClickStack" size="lg" width="3600" height="1918" data-path="images/clickstack/play-ui-clickstack.png" />

        Dans l’exemple ci-dessous, nous utilisons `logs` :

        ```sql theme={null}
        CREATE DATABASE IF NOT EXISTS logs
        ```

        Créez une table pour vos données. Celle-ci doit correspondre au schéma de sortie de celles-ci. L’exemple ci-dessous part du principe d’une structure Nginx classique. Adaptez-la à vos données, en respectant les [bonnes pratiques relatives au schéma](/fr/concepts/best-practices/select-data-type). Nous vous **recommandons vivement** de vous familiariser avec le [concept des clés primaires](/fr/concepts/core-concepts/primary-indexes) et de choisir votre clé primaire en suivant les recommandations présentées [ici](/fr/clickstack/managing/performance-tuning#choosing-a-primary-key).

        ```sql theme={null}
        CREATE TABLE logs.nginx_logs
        (
            `time_local` DateTime,
            `remote_addr` IPv4,
            `remote_user` LowCardinality(String),
            `request` String,
            `status` UInt16,
            `body_bytes_sent` UInt64,
            `http_referer` String,
            `http_user_agent` String,
            `http_x_forwarded_for` LowCardinality(String),
            `request_time` Float32,
            `upstream_response_time` Float32,
            `http_host` String
        )
        ENGINE = MergeTree
        ORDER BY (toStartOfMinute(time_local), status, remote_addr)
        ```

        <Info>
          **Clé primaire Nginx**

          La clé primaire ci-dessus est basée sur les schémas d’accès typiques dans la ClickStack UI pour les logs Nginx, mais elle devra შესაძლოა être ajustée en fonction de votre charge de travail dans des environnements de production.
        </Info>
      </Step>

      <Step>
        ### Ajouter le sink ClickHouse à la configuration de Vector

        Pour Vector, l’ingestion vers ClickStack doit se faire directement dans ClickHouse, sans passer par l’endpoint OTLP exposé par le collecteur.

        Modifiez votre configuration Vector pour y inclure le sink ClickHouse, en mettant à jour le champ `inputs` afin qu’il reçoive les événements de vos pipelines existants.

        Cette configuration suppose que votre pipeline Vector en amont a déjà **préparé les données pour qu’elles correspondent au schéma ClickHouse cible**, c’est-à-dire que les champs ont été analysés, correctement nommés et typés de façon appropriée pour l’insertion. Consultez l’[**exemple Nginx ci-dessous**](#example-dataset-with-vector) pour une illustration complète de l’analyse et de la normalisation de lignes de log brutes en un schéma adapté à ClickStack.

        ```yaml theme={null}
        sinks:
          clickhouse:
            type: clickhouse
            inputs:
              - your_input
            endpoint: "http://localhost:8123"
            database: logs
            format: json_each_row
            table: nginx_logs
            skip_unknown_fields: true
            auth:
              strategy: "basic"
              user: "api"
              password: "api"
        ```

        Par défaut, nous recommandons d’utiliser le format **`json_each_row`**, qui encode chaque événement sous la forme d’un objet JSON unique par ligne. Il s’agit du format par défaut recommandé pour ClickStack lors de l’ingestion de données JSON, et il est à privilégier par rapport aux formats alternatifs, comme les objets JSON encodés sous forme de chaînes.

        Le sink ClickHouse prend également en charge **l’encodage en flux Arrow** (actuellement en bêta). Cela peut offrir un débit plus élevé, mais s’accompagne de contraintes importantes : la base de données et la table doivent être statiques, car le schéma n’est récupéré qu’une seule fois au démarrage, et le routage dynamique n’est pas pris en charge. Pour cette raison, l’encodage Arrow convient surtout aux pipelines d’ingestion fixes et bien définis.

        Nous vous recommandons de consulter les options de configuration disponibles pour le sink dans la [documentation Vector](https://vector.dev/docs/reference/configuration/sinks/clickhouse) :

        <Note>
          L’exemple ci-dessus utilise l’utilisateur `api` pour ClickStack Open Source. Pour les déploiements de production, nous recommandons de [créer un utilisateur d’ingestion dédié](/fr/clickstack/ingesting-data/collector#creating-an-ingestion-user) avec les autorisations et limites appropriées. Cette configuration suppose également que Vector s’exécute sur le même hôte que ClickStack. Dans un déploiement de production, ce sera probablement différent. Nous vous recommandons d’envoyer les données via le port HTTPS sécurisé 8443.
        </Note>
      </Step>

      <Step>
        ### Accéder à l’UI de ClickStack

        Accédez à l’UI de ClickStack à l’adresse [http://localhost:8080](http://localhost:8080). Créez un utilisateur si vous n’avez pas encore terminé l’onboarding.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/RhEK5rhPj_7m6pWY/images/use-cases/observability/hyperdx-login.png?fit=max&auto=format&n=RhEK5rhPj_7m6pWY&q=85&s=eec6e42744553cd8881cf9c9ada74166" alt="Connexion à ClickStack" size="lg" width="3600" height="1900" data-path="images/use-cases/observability/hyperdx-login.png" />
      </Step>

      <Step>
        ### Créer une source de données

        Accédez à Team Settings et ajoutez une nouvelle source de données.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/GaEHa-fd8w_5w7tQ/images/clickstack/create-vector-datasource-oss.png?fit=max&auto=format&n=GaEHa-fd8w_5w7tQ&q=85&s=d9917d00228e1219bbacd2a2759eb938" alt="Créer une source de données - vector" size="lg" width="3600" height="1940" data-path="images/clickstack/create-vector-datasource-oss.png" />

        La configuration ci-dessus repose sur un schéma de type Nginx, avec une colonne `time_local` utilisée comme timestamp. Dans la mesure du possible, il doit s’agir de la colonne de timestamp déclarée dans la clé primaire. Cette colonne est obligatoire.

        Nous recommandons également de mettre à jour `Default SELECT` afin de définir explicitement quelles colonnes sont renvoyées dans la vue des logs. Si des champs supplémentaires sont disponibles, comme le nom du service, le niveau de log ou une colonne body, ils peuvent aussi être configurés. La colonne d’affichage du timestamp peut également être remplacée si elle diffère de la colonne utilisée dans la clé primaire de la table et configurée ci-dessus.

        Dans l’exemple ci-dessus, il n’existe pas de colonne `Body` dans les données. Elle est à la place définie à l’aide d’une expression SQL qui reconstitue une ligne de log Nginx à partir des champs disponibles.

        Pour découvrir les autres options possibles, consultez la [référence de configuration](/fr/clickstack/managing/config).
      </Step>

      <Step>
        ### Explorer les données

        Accédez à la vue Logs pour explorer les données et commencer à utiliser ClickStack.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/nginx-logs-vector-search.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=62db4cb133326072330b5ec95d12f349" alt="Logs Nginx dans ClickStack" size="lg" width="3600" height="1906" data-path="images/clickstack/nginx-logs-vector-search.png" />
      </Step>
    </Steps>
  </Tab>
</Tabs>

<div id="example-dataset-with-vector">
  ## Jeu de données d’exemple avec Vector
</div>

Pour un exemple plus complet, nous utilisons ci-dessous un **fichier journal de Nginx**.

<Tabs>
  <Tab title="ClickStack managé">
    Le guide suivant suppose que vous avez déjà créé un service Managed ClickStack et noté vos identifiants de service. Si ce n'est pas le cas, suivez le guide [Getting Started](/fr/clickstack/getting-started/managed) pour Managed ClickStack jusqu'à l'invite de configuration de Vector.

    <Steps>
      <Step>
        ### Installation de Vector

        Avant de continuer, assurez-vous que **Vector est installé** sur le système sur lequel vous prévoyez d’exécuter votre pipeline d’ingestion. Suivez le [guide officiel d’installation de Vector](https://vector.dev/docs/setup/installation/) pour installer un binaire précompilé ou un paquet adapté à votre environnement :

        Une fois l’installation terminée, vérifiez que le binaire `vector` est disponible dans votre PATH avant de poursuivre avec les étapes de configuration ci-dessous.

        Vector peut être installé sur la même instance que votre ClickStack OTel collector.

        Suivez les bonnes pratiques en matière d’architecture et de sécurité lorsque vous [faites passer Vector en production](https://vector.dev/docs/setup/going-to-prod/).
      </Step>

      <Step>
        ### Téléchargez les données d’exemple

        Si vous souhaitez faire des essais avec un jeu de données d’exemple, téléchargez l’exemple nginx ci-dessous.

        ```bash theme={null}
        curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/access.log
        ```

        <Note>
          Ces données ont été collectées à partir d’une instance Nginx configurée pour écrire les logs au format JSON afin d’en faciliter l’analyse. Pour la configuration Nginx correspondante, consultez ["Surveillance des logs Nginx avec ClickStack"](/fr/clickstack/integration-examples/nginx-logs#configure-nginx).
        </Note>
      </Step>

      <Step>
        ### Créer une base de données et une table

        Vector nécessite qu'une table et un schéma soient définis avant toute ingestion de données.

        Créez d'abord une base de données. Vous pouvez le faire depuis la [ClickHouse Cloud console](/fr/products/cloud/features/sql-console-features/sql-console).

        Créez une base de données `logs` :

        ```sql theme={null}
        CREATE DATABASE IF NOT EXISTS logs
        ```

        Créez une table pour vos données.

        ```sql theme={null}
        CREATE TABLE logs.nginx_logs
        (
            `time_local` DateTime,
            `remote_addr` IPv4,
            `remote_user` LowCardinality(String),
            `request` String,
            `status` UInt16,
            `body_bytes_sent` UInt64,
            `http_referer` String,
            `http_user_agent` String,
            `http_x_forwarded_for` LowCardinality(String),
            `request_time` Float32,
            `upstream_response_time` Float32,
            `http_host` String
        )
        ENGINE = MergeTree
        ORDER BY (toStartOfMinute(time_local), status, remote_addr)
        ```

        <Info>
          **Clé primaire Nginx**

          La clé primaire ci-dessus correspond aux modes d’accès typiques dans ClickStack UI pour les logs Nginx, mais elle devra peut-être être ajustée en fonction de votre charge de travail en production.
        </Info>
      </Step>

      <Step>
        ### Copier la configuration Vector

        Copiez la configuration Vector et créez un fichier `nginx.yaml` en renseignant `CLICKHOUSE_ENDPOINT` et `CLICKHOUSE_PASSWORD`.

        ```yaml theme={null}
        data_dir: ./.vector-data
        sources:
          nginx_logs:
            type: file
            include:
              - access.log
            read_from: beginning

        transforms:
          decode_json:
            type: remap
            inputs:
              - nginx_logs
            source: |
              . = parse_json!(to_string!(.message))
              ts = parse_timestamp!(.time_local, format: "%d/%b/%Y:%H:%M:%S %z")
              # ClickHouse-friendly DateTime format
              .time_local = format_timestamp!(ts, format: "%F %T")

        sinks:
          clickhouse:
            type: clickhouse
            inputs:
              - decode_json
            endpoint: "<CLICKHOUSE_ENDPOINT>"
            database: logs
            format: json_each_row
            table: nginx_logs
            skip_unknown_fields: true
            auth:
              strategy: "basic"
              user: "default"
              password: "<CLICKHOUSE_PASSWORD>"
        ```

        <Note>
          L’exemple ci-dessus utilise l’utilisateur par défaut de Managed ClickStack. Pour les déploiements en production, nous recommandons de [créer un utilisateur d’ingestion dédié](/fr/clickstack/ingesting-data/collector#creating-an-ingestion-user) avec les autorisations et les limites appropriées.
        </Note>
      </Step>

      <Step>
        ### Démarrer Vector

        Démarrez Vector avec la commande suivante, en créant d’abord le répertoire de données afin d’enregistrer les offsets de fichier.

        ```bash theme={null}
        mkdir ./.vector-data
        vector --config nginx.yaml
        ```
      </Step>

      <Step>
        ### Accéder à la ClickStack UI

        Accédez à votre service Managed ClickStack, puis sélectionnez "ClickStack" dans le menu de gauche. Si vous avez déjà terminé l’onboarding, la ClickStack UI s’ouvrira dans un nouvel onglet et vous serez automatiquement authentifié. Sinon, vous pouvez poursuivre l’onboarding et sélectionner « Launch ClickStack » une fois Vector choisi comme source d’entrée.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/launch-clickstack-vector.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=17ddb1720ed82d5007b4bd747f26480d" alt="Launch ClickStack pour Vector" size="lg" width="1920" height="918" data-path="images/clickstack/launch-clickstack-vector.png" />
      </Step>

      <Step>
        ### Créer une source de données

        Créez une source de données de logs. S’il n’existe encore aucune source de données, il vous sera demandé d’en créer une lors de votre première connexion. Sinon, accédez à Team Settings et ajoutez une nouvelle source de données.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/GaEHa-fd8w_5w7tQ/images/clickstack/create-vector-datasource.png?fit=max&auto=format&n=GaEHa-fd8w_5w7tQ&q=85&s=bcf6923c4843a0a9ba198628ea3cfd87" alt="Créer une source de données - vector" size="lg" width="3600" height="1938" data-path="images/clickstack/create-vector-datasource.png" />

        La configuration repose sur le schéma Nginx, avec une colonne `time_local` utilisée comme horodatage. Il s’agit de la colonne d’horodatage déclarée dans la clé primaire. Cette colonne est obligatoire.

        Nous avons également défini la sélection par défaut sur `time_local, remote_addr, status, request`, ce qui détermine les colonnes renvoyées dans la vue des logs.

        Dans l’exemple ci-dessus, il n’y a pas de colonne `Body` dans les données. À la place, elle est définie comme l’expression SQL :

        ```sql theme={null}
        concat(
          remote_addr, ' ',
          remote_user, ' ',
          '[', formatDateTime(time_local, '%d/%b/%Y:%H:%M:%S %z'), '] ',
          '"', request, '" ',
          toString(status), ' ',
          toString(body_bytes_sent), ' ',
          '"', http_referer, '" ',
          '"', http_user_agent, '" ',
          '"', http_x_forwarded_for, '" ',
          toString(request_time), ' ',
          toString(upstream_response_time), ' ',
          '"', http_host, '"'
        )
        ```

        Cela reconstitue la ligne de journal à partir des champs structurés.

        Pour les autres options disponibles, consultez la [référence de configuration](/fr/clickstack/managing/config).
      </Step>

      <Step>
        ### Explorer les données

        Accédez à la vue de recherche du `20 octobre 2025` pour explorer les données et commencer à utiliser ClickStack.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/nginx-logs-vector-search.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=62db4cb133326072330b5ec95d12f349" alt="HyperDX UI" size="lg" width="3600" height="1906" data-path="images/clickstack/nginx-logs-vector-search.png" />
      </Step>
    </Steps>
  </Tab>

  <Tab title="ClickStack open source">
    Le guide suivant suppose que vous avez configuré ClickStack Open Source en suivant le [guide de démarrage](/fr/clickstack/getting-started/oss).

    <Steps>
      <Step>
        ### Installation de Vector

        Avant de continuer, assurez-vous que **Vector est installé** sur le système sur lequel vous prévoyez d’exécuter votre pipeline d’ingestion. Suivez le [guide officiel d’installation de Vector](https://vector.dev/docs/setup/installation/) pour installer un binaire précompilé ou un paquet adapté à votre environnement :

        Une fois l’installation terminée, vérifiez que le binaire `vector` est disponible dans votre PATH avant de poursuivre avec les étapes de configuration ci-dessous.

        Vector peut être installé sur la même instance que votre ClickStack OTel collector.

        Suivez les bonnes pratiques en matière d’architecture et de sécurité lorsque vous [faites passer Vector en production](https://vector.dev/docs/setup/going-to-prod/).
      </Step>

      <Step>
        ### Télécharger le jeu de données d’exemple

        Si vous souhaitez faire des essais avec un jeu de données d’exemple, téléchargez l’exemple nginx ci-dessous.

        ```bash theme={null}
        curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/access.log
        ```

        <Note>
          Ces données ont été collectées à partir d’une instance Nginx configurée pour écrire les logs au format JSON afin d’en faciliter l’analyse. Pour la configuration Nginx correspondante, consultez ["Surveillance des logs Nginx avec ClickStack"](/fr/clickstack/integration-examples/nginx-logs#configure-nginx).
        </Note>
      </Step>

      <Step>
        ### Créer une base de données et une table

        Vector nécessite qu’une table et un schéma soient définis avant l’ingestion de données.

        Commencez par créer une base de données. Vous pouvez le faire via l’[interface utilisateur web de ClickHouse](/fr/concepts/features/interfaces/http#web-ui), à l’adresse [http://localhost:8123/play](http://localhost:8123/play). Utilisez le nom d’utilisateur et le mot de passe par défaut `api:api`.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/play-ui-clickstack.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=1bac3511fb24ff4669f04db8998f310f" alt="UI Play de ClickStack" size="lg" width="3600" height="1918" data-path="images/clickstack/play-ui-clickstack.png" />

        Créez une base de données `logs` :

        ```sql theme={null}
        CREATE DATABASE IF NOT EXISTS logs
        ```

        Créez une table pour vos données.

        ```sql theme={null}
        CREATE TABLE logs.nginx_logs
        (
            `time_local` DateTime,
            `remote_addr` IPv4,
            `remote_user` LowCardinality(String),
            `request` String,
            `status` UInt16,
            `body_bytes_sent` UInt64,
            `http_referer` String,
            `http_user_agent` String,
            `http_x_forwarded_for` LowCardinality(String),
            `request_time` Float32,
            `upstream_response_time` Float32,
            `http_host` String
        )
        ENGINE = MergeTree
        ORDER BY (toStartOfMinute(time_local), status, remote_addr)
        ```

        <Info>
          **Clé primaire Nginx**

          La clé primaire ci-dessus correspond aux schémas d’accès typiques dans l’interface ClickStack pour les logs Nginx, mais elle შეიძლება devoir être ajustée en fonction de votre charge de travail dans les environnements de production.
        </Info>
      </Step>

      <Step>
        ### Copier la configuration de Vector

        Avec Vector, l’ingestion vers ClickStack doit se faire directement dans ClickHouse, en contournant l’endpoint OTLP exposé par le collecteur.

        Copiez la configuration de Vector et créez un fichier `nginx.yaml`.

        ```yaml theme={null}
        data_dir: ./.vector-data
        sources:
          nginx_logs:
            type: file
            include:
              - access.log
            read_from: beginning

        transforms:
          decode_json:
            type: remap
            inputs:
              - nginx_logs
            source: |
              . = parse_json!(to_string!(.message))
              ts = parse_timestamp!(.time_local, format: "%d/%b/%Y:%H:%M:%S %z")
              # ClickHouse-friendly DateTime format
              .time_local = format_timestamp!(ts, format: "%F %T")

        sinks:
          clickhouse:
            type: clickhouse
            inputs:
              - decode_json
            endpoint: "http://localhost:8123"
            database: logs
            format: json_each_row
            table: nginx_logs
            skip_unknown_fields: true
            auth:
              strategy: "basic"
              user: "api"
              password: "api"
        ```

        <Note>
          L’exemple ci-dessus utilise l’utilisateur `api` pour ClickStack Open Source. Pour les déploiements en production, nous recommandons de [créer un utilisateur d’ingestion dédié](/fr/clickstack/ingesting-data/collector#creating-an-ingestion-user) avec les autorisations et limites appropriées. Cette configuration suppose également que Vector s’exécute sur le même hôte que ClickStack. En production, ce sera probablement différent. Nous vous recommandons d’envoyer les données via le port HTTPS sécurisé 8443.
        </Note>
      </Step>

      <Step>
        ### Démarrer Vector

        Démarrez Vector à l’aide de la commande suivante.

        ```bash theme={null}
        mkdir ./.vector-data
        vector --config nginx-local.yaml
        ```
      </Step>

      <Step>
        ### Créer une source de données

        Créez une source de données de logs via `Team -> Sources`

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/GaEHa-fd8w_5w7tQ/images/clickstack/create-vector-datasource-oss.png?fit=max&auto=format&n=GaEHa-fd8w_5w7tQ&q=85&s=d9917d00228e1219bbacd2a2759eb938" alt="Créer une source de données - vector" size="lg" width="3600" height="1940" data-path="images/clickstack/create-vector-datasource-oss.png" />

        La configuration suppose un schéma Nginx avec une colonne `time_local` utilisée comme horodatage. Il s’agit de la colonne d’horodatage déclarée dans la clé primaire. Cette colonne est obligatoire.

        Nous avons également défini la sélection par défaut sur `time_local, remote_addr, status, request`, ce qui détermine les colonnes renvoyées dans la vue des logs.

        Dans l’exemple ci-dessus, `Body` n’est pas une colonne présente dans les données. À la place, elle est définie par l’expression SQL suivante :

        ```sql theme={null}
        concat(
          remote_addr, ' ',
          remote_user, ' ',
          '[', formatDateTime(time_local, '%d/%b/%Y:%H:%M:%S %z'), '] ',
          '"', request, '" ',
          toString(status), ' ',
          toString(body_bytes_sent), ' ',
          '"', http_referer, '" ',
          '"', http_user_agent, '" ',
          '"', http_x_forwarded_for, '" ',
          toString(request_time), ' ',
          toString(upstream_response_time), ' ',
          '"', http_host, '"'
        )
        ```

        Cette opération reconstitue la ligne de log à partir des champs structurés.

        Pour connaître les autres options possibles, consultez la [référence de configuration](/fr/clickstack/managing/config).
      </Step>

      <Step>
        ### Accéder à l’interface utilisateur de ClickStack

        Accédez à l’interface utilisateur de ClickStack à l’adresse [http://localhost:8080](http://localhost:8080). Créez un utilisateur si vous n’avez pas encore terminé l’onboarding.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/RhEK5rhPj_7m6pWY/images/use-cases/observability/hyperdx-login.png?fit=max&auto=format&n=RhEK5rhPj_7m6pWY&q=85&s=eec6e42744553cd8881cf9c9ada74166" alt="Connexion à ClickStack" size="lg" width="3600" height="1900" data-path="images/use-cases/observability/hyperdx-login.png" />
      </Step>

      <Step>
        ### Explorer les données

        Accédez à la vue Search pour `October 20th, 2025` afin d’explorer les données et de commencer à utiliser ClickStack.

        <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-8c05c8a2/mGB-7MnBG_6npuhw/images/clickstack/nginx-logs-vector-search.png?fit=max&auto=format&n=mGB-7MnBG_6npuhw&q=85&s=62db4cb133326072330b5ec95d12f349" alt="HyperDX UI" size="lg" width="3600" height="1906" data-path="images/clickstack/nginx-logs-vector-search.png" />
      </Step>
    </Steps>
  </Tab>
</Tabs>
