Aller au contenu principal

Azure Policy States

Contenu du Pack​

Modèles​

Le connecteur de supervision Azure Policies States apporte un modèle d'hôte :

  • Cloud-Azure-PolicyInsights-PolicyStates

Le connecteur apporte le modèle de service suivant :

AliasModèle de serviceDescription
ComplianceCloud-Azure-PolicyInsights-PolicyStates-Compliance-ApiContrôle l'état de conformité des stratégies Azure

Métriques & statuts collectés​

MétriqueUnité
policies.non_compliant.countcount
compliance_state#compliance-stateN/A

Prérequis​

Rendez-vous sur la documentation dédiée afin d'obtenir les prérequis nécessaires pour interroger les API d'Azure.

Installation​

Pack de supervision​

Si la plateforme est configurée avec une licence online, l'installation d'un paquet n'est pas requise pour voir apparaître le pack dans le menu Configuration > Gestionnaire de connecteurs de supervision. Au contraire, si la plateforme utilise une licence offline, installez le paquet sur le serveur central via la commande correspondant au gestionnaire de paquet associé à sa distribution :

dnf install centreon-pack-cloud-azure-policyinsights-policystates

Quel que soit le type de la licence (online ou offline), installez le Pack Azure Policies States depuis l'interface web et le menu Configuration > Gestionnaire de connecteurs de supervision.

Plugin​

À partir de Centreon 22.04, il est possible de demander le déploiement automatique du plugin lors de l'utilisation d'un pack. Si cette fonctionnalité est activée, et que vous ne souhaitez pas découvrir des éléments pour la première fois, alors cette étape n'est pas requise.

Plus d'informations dans la section Installer le plugin.

Utilisez les commandes ci-dessous en fonction du gestionnaire de paquets de votre système d'exploitation :

dnf install centreon-plugin-Cloud-Azure-PolicyInsights-PolicyStates-Api

Configuration​

Hôte​

  1. Ajoutez un hôte à Centreon depuis la page Configuration > Hôtes.
  2. Remplissez le champ Adresse IP/DNS avec l'adresse 127.0.0.1.
  3. Appliquez le modèle d'hôte Cloud-Azure-PolicyInsights-PolicyStates-custom.
  4. Une fois le modèle appliqué, renseignez les macros correspondantes. Attention, certaines macros sont obligatoires. Elles doivent être renseignées selon le custom mode utilisé.

Deux méthodes peuvent être utilisées lors de l'assignation des macros :

  • Utilisation de l'ID complet de la ressource (de type /subscriptions/<subscription_id>/resourceGroups/<resourcegroup_id>/providers/XXXXXX/XXXXXXX/<resource_name>) dans la macro AZURERESOURCE.
  • Utilisation du nom de la ressource dans la macro AZURERESOURCE et du nom du groupe de ressources dans la macro AZURERESOURCEGROUP.
ObligatoireMacroDescriptionDéfaut
xAZURECLIENTIDSet Azure client ID
xAZURECLIENTSECRETSet Azure client secret
AZURERESOURCEGROUPSet resource group
xAZURESUBSCRIPTIONSet Azure subscription ID
xAZURETENANTSet Azure tenant ID
PROXYURLProxy URL
EXTRAOPTIONSAny extra option you may want to add to every command line (eg. a --verbose flag)

Service​

Une fois le modèle appliqué, les macros ci-dessous indiquées comme requises (Obligatoire) doivent être renseignées.

ObligatoireMacroDescriptionDéfaut
POLICYSTATESThe virtual resource under PolicyStates resource type. In a given time range, 'latest' represents the latest policy state(s), whereas 'default' represents all policy state(s)default
RESOURCELOCATIONSet resource location (Optional)
RESOURCETYPESet resource type (Optional)
POLICYNAMESet policy name (Optional)
CRITICALCOMPLIANCESTATE%{compliance_state} eq "NonCompliant"
WARNINGCOMPLIANCESTATE
WARNINGNONCOMPLIANTPOLICIES
CRITICALNONCOMPLIANTPOLICIES
EXTRAOPTIONSAny extra option you may want to add to the command line (eg. a --verbose flag)

Comment puis-je tester le plugin et que signifient les options des commandes ?​

Une fois le plugin installé, vous pouvez tester celui-ci directement en ligne de commande depuis votre collecteur Centreon en vous connectant avec l'utilisateur centreon-engine (su - centreon-engine) :

/usr/lib/centreon/plugins//centreon_azure_policyinsights_policystates_api.pl \
--plugin=cloud::azure::policyinsights::policystates::plugin \
--mode=compliance \
--resource-group='' \
--subscription='' \
--tenant='' \
--client-id='' \
--client-secret='' \
--proxyurl='' \
--policy-states='' \
--resource-location='' \
--resource-type='' \
--policy-name='' \
--warning-non-compliant-policies='' \
--critical-non-compliant-policies='' \
--warning-compliance-state='' \
--critical-compliance-state='' \

La commande devrait retourner un message de sortie similaire à :

OK: Number of non compliant policies: 0 - All compliances states are ok | 'policies.non_compliant.count'=0;;;0;

Modes disponibles​

Tous les modes disponibles peuvent être affichés en ajoutant le paramètre --list-mode à la commande :

/usr/lib/centreon/plugins//centreon_azure_policyinsights_policystates_api.pl \
--plugin=cloud::azure::policyinsights::policystates::plugin \
--list-mode

Le plugin apporte les modes suivants :

ModeModèle de service associé
complianceCloud-Azure-PolicyInsights-PolicyStates-Compliance-Api

Options complémentaires​

Options des modes​

Les options spécifiques aux modes sont listées ci-dessus :

OptionDescriptionType
--modeChoose a mode.Global
--dyn-modeSpecify a mode with the path (separated by '::').Global
--list-modeList available modes.Global
--mode-versionCheck minimal version of mode. If not, unknown error.Global
--versionDisplay plugin version.Global
--custommodeChoose a custom mode.Global
--list-custommodeList available custom modes.Global
--multipleMultiple custom mode objects (required by some specific modes)Global
--pass-managerUse a password manager.Global
--verboseDisplay long output.Output
--debugDisplay also debug messages.Output
--filter-perfdataFilter perfdata that match the regexp.Output
--filter-perfdata-advAdvanced perfdata filter. Eg: --filter-perfdata-adv='not (%(value) == 0 and %(max) eq "")'Output
--explode-perfdata-maxPut max perfdata (if it exist) in a specific perfdata (without values: same with '_max' suffix) (Multiple options)Output
--change-perfdata --extend-perfdataChange or extend perfdata. Syntax: --extend-perfdata=searchlabel,newlabel,target[,[newuom],[min],[m ax]] Common examples: Change storage free perfdata in used: --change-perfdata=free,used,invert() Change storage free perfdata in used: --change-perfdata=used,free,invert() Scale traffic values automaticaly: --change-perfdata=traffic,,scale(auto) Scale traffic values in Mbps: --change-perfdata=traffic_in,,scale(Mbps),mbps Change traffic values in percent: --change-perfdata=traffic_in,,percent()Output
--extend-perfdata-groupExtend perfdata from multiple perfdatas (methods in target are: min, max, average, sum) Syntax: --extend-perfdata-group=searchlabel,newlabel,target[,[newuom],[m in],[max]] Common examples: Sum wrong packets from all interfaces (with interface need --units-errors=absolute): --extend-perfdata-group=',packets_wrong,sum(packets_(discard |error)_(in|out))' Sum traffic by interface: --extend-perfdata-group='traffic_in_(.*),traffic_$1,sum(traf fic_(in|out)_$1)'Output
--change-short-output --change-long-outputChange short/long output display: --change-short-output=pattern~replace~modifierOutput
--change-exitChange exit code: --change-exit=unknown=criticalOutput
--range-perfdataChange perfdata range thresholds display: 1 = start value equals to '0' is removed, 2 = threshold range is not display.Output
--filter-uomFilter UOM that match the regexp.Output
--opt-exitOptional exit code for an execution error (i.e. wrong option provided, SSH connection refused, timeout, etc) (Default: unknown).Output
--output-ignore-perfdataRemove perfdata from output.Output
--output-ignore-labelRemove label status from output.Output
--output-xmlDisplay output in XML format.Output
--output-jsonDisplay output in JSON format.Output
--output-openmetricsDisplay metrics in OpenMetrics format.Output
--output-fileWrite output in file (can be used with json and xml options)Output
--disco-formatDisplay discovery arguments (if the mode manages it).Output
--disco-showDisplay discovery values (if the mode manages it).Output
--float-precisionSet the float precision for thresholds (Default: 8).Output
--source-encodingSet encoding of monitoring sources (In some case. Default: 'UTF-8'). Microsoft Azure Rest API To connect to the Azure Rest API, you must register an application. Follow the 'How-to guide' in https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-cr eate-service-principal-portal The application needs the 'Monitoring Reader' role (See https://docs.microsoft.com/en-us/azure/azure-monitor/platform/roles-perm issions-security#monitoring-reader). This custom mode is using the 'OAuth 2.0 Client Credentials Grant Flow' For futher informations, visit https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth 2-client-creds-grant-flowOutput
--subscriptionSet Azure subscription ID.Api
--tenantSet Azure tenant ID.Api
--client-idSet Azure client ID.Api
--client-secretSet Azure client secret.Api
--login-endpointSet Azure login endpoint URL (Default: 'https://login.microsoftonline.com')Api
--management-endpointSet Azure management endpoint URL (Default: 'https://management.azure.com')Api
--timeframeSet timeframe in seconds (i.e. 3600 to check last hour).Api
--intervalSet interval of the metric query (Can be : PT1M, PT5M, PT15M, PT30M, PT1H, PT6H, PT12H, PT24H).Api
--aggregationSet monitor aggregation (Can be multiple, Can be: 'minimum', 'maximum', 'average', 'total', 'count').Api
--zeroedSet metrics value to 0 if none. Usefull when Monitor does not return value when not defined.Api
--timeoutSet timeout in seconds (Default: 10).Api
--http-peer-addrSet the address you want to connect (Useful if hostname is only a vhost. no ip resolve)Http global
--proxyurlProxy URLHttp global
--proxypacProxy pac file (can be an url or local file)Http global
--insecureInsecure SSL connections.Http global
--http-backendSet the backend used (Default: 'lwp') For curl: --http-backend=curlHttp global
--ssl-optSet SSL Options (--ssl-opt="SSL_version => TLSv1" --ssl-opt="SSL_verify_mode => SSL_VERIFY_NONE").Backend lwp
--curl-optSet CURL Options (--curl-opt="CURLOPT_SSL_VERIFYPEER => 0" --curl-opt="CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_1" ).Backend curl
--memcachedMemcached server to use (only one server).Retention
--redis-serverRedis server to use (only one server). SYntax: address[:port]Retention
--redis-attributeSet Redis Options (--redis-attribute="cnx_timeout=5").Retention
--redis-dbSet Redis database index.Retention
--failback-fileFailback on a local file if redis connection failed.Retention
--memexpirationTime to keep data in seconds (Default: 86400).Retention
--statefile-dirDirectory for statefile (Default: '/var/lib/centreon/centplugins').Retention
--statefile-suffixAdd a suffix for the statefile name (Default: '').Retention
--statefile-concat-cwdConcat current working directory with option '--statefile-dir'. Useful on Windows when plugin is compiled.Retention
--statefile-formatFormat used to store cache (can be: 'dumper', 'storable', 'json').Retention
--statefile-keyKey to encrypt/decrypt cache.Retention
--statefile-cipherCipher to encrypt cache (Default: 'AES').Retention
--policy-statesThe virtual resource under PolicyStates resource type. In a given time range, 'latest' represents the latest policy state(s), whereas 'default' represents all policy state(s).Mode
--resource-groupSet resource group (Optional).Mode
--resource-locationSet resource location (Optional).Mode
--resource-typeSet resource type (Optional).Mode
--policy-nameSet policy name (Optional).Mode
--warning- --critical-Thresholds. Can be: 'non-compliant-policies' ,'compliance-state'.Mode

Pour un mode, la liste de toutes les options complémentaires et leur signification peut être affichée en ajoutant le paramètre --help à la commande :

/usr/lib/centreon/plugins//centreon_azure_policyinsights_policystates_api.pl \
--plugin=cloud::azure::policyinsights::policystates::plugin \
--mode=compliance \
--help

Diagnostic des erreurs communes​

Rendez-vous sur la documentation dédiée des plugins basés sur HTTP/API.