Supervision et métriques
Sur cette page
Chaque serveur TOSIAM expose ses métriques au format Prometheus sur <contexte>/metrics, par exemple https://am.example.com/tosiam/metrics. Un serveur Prometheus les collecte ; la page Métriques de la console et, si vous en avez un, Grafana les interrogent ensuite dans Prometheus. Pour savoir si un serveur répond, isAlive.jsp suffit.
Serveurs TOSIAM ──/tosiam/metrics──▶ Prometheus ◀──API── Console (page Métriques), GrafanaActiver le point /metrics#
Le point de terminaison est désactivé à l’installation, et protégé par une authentification HTTP Basic dès qu’il est activé : sans les bons identifiants, il répond 401. Il se règle dans le service global Monitoring Prometheus (console : Services globaux, groupe observabilité ; iPlanetAMPrometheusService en ligne de commande).
| Réglage | Attribut | Rôle |
|---|---|---|
| Activer l’accès authentifié aux métriques | iplanet-am-prometheus-enabled | false par défaut : /metrics répond toujours 401. |
| Nom utilisateur | iplanet-am-prometheus-username | Identifiant que Prometheus présente. |
| Mot de passe | iplanet-am-prometheus-userpassword | Mot de passe associé, stocké chiffré. |
| URL Prometheus | iplanet-am-prometheus-url | Adresse du serveur Prometheus, utilisée par la page Métriques de la console (voir plus bas). Onglet API Parameters dans la console. |
Les trois premiers réglages sont lus à chaque collecte : une modification s’applique sans redémarrage. Ce ne sont pas des comptes TOSIAM : choisissez un identifiant dédié à la collecte.
Avec ssoadm :
cat > prometheus.properties <<'EOF'
iplanet-am-prometheus-enabled=true
iplanet-am-prometheus-username=prometheus
iplanet-am-prometheus-userpassword=<mot de passe>
EOF
chmod 600 prometheus.properties
ssoadm set-attr-defs -s iPlanetAMPrometheusService -t Global -D prometheus.properties
rm prometheus.propertiesVérification :
curl -s -u prometheus:<mot de passe> https://am.example.com/tosiam/metrics | headLa réponse est au format texte Prometheus (text/plain; version=0.0.4).
Configurer Prometheus#
Déclarez chaque serveur TOSIAM comme cible, avec le chemin /<contexte>/metrics et les identifiants Basic :
scrape_configs:
- job_name: tosiam
metrics_path: /tosiam/metrics
scheme: https
basic_auth:
username: prometheus
password_file: /etc/prometheus/tosiam-metrics-password
static_configs:
- targets:
- tosiam1.example.com:8443
- tosiam2.example.com:8443Interrogez chaque serveur séparément : chaque instance a ses propres compteurs, et l’agrégation se fait dans Prometheus (sum by (...)). Sans basic_auth, la cible apparaît down avec l’erreur 401 Unauthorized dans Status › Targets.
Métriques exposées#
Les métriques sont produites avec Micrometer. Les noms suivent les conventions Prometheus : un compteur se termine par _total ; une durée produit _seconds_count, _seconds_sum, _seconds_max et, pour les histogrammes, _seconds_bucket.
| Domaine | Métriques | Labels |
|---|---|---|
| Authentification | am_authentication_attempts_total, am_authentication_success_total, am_authentication_failure_total ; durée am_authentication_latency_seconds | realm, service, module (et outcome pour la durée) |
| Sessions | am_session_active (jauge), am_session_total (sessions créées), am_session_destroyed_total, am_session_timeout_total | reason (destroy, logout), type (idle, max) |
| OAuth2 | am_oauth2_access_token_issued_total, am_oauth2_refresh_token_issued_total, am_oauth2_token_introspection_total, am_oauth2_token_revoked_total | realm, grant_type, token_type |
| SAML 2.0 | am_saml_assertions_issued_total, am_saml_response_validation_success_total, am_saml_idp_sso_success_total, am_saml_idp_sso_failure_total | realm, idp, fault_code |
| Annuaire LDAP | am_ldap_connections_active (jauge), am_ldap_connections_acquired_total, am_ldap_operations_total ; durée am_ldap_operation_latency_seconds | operation (search, bind) |
| Caches | am_cache_entries (jauge), am_cache_hits_total, am_cache_misses_total, am_cache_removals_total | cache (sessionCache, policyCache…) |
| Scripts | am_script_execution_total, am_script_execution_errors_total ; durée am_script_execution_time_seconds | script, language, error_type |
| Requêtes HTTP | http_server_requests_seconds (histogramme) | method, status, uri, realm |
| JVM et système | jvm_memory_*, jvm_gc_*, jvm_threads_*, jvm_classes_*, process_cpu_usage, system_cpu_usage, system_load_average_1m | area, id… |
Un compteur n’apparaît qu’après son premier événement : un serveur qui n’a encore refusé aucune connexion n’expose pas am_authentication_failure_total.
Le label uri des requêtes HTTP est normalisé pour limiter le nombre de séries : les consoles (/console, /console-legacy, /XUI) sont regroupées sous leur préfixe, et les identifiants (UUID, nombres, jetons) remplacés par {id}.
S’y ajoutent des mesures plus anciennes, sans préfixe am_, sur lesquelles s’appuie la page Métriques de la console : AuthenticationServiceV1_authenticate, TokenEndpointResource_token, CTS_create (et CTS_read, CTS_update, CTS_delete), DJLDAPv3Repo_authenticate, CTS_queue_size, et les tailles de cache InternalSessionCache_cache, IdCachedServicesImpl_idRepoCache, CachedSMSEntry_smsEntries.
Compter une étape d’un parcours#
Le nœud MeterNode ajoute vos propres compteurs : placé dans un graphe d’authentification, il incrémente à chaque passage un compteur dont vous choisissez le nom (am_graph_meter_total par défaut) et les labels. Le label realm est ajouté par défaut.
Exemples de requêtes#
# Taux d'échec d'authentification par royaume, sur 5 minutes
sum by (realm) (rate(am_authentication_failure_total[5m]))
/ sum by (realm) (rate(am_authentication_attempts_total[5m]))
# Sessions actives, toutes instances confondues
sum(am_session_active)
# Jetons d'accès émis par minute, par type d'autorisation
sum by (grant_type) (rate(am_oauth2_access_token_issued_total[5m])) * 60
# 95e centile du temps de réponse de l'authentification REST
histogram_quantile(0.95, sum by (le) (rate(http_server_requests_seconds_bucket{uri="/json/authenticate"}[5m])))La page Métriques de la console#
La page Métriques de la console affiche des graphes tirés de Prometheus. Elle n’interroge pas /metrics : le navigateur de l’administrateur appelle directement l’API de Prometheus (/api/v1/query_range) à l’adresse du réglage URL Prometheus, modifiable aussi par le bouton Paramètres de la page. Cette adresse doit donc être joignable depuis le poste de l’administrateur. Tant qu’elle n’est pas renseignée, la page propose de la configurer.
La page montre quatre indicateurs (authentifications, jetons émis, latence d’authentification, sessions actives) et quatre groupes de graphes :
| Groupe | Contenu |
|---|---|
| Métriques frontend | Taux et durée des appels à /token et à l’authentification, agrégés globalement, par instance ou par royaume |
| Métriques backend | Taux et durée des écritures CTS et des authentifications LDAP, par instance ou par annuaire |
| Métriques techniques | Mémoire, processeur, disque et réseau des machines : nécessite node_exporter, collecté sous le job node |
| Métriques internes | Entrées en cache (configuration, utilisateurs, sessions) et file d’attente du CTS |
La période se choisit entre Temps réel (dernières 24 heures, actualisé toutes les 15 secondes) et Plage personnalisée.
Vérifier l’état d’un serveur#
/tosiam/isAlive.jsp lit la configuration du serveur dans le config store (TosDJ) :
| Réponse | Signification |
|---|---|
200 (« Server is ALIVE ») | Serveur configuré, config store joignable |
500 (« Server is DOWN ») | Config store injoignable |
302 | Serveur pas encore configuré, ou mise à jour en attente |
Une sonde doit exiger exactement 200 : beaucoup d’outils acceptent les redirections 3xx par défaut.
Pour un équilibreur de charge, retirez un serveur de la ferme quand isAlive.jsp ne répond plus 200. Sous Kubernetes, l’image TOSIAM distingue trois sondes : readiness sur isAlive.jsp, et liveness sur la seule ouverture du port HTTP, pour qu’une panne de TosDJ ne fasse pas redémarrer tous les serveurs.
Voir aussi Scalabilité & haute disponibilité.
Mis à jour le