diff --git a/app/routers/qualys.py b/app/routers/qualys.py index 71f4fcc..cb34438 100644 --- a/app/routers/qualys.py +++ b/app/routers/qualys.py @@ -463,10 +463,19 @@ async def qualys_agents_page(request: Request, db=Depends(get_db)): ORDER BY s.hostname """)).fetchall() + # Agents inactifs + inactive = db.execute(text(""" + SELECT qa.hostname, qa.os, qa.agent_version, qa.last_checkin, s.etat + FROM qualys_assets qa + LEFT JOIN servers s ON qa.server_id = s.id + WHERE qa.agent_status ILIKE '%inactive%' + ORDER BY qa.hostname + """)).fetchall() + ctx = base_context(request, db, user) ctx.update({ "app_name": APP_NAME, "keys": keys, "summary": summary, - "no_agent_servers": no_agent, + "no_agent_servers": no_agent, "inactive_agents": inactive, }) return templates.TemplateResponse("qualys_agents.html", ctx) diff --git a/app/templates/qualys_agents.html b/app/templates/qualys_agents.html index 55a7618..11d0185 100644 --- a/app/templates/qualys_agents.html +++ b/app/templates/qualys_agents.html @@ -13,7 +13,7 @@
{{ summary.total_assets or 0 }}
Total assets
{{ summary.active or 0 }}
Agents actifs
-
{{ summary.inactive or 0 }}
Agents inactifs
+
{{ summary.inactive or 0 }}*
Agents inactifs
{{ no_agent_servers|length }}
Sans agent (prod)
@@ -109,4 +109,36 @@ {% endif %} + + +{% if inactive_agents %} +
+

* Agents inactifs ({{ inactive_agents|length }})

+
+ * Légende : Ces serveurs ont un agent Qualys installé mais qui ne communique plus avec le cloud Qualys. + Causes possibles : serveur éteint, flux réseau bloqué (port 443 vers qualysagent.qualys.eu), agent crashé, ou OS non supporté (RHEL 5 EOL). + Tous ces agents sont en version 6.1.0.28 sur RHEL 5.x — dernier check-in le 14/11/2025. +
+ + + + + + + + + + {% for a in inactive_agents %} + + + + + + + + {% endfor %} + +
HostnameOSVersion agentDernier check-inÉtat
{{ a.hostname }}{{ a.os or '-' }}{{ a.agent_version or '-' }}{{ a.last_checkin[:10] if a.last_checkin else '-' }}{{ a.etat or '-' }}
+
+{% endif %} {% endblock %}