8. Utiliser la fonctions de requête dans WAPT ¶
8.1. Principe de fonctionnement¶
WAPT Enterprise offre des fonctionnalités de reporting avancées.
En effet, qui mieux que vous pouvez savoir ce dont vous avez besoin dans votre rapport.
Avec WAPT nous vous proposons d’écrire vos requêtes SQL dont le résultat s’affichera dans la Console WAPT.
Le diagramme de la structure de la base de données est disponible ici wapt_db_data_structure.svg
.
8.2. Concepteur de requêtes WAPT¶
Le concepteur de requêtes vous offre la possibilité de modifier vos propres requêtes sur la base de données PostgreSQL de WAPT.
Note
La base de données PostgreSQL est définie en mode Lecture seule, de sorte que les requêtes exécutées à partir du Report Designer qui tentent de mettre à jour, de supprimer ou d’insérer des données échouent.
Vous pouvez importer des requêtes SQL depuis le dépôt Tranquil IT en cliquant sur
ou sur .Si vous choisissez d’importer une requête depuis le dépôt Tranquil IT, sélectionnez une ou plusieurs requêtes, puis cliquez sur Sauvegarder les requêtes sélectionnées. Les nouvelles requêtes apparaîtront dans la Console WAPT.
Si vous importez une requête depuis un fichier, sélectionnez votre requête dans l’explorateur de fichiers. La requête peut être un fichier au format .query ou .json.
Note
Quelle que soit la méthode que vous utilisez pour importer des requêtes, n’oubliez pas de cliquer sur le bouton Sauvegarder pour sauvegarder les requêtes importées.
Pour créer une nouvelle requête, cliquer sur
.Indication
Pour renommer une requête, appuyer sur la touche F2.
Dans l’encadré du haut, vous pouvez écrire votre requête SQL.
Pour éditer / modifier / Sauvegarder vos requêtes :
Le bouton Recharger est utilisé pour recharger les requêtes sauvegardées sur le serveur, par exemple, si un collègue vient juste d’éditer une nouvelle requête.
Le bouton Nouvelle requête va ajouter une requête vide à la liste.
Le bouton Supprimer la requête va supprimer la requête sélectionnée sur le Serveur WAPT.
Le bouton Enregistrer tout va sauvegarder votre requête au Serveur WAPT.
Le bouton Exécuter va exécuter la requête sélectionnée.
Le bouton Exporter vers tableur va exporter le résultat de votre requête dans un feuille de calcul.
Le bouton Dupliquer va dupliquer une requête existante pour éviter de repartir d’une requête vide.
Vous disposez de plusieurs options lorsque vous cliquez avec le bouton droit de la souris sur une requête.
Nom |
description |
---|---|
Exécuter |
Exécute la requête SQL. |
Éditer |
Modifie la requête SQL. |
Éditer le nom |
Modifie le nom de la requête SQL. |
Exporter vers un tableur |
Exporte le résultat de la requête SQL vers un fichier formaté en csv. |
Dupliquer |
Duplique la requête SQL. |
Exporter les requêtes vers un fichier… |
Exporte les requêtes SQL sélectionnées vers un fichier. Cette méthode permet de partager ou de sauvegarder les requêtes SQL. |
Importer des requêtes… |
Importe des requêtes à partir d’un fichier. |
Supprimer des requêtes |
Supprime les requêtes sélectionnées. |
Note
Les requêtes sont sauvegardées dans la base de données PostgreSQL WAPT.
Le raccourci CTRL+espace vous permet de construire votre requête de façon plus efficace.
8.3. Utiliser des requêtes comme filtre dans l’onglet inventaire¶
You can create a filter for use in the Inventory tab based on a SQL query. You need to add an UUID column, is absolutely necessary in the query results.
In this exemple, we use a query which lists hosts onto which the 7zip software has been installed.
Indication
Cette méthode est puissante car elle permet de rechercher des titres de logiciels qui n’ont pas été installés à l’aide de WAPT.
Sur le résultat de la requête, faites un clic droit sur host_id, qui est un identifiant unique, sélectionner cette entrée et cliquer sur le bouton Choisir cet identifiant unique.
Lorsque vous avez terminé, enregistrer la requête en appuyant sur le bouton Sauvegarder puis aller dans l’onglet Inventaire.
Ensuite, activer le panneau Recherche avancée et sélectionner la requête dans le champ déroulant Filtrer les machines basé sur la requête SQL.
Vous verrez alors une liste de machines basée sur la requête sélectionnée.
8.4. Exemple de requêtes¶
8.4.1. Requêtes Ordinateur¶
select count(*) as "number_of_hosts" from hosts
select
computer_name,
os_name,
os_version,
os_architecture,
serialnr
from hosts
order by 4,3,1
select distinct unnest(mac_addresses) as mac,
unnest(h.connected_ips) as ipaddress,
computer_fqdn,h.description,
h.manufacturer||' '||h.productname as model,
h.serialnr,
h.computer_type
from hosts h
order by 1,2,3
select
host_info->'windows_version' as windows_version,
os_name as operating_system,
count(os_name) as nb_hosts
from hosts
group by 1,2
select host_info->'windows_version' as windows_version,
os_name as "Operating_System",
count(os_name) as "number_of_hosts"
from hosts
group by 1,2
select
h.uuid,
h.computer_fqdn,
install_date::date,
version,
h.last_seen_on::timestamp,
h.connected_users from hostsoftwares s
left join hosts h on h.uuid=s.host_id
where s.key='WAPT_is1'
and h.last_seen_on<'20190115'
select case
dmi->'Chassis_Information'->>'Type'
when 'Portable' then '01-Laptop'
when 'Notebook' then '01-Laptop'
when 'Laptop' then '01-Laptop'
when 'Desktop' then '02-Desktop'
when 'Tower' then '02-Desktop'
when 'Mini Tower' then '02-Desktop'
else '99-'||(dmi->'Chassis_Information'->>'Type')
end as type_chassis,
string_agg(distinct coalesce(manufacturer,'?') ||' '|| coalesce(productname,''),', '),
count(*) as "number_of_hosts" from hosts
group by 1
select
computer_name,
os_name,
os_version,
host_info->'windows_product_infos'->'product_key' as windows_product_key
from hosts
order by 3,1
8.4.2. Requête WAPT¶
select
package,
version,
architecture,
description,
section,
package_uuid,
count(*)
from packages
group by 1,2,3,4,5,6
select
computer_fqdn,
host_status,
last_seen_on::date,
h.wapt_status,
string_agg(distinct lower(s.package),' ')
from hosts h
left join hostpackagesstatus s on s.host_id=h.uuid and s.install_status != 'OK'
where (last_seen_on::date > (current_timestamp - interval '1 week')::date
and host_status!='OK')
group by 1,2,3,4
8.4.3. Requête Paquets¶
select
package,
version,
architecture,
description,
section,
package_uuid,
count(*)
from hostpackagesstatus s
where section not in ('host','unit','group')
group by 1,2,3,4,5,6
8.4.4. Requête logiciel¶
select
h.uuid,
h.computer_name,
install_date::date,
version,
h.listening_timestamp::timestamp,
name
from hostsoftwares s
left join hosts h on h.uuid=s.host_id
where
s.key='WAPT_is1'
and (name ilike 'WAPT%%Discovery%%' or name ilike 'WAPT %%')
select
hosts.computer_name,
hostsoftwares.host_id,
hostsoftwares.name,
hostsoftwares.version
from hosts, hostsoftwares
where hostsoftwares.name ilike '7-zip%%'
and hosts.uuid=hostsoftwares.host_id
order by hosts.computer_name asc
select
n.normalized_name,
s.version,string_agg(distinct lower(h.computer_name),' '),
count(distinct h.uuid)
from hostsoftwares s
left join normalization n on (n.original_name = s.name) and (n.key = s.key)
left join hosts h on h.uuid = s.host_id
where (n.normalized_name is not null)
and (n.normalized_name<>'')
and not n.windows_update
and not n.banned
and (last_seen_on::date > (current_timestamp - interval '3 week')::date)
group by 1,2
select
n.normalized_name,
string_agg(distinct lower(h.computer_name),' '),
count(distinct h.uuid)
from hostsoftwares s
left join normalization n on (n.original_name = s.name) and (n.key = s.key)
left join hosts h on h.uuid = s.host_id
where (n.normalized_name is not null)
and (n.normalized_name<>'')
and not n.windows_update
and not n.banned
and (last_seen_on::date > (current_timestamp - interval '3 week')::date)
group by 1
Vous pouvez aussi trouver plus d’exemple de requêtes sur le Forum Tranquil IT.
N’hésitez pas à partager vos requêtes sur le même forum avec une explication de ce que fais votre requête, idéalement avec une capture d’écran ou une table affichant un échantillon du résultat de votre requête.
8.5. Normaliser les noms de logiciels¶
Parfois, la version du logiciel ou son architecture fait partie intégrante du nom du logiciel. Quand le logiciel s’enregistre dans l’inventaire du Serveur WAPT, il apparaît en différents logiciels alors qu’ils sont pareils pour nous humains.
Pour résoudre ce problème, le nom des logiciels peut être normalisé dans WAPT. Aller dans l’onglet Inventaire des logiciels.
Cliquez sur Normaliser les nom de logiciels dans le menu Outils.
Sélectionnez le logiciel à standardiser, par exemple, toutes les version différentes d’Adobe Flash player.
Sur la colonne Normalisé, appuyez sur F2 pour assigner un nom standard sur le logiciel sélectionné. Puis appuyez sur Entrée.
Note
Pour sélectionner plusieurs programmes, sélectionnez les avec les combinaisons de touches shift-up/down.
Vous pouvez aussi marquer un logiciel comme Mise à jour Windows ou Banni (Appuyez sur la barre espace dans la colonne correspondante).
Appuyer sur le bouton Sauvegarder pour charger les changements sur le Serveur WAPT.
Vous pouvez maintenant lancer vos requêtes avec ce nom standardisé.
Indication
La case à cocher Afficher les machines permet de voir les titres des logiciels qui sont installés sur les machines.
8.5.1. Utiliser des titres de logiciels normalisés comme filtre dans l’onglet inventaire¶
Vous pouvez créer un filtre dans l’onglet Inventaire qui utilise des noms de logiciels normalisés. Pour ce faire, normaliser les noms des logiciels dans Inventaire des logiciels puis sélectionner une ou plusieurs machines. Dans l’onglet Inventaire des logiciels des machines sélectionnées, glissez et déposez le logiciel dans la liste d’inventaire, cela créera une vue.
Indication
Cette méthode est puissante car elle permet de rechercher des titres de logiciels qui n’ont pas été installés à l’aide de WAPT.
Ne pas oublier de normaliser les noms des logiciels au préalable.
Vous verrez une liste de machines triées selon le nom normalisé du logiciel.
8.6. Se connecter à la base de données WAPT avec un client PostgreSQL¶
Vous pouvez connecter votre base de données WAPT à un client si vous préférez utiliser un client PostgreSQL.
Pour ce faire, vous allez devoir changer quelques fichiers de configuration sur votre Serveur WAPT.
Tout d’abord, trouvez la version de votre base de données PostgreSQL.
ps -ef | grep -i sql
postgres 512 1 0 Jan05 ? 00:00:24 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
Modifiez
pg_hba.conf
de la version PostgreSQL utilisée. Dans/etc/postgresql/12/main/pg_hba.conf
pour Debian et/var/lib/pgsql/12/data/pg_hba.conf
pour RedHat et dérivées # IPv4 local connections section, ajoutez votre adresse.
host wapt all 192.168.0.65/32 md5
where 192.168.0.65 is your IP address that is authorized
to connect to the WAPT database.
Autorisez PostgreSQL à écouter sur toutes les interfaces dans
/etc/postgresql/12/main/postgresql.conf
pour Debian et/var/lib/pgsql/12/data/postgresql.conf
pour RedHat et dérivées, section Connection Settings.
listen_addresses = '*'
Redémarrez le service pour votre version de PostgreSQL.
systemctl restart postgresql@12-main.service
Pour se connecter au PostgreSQL sur le Serveur WAPT.
sudo -u postgres psql template1
Puis renseignez le mot de passe de l’utilisateur wapt.
template1=# ALTER USER wapt WITH PASSWORD 'PASSWORD';