Postfix
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Postfix

Agent Check Check de l'Agent

Supported OS: Linux Mac OS

Graphique Postfix

Présentation

Ce check surveille la taille de toutes les files d’attente Postfix.

Configuration

Installation

Le check Postfix est inclus dans le paquet de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos serveurs Postfix.

Configuration

Ce check peut être configuré de façon à le faire utiliser la commande find, ce qui nécessite d’accorder un accès sudo à l’utilisateur dd-agent pour qu’il puisse obtenir le nombre de messages dans les files d’attente d’e-mails de types incoming, active et deferred.

Vous pouvez également configurer l’agent de façon à le faire utiliser une commande postqueue -p intégrée afin d’obtenir le nombre de messages dans les files d’attente d’e-mails de types active, hold et deferred. La commande postqueue est exécutée avec les droits de groupe setgid sans que sudo soit nécessaire.

AVERTISSEMENT : l’utilisation de la commande postqueue pour surveiller les files d’attente d’e-mails ne permet pas d’obtenir le nombre de messages dans la file d’attente incoming.

Collecte de métriques

Utilisation de sudo
  1. Modifiez le fichier postfix.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent. Consultez le fichier d’exemple postfix.d/conf.yaml pour découvrir toutes les options de configuration disponibles :

    init_config:
     ## @param postfix_user - string - required
     ## The user running dd-agent must have passwordless sudo access for the find
     ## command to run the postfix check.  Here's an example:
     ## example /etc/sudoers entry:
     ##   dd-agent ALL=(postfix) NOPASSWD:/usr/bin/find /var/spool/postfix/incoming -type f
     ##
     ## Redhat/CentOS/Amazon Linux flavours need to add:
     ##          Defaults:dd-agent !requiretty
     #
     postfix_user: postfix
    
    instances:
     ## @param directory - string - required
     ## Path to the postfix directory.
     #
     - directory: /var/spool/postfix
    
       ## @param queues - list of string - required
       ## List of queues to monitor.
       #
       queues:
         - incoming
         - active
         - deferred
  2. Pour chaque file d’attente d’e-mails dans queues, l’Agent effectue un fork() du find sur son répertoire. Comme il utilise sudo pour effectuer cette action avec les privilèges de l’utilisateur Postfix, vous devez ajouter les lignes suivantes à /etc/sudoers pour l’utilisateur de l’Agent, dd-agent, en supposant que Postfix s’exécute en tant que postfix :

    dd-agent ALL=(postfix) NOPASSWD:/usr/bin/find /var/spool/postfix/incoming -type f
    dd-agent ALL=(postfix) NOPASSWD:/usr/bin/find /var/spool/postfix/active -type f
    dd-agent ALL=(postfix) NOPASSWD:/usr/bin/find /var/spool/postfix/deferred -type f
  3. Redémarrez l’Agent.

Utilisation de postqueue
  1. Modifiez le fichier postfix.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent :

    init_config:
     ## @param postqueue - boolean - optional - default: false
     ## Set `postqueue: true` to gather mail queue counts using `postqueue -p`
     ## without the use of sudo. Postqueue binary is ran with set-group ID privileges,
     ## so that it can connect to Postfix daemon processes.
     ## Only `tags` keys are used from `instances` definition.
     ## Postfix has internal access controls that limit activities on the mail queue.
     ## By default, Postfix allows `anyone` to view the queue. On production systems
     ## where the Postfix installation may be configured with stricter access controls,
     ## you may need to grant the dd-agent user access to view the mail queue.
     ##
     ## postconf -e "authorized_mailq_users = dd-agent"
     ##
     ## http://www.postfix.org/postqueue.1.html
     ##
     ## authorized_mailq_users (static:anyone)
     ## List of users who are authorized to view the queue.
     #
     postqueue: true
    
    instances:
     ## @param config_directory - string - optional
     ## The config_directory option only applies when `postqueue: true`.
     ## The config_directory is the location of the Postfix configuration directory
     ## where main.cf lives.
     #
     - config_directory: /etc/postfix
    
       ## @param queues - list of string - required
       ## List of queues to monitor.
       #
       queues:
         - incoming
         - active
         - deferred
  2. Pour chaque config_directory dans instances, l’Agent effectue un fork de postqueue -c pour le répertoire de configuration de Postfix. Postfix offre des contrôles d’accès internes qui limitent les opérations pouvant être effectuées sur la file d’attente d’e-mails. L’option par défaut anyone de Postfix permet à tout le monde de consulter la file d’attente. Sur les systèmes de production sur lesquels une installation Postfix peut être configurée avec des contrôles d’accès plus stricts, vous devrez peut-être accorder à l’utilisateur dd-agent un accès en lecture à la file d’attente d’e-mails (documentation de la commande Postfix postqueue) :

    postconf -e "authorized_mailq_users = dd-agent"

Liste des utilisateurs autorisés à consulter la file d’attente :

   authorized_mailq_users (static:anyone)
  1. Redémarrez l’Agent.

Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

Postfix envoie des logs au daemon syslog, qui enregistre alors les logs dans le système de fichiers. La convention de nommage et les destinations des fichiers log sont configurables :

/etc/syslog.conf:
    mail.err                                    /dev/console
    mail.debug                                  /var/log/mail.log
  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
  2. Ajoutez le bloc de configuration suivant à votre fichier postfix.d/conf.yaml. Modifiez les valeurs des paramètres path et service en fonction de votre environnement. Consultez le fichier d’exemple postfix.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

    logs:
     - type: file
       path: /var/log/mail.log
       source: postfix
       service: myapp
  3. Redémarrez l’Agent.

Validation

Lancez la sous-commande status de l’Agent et cherchez postfix dans la section Checks.

Données collectées

Métriques

postfix.queue.size
(gauge)
The number of messages in a given mail queue, tagged by queue name (e.g. 'queue:incoming') and directory (e.g. 'instance:/var/spool/postfix/incoming').
Shown as email

Événements

Le check Postfix n’inclut aucun événement.

Checks de service

Le check Postfix n’inclut aucun check de service.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles :