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

IBM MQ

Agent Check Check de l'Agent

Supported OS: Linux

Présentation

Ce check surveille IBM MQ, versions 5 à 9.0.

Configuration

Installation

Le check IBM MQ est inclus avec le paquet de l’Agent Datadog.

Pour utiliser le check IBM MQ, vous devez :

  1. Vous assurer que le client IBM MQ 9.1+ est installé (sauf si un serveur IBM MQ est déjà installé)
  2. Mettre à jour vos LD_LIBRARY_PATH et C_INCLUDE_PATH afin d’inclure l’emplacement des bibliothèques

Par exemple :

export LD_LIBRARY_PATH=/opt/mqm/lib64:/opt/mqm/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/opt/mqm/inc

Remarque : l’Agent v6+ utilise Upstart ou systemd pour orchestrer le service datadog-agent. Il est possible que des variables d’environnement doivent être ajoutées aux fichiers de configuration du service, dont les emplacements par défaut sont :

  • Upstart : /etc/init/datadog-agent.conf
  • Systemd : /lib/systemd/system/datadog-agent.service

Voici un exemple de configuration utilisée pour systemd :

[Unit]
Description="Datadog Agent"
After=network.target
Wants=datadog-agent-trace.service datadog-agent-process.service
StartLimitIntervalSec=10
StartLimitBurst=5

[Service]
Type=simple
PIDFile=/opt/datadog-agent/run/agent.pid
Environment="LD_LIBRARY_PATH=/opt/mqm/lib64:/opt/mqm/lib:$LD_LIBRARY_PATH"
User=dd-agent
Restart=on-failure
ExecStart=/opt/datadog-agent/bin/agent/agent run -p /opt/datadog-agent/run/agent.pid

[Install]
WantedBy=multi-user.target

Voici un exemple de configuration upstart :

description "Datadog Agent"

start on started networking
stop on runlevel [!2345]

respawn
respawn limit 10 5
normal exit 0

console log
env DD_LOG_TO_CONSOLE=false
env LD_LIBRARY_PATH=/opt/mqm/lib64:/opt/mqm/lib:$LD_LIBRARY_PATH

setuid dd-agent

script
  exec /opt/datadog-agent/bin/agent/agent start -p /opt/datadog-agent/run/agent.pid
end script

post-stop script
  rm -f /opt/datadog-agent/run/agent.pid
end script

À chaque mise à jour de l’Agent, ces fichiers sont effacés et doivent à nouveau être modifiés.

Si vous utilisez Linux, une fois le client MQ installé, vérifiez que l’éditeur de liens à l’exécution parvient à trouver les bibliothèques. Par exemple, avec ldconfig :

Précisez l’emplacement de la bibliothèque dans un fichier de configuration ld.

sudo sh -c "echo /opt/mqm/lib64 > /etc/ld.so.conf.d/mqm64.conf"
sudo sh -c "echo /opt/mqm/lib > /etc/ld.so.conf.d/mqm.conf"

Mettez à jour les liens :

sudo ldconfig

Autorisations et authentification

Il existe plusieurs façons de configurer les autorisations dans IBM MQ. Selon votre configuration, créez un utilisateur datadog dans MQ avec un accès en lecture seule.

Remarque : le « Queue Monitoring » doit être activé et défini au minimum sur « Medium ». Ce réglage peut s’effectuer via l’IU MQ ou avec une commande mqsc :

> /opt/mqm/bin/runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, 2018.
Starting MQSC for queue manager datadog.


ALTER QMGR MONQ(MEDIUM) MONCHL(MEDIUM)
     1 : ALTER QMGR MONQ(MEDIUM) MONCHL(MEDIUM)
AMQ8005I: IBM MQ queue manager changed.

       :
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.

Configuration

Host

Suivez les instructions ci-dessous pour configurer ce check lorsque l’Agent est exécuté sur un host. Consultez la section Environnement conteneurisé pour en savoir plus sur les environnements conteneurisés.

Collecte de métriques
  1. Modifiez le fichier ibm_mq.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos données de performance IBM MQ. Consultez le fichier d’exemple ibm_mq.d/conf.yaml pour découvrir toutes les options de configuration disponibles. Plusieurs options sont disponibles pour configurer IBM MQ, selon la façon dont vous l’utilisez.

    • channel : le canal IBM MQ
    • queue_manager : le gestionnaire de file d’attente nommé
    • host : le host sur lequel IBM MQ est exécuté
    • port : le port exposé par IBM MQ

    Si vous utilisez une configuration reposant sur des identifiants, vous pouvez définir le username et le password. Si aucun nom d’utilisateur n’est spécifié, le propriétaire du processus de l’Agent est utilisé (p. ex. dd-agent).

    Remarque : le check surveille uniquement les files d’attente spécifiées via le paramètre queues

    queues:
      - APP.QUEUE.1
      - ADMIN.QUEUE.1
  2. Redémarrez l’Agent.

Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

  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. Redirigez ensuite le fichier de configuration vers les bons fichiers de log MQ. Vous pouvez supprimer la mise en commentaire des lignes en bas du fichier de configuration de l’intégration MQ et les modifier comme bon vous semble :

     logs:
       - type: file
         path: '/var/mqm/log/<APPNAME>/active/AMQERR01.LOG'
         service: '<APPNAME>'
         source: ibm_mq
         log_processing_rules:
           - type: multi_line
             name: new_log_start_with_date
             pattern: "\d{2}/\d{2}/\d{4}"
  3. Redémarrez l’Agent.

