ADC

Surveillance de NetScaler, des applications et de la sécurité des applications à l’aide de Prometheus

Les métriques sont une représentation numérique de données mesurées sur une certaine période. Les données métriques sont utiles pour suivre l’ état de santé d’un système au fil du temps. Prometheus est un outil de surveillance open source qui collecte des données métriques et stocke ces données avec un horodatage auquel les données ont été enregistrées.

En surveillant et en analysant les indicateurs, vous pouvez suivre l’état de santé de vos applications, détecter toute anomalie, créer des alertes et prendre les mesures correctives nécessaires pour garantir une fourniture logicielle robuste.

NetScaler prend désormais en charge l’exportation directe des métriques vers Prometheus. Vous pouvez utiliser le riche ensemble de mesures fourni par NetScaler ADC pour surveiller l’état de NetScaler ainsi que celui des applications. Par exemple, vous pouvez collecter des mesures sur l’utilisation du processeur et de la mémoire pour connaître l’état de santé de NetScaler. De même, vous pouvez utiliser des mesures telles que le nombre de requêtes HTTP reçues par seconde ou le nombre de clients actifs pour surveiller l’état de santé des applications.

Exportation de métriques depuis NetScaler vers Prometheus

NetScaler prend en charge le mode pull de Prometheus ainsi que le mode push. En mode extraction, vous devez configurer un profil de série chronologique que Prometheus interroge à intervalles réguliers et extrait les données métriques directement sans aucune ressource d’exportation intermédiaire. Avec le mode pull, vous pouvez autoriser l’accès en lecture seule à un utilisateur ne disposant pas de privilèges de superutilisateur pour exporter des métriques vers Prometheus. À l’aide de Grafana, vous pouvez visualiser les métriques NetScaler exportées vers Prometheus pour faciliter l’interprétation et la compréhension.

Le schéma suivant montre une intégration de Prometheus et Grafana avec NetScaler.

Intégration de NetScaler à Prometheus et Grafana

Configurer l’exportation des métriques de NetScaler vers Prometheus et la visualisation à l’aide de Grafana

Vous devez suivre les étapes suivantes pour configurer l’exportation des métriques de NetScaler vers Prometheus et la visualiser à l’aide de Grafana.

  1. Configurez NetScaler avec un profil d’analyse de séries chronologiques pour exporter des métriques vers Prometheus.
  2. Installez Prometheus et configurez-le avec les paramètres spécifiques à NetScaler.
  3. Ajoutez Prometheus comme source de données dans Grafana.
  4. Créer une visualisation dans Grafana

Configurer un profil d’analyse de séries chronologiques sur NetScaler pour prendre en charge le mode d’extraction de Prometheus

Procédez comme suit pour configurer le mode pull à l’aide de l’interface de ligne de commande NetScaler :

  1. Créez un profil d’analyse dont le type est une série chronologique. Spécifiez le fichier de schéma avec les métriques NetScaler requises.

    add analytics profile <timeseries_profile_name> -type timeseries -schemaFile <name_of_schema_file>
    -outputMode Prometheus -serveMode PULL -metrics ENABLED
    

    Dans cette commande :

    • timeseries_profile_name: Spécifiez le nom du profil de la série chronologique.
    • schemaFile: Spécifiez le nom du fichier de schéma avec les compteurs NetScaler. Par défaut, un fichier de schéma /var/metrics_conf/schema.json contenant une liste de compteurs est configuré. Un fichier de schéma de référence reference_schema.json avec tous les compteurs pris en charge est également disponible sous le chemin /var/metrics_conf/. Ce fichier de schéma peut être utilisé comme référence pour créer une liste personnalisée de compteurs. Lorsque vous spécifiez le fichier de schéma, le chemin du fichier de schéma /var/metrics_conf/ est automatiquement ajouté et vous devez uniquement mentionner le nom du fichier de schéma. Par exemple, si vous avez créé un fichier de schéma schema1.json avec une liste personnalisée de compteurs à l’adresse /var/metrics_conf/, vous devez uniquement spécifier le nom du fichier sous la forme schema1.json.

    • outputMode: définissez le mode de sortie comme Prometheus.
    • serveMode: Spécifiez le mode d’extraction de Prometheus.
    • metrics: Activez la collecte de métriques à partir de NetScaler.

Remarque :

Vous pouvez configurer un profil d’analyse avec tous les paramètres nécessaires à l’aide de la commande add. Si vous devez apporter des modifications après avoir créé le profil, vous pouvez utiliser la commande set pour prendre les mesures appropriées, telles que désactiver les métriques et modifier le mode serveur. Vous pouvez configurer l’accès en lecture seule à Prometheus pour un utilisateur qui n’est pas un superutilisateur. Pour plus d’informations, consultez la section Configurer l’accès en lecture seule à Prometheus pour un utilisateur qui n’est pas un superutilisateur.

Installation et configuration de Prometheus pour l’exportation de métriques depuis NetScaler

Vous pouvez télécharger Prometheus à partir de référentiels tels que DockerHub ou Quay ou du référentiel officiel Prometheus.

Pour exécuter Prometheus en tant que conteneur Docker, utilisez la commande suivante :

    docker run -dp 39090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml --name native_prom prom/prometheus:latest  > **Remarque :** > > Ici, `/tmp/prometheus.yml` est utilisé comme chemin d'accès au `prometheus.yml` fichier. Au lieu de cela, vous pouvez spécifier le chemin sur votre machine virtuelle.

Vous devez modifier le prometheus.yml avec les paramètres NetScaler.

Pour exporter des métriques depuis NetScaler, vous devez spécifier les paramètres spécifiques à NetScaler suivants dans la section de configuration de Prometheus YAML scrape. La section de configuration du scrape spécifie un ensemble de cibles et de paramètres de configuration décrivant comment les récupérer.

  • metrics_path : Spécifiez le chemin de la ressource HTTP dans NetScaler (/nitro/v1/config/systemfile) pour récupérer les métriques.
  • username: Spécifiez le nom d’utilisateur NetScaler.
  • password: Spécifiez le mot de passe NetScaler.
  • targets: Spécifiez l’adresse IP du NetScaler à partir duquel vous devez exporter les métriques, les métriques et le port que vous souhaitez exposer.
  • filename : Spécifiez le nom du profil de série chronologique configuré timeseries_profile_name à la place du metrics_prom_<timeseries_profile_name>.log fichier.
  • filelocation: spécifiez l’emplacement du fichier sous la forme /var/nslog.

Vous trouverez ci-dessous la section de configuration de rebut du fichier YAML de Prometheus permettant d’ajouter l’adresse IP NetScaler en tant que cible sur Prometheus pour exporter des métriques. Ici, le protocole HTTP est utilisé comme schéma. Vous pouvez utiliser HTTP ou HTTPS.

scrape_configs:
  - job_name: 'vpx2_metrics_direct'
    metrics_path: /nitro/v1/config/systemfile
    params:
      args: ['filename:metrics_prom_ns_analytics_time_series_profile.log,filelocation:/var/nslog']
      format: ['prometheus']
    basic_auth:
     username: 'prom_user'
     password: 'user_password'
    scheme: http
    scrape_interval: 30s
    static_configs:
     - targets: ['10.102.34.231:80']
<!--NeedCopy-->

Ajouter Prometheus comme source de données dans Grafana

Si vous avez besoin de visualiser les métriques à l’aide des tableaux de bord Grafana, vous devez ajouter Prometheus en tant que source de données dans Grafana. Pour plus d’informations, voir Ajouter Prometheus en tant que source de données dans Grafana.

Créez la visualisation des métriques dans Grafana

Vous pouvez créer un tableau de bord Grafana et sélectionner les indicateurs clés et le type de visualisation approprié.

La procédure suivante montre comment ajouter une métrique au panneau Grafana et créer un exemple de tableau de bord de visualisation.

  1. Spécifiez le titre du panneau.
  2. Dans l’onglet Requête, pour la requête A, spécifiez la métrique requise.
  3. Dans l’onglet Paramètres, sélectionnez le type de visualisation.

Vous pouvez modifier les données et leur représentation dans Grafana. Pour plus d’informations, consultez la documentation Grafana.

Voici un exemple de tableau de bord Grafana avec quelques métriques NetScaler :

Exemple de tableau de bord Grafana

Dans ce tableau de bord, vous pouvez consulter des graphiques pour différentes métriques NetScaler, telles que :

  • vsvr_tot_Hits: indique le nombre de demandes reçues par le serveur virtuel.
  • cc_cpu_use: affiche le pourcentage d’utilisation du processeur.
  • http_tot_Requests: affiche les requêtes HTTP reçues.
  • serv_tot_serviced: affiche la demande en cours de traitement.
  • mem_cur_used_size: affiche la mémoire actuellement utilisée par l’appliance NetScaler.

Exemples de graphes de Prometheus

À l’aide du navigateur d’expressions Prometheus, vous pouvez afficher les métriques de séries chronologiques collectées par le serveur Prometheus. Vous pouvez accéder au navigateur d’expressions en le pointant prometheu-server-ip-address/graph dans votre navigateur. Vous pouvez saisir une expression et voir le résultat sous forme de tableau ou de graphique au fil du temps. Spécifiez la métrique exacte que vous souhaitez afficher en saisissant le nom de la métrique dans le champ Expression. Vous pouvez spécifier plusieurs compteurs à l’aide de différents panneaux.

Le diagramme suivant montre les graphes de Prometheus pour deux métriques NetScaler et. cpu_usehttp_tot_requests

Exemple de tableau de bord Prometheus

Exemple de tableau de bord Grafana

Vous pouvez télécharger les exemples de tableaux de bord depuis la page de téléchargement de NetScaler.

Vous trouverez ci-dessous un exemple de tableau de bord Grafana avec la possibilité de consulter les différentes mesures de l’infrastructure globale en un seul endroit, telles que l’état de NetScaler, l’état du serveur virtuel, l’état des applications (applications HTTP et TCP) et la sécurité des applications (applications SSL).

Exemple de tableau de bord Grafana

Vous pouvez développer la section correspondante dans le tableau de bord pour afficher la visualisation détaillée de chaque section, telle que les applications HTTP, les applications SSL, les applications TCP, les statistiques des serveurs virtuels (vStats) et les statistiques NetScaler.

Le schéma suivant montre un exemple de tableau de bord Grafana avec des statistiques NetScaler étendues :

Exemple de tableau de bord Grafana

Informations supplémentaires

Schéma avec les compteurs NetScaler requis pour l’exportation

Le collecteur de métriques exporte les compteurs présents dans le fichier de schéma configuré. Le /var/metrics_conf/schema.json fichier est le fichier de schéma par défaut configuré dans le profil d’analyse.

Le fichier de schéma est une liste de types d’entités et de compteurs associés. Dans le schéma, tous les compteurs globaux ou au niveau du système sont regroupés sous le type netscalerd’entité. Certains des compteurs globaux sont l’utilisation du processeur (cpu_use), l’utilisation du processeur de gestion (mgmt_cpu_use) et le nombre total de requêtes HTTP reçues (http_tot_Requests). Les compteurs spécifiques aux groupes de services lbvserver, csvserver, etc. sont répertoriés sous les types d’entités respectifs.

Vous trouverez ci-dessous un exemple de compteurs contenus dans le schema.json fichier pour l’entité serveur virtuel d’authentification (vserver_authn).

"vserver_authn":
  [
      {"name":"si_tot_Requests","rate":"True"},
      {"name":"si_tot_Responses","rate":"True"},
      {"name":"si_tot_RequestBytes","rate":"True"},
      {"name":"si_cur_state","rate":"False"},
      {"name":"si_tot_ResponseBytes","rate":"True"},
      {"name":"si_peer_port","rate":"True"},
      {"name":"vsvr_Protocol","rate":"False"}
  ]

Le tableau suivant explique les compteurs mentionnés dans cet exemple :

Nom du compteur Description
si_tot_Requests Nombre total de demandes reçues sur ce service ou ce serveur virtuel.
si_tot_Responses Nombre total de réponses reçues sur ce service ou ce serveur virtuel.
si_tot_RequestBytes Nombre total d’octets de demande reçus sur ce service ou serveur virtuel.
si_cur_state État actuel du serveur virtuel.
si_tot_ResponseBytes Nombre total d’octets de réponse reçus sur ce service ou ce serveur virtuel.
si_peer_port Port sur lequel le service s’exécute.
vsvr_Protocol Protocole associé au serveur virtuel.

Le rate champ peut être défini comme True s’il s’agissait de la valeur du taux qu’un compteur doit exporter. Par exemple, le taux de si_tot_Requests est exporté si le rate est défini sur True pour si_tot_Requests.

Voici un exemple de compteurs de l’entité netscaler.

  "netscaler":
    [   
        {"name":"cpu_use","rate":"False"},
        {"name":"mgmt_cpu_use","rate":"False"},
        {"name":"tcp_tot_rxpkts","rate":"True"},
        {"name":"tcp_tot_rxbytes","rate":"True"},
        {"name":"tcp_tot_txpkts","rate":"True"},
        {"name":"tcp_tot_txbytes","rate":"True"},
        {"name":"tcp_cur_ClientConnEst","rate":"False"},
        {"name":"tcp_cur_ServerConnEst","rate":"False"},
        {"name":"tcp_cur_ClientConn","rate":"False"},
        {"name":"tcp_cur_ClientConnClosing","rate":"False"},
        {"name":"tcp_tot_ClientOpen","rate":"True"},
        {"name":"tcp_cur_ServerConn","rate":"False"},
        {"name":"tcp_cur_ServerConnClosing","rate":"False"},
        {"name":"http_tot_Requests","rate":"True"},
        {"name":"http_tot_Responses","rate":"True"},
        {"name":"http_tot_Gets","rate":"True"},
        {"name":"http_tot_Posts","rate":"True"},
        {"name":"http_tot_Others","rate":"True"},
    ]

Le tableau suivant explique les compteurs mentionnés dans cet exemple :

Nom du compteur Description
cpu_use Suit le pourcentage d’utilisation du processeur (pourcentage d’utilisation du processeur * 10).
tcp_tot_rxpkts Paquets TCP reçus.
tcp_tot_rxbytes Octets de données TCP reçus.
tcp_tot_txpkts Paquets TCP transmis.
tcp_tot_txbytes Octets de données TCP transmis.
tcp_cur_ClientConnEst Les connexions client actuelles sont dans l’état Établi, ce qui indique qu’un transfert de données peut avoir lieu entre l’appliance NetScaler et le client.
tcp_cur_ServerConnEst Les connexions au serveur en cours sont dans l’état Établi, ce qui indique qu’un transfert de données peut avoir lieu entre l’appliance NetScaler et le serveur.
tcp_cur_ClientConn Connexions client, y compris les connexions à l’état Ouvrir, Établi et Fermer. Connexions au serveur, y compris les connexions à l’état Ouvrir, Établi et Fermer.
tcp_cur_ClientConnClosing Les connexions client sont dans l’état de fermeture, ce qui indique que le processus de fin de connexion a débuté mais n’est pas terminé.
tcp_cur_ServerConn Connexions au serveur, y compris les connexions à l’état Ouvrir, Établi et Fermer.
tcp_cur_ServerConnClosing Les connexions au serveur sont en cours de fermeture, ce qui indique que le processus de fin de connexion a débuté mais n’est pas terminé.
http_tot_Requests Ce compteur assure le suivi des requêtes HTTP reçues à l’aide de la méthode GET.
http_tot_Responses Ce compteur assure le suivi des requêtes HTTP reçues à l’aide de la méthode POST.
http_tot_Gets Ce compteur assure le suivi des requêtes HTTP reçues à l’aide de la méthode GET.
http_tot_Posts Ce compteur assure le suivi des requêtes HTTP reçues.
http_tot_Others Ce compteur suit les requêtes HTTP reçues à l’aide de méthodes autres que GET et POST.

Voici un exemple de compteurs de l’entité vserver_ssl.

"vserver_ssl":
[
    {"name":"ssl_ctx_tot_session_hits","rate":"True"},
    {"name":"ssl_ctx_tot_session_new","rate":"True"},
    {"name":"ssl_ctx_tot_enc_bytes","rate":"True"},
    {"name":"ssl_ctx_tot_dec_bytes","rate":"True"},
]

Le tableau suivant explique les compteurs SSL mentionnés dans cet exemple :

Nom du compteur Description
ssl_ctx_tot_session_hits Ce compteur enregistre le nombre d’accès à la session.
ssl_ctx_tot_session_new Ce compteur enregistre le nombre de nouvelles sessions créées.
ssl_ctx_tot_enc_bytes Ce compteur suit le nombre d’octets chiffrés par serveur virtuel SSL.
ssl_ctx_tot_dec_bytes Ce compteur suit le nombre d’octets déchiffrés par serveur virtuel SSL.

Configurer l’accès en lecture seule à Prometheus pour un utilisateur qui n’est pas un superutilisateur

Procédez comme suit pour configurer l’accès en lecture seule à Prometheus pour un utilisateur qui n’est pas un superutilisateur.

  1. Ajoutez un nouvel utilisateur à l’appliance NetScaler.

     add system user <ns_user_name> <ns_user's_password> -externalAuth enabled -promptString user-%u-at-%T logging enaBLED
    

    Exemple :

     add system user nspaul nspaul -externalAuth enabled -promptString user-%u-at-%T logging enaBLED
    
  2. Créez une stratégie de commande pour un utilisateur en lecture seule. Cette stratégie de commande autorise l’accès en lecture seule à partir de n’importe quel fichier sous le /var/nslog/ directory.

    add system cmdPolicy read-only-prometheus ALLOW \"\(^man.\*)|\(^show\s+\(?!system)\(?!configstatus)\(?!ns ns\.conf)\(?!ns savedconfig)\(?!ns runningConfig)\(?!gslb runningConfig)\(?!audit messages)\(?!techsupport).\*)|\(^stat.\*)|\(show system file .\* -filelocation \"/var/nslog\")\"
    
  3. Si les métriques ne sont écrites que dans un certain fichier, vous pouvez même limiter l’accès des utilisateurs de telle sorte qu’ils ne puissent accéder qu’à ce fichier spécifique.

    add system cmdPolicy read-only-prometheus ALLOW \"\(^man.\*)|\(^show\s+\(!system)\(!configstatus)\(!ns ns\.conf)\(!ns savedconfig)
    \(!ns runningConfig)\(!gslb   runningConfig)\(!audit messages)\(!techsupport).\*)|\(^stat.\*)
    |\(show system file metrics\_prom\_<name\_of\_timeseries\_profile>.log -filelocation \"/var/nslog\")\"
    

    Remarque :

    Dans la show system file commande, spécifiez le nom du profil de série chronologique que vous avez configuré à la place name_of_ timeseries_profile.

  4. Liez un utilisateur à la stratégie de commande.

    bind system user <userName> \(\(<policyName> <priority>) | -partitionName <string>)
    

    Par exemple :

    bind system user user1 read-only-prometheus 0
    

Pour dissocier et supprimer un utilisateur de la stratégie de commande, utilisez les commandes suivantes :

  1. Dissociez un utilisateur configuré de la stratégie de commande du système.

    unbind system user <userName> \(<policyName> | -partitionName <string>
    

    Par exemple :

    unbind system user user1 read-only-prometheus
    
  2. Supprimez la commande Policy de NetScaler.

    rm system cmdPolicy read-only-prometheus
    

Abonnement de compteurs pour plusieurs profils de séries chronologiques

NetScaler prend désormais en charge la création de plusieurs profils de séries chronologiques et spécifie un ensemble de compteurs différent pour chaque profil. Vous pouvez également exporter uniquement les compteurs en fonction de vos besoins.

Vous devez créer plusieurs schema.json fichiers contenant les compteurs nécessaires avec des noms uniques et l’ .json extension pour configurer plusieurs profils de séries chronologiques. Un fichier de schéma de référence reference_schema.json est disponible sous le chemin /var/metrics_conf/. Vous pouvez modifier le schéma de référence selon vos besoins et l’utiliser en conséquence.

La configuration des deux nouveaux profils de séries chronologiques est la suivante :

add analytics profile ns_analytics_timeseries_profile_1   -type timeseries -schemaFile schema1.json

set analytics profile  ns_analytics_timeseries_profile_1 -outputMode prometheus -serveMode PULL -metrics ENABLED

add analytics profile ns_analytics_timeseries_profile_2   -type timeseries -schemaFile schema2.json

set analytics profile  ns_analytics_timeseries_profile_2 -outputMode prometheus -serveMode PULL -metrics ENABLED

Dans cet exemple, schema1.json et schema2.json possèdent différents ensembles de compteurs.

Configuration de Prometheus

La configuration d’un fichier prometheus.yml d’exemple est la suivante :

scrape_configs:
  - job_name: 'vpx2_metrics_direct'
    metrics_path: /nitro/v1/config/systemfile
    params:
      args: ['filename:metrics_prom_ns_analytics_time_series_profile.log,filelocation:/var/nslog']
      format: ['prometheus']
    basic_auth:
     username: 'prom_user'
     password: 'user_password'
    scheme: https
    scrape_interval: 30s
    static_configs:
     - targets: ['<ADC1-ip>:<port>', '<ADC2-ip>:<port>']
<!--NeedCopy-->
Surveillance de NetScaler, des applications et de la sécurité des applications à l’aide de Prometheus