ADC

Surveillez NetScaler, les applications et 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. Configurez l’accès Prometheus en lecture seule pour un utilisateur qui n’est pas un superutilisateur.
  4. Ajoutez Prometheus comme source de données dans Grafana.
  5. Créez 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
    <!--NeedCopy-->
    

    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.

      Remarque :

      Ne configurez pas les compteurs de chaînes suivants car ils ne sont pas pris en charge par Prometheus :

      • si_peer_ip_str
      • cl_cur_vleader
      • cl_cur_nodeip
      • gslb_site_ip_str
      • gslb_site_public_str
      • VSVR_IPSTR
      • nic_cur_if_alias
      • vsvR_DynamicProtocolStr
      • api_endpoint_apiname
    • 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
<!--NeedCopy-->

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 pour récupérer les métriques. Ce paramètre est facultatif et le chemin par défaut est /metrics. Si aucune valeur n’est définie, Prometheus ajoute « /metrics » comme chemin.
  • 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 et le port que vous souhaitez exposer.
  • profilename : Spécifiez le nom du profil à la place de profilename. Le profilenameparamètre est facultatif et accepte un nom de profil de série chronologique défini par l’utilisateur. Si profile namele paramètre est absent, il ns_analytics_time_series_profile est considéré comme le nom du profil.
  • follow_redirects: configurez si les requêtes HTTP suivent les redirections HTTP 3xx. Ce paramètre est facultatif et la valeur par défaut est définie par truePrometheus. Si vous configurez ce paramètre, vous devez définir la valeur surtrue.

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: /metrics
      params:
        profilename:
        - 'profile_name'
      basic_auth:
        username: 'prom_user'
        password: 'user_password'
      scheme: http
      scrape_interval: 30s
      follow_redirects: true
      static_configs:
      - targets: ['10.102.34.231:80']
<!--NeedCopy-->

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
    <!--NeedCopy-->
    

    Exemple :

    add system user nspaul nspaul -externalAuth enabled -promptString user-%u-at-%T logging enabled
    <!--NeedCopy-->
    
  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")"
    <!--NeedCopy-->
    
  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")"
    <!--NeedCopy-->
    

    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>)
    <!--NeedCopy-->
    

    Par exemple :

    bind system user user1 read-only-prometheus 0
    <!--NeedCopy-->
    

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>
    <!--NeedCopy-->
    

    Par exemple :

    unbind system user user1 read-only-prometheus
    <!--NeedCopy-->
    
  2. Supprimez la stratégie de commande de NetScaler.

    rm system cmdPolicy read-only-prometheus
    <!--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

NetScaler prend en charge des exemples de tableaux de bord sur Grafana. Pour une liste complète des exemples de tableaux de bord pris en charge par Grafana et leurs détails, voir Exemples de tableauxde bord pour Grafana.

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

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"}
  ]
<!--NeedCopy-->

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"},
  ]
<!--NeedCopy-->

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"},
  ]
<!--NeedCopy-->

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.

Abonnement de compteurs pour plusieurs profils de séries chronologiques

NetScaler prend 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/ à titre de référence.

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
  <!--NeedCopy-->

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: /metrics
    params:
     - 'profile_name'
    basic_auth:
     username: 'prom_user'
     password: 'user_password'
    scheme: https
    scrape_interval: 30s
    follow_redirects: true
    static_configs:
     - targets: ['ADC1-ip:port', 'ADC2-ip:port']
<!--NeedCopy-->