Environnement conteneurisé

Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.

Collecte de métriques
ParamètreValeur
<NOM_INTÉGRATION>ibm_mq
<CONFIG_INIT>vide ou {}
<CONFIG_INSTANCE>{"channel": "DEV.ADMIN.SVRCONN", "queue_manager": "datadog", "host":"%%host%%", "port":"%%port%%", "queues":["<NOM_FILE>"]}
Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

La collecte des logs est désactivée par défaut dans l’Agent Datadog. Pour l’activer, consultez la section Collecte de logs avec Kubernetes.

ParamètreValeur
<CONFIG_LOG>{"source": "ibm_mq", "service": "<NOM_SERVICE>", "log_processing_rules": {"type":"multi_line","name":"new_log_start_with_date", "pattern":"\d{2}/\d{2}/\d{4}"}}

Validation

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

Données collectées

Métriques

ibm_mq.channel.channels
(gauge)
The number of active channels
Shown as resource
ibm_mq.channel.count
(gauge)
Sum by status to count channels. Filter by channel and status tags to create notifications.
ibm_mq.channel.batch_interval
(gauge)
The batch interval in seconds
Shown as second
ibm_mq.channel.batch_size
(gauge)
The batch size
Shown as resource
ibm_mq.channel.disc_interval
(gauge)
The disconnection interval in seconds
Shown as second
ibm_mq.channel.hb_interval
(gauge)
Heartbeat interval in seconds
Shown as second
ibm_mq.channel.keep_alive_interval
(gauge)
KeepAlive interval in seconds
Shown as second
ibm_mq.channel.long_retry
(gauge)
Long retry count
Shown as time
ibm_mq.channel.long_timer
(gauge)
Long timer
Shown as second
ibm_mq.channel.max_message_length
(gauge)
Maximum message length
Shown as byte
ibm_mq.channel.mr_count
(gauge)
Message retry count
ibm_mq.channel.mr_interval
(gauge)
Message retry interval in seconds
Shown as second
ibm_mq.channel.network_priority
(gauge)
Network priority
ibm_mq.channel.npm_speed
(gauge)
Speed at which non-persistent messages are to be sent
ibm_mq.channel.sharing_conversations
(gauge)
Number of sharing conversations
ibm_mq.channel.short_retry
(gauge)
Short retry count
ibm_mq.channel.short_timer
(gauge)
Short timer
Shown as second
ibm_mq.channel.buffers_rcvd
(gauge)
Number of buffers received
Shown as buffer
ibm_mq.channel.buffers_sent
(gauge)
Number of buffers sent
Shown as buffer
ibm_mq.channel.bytes_rcvd
(gauge)
Number of bytes received
Shown as byte
ibm_mq.channel.bytes_sent
(gauge)
Number of bytes sent
Shown as byte
ibm_mq.channel.channel_status
(gauge)
Channel status
ibm_mq.channel.mca_status
(gauge)
MCA status
ibm_mq.channel.msgs
(gauge)
Number of messages sent or received, or number of MQI calls handled
Shown as message
ibm_mq.channel.ssl_key_resets
(gauge)
SSL secret key resets
ibm_mq.channel.batches
(gauge)
Number of completed batches
ibm_mq.channel.current_msgs
(gauge)
Number of messages in-doubt
Shown as message
ibm_mq.channel.indoubt_status
(gauge)
Whether the channel is currently in doubt
ibm_mq.queue.high_q_depth
(gauge)
Maximum number of messages on a queue
Shown as message
ibm_mq.queue.msg_deq_count
(count)
Number of messages dequeued
Shown as message
ibm_mq.queue.msg_enq_count
(count)
Number of messages enqueued
Shown as message
ibm_mq.queue.time_since_reset
(count)
Time since statistics reset in seconds
Shown as second
ibm_mq.queue.service_interval
(gauge)
the time since last serviced
Shown as millisecond
ibm_mq.queue.inhibit_put
(gauge)
puts are inhibited
Shown as occurrence
ibm_mq.queue.depth_low_limit
(gauge)
the low limit on the depth to create an alert
Shown as item
ibm_mq.queue.inhibit_get
(gauge)
gets are inhibited
Shown as occurrence
ibm_mq.queue.harden_get_backout
(gauge)
number of times a message is retrieved
Shown as request
ibm_mq.queue.service_interval_event
(gauge)
is service necessary
Shown as occurrence
ibm_mq.queue.trigger_control
(gauge)
controls if trigger messages are written to an initiation queue
Shown as method
ibm_mq.queue.usage
(gauge)
what the queue is used for
Shown as resource
ibm_mq.queue.scope
(gauge)
controls if the queue exists in a cell directory
Shown as resource
ibm_mq.queue.type
(gauge)
the type of queue
Shown as resource
ibm_mq.queue.depth_max
(gauge)
the max depth of the queue
Shown as message
ibm_mq.queue.backout_threshold
(gauge)
backout threshold used by other applications
Shown as resource
ibm_mq.queue.depth_high_event
(gauge)
a depth high event has been generated
Shown as event
ibm_mq.queue.depth_low_event
(gauge)
a depth low event has been generated
Shown as event
ibm_mq.queue.trigger_message_priority
(gauge)
the message priority below which a message doesn't generate a trigger message
Shown as resource
ibm_mq.queue.depth_current
(gauge)
the number of messages in the queue
Shown as message
ibm_mq.queue.depth_max_event
(gauge)
controls whether queue full events are generated
Shown as event
ibm_mq.queue.open_input_count
(gauge)
the number of handles currently open
Shown as connection
ibm_mq.queue.persistence
(gauge)
the default persistance of messages on the queue
Shown as resource
ibm_mq.queue.trigger_depth
(gauge)
the number of messages on the queue before a trigger event is written
Shown as resource
ibm_mq.queue.max_message_length
(gauge)
the max length of a message
Shown as resource
ibm_mq.queue.depth_high_limit
(gauge)
the threshold against which the queue depth is compared before generated a queue high event
Shown as resource
ibm_mq.queue.priority
(gauge)
the default priority for messages on the queue
Shown as resource
ibm_mq.queue.input_open_option
(gauge)
the default way to open the queue for input
Shown as resource
ibm_mq.queue.message_delivery_sequence
(gauge)
the order in which messages will be returned after a get operation
Shown as resource
ibm_mq.queue.retention_interval
(gauge)
the period of time to retain the queue after elapsed it is elegible for deletion
Shown as hour
ibm_mq.queue.open_output_count
(gauge)
the number of handles that are available for adding messages
Shown as connection
ibm_mq.queue.trigger_type
(gauge)
the conditions under which trigger messages are written as a result of messages arriving on this queue
Shown as resource
ibm_mq.queue.depth_percent
(gauge)
the percent of the queue that is currently utilized
Shown as percent
ibm_mq.queue_manager.dist_lists
(gauge)
This indicates whether distribution-list messages can be placed on the queue
Shown as resource
ibm_mq.queue_manager.max_msg_list
(gauge)
the length of the longest message the queue manager can handle
Shown as byte
ibm_mq.queue.max_channels
(gauge)
the max number of channels that can be connected
Shown as connection
ibm_mq.queue.oldest_message_age
(gauge)
the age of the oldest message on the queue in seconds
Shown as second
ibm_mq.queue.uncommitted_msgs
(gauge)
the number of uncommitted messages on the queue.
Shown as message
ibm_mq.stats.channel.msgs
(count)
The number of persistent and nonpersistent messages sent or received.
Shown as message
ibm_mq.stats.channel.bytes
(count)
The number of bytes sent or received for persistent and nonpersistent messages.
Shown as message
ibm_mq.stats.channel.put_retries
(count)
The number of times in the time interval that a message failed to be put, and entered a retry loop.
Shown as message
ibm_mq.stats.channel.full_batches
(count)
The number of batches processed by the channel that were sent because the value of the channel attributes BATCHSZ or BATCHLIM was reached.
Shown as message
ibm_mq.stats.channel.incomplete_batches
(count)
The number of batches processed by the channel, that were sent without the value of the channel attribute BATCHSZ being reached.
Shown as message
ibm_mq.stats.channel.avg_batch_size
(gauge)
The average batch size of batches processed by the channel.
Shown as message
ibm_mq.stats.queue.q_min_depth
(gauge)
The minimum queue depth during the monitoring period.
Shown as message

Checks de service

mysql.can_connect :
Renvoie CRITICAL si l’Agent ne parvient pas à se connecter au serveur MQ pour une raison quelconque. Si ce n’est pas le cas, renvoie OK.

ibm_mq.queue_manager :
Renvoie CRITICAL si l’Agent ne parvient pas à recueillir des statistiques provenant du gestionnaire de files d’attente. Si ce n’est pas le cas, renvoie OK.

ibm_mq.queue :
Renvoie CRITICAL si l’Agent ne parvient pas à recueillir des statistiques sur les files d’attente. Si ce n’est pas le cas, renvoie OK.

ibm_mq.channel :br> Renvoie CRITICAL si l’Agent ne parvient pas à recueillir des statistiques sur les canaux. Si ce n’est pas le cas, renvoie OK.

ibm_mq.channel.status :
Renvoie CRITICAL si le statut est INACTIVE, STOPPED ou STOPPING. Renvoie OK si le statut est RUNNING et renvoie WARNING si le statut peut passer à running.

Événements

IBM MQ n’inclut aucun événement.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles :