Python send_event connector to Canopsis / AMQP¶
Pré requis¶
Description¶
usage: python sendevent2canopsisamqp.py [-h] -c CONFIG [-p PARAMS_JSON]
Ce script Python permet d'envoyer des évènements vers une instance Canopsis avec AMQP.
Il prend en paramètre un fichier de configuration INI (-c CONFIG
), et optionnellement des valeurs JSON complémentaires (-p PARAMS_JSON
).
Installation¶
Ce script nécessite Python (compatible avec les versions 2.x et 3.x) et quelques modules supplémentaires.
Cet environnement est mis en place à l'aide de virtualenv et pip.
Installation sous Windows¶
Installer Python à l'aide de l'installateur disponible ici : https://www.python.org/downloads/windows/
Puis, pour installer Pip, récupérer le script suivant : https://bootstrap.pypa.io/get-pip.py
Lancer un PowerShell, et exécuter ce script :
PS C:\> python get-pip.py Downloading/unpacking pip Downloading/unpacking setuptools Installing collected packages: pip, setuptools Successfully installed pip setuptools Cleaning up...
Une fois que pip est installé, on peut installer et mettre en place un virtualenv (en supposant que le script est stocké dans C:\sendeventcanopsis
) :
PS C:\> pip install virtualenv PS C:\> virtualenv c:\sendeventcanopsis
On peut maintenant appeler pip pour installer les dépendances :
PS C:\> cd sendeventcanopsis PS C:\> .\scripts\activate.bat (virtualenv) pip install kombu ConfigParser
Le connecteur est maintenant prêt à être utilisé :
PS C:\> cd sendeventcanopsis PS C:\> .\scripts\activate.bat (virtualenv) python sendevent2canopsisamqp.py
Installation sous Linux¶
On installe pip :
# Pour Debian / Ubuntu $ sudo apt-get install python-pip # Pour Red Hat / CentOS $ sudo yum install python-pip
On installe et on met en place virtualenv :
$ pip install virtualenv $ mkdir -p ~/venv/sendeventcanopsis $ virtualenv ~/venv/sendeventcanopsis
On peut maintenant appeler pip pour installer les dépendances :
$ . ~/venv/sendeventcanopsis/bin/activate (virtualenv) pip install ConfigParser kombu
Le connecteur est maintenant prêt à être utilisé :
$ . ~/venv/sendeventcanopsis/bin/activate (virtualenv) python sendevent2canopsisamqp.py
Utilisation¶
Configuration du fichier INI¶
Ce script attend obligatoirement un fichier .ini
, passé en paramètre avec l'option -c
.
Par exemple :
(virtualenv) python sendevent2canopsisamqp.py -c sendevent2canopsisamqp.ini
Voici un exemple de fichier INI associé :
[amqp] url=amqp://cpsrabbit:canopsis@localhost:5672/canopsis [event] connector.constant=toto connector_name.constant=toto event_type.constant=check source_type.constant=resource component.constant=localhost resource.value=res output.constant=output state.constant=2
Il contient l'URL du serveur AMQP à interroger et la liste des évènements à y envoyer.
Dans cet exemple, l'URL est définie dans le premier bloc : on se connecte au serveur localhost
sur le port 5672
, avec les identifiants cpsrabbit:canopsis
, sur la ressource /canopsis
.
Concernant les évènements (définis dans le bloc [event]
) :
connector.constant=toto
signifie qu'un évènementconnector
sera envoyé avec la valeurtoto
.- De la même façon,
event_type.constant=check
signifie qu'un évènementevent_type
sera envoyé avec la valeurcheck
.
- De la même façon,
- L'utilisation de
.value
, telle que dansresource.value=res
, signifie que l'évènementresource
sera renseigné à partir de la valeurres
passée en ligne de commande (voir ci-dessous). - Il est aussi possible d'utiliser des regex, voir plus bas.
Passage de valeurs supplémentaires en paramètres¶
Si le fichier INI contient au moins une valeur du type .value
, alors le paramètre -p
doit alors être obligatoirement renseigné lors de l'appel au script. Ceci permet d'injecter des valeurs dynamiques, sans devoir modifier le fichier INI pour chaque nouvelle valeur.
Ainsi, dans le cas précédent, où l'on avait une valeur resource.value=res
, on doit renseigner une valeur res
en paramètre :
(virtualenv) python sendevent2canopsisamqp.py -c sendevent2canopsisamqp.ini -p "{\"res\": \"test\"}"
Note : le paramètre -p
attend un tableau JSON en argument. Par exemple, si plusieurs évènements doivent être précisés :
(virtualenv) python sendevent2canopsisamqp.py -c sendevent2canopsisamqp.ini -p "{\"param1\": \"valeur\", \"param2\": 42}"
Utilisation des regex¶
Des valeurs .regex
peuvent aussi être utilisées dans le fichier INI.
L'évènement aura pour valeur toute chaîne correspondant à la regex donnée.
De cette façon, l'évènement suivant :
[event] component.regex=my_(.*)
transformera component="my_first_value"
en component="first_value"
.