Suite

Définition de PythonPath


Je souhaite utiliser ce script ici. Ortho Projection produit des artefacts, malheureusement, je ne peux pas télécharger le plug-in car je travaille dans QGIS 2.8.

Il dit, définissez le PYTHONPATH. Je ne comprends pas très bien ce que cela signifie… Cela définit le chemin d'accès à un dossier, où python est censé rechercher quelque chose. Jusqu'ici tout va bien. Mais, est-ce quelque chose que je dois changer en permanence.

Si je le modifie définitivement, mes autres packages de site fonctionneront-ils toujours ?

Où dois-je le changer ?

En python au démarrage depuis la console ou dans la console elle-même ?

Dans mon profil?

Je travaille sur Mac 10.10

Ce que j'ai fait jusqu'à présent, c'est d'ouvrir mon.bash-profilet j'ai ajouté cette paixPYTHONPATH=$PYTHONPATH:/Users/… /… /Python_Toolbox/qgis

D'après ce que j'ai compris, cela devrait être permanent, non?

Mais quand je vais dans QGIS dans la console et essaie deimporter XXil ne le trouve pas.


J'ai trouvé ceci dans le PyQGIS Developer Cookbook, j'espère que cela vous aidera

Exécution d'applications personnalisées

Vous devrez indiquer à votre système où rechercher les bibliothèques QGIS et les modules Python appropriés s'ils ne se trouvent pas dans un emplacement bien connu - sinon Python se plaindra :

>>> import qgis.core ImportError : aucun module nommé qgis.core

Cela peut être corrigé en définissant la variable d'environnement PYTHONPATH. Dans les commandes suivantes, qgispath doit être remplacé par votre chemin d'installation réel de QGIS :

sous Linux : exportez PYTHONPATH=/qgispath/share/qgis/python sous Windows : définissez PYTHONPATH=c:qgispathpython

Le chemin vers les modules PyQGIS est maintenant connu, cependant ils dépendent des bibliothèques qgis_core et qgis_gui (les modules Python ne servent que de wrappers). Le chemin d'accès à ces bibliothèques est généralement inconnu pour le système d'exploitation, vous obtenez donc à nouveau une erreur d'importation (le message peut varier en fonction du système) :

>>> import qgis.core ImportError : libqgis_core.so.1.5.0 : impossible d'ouvrir le fichier d'objet partagé : aucun fichier ou répertoire de ce type

Corrigez ce problème en ajoutant les répertoires où résident les bibliothèques QGIS au chemin de recherche de l'éditeur de liens dynamique :

sous Linux : exportez LD_LIBRARY_PATH=/qgispath/lib sous Windows : définissez PATH=C:qgispath;%PATH%

Sous MacOS, les chemins par défaut sont définis comme ça

export PYTHONPATH=/Applications/Qgis.app/Contents/Resources/python export LD_LIBRARY_PATH=/Applications/Qgis.app/Contents/Resources/lib

pour le faire en permanence utilisez cette commande à la place

echo 'export PYTHONPATH=/Applications/Qgis.app/Contents/Resources/python' >> ~/.bash_profile echo 'export LD_LIBRARY_PATH=/Applications/Qgis.app/Contents/Resources/lib' >> ~/.bash_profile source ~ /.bash_profile

puis courspythonet le vérifier

importer qgis.core

Comment ajouter un chemin python dans Ubuntu 16.04

J'essaie d'exécuter un projet scrapy sur un serveur Ubuntu. Pour lequel je dois ajouter le chemin du projet au chemin python.

J'ai créé un fichier .bash_profile dans le répertoire /home avec le contenu suivant :

Mais j'obtiens une erreur lors de l'exécution de mon fichier python indiquant qu'il n'a pas trouvé le module.

J'ai essayé d'utiliser les chemins suivants, mais rien ne fonctionne.

  • /home/john/Desktop/myscraper/
  • /home/john/Desktop/myscraper
  • home/john/Bureau/myscraper/
  • home/john/Bureau/myscraper

Configuration de PATH

Les programmes et autres fichiers exécutables peuvent se trouver dans de nombreux répertoires, les systèmes d'exploitation fournissent donc un chemin de recherche qui répertorie les répertoires dans lesquels le système d'exploitation recherche les exécutables.

Le chemin est stocké dans une variable d'environnement, qui est une chaîne nommée gérée par le système d'exploitation. Cette variable contient des informations disponibles pour le shell de commande et d'autres programmes.

le chemin La variable est nommée PATH sous Unix ou Path sous Windows (Unix est sensible à la casse, Windows ne l'est pas).

Sous Mac OS, le programme d'installation gère les détails du chemin. Pour appeler l'interpréteur Python à partir d'un répertoire particulier, vous devez ajouter le répertoire Python à votre chemin.


Réglages avancés

Ce sont des paramètres internes. Changez-les avec prudence.

BATCH_CHUNK_SIZE (entier)

Nombre de documents à traiter ensemble par chaque travailleur lors de l'importation.

BATCH_FILE_LOADER_PYPATH (chemin Python)

Chemin Python vers un callable qui sera chargé de charger le fichier à l'importation et de retourner un itérable.

Addok fournit trois chargeurs : load_file , load_msgpack_file (nécessite msgpack-python ) et load_csv_file . Mais vous pouvez passer n'importe quel chemin vers une fonction chargeable. Cette fonction prendra un chemin de fichier comme argument et devrait produire des dicts.

BATCH_PROCESSORS_PYPATHS (itérable des chemins Python)

Toutes les méthodes appelées pendant le traitement par lots.

BUCKET_MIN (int)

Le nombre minimum d'éléments qu'addok essaiera d'extraire de Redis avant de les marquer et de les trier. Noter que ce n'est pas le nombre de résultats renvoyés. Cela peut avoir un impact considérable sur les performances.

BUCKET_MAX (entiers)

Le nombre maximum d'éléments qu'addok essaiera d'extraire de Redis avant de les marquer et de les trier. Noter que ce n'est pas le nombre de résultats renvoyés. Cela peut avoir un impact considérable sur les performances.

COMMON_THRESHOLD (entier)

Au-dessus de ce seuil, les termes sont considérés comme communs, et donc avec moins d'importance dans l'algorithme de recherche.

DEFAULT_BOOST (flotteur)

Score par défaut pour le jeton de relation au document.

DOCUMENT_SERIALIZER_PYPATH (chemin Python)

Chemin d'accès au sérialiseur à utiliser pour stocker les documents. Doit avoir des méthodes de chargement et de vidage.

Pour une option plus rapide (mais utilisant plus de RAM), utilisez plutôt marshal.

GEOHASH_PRECISION (int)

Taille du geohash. Plus le réglage est grand, plus le hachage est petit. Voir Geohash sur Wikipédia.

IMPORTANCE_WEIGHT (flotteur)

La note maximale inhérente d'un document dans la note finale.

GEO_DISTANCE_WEIGHT (flotteur)

Le score inhérent maximal de la distance géographique au centre fourni (le cas échéant) dans le score final.

INTERSECT_LIMIT (entier)

Au-dessus de ce seuil, on évite les ensembles sécants.

MAX_EDGE_NGRAMS (entiers)

Longueur maximale des ngrammes de bord calculés.

MIN_EDGE_NGRAMS (int)

Longueur minimale des ngrammes de bord calculés.

MIN_SCORE (flottant)

Tous les résultats dont le score final est inférieur à ce seuil ne seront pas conservés. La note est comprise entre 0 et 1.

MAKE_LABELS (fonction)

Fonction pour remplacer les étiquettes créées pour la comparaison de chaînes avec la requête au moment de la notation. Prend un objet résultat comme argument et doit retourner une liste de chaînes.

MATCH_THRESHOLD (flottement entre 0 et 1)

Le score minimum utilisé pour considérer un résultat peut correspondre la requête.

PROCESSORS_PYPATHS (itérable des chemins Python)

Définir les différentes fonctions pour prétraiter le texte, avant l'indexation et la recherche. C'est un itérable de chemins Python. Certaines fonctions sont intégrées (principalement pour le français en ce moment, mais vous pouvez pointer vers n'importe quelle fonction Python qui se trouve sur le pythonpath).

QUERY_PROCESSORS_PYPATHS (itérable des chemins Python)

Processeurs supplémentaires exécutés uniquement au moment de la requête. Par défaut, seul check_query_length est actif, cela dépend de QUERY_MAX_LENGTH pour éviter les DoS.

RESULTS_COLLECTORS_PYPATHS (itérable des chemins Python)

Addok essaiera chacun d'entre eux dans l'ordre donné pour rechercher les résultats correspondants.


Comment installer le package de surbrillance de la syntaxe créé sur Windows 7 ?

Tout d'abord, j'installe Python 2.7, puis crée un dossier nommé Scripts dans le répertoire :

J'ai donc C:Python27Scripts Puis je crée un fichier nommé pygmentize.cmd avec le contenu :

À ce stade, j'ai déjà défini la variable d'environnement path sur C:Python27 et C:Python27Scripts .
Ensuite, j'ai installé setuptools-0.6c11.win32-py2.7.exe (md5) à partir de http://pypi.python.org/pypi/setuptools Et j'ai installé Pygments avec la commande suivante

Ensuite, j'inclus la ligne usepackage pour laisser TexMaker faire l'installation.

Dans TexMaker, je modifie également l'option PdfLaTex en : pdflatex -shell-escape -interaction=nonstopmode %.tex

Ensuite, j'ai essayé un exemple simple:

Et le compilateur a généré ces erreurs :

J'ai supposé que pygmentize n'était pas installé correctement, donc TexMaker n'a pas pu l'exécuter. J'ai relu les instructions et je n'ai pas pu comprendre ce qui pourrait causer ces erreurs ? Est-ce que quelqu'un l'a déjà fait pourrait me partager quelques lumières?


4 réponses 4

D'après ce que je comprends, ces entrées sont ajoutées à sys.path par :

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (Changez 2.6 vers votre version de Python.)

Le moyen le plus simple de le changer est d'ajouter un fichier /usr/local/lib/python2.6/dist-packages/site-packages.pth contenant ../site-packages .

Alternativement, vous pouvez peut-être apprendre au package à utiliser site.getsitepackages() ?

Vous pouvez créer un nouveau fichier appelé /etc/profile.d/local_python.sh avec le contenu

Ce qui définira la variable PYTHONPATH pour tous les utilisateurs connectés sur votre système.

Je voudrais résumer mes découvertes sur la modification du chemin de python. Il y a deux façons de le faire.

Quelconque .pth qui se trouve sur le chemin par défaut (voir ci-dessous) verra son contenu inclus dans sys.path . Format de dit .pth fichier est simple : un chemin (dossier) par ligne. Étonnamment, les chemins peuvent être absolus ou relatifs au .pth déposer.

Le chemin par défaut est l'endroit où réside l'interpréteur et <some-prefix>/lib/python<version>/site-packages où <some-prefix> est généralement /usr/ .


Tirer parti du système d'agents de santé communautaire pour cartographier un district rural montagneux dans un environnement à faibles ressources : une approche à faible coût pour étendre l'utilisation des systèmes d'information géographique pour la santé publique

Arrière-plan: Les systèmes d'information géographique (SIG) sont devenus un outil important pour le suivi et l'amélioration des services de santé, en particulier au niveau local. Cependant, les données SIG ne sont souvent pas disponibles en milieu rural et la cartographie au niveau du village est gourmande en ressources. Cette étude décrit l'utilisation des superviseurs des agents de santé communautaire (ASC) pour cartographier les villages dans un district rural montagneux du nord du Rwanda et l'utilisation ultérieure de ces données pour cartographier la variabilité au niveau du village de la disponibilité de l'eau potable.

Méthodes : Nous avons développé une formation axée sur le faible niveau d'alphabétisation et les compétences dans la langue locale (kinyarwanda) pour former 86 superviseurs ASC et 25 infirmières en charge de la santé communautaire au niveau des centres de santé (CS) et des postes de santé (PS) pour collecter les coordonnées géographiques des les villages à l'aide de systèmes de positionnement global (GPS). Les données ont été validées lors de réunions avec les principales parties prenantes aux niveaux des sous-districts et des districts et jointes à l'aide des outils de géotraitement ArcMap 10. Les coûts ont été calculés à l'aide des budgets des programmes et des dossiers d'activités, et comparés aux coûts estimés de la cartographie à l'aide d'une équipe SIG distincte et formée. Pour démontrer l'utilité de ce travail, nous avons cartographié les sources d'eau potable (AEP) à partir des données collectées par les ASC encadrants auprès du chef du village. Les DWS ont été classés comme sûrs par rapport à dangereux en utilisant les définitions de l'Organisation mondiale de la santé.

Résultat: Après la formation, chaque superviseur ASC a passé cinq jours à collecter des données sur les villages de sa zone de couverture. Pendant 12 mois, les superviseurs ASC ont cartographié les 573 villages du district à l'aide de 12 appareils GPS partagés. Des cartes sectorielles ont été produites et distribuées aux responsables locaux. Le coût de la cartographie à l'aide des superviseurs des ASC était de 29 692 $, environ deux fois moins que le coût estimé de la cartographie à l'aide d'une équipe SIG formée et dédiée (60 112 $). La disponibilité de la cartographie locale a permis d'identifier rapidement les disparités au niveau des villages dans l'AEP, avec un accès plus faible pour les populations vivant à proximité des lacs et des zones humides (p < .001).

Conclusion: Le système national d'ASC existant peut être utilisé pour cartographier rapidement et à moindre coût les villages, même dans les zones rurales montagneuses. Ces données sont importantes pour fournir aux gestionnaires et aux décideurs des données SIG au niveau local afin d'identifier rapidement la variabilité des services de santé et autres services connexes afin de mieux cibler et évaluer les interventions.


Configuration de PythonPath - Systèmes d'information géographique

OpenWISP Monitoring est un système de surveillance de réseau écrit en Python et Django, conçu pour être extensible, programmable, évolutif et facile à utiliser par les utilisateurs finaux : une fois le système configuré, les contrôles de surveillance, les alertes et la collecte des métriques se produisent automatiquement.

OpenWISP n'est pas seulement une application conçue pour les utilisateurs finaux, mais peut également être utilisé comme un cadre sur lequel des solutions d'automatisation de réseau personnalisées peuvent être construites au-dessus de ses blocs de construction.

D'autres blocs de construction populaires qui font partie de l'écosystème OpenWISP sont :

    : contrôleur réseau et WiFi : provisionnement, gestion de configuration, gestion de PKI x509 et plus fonctionne sur OpenWRT, mais conçu pour fonctionner également sur d'autres systèmes. : fournit un moyen de collecter et de visualiser les données de topologie du réseau à partir de démons de routage de maillage dynamique ou d'autres logiciels de réseau (par exemple: OpenVPN) il peut être utilisé en conjonction avec openwisp-monitoring pour avoir une meilleure idée de l'état du réseau mise à niveau d'un seul appareil ou réseau de masse) : basé sur FreeRADIUS, permet de mettre en œuvre des systèmes d'authentification d'accès au réseau comme 802.1x WPA2 Enterprise, authentification de portail captif, Hotspot 2.0 (802.11u) : il permet de gérer l'espace d'adressage IP des réseaux

  • Collecte d'informations de surveillance dans une base de données de séries temporelles (actuellement, seul influxdb est pris en charge)
  • Permet de parcourir facilement les alertes depuis l'interface utilisateur en un seul clic
  • Collecte et affiche des informations sur l'état de l'appareil telles que la disponibilité, l'état de la RAM, les moyennes de charge du processeur, les propriétés et adresses de l'interface, l'état de l'interface WiFi et les clients associés, les informations sur les voisins, les baux DHCP, l'état du disque/flash
  • Graphiques de surveillance pour la disponibilité, la perte de paquets, le temps d'aller-retour (latence), les clients wifi associés, le trafic d'interface, l'utilisation de la RAM, la charge du processeur, l'utilisation du flash/du disque
  • Les graphiques peuvent être visualisés à des résolutions de 1 jour, 3 jours, une semaine, un mois et un an
  • Alertes configurables
  • CSV Exportation des données de surveillance
  • Un aperçu de l'état du réseau est affiché dans le tableau de bord de l'administrateur, un graphique montre les pourcentages d'appareils en ligne, hors ligne ou ayant des problèmes. Une carte géographique est également disponible pour ceux qui utilisent les fonctionnalités géographiques d'OpenWISP.
  • Possibilité de configurer des métriques et des graphiques supplémentaires
  • Système de contrôle actif extensible : il est possible d'écrire des contrôles supplémentaires qui sont exécutés périodiquement à l'aide de classes python
  • Métriques et graphiques extensibles : il est possible de définir de nouvelles métriques et de nouveaux graphiques
  • API pour récupérer les métriques du graphique et les informations d'état de chaque appareil en fonction de NetJSON DeviceMonitoring

Table des matières:

Nous utilisons InfluxDB pour stocker les métriques et Redis en tant que courtier de céleri (vous pouvez utiliser un autre courtier si vous le souhaitez). La méthode recommandée pour le développement est de les exécuter à l'aide de Docker, vous devrez donc installer au préalable docker et docker-compose.

Si vous préférez ne pas utiliser Docker, vous pouvez installer InfluxDB et Redis à partir de vos référentiels, mais gardez à l'esprit que la version fournie par votre distribution peut être différente.

Installer spatialite et sqlite :

Configuration (intégrer dans un projet Django existant)

Suivez les instructions de configuration d'openwisp-controller, puis ajoutez les paramètres décrits ci-dessous.

Configurez la mise en cache (vous pouvez utiliser un stockage de cache différent si vous le souhaitez) :

Configurez le céleri (vous pouvez utiliser un autre courtier si vous le souhaitez) :

Si vous décidez d'utiliser redis (comme indiqué dans ces exemples), installez les packages python requis :

Les valeurs possibles pour le champ d'état de santé ( DeviceMonitoring.status ) sont expliquées ci-dessous.

Chaque fois qu'un nouvel appareil est créé, son état de santé par défaut est INCONNU.

Cela implique que le système ne sait pas encore si l'appareil est accessible.

Tout fonctionne normalement.

L'une des métriques a une valeur qui n'est pas dans la plage attendue (la valeur seuil définie dans les paramètres d'alerte a été dépassée).

Exemple : l'utilisation du processeur doit être inférieure à 90 %, mais la valeur actuelle est de 95 %.

L'une des métriques définies dans OPENWISP_MONITORING_CRITICAL_DEVICE_METRICS a une valeur qui n'est pas dans la plage attendue (la valeur seuil définie dans les paramètres d'alerte a été dépassée).

Exemple : ping est par défaut une métrique critique qui devrait toujours être 1 (atteignable).

Cette métrique stocke l'état de l'appareil à des fins de visualisation.

la mesure: ping
les types: int (atteignable et perte), float (rtt)
des champs: accessible , perte , rtt_min , rtt_max , rtt_avg
configuration: ping
graphiques: disponibilité , packet_loss , rtt

Perte de paquets:

Temps de parcours:

la mesure: <interface_name>
taper: entier
des champs: rx_octets , tx_octets
configuration: circulation
graphiques: circulation

la mesure: <interface_name>
taper: entier
des champs: clients
configuration: clients
graphiques: wifi_clients

la mesure: <mémoire>
taper: flotter
des champs: percent_used , free_memory , total_memory , buffered_memory , shared_memory , cached_memory , available_memory
configuration: Mémoire
graphiques: Mémoire

la mesure: charge
taper: flotter
des champs: cpu_usage , load_1 , load_5 , load_15
configuration: charge
graphiques: charge

la mesure: disque
taper: flotter
des champs: disque_utilisé
configuration: disque
graphiques: disque

Alertes/Notifications par défaut

Type de notification Utiliser
seuil_franchi Se déclenche lorsqu'une métrique franchit la limite définie dans la valeur de seuil des paramètres d'alerte.
seuil_récupération Se déclenche lorsqu'une métrique revient dans la plage attendue.
connection_is_working Se déclenche lorsque la connexion à un appareil fonctionne.
connection_is_not_working Se déclenche lorsque la connexion (par exemple : SSH) à un appareil cesse de fonctionner (par exemple : les informations d'identification sont obsolètes, l'adresse IP de gestion est obsolète ou l'appareil n'est pas accessible).

Cette vérification renvoie des informations sur la disponibilité de l'appareil et le RTT (temps de trajet aller-retour). Le temps de disponibilité des graphiques, la perte de paquets et le rtt sont créés. La commande fping est utilisée pour collecter ces métriques. Vous pouvez choisir de désactiver la création automatique de cette vérification en définissant OPENWISP_MONITORING_AUTO_PING sur False .

Cette vérification garantit que l'agent openwisp-config s'exécute et applique les modifications de configuration en temps opportun. Vous pouvez choisir de désactiver la création automatique de cette vérification en utilisant le paramètre OPENWISP_MONITORING_AUTO_DEVICE_CONFIG_CHECK.

Cette vérification s'exécute périodiquement, mais elle est également déclenchée chaque fois que l'état de configuration d'un appareil change, ce qui garantit que la vérification réagit rapidement aux événements se produisant sur le réseau et informe rapidement l'utilisateur s'il y a quelque chose qui ne fonctionne pas comme prévu.

La politique de rétention par défaut utilisée pour stocker les données brutes de l'appareil.

Ces données ne sont utilisées que pour évaluer l'état récent des appareils, les conserver longtemps n'apporterait pas beaucoup d'avantages et coûterait beaucoup plus cher en termes d'espace disque.

Si les vérifications ping sont créées automatiquement pour les appareils.

Ce paramètre vous permet de choisir si les contrôles config_applied doivent être créés automatiquement pour les appareils nouvellement enregistrés. Il est activé par défaut.

Graphiques créés automatiquement.

Métriques de l'appareil considérées comme critiques :

lorsqu'une valeur franchit la limite définie dans le champ « valeur seuil » des paramètres d'alerte liés à l'un de ces types de métriques, l'état de santé de l'appareil lié à la métrique passe à CRITIQUE .

Par défaut, si les périphériques ne sont pas accessibles par ping, ils sont marqués comme CRITIQUE .

Ce paramètre permet de modifier les étiquettes d'état de santé, par exemple, si nous voulons utiliser en ligne au lieu de ok et hors ligne au lieu de critique , vous pouvez utiliser la configuration suivante :

Par défaut, seule l'adresse IP de gestion sera utilisée pour effectuer des vérifications actives sur les appareils.

Si les appareils se connectent à votre instance OpenWISP à l'aide d'un réseau partagé de couche2, par conséquent, le serveur OpenWSP peut atteindre les appareils à l'aide du champ last_ip, vous pouvez définir ce paramètre sur False .

Lorsque la détection de récupération de périphérique est activée, les récupérations sont découvertes dès qu'un périphérique contacte à nouveau le système openwisp (par exemple : pour obtenir la somme de contrôle de configuration ou pour envoyer des métriques de surveillance).

Cette fonction est activée par défaut.

Si vous utilisez OpenVPN comme VPN de gestion, vous voudrez peut-être vérifier une intégration similaire intégrée topologie-réseau-openwisp: lorsque l'état d'un lien OpenVPN change (détecté en surveillant les informations d'état d'OpenVPN), le module de topologie du réseau déclenchera les contrôles de surveillance. Pour plus d'informations, voir : Intégration de périphériques de topologie de réseau

Indique si les adresses mac seront complétées par des informations sur le fournisseur de matériel en effectuant des recherches sur la table OUI (Organization Unique Identifier).

Cette fonction est activée par défaut.

Réessayez les paramètres pour les échecs récupérables lors des écritures de métriques.

Par défaut, si une écriture de métrique échoue (par exemple, en raison d'une charge excessive sur la base de données de séries temporelles à ce moment-là), l'opération sera retentée indéfiniment avec une interruption aléatoire exponentielle et un délai maximum de 10 minutes.

Cette fonctionnalité rend le système de surveillance résilient aux pannes temporaires et aide à prévenir la perte de données.

Si la carte géographique dans le tableau de bord est activée ou non. Cette fonction fournit une carte géographique qui montre les emplacements dans lesquels des appareils sont installés et fournit une représentation visuelle de l'état de surveillance des appareils, ce qui permet d'avoir une vue d'ensemble du réseau en un coup d'œil.

Cette fonctionnalité est activée par défaut et dépend du paramètre OPENWISP_ADMIN_DASHBOARD_ENABLED d'openwisp-utils défini sur True (qui est la valeur par défaut).

Vous pouvez désactiver cette option si vous n'utilisez pas les caractéristiques géographiques d'OpenWISP.

Ce paramètre permet de définir une configuration de métrique supplémentaire ou de remplacer la configuration de métrique par défaut définie dans openwisp_monitoring.monitoring.configuration.DEFAULT_METRICS .

Par exemple, si vous souhaitez modifier uniquement le nom de domaine de clients métriques à wifi_clients, vous pouvez utiliser :

Par exemple, si vous souhaitez modifier uniquement les paramètres d'alerte par défaut de la métrique de mémoire, vous pouvez utiliser :

Par exemple, si vous souhaitez modifier uniquement la notification de la métrique config_applied, vous pouvez utiliser :

Ou si vous souhaitez définir une nouvelle configuration de métrique, que vous pouvez ensuite appeler dans votre code personnalisé (par exemple : une classe de contrôle personnalisée), vous pouvez le faire comme suit :

Ce paramètre permet de définir des graphiques supplémentaires ou de remplacer la configuration de graphique par défaut définie dans openwisp_monitoring.monitoring.configuration.DEFAULT_CHARTS .

Par exemple, si vous souhaitez modifier le graphique du trafic pour afficher Mo (mégaoctets) au lieu de Go (Gigaoctets), vous pouvez utiliser :

Ou si vous souhaitez définir une nouvelle configuration de graphique, que vous pouvez ensuite appeler dans votre code personnalisé (par exemple : une classe de contrôle personnalisée), vous pouvez le faire comme suit :

Si vous souhaitez simplement modifier les couleurs utilisées dans un graphique, voici comment procéder :

Ce paramètre vous permet d'effacer automatiquement management_ip d'un appareil lorsqu'il se déconnecte. Il est activé par défaut.

Enregistrement/désenregistrement de la configuration métrique

Surveillance OpenWISP fournit l'enregistrement et la désinscription de la configuration métrique via les fonctions utilitaires openwisp_monitoring.monitoring.configuration.register_metric et openwisp_monitoring.monitoring.configuration.unregister_metric . À l'aide de ces fonctions, vous pouvez enregistrer ou désenregistrer des configurations de métriques à partir de n'importe où dans votre code.

Cette fonction est utilisée pour enregistrer une nouvelle configuration de métrique à partir de n'importe où dans votre code.

Paramètre La description
nom_métrique: Un str définissant le nom de la configuration de métrique.
metric_configuration: Un dict définissant la configuration de la métrique.

Un exemple d'utilisation a été montré ci-dessous.

L'exemple ci-dessus enregistrera une configuration de métrique (nommée ping ), trois configurations de graphique (nommée rtt , packet_loss , uptime ) comme défini dans le graphiques key, deux types de notification (nommés ping_recovery , ping_problem ) comme défini dans notification clé.

Les AlertSettings de la métrique ping utiliseront par défaut le seuil et la tolérance définis dans la clé alert_settings. Vous pouvez toujours les remplacer et définir vos propres valeurs personnalisées via le administrateur.

Noter: Cela lèvera une exception ImproperlyConfigured si une configuration de métrique est déjà enregistrée avec le même nom (à ne pas confondre avec verbose_name).

Si vous n'avez pas besoin d'enregistrer une nouvelle métrique mais que vous devez modifier une clé spécifique d'une configuration de métrique existante, vous pouvez utiliser OPENWISP_MONITORING_METRICS.

Cette fonction est utilisée pour désinscrire une configuration de métrique de n'importe où dans votre code.

Paramètre La description
nom_métrique: Un str définissant le nom de la configuration de métrique.

Un exemple d'utilisation est présenté ci-dessous.

Noter: Il lèvera une exception ImproperlyConfigured si la configuration de métrique concernée n'est pas enregistrée.

Enregistrement/désenregistrement de la configuration du graphique

Surveillance OpenWISP fournit l'enregistrement et le désenregistrement de la configuration des graphiques via les fonctions utilitaires openwisp_monitoring.monitoring.configuration.register_chart et openwisp_monitoring.monitoring.configuration.unregister_chart . À l'aide de ces fonctions, vous pouvez enregistrer ou désenregistrer des configurations de graphique à partir de n'importe où dans votre code.

Cette fonction est utilisée pour enregistrer une nouvelle configuration de graphique à partir de n'importe où dans votre code.

Paramètre La description
nom_graphique: Un str définissant le nom de la configuration du graphique.
chart_configuration: Un dict définissant la configuration du graphique.

Un exemple d'utilisation a été montré ci-dessous.

Noter: Il lèvera une exception ImproperlyConfigured si une configuration de graphique est déjà enregistrée avec le même nom (à ne pas confondre avec verbose_name).

Si vous n'avez pas besoin d'enregistrer un nouveau graphique mais devez modifier une clé spécifique d'une configuration de graphique existante, vous pouvez utiliser OPENWISP_MONITORING_CHARTS.

Cette fonction est utilisée pour désinscrire une configuration de graphique de n'importe où dans votre code.

Paramètre La description
nom_graphique: Un str définissant le nom de la configuration du graphique.

Un exemple d'utilisation est présenté ci-dessous.

Noter: Il lèvera une exception ImproperlyConfigured si la configuration de graphique concernée n'est pas enregistrée.

Enregistrement de nouveaux types de notification

Vous pouvez définir vos propres types de notification à l'aide de la fonction register_notification_type d'OpenWISP Notifications. Pour plus d'informations, consultez la section openwisp-notifications appropriée sur l'enregistrement des types de notification.

Une fois qu'un nouveau type de notification est enregistré, vous devez utiliser le signal "notify" fourni dans openwisp-notifications pour envoyer des notifications pour ce type.

Chemin: openwisp_monitoring.db.exceptions.TimeseriesWriteException

S'il y a un échec dû lors de l'écriture des données dans la base de données de séries temporelles, cette exception doit être levée avec un message d'erreur utile expliquant la cause de l'échec. Cette exception sera normalement interceptée et la tâche d'écriture ayant échoué sera réessayée en arrière-plan afin qu'il n'y ait aucune perte de données si des échecs se produisent en raison d'une surcharge du serveur Timeseries. Vous pouvez en savoir plus sur ce mécanisme de nouvelle tentative sur OPENWISP_MONITORING_WRITE_RETRY_OPTIONS.

Chemin: openwisp_monitoring.monitoring.exceptions.InvalidMetricConfigException

Cette exception doit être levée si la configuration métrique est rompue.

Chemin: openwisp_monitoring.monitoring.exceptions.InvalidChartConfigException

Cette exception doit être levée si la configuration de la carte est cassée.

Une documentation générale de l'API en direct (suivant la spécification OpenAPI) sur /api/v1/docs/ .

De plus, l'ouverture de l'un des points de terminaison répertoriés ci-dessous directement dans le navigateur affichera l'interface API navigable de Django-REST-Framework, ce qui facilite encore plus la recherche des détails de chaque point de terminaison.

Étant donné que l'explication détaillée est contenue dans la documentation Live et dans la page Web navigable de chaque point, nous ne fournirons ici qu'une liste des points de terminaison disponibles. Pour plus d'informations, veuillez ouvrir l'URL du point de terminaison dans votre navigateur.

Récupérer les graphiques de l'appareil et les données d'état de l'appareil

Le format utilisé pour Device Status est inspiré de NetJSON DeviceMonitoring.

Noter: Si la demande est faite sans ?status=true, seules les données des graphiques de l'appareil seront renvoyées.

Collecter les métriques et l'état des appareils

Le format utilisé pour Device Status est inspiré de NetJSON DeviceMonitoring.

Chemin: openwisp_monitoring.device.signals.device_metrics_received

  • instance : instance de l'appareil dont les métriques ont été reçues
  • request : l'objet de requête HTTP

Ce signal est émis lorsque les métriques de périphérique sont reçues dans la vue DeviceMetric (uniquement lors de l'utilisation de HTTP POST).

Le signal est émis juste avant qu'une réponse réussie ne soit renvoyée, il n'est pas envoyé si la réponse n'a pas réussi.

Chemin: openwisp_monitoring.device.signals.health_status_changed

  • instance : instance de DeviceMonitoring dont le statut a été modifié
  • status : le statut par lequel le statut existant de DeviceMonitoring a été mis à jour avec

Ce signal est émis uniquement si l'état de santé de l'objet DeviceMonitoring est mis à jour.

Chemin: openwisp_monitoring.monitoring.signals.threshold_crossed

  • metric : objet métrique dont le seuil défini dans les paramètres d'alerte associés a été franchi
  • alert_settings : paramètres d'alerte liés à la métrique
  • target : objet Device associé
  • first_time : il sera défini sur true lorsque la métrique est écrite pour la première fois. Il sera mis à faux par la suite.

Le paramètre first_time peut être utilisé pour éviter de lancer des actions inutiles. Par exemple, envoyer des notifications de récupération.

Ce signal est émis lorsque la valeur seuil d'une métrique définie dans les paramètres d'alerte est franchie.

Chemin: openwisp_monitoring.monitoring.signals.pre_metric_write

  • metric : Objet métrique dont les données doivent être stockées dans une base de données de séries temporelles
  • valeurs : données métriques qui doivent être stockées dans la base de données des séries temporelles

Ce signal est émis pour chaque métrique avant que l'opération d'écriture ne soit envoyée à la base de données de séries temporelles.

Chemin: openwisp_monitoring.monitoring.signals.post_metric_write

  • metric : objet métrique dont les données sont stockées dans la base de données de séries temporelles
  • valeurs : données métriques stockées dans la base de données de séries temporelles

Ce signal est émis pour chaque métrique après l'exécution réussie de l'opération d'écriture en arrière-plan.

Cette commande exécutera toutes les vérifications disponibles pour tous les appareils. Par défaut, les contrôles sont exécutés périodiquement par battement de céleri. Vous pouvez en savoir plus à ce sujet dans Configuration.

Les scripts de surveillance qui sont automatiquement installés par un fichier de migration de l'application de surveillance des appareils sont nécessaires pour que les contrôles et les métriques fonctionnent.

Le script netjson-monitoring collecte les données requises à partir du périphérique openwrt en temps réel. Ces données sont ensuite envoyées par le script openwisp-monitoring au serveur sous forme de données JSON via SSL. Toutes les dépendances sont mises à jour et installées (si nécessaire) par le script update-openwisp-packages. Les dépendances OpenWRT nécessaires au fonctionnement des scripts de surveillance sont libubus-lua , lua-cjson et rpcd-mod-iwinfo .

ATTENTION: Veuillez créer un nouveau modèle si vous souhaitez implémenter des personnalisations. Si vous modifiez le modèle par défaut pour créer votre modèle personnalisé, votre code peut être écrasé après une mise à jour.

Installation pour le développement

Exigences de test d'installation :

Démarrez Redis et InfluxDB à l'aide de docker-compose :

Créez la base de données Django :

Lancer le serveur de développement :

Vous pouvez accéder à l'interface d'administration à l'adresse http://127.0.0.1:8000/admin/.

Exécutez celery et celery-beat avec les commandes suivantes (des fenêtres de terminal séparées sont nécessaires) :

Lors de l'exécution de la dernière ligne de l'exemple précédent, la variable d'environnement SAMPLE_APP active les exemples d'applications dans /tests/openwisp2/ qui sont de simples applications Django qui étendent openwisp-monitoring dans le seul but de tester son extensibilité, pour plus d'informations sur ce concept, lire la section suivante.

Installer et exécuter sur docker

L'une des valeurs fondamentales du projet OpenWISP est la réutilisabilité du logiciel, pour cette raison openwisp-surveillance fournit un ensemble de classes de base qui peuvent être importées, étendues et réutilisées pour créer des applications dérivées.

Afin de mettre en œuvre votre version personnalisée de openwisp-surveillance, vous devez suivre les étapes décrites dans le reste de cette section.

En cas de doute, le code du projet de test et les exemples d'applications, à savoir sample_check, sample_monitoring, sample_device_monitoring, vous guideront dans la bonne direction : il suffit de répliquer et d'adapter ce code pour obtenir un dérivé de base de openwisp-surveillance travail.

Prémisse: if you plan on using a customized version of this module, we suggest to start with it since the beginning, because migrating your data from the default module to your extended version may be time consuming.

1. Initialize your custom module

The first thing you need to do in order to extend any openwisp-monitoring app is create a new django app which will contain your custom version of that openwisp-monitoring application.

A django app is nothing more than a python package (a directory of python scripts), in the following examples we'll call these django apps as mycheck , mydevicemonitoring , mymonitoring but you can name it how you want:

Keep in mind that the command mentioned above must be called from a directory which is available in your PYTHON_PATH so that you can then import the result into your project.

Now you need to add mycheck to INSTALLED_APPS in your settings.py , ensuring also that openwisp_monitoring.check has been removed:

For more information about how to work with django projects and django apps, please refer to the "Tutorial: Writing your first Django app" in the django docunmentation.

2. Install openwisp-monitoring

Install (and add to the requirement of your project) openwisp-monitoring:

Add the following to your settings.py :

4. Add openwisp_utils.staticfiles.DependencyFinder

Add openwisp_utils.staticfiles.DependencyFinder to STATICFILES_FINDERS in your settings.py :

5. Add openwisp_utils.loaders.DependencyLoader

Add openwisp_utils.loaders.DependencyLoader to TEMPLATES in your settings.py :

6. Inherit the AppConfig class

Please refer to the following files in the sample app of the test project:

For more information regarding the concept of AppConfig please refer to the "Applications" section in the django documentation.

7. Create your custom models

  • For doubts regarding how to use, extend or develop models please refer to the "Models" section in the django documentation.
  • For doubts regarding proxy models please refer to proxy models.

8. Add swapper configurations

Add the following to your settings.py :

Substitute <YOUR_MODULE_NAME> with your actual django app name (also known as app_label ).

9. Create database migrations

Create and apply database migrations:

10. Create your custom admin

To extend check app, refer to sample_check admin.py file.

To extend monitoring app, refer to sample_monitoring admin.py file.

To extend device_monitoring app, refer to sample_device_monitoring admin.py file.

To introduce changes to the admin, you can do it in the two ways described below.

Noter: for doubts regarding how the django admin works, or how it can be customized, please refer to "The django admin site" section in the django documentation.

If the changes you need to add are relatively small, you can resort to monkey patching.

For example, for check app you can do it as:

Similarly for device_monitoring app, you can do it as:

Similarly for monitoring app, you can do it as:

2. Inheriting admin classes

If you need to introduce significant changes and/or you don't want to resort to monkey patching, you can proceed as follows:

For device_monitoring app,

11. Create root URL configuration

Please refer to the urls.py file in the test project.

For more information about URL configuration in django, please refer to the "URL dispatcher" section in the django documentation.

Please refer to the celery.py file in the test project.

For more information about the usage of celery in django, please refer to the "First steps with Django" section in the celery documentation.

Add the following in your settings.py to import celery tasks from device_monitoring app.

14. Create the custom command run_checks

Please refer to the run_checks.py file in the test project.

For more information about the usage of custom management commands in django, please refer to the "Writing custom django-admin commands" section in the django documentation.

15. Import the automated tests

When developing a custom application based on this module, it's a good idea to import and run the base tests too, so that you can be sure the changes you're introducing are not breaking some of the existing features of openwisp-monitoring.

In case you need to add breaking changes, you can overwrite the tests defined in the base classes to test your own behavior.

For, extending check app see the tests of sample_check app to find out how to do this.

For, extending device_monitoring app see the tests of sample_device_monitoring app to find out how to do this.

For, extending monitoring app see the tests of sample_monitoring app to find out how to do this.

Other base classes that can be inherited and extended

The following steps are not required and are intended for more advanced customization.

This view is responsible for displaying Charts and Status primarily.

The full python path is: openwisp_monitoring.device.api.views.DeviceMetricView .

If you want to extend this view, you will have to perform the additional steps below.


Alabama

Emery Hoyle, Deputy Project Leader
Wheeler National Wildlife Refuge
2700 Refuge HQ Road
Decatur, Alabama 35603
Phone: (256) 353-7243

Arkansas

Jim Besley, Information Technology Specialist
Arkansas Ecological Services Field Office
110 South Amity Road, Suite 300
Conway, Arkansas 72032-4761
Phone: (501) 513-4470

Floride

Paul Lang, Geographic Information Systems
Panama City Ecological Services Field Office
1601 Balboa Ave
Panama City, Florida 32405
Phone: (850) 769-0552 x230

Kirsten Luke, Geographic Information Systems
Atlantic Coast Joint Venture
1601 Balboa Ave
Panama City, Florida 32405
Phone: (850) 769-0552 x253

Chuck Kelso, Fish and Wildlife Biologist
Vero Beach Ecological Services Field Office
1339 20th Street
Vero Beach Florida 32960
Phone: (772) 469-4241

Géorgie

Jose Barrios, Geographic Information Systems
Southeast Regional Office
1875 Century Boulevard NE
Atlanta, GA 30345
Phone: (404) 679-7358

Caty McCurdy, Realty Specialist
Southeast Regional Office
1875 Century Boulevard NE
Atlanta, GA 30345
Phone: (404) 679-4056

Roy Hewitt, Web Developer
Southeast Regional Office
1875 Century Boulevard NE
Atlanta, GA 30345
Phone: (404) 679-7306

Louisiane

Yvonne Allen, Geographic Information Systems, Remote Sensing
Gulf Coast Plains and Ozarks Landscape Conservation Cooperative
237 Parker Coliseum, LSU
Baton Rouge, Louisiana 70803
Phone: (225) 578-2203

Robert Greco, Cartographer
Louisiana Ecological Services Field Office
200 Dulles Dr.
Lafayette, Louisiana 70506-4231
Phone: (337) 291-3150

Mark Parr, Geographic Information Systems
Gulf Coast Joint Venture
700 Cajundome Blvd
Lafayette LA 70506
Phone: (337) 266-8810

Mississippi

Blaine Elliott, Geographic Information Systems
Lower Mississippi Valley Join Venture
190 Business Park Drive, Suite E
Ridgeland MS 39157
Phone: (601) 206-5431

Caroline du Nord

Brian Van Druten, Fish and Wildlife Biologist
Alligator River National Wildlife Refuge
100 Conservation Way 1969
Manteo, North Carolina 27954
Phone: (828) 258-3939 x231

Mark Endries, Wildlife Biologist
Asheville Ecological Services Field Office
160 Zillicoa St
Asheville, North Carolina 28801 Phone: (828) 258-3939 x231

Amy Keister, GIS Coordinator
South Atlantic Landscape Conservation Cooperative
1751 Varsity Drive, 2nd Floor, Rm. 214-38
Raleigh, North Carolina 27606
Phone: (828) 258-3939 x231

Caroline du Sud

Brian Paddock, Information Technology
South Carolina Ecological Services Office
176 Croghan Spur Road, Suite 200
Charleston, South Carolina 29407
Phone: (843) 727-4707

Puerto Rico/Virgin Islands

Karen Torres, Information Technology
Caribbean Ecological Services Field Office
Carr 301, KM 5.1, Bo Corozo
Boqueron, Puerto Rico 00622-0510
Phone: (787) 851-7297

Tennessee

Jason Duke, Regional GIS Coordinator
Tennessee Ecological Services Field Office
446 Neal Street
Cookeville, Tennessee 38501
Phone: (931) 528-6481 x216

Kurt Snider, Cartographer
Tennessee Ecological Services Field Office
446 Neal Street
Cookeville, Tennessee 38501
Phone: (931) 528-6481 x219


This article is in the 64 th percentile (ranked 123,829 th ) of the 371,751 tracked articles of a similar age in all journals and the 50 th percentile (ranked 1 st ) of the 2 tracked articles of a similar age in Environmental Modeling & Assessment

Altmetric calculates a score based on the online attention an article receives. Each coloured thread in the circle represents a different type of online attention. The number in the centre is the Altmetric score. Social media and mainstream news media are the main sources that calculate the score. Reference managers such as Mendeley are also tracked but do not contribute to the score. Older articles often score higher because they have had more time to get noticed. To account for this, Altmetric has included the context data for other articles of a similar age.