IBM MQ

Supported OS Linux Windows Mac OS

Integration version6.4.0

Información general

Este check monitoriza IBM MQ a partir de la versión 9.1.

Configuración

Instalación

El check de IBM MQ está incluido en el paquete del Datadog Agent.

Para utilizar el check de IBM MQ, asegúrate de tener instalada la versión 9.1 del Cliente de IBM MQ o una superior (a menos que ya tengas instalada una versión compatible del servidor de IBM MQ en el host del Agent). Por ejemplo, el Cliente redistribuible 9.3. Actualmente, el check de IBM MQ no admite la conexión a un servidor de IBM MQ en z/OS.

En Linux

Actualiza LD_LIBRARY_PATH para incluir la localización de las bibliotecas. Crea esta variable de entorno si aún no existe. Por ejemplo, si instalaste el cliente en /opt:

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

Nota: la versión 6 del Agent o superiores utilizan upstart, systemd o launchd para orquestar el servicio datadog-agent. Puede ser necesario añadir variables de entorno a los archivos de configuración del servicio en las siguientes localizaciones predeterminadas:

  • Upstart (Linux): /etc/init/datadog-agent.conf
  • Systemd (Linux): /lib/systemd/system/datadog-agent.service
  • Launchd (MacOS): ~/Library/LaunchAgents/com.datadoghq.agent.plist

Ejemplo de la configuración para 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

Ejemplo de la configuración para 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

Ejemplo de la configuración para launchd:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>Label</key>
        <string>com.datadoghq.agent</string>
        <key>EnvironmentVariables</key>
        <dict>
            <key>DD_LOG_TO_CONSOLE</key>
            <string>false</string>
            <key>LD_LIBRARY_PATH</key>
            <string>/opt/mqm/lib64:/opt/mqm/lib</string>
        </dict>
        <key>ProgramArguments</key>
        <array>
            <string>/opt/datadog-agent/bin/agent/agent</string>
            <string>run</string>
        </array>
        <key>StandardOutPath</key>
        <string>/var/log/datadog/launchd.log</string>
        <key>StandardErrorPath</key>
        <string>/var/log/datadog/launchd.log</string>
        <key>ExitTimeOut</key>
        <integer>10</integer>
    </dict>
</plist>

Cada vez que se produce una actualización del Agent, estos archivos se borran y deben actualizarse de nuevo.

De manera alternativa, si utilizas Linux, asegúrese de que el conector del tiempo de ejecución pueda encontrar las bibliotecas una vez instalado el Cliente de MQ. Por ejemplo, con ldconfig:

Pon la localización de la biblioteca en un archivo de configuración 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"

Actualiza los enlaces:

sudo ldconfig

En Windows

Hay un archivo llamado mqclient.ini en el directorio de datos de IBM MQ. Normalmente es C:\ProgramData\IBM\MQ. Configura la variable de entorno MQ_FILE_PATH de modo que apunte hacia el directorio de datos.

Permisos y autenticación

Hay muchas formas de configurar los permisos en IBM MQ. Dependiendo de cómo funcione tu configuración, crea un usuario datadog dentro de MQ con permisos de solo lectura y, de manera opcional, permisos +chg. Se requieren permisos +chg para recopilar métricas de estadísticas de cola de restablecimiento (MQCMD_RESET_Q_STATS). Si no quieres recopilar estas métricas, puedes deshabilitar collect_reset_queue_metrics en la configuración. La recopilación de datos de rendimiento de las estadísticas de cola de restablecimiento también restablecerá los datos de rendimiento.

Nota: “Queue Monitoring” (Monitorización de cola) debe estar habilitado en el servidor de MQ y configurado como mínimo en “Medium” (Intermedio). Esto se puede hacer mediante la interfaz de usuario de MQ o con un comando mqsc en el host del servidor:

> /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.

Configuración

Host

Para configurar este check para un Agent que se ejecuta en un host, haz lo siguiente:

Recopilación de métricas
  1. Edita el archivo ibm_mq.d/conf.yaml, que se encuentra en la carpeta conf.d/ en la raíz del directorio de configuración del Agent, para empezar a recopilar los datos de rendimiento de IBM MQ. Consulta el archivo de ejemplo ibm_mq.d/conf.yaml para conocer todas las opciones de configuración disponibles. Hay muchas opciones para configurar IBM MQ, dependiendo de cómo lo utilices.

    • channel: el canal de IBM MQ.
    • queue_manager: el administrador de colas denominado.
    • host: el host donde se ejecuta IBM MQ.
    • port: el puerto que IBM MQ ha expuesto.
    • convert_endianness: debes habilitar esta opción si tu servidor de MQ se ejecuta en AIX o IBM i.

    Si utilizas una configuración de nombre de usuario y contraseña, puedes definir username y password. Si no defines ningún nombre de usuario, se utiliza el del propietario de procesos del Agent (dd-agent).

    Nota: El check solo monitoriza las colas que defines con el parámetro queues.

    queues:
      - APP.QUEUE.1
      - ADMIN.QUEUE.1
    
  2. Reinicia el Agent.

Recopilación de logs

Disponible para las versiones del Agent a partir de la 6.0

  1. La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent; habilítala en el archivo datadog.yaml:

    logs_enabled: true
    
  2. Luego, apunta el archivo de configuración hacia los archivos de logs de MQ adecuados. Puedes quitar las líneas al final del archivo de configuración de la integración de MQ y modificarlas como creas conveniente:

      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. Reinicia el Agent.

Contenedores

En el caso de los entornos en contenedores, consulta las Plantillas de integración de Autodiscovery para obtener orientación sobre la aplicación de los parámetros que se indican abajo.

Recopilación de métricas
ParámetroValor
<INTEGRATION_NAME>ibm_mq
<INIT_CONFIG>en blanco o {}
<INSTANCE_CONFIG>{"channel": "DEV.ADMIN.SVRCONN", "queue_manager": "datadog", "host":"%%host%%", "port":"%%port%%", "queues":["<QUEUE_NAME>"]}
Recopilación de logs

Disponible para las versiones del Agent a partir de la 6.0

La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Para habilitarla, consulta Recopilación de logs de Kubernetes.

ParámetroValor
<LOG_CONFIG>{"source": "ibm_mq", "service": "<SERVICE_NAME>", "log_processing_rules": {"type":"multi_line","name":"new_log_start_with_date", "pattern":"\d{2}/\d{2}/\d{4}"}}

Validación

Ejecuta el subcomando de estado del Agent y busca ibm_mq en la sección Checks.

Datos recopilados

Métricas

ibm_mq.channel.batch_interval
(gauge)
This attribute is a period during which the channel keeps a batch open even if there are no messages on the transmission queue (parameter identifier: BATCHINT).
Shown as second
ibm_mq.channel.batch_size
(gauge)
This attribute is the maximum number of messages to be sent before a sync point is taken (parameter identifier: BATCHSZ).
Shown as resource
ibm_mq.channel.batches
(gauge)
This attribute specifies the number of completed batches (parameter identifier: MQIACH_BATCHES).
ibm_mq.channel.buffers_rcvd
(gauge)
This attribute specifies the number of buffers received (parameter identifier: MQIACH_BUFFERS_RCVD).
Shown as buffer
ibm_mq.channel.buffers_sent
(gauge)
This attribute specifies the number of buffers sent (parameter identifier: MQIACH_BUFFERS_SENT)
Shown as buffer
ibm_mq.channel.bytes_rcvd
(gauge)
This attribute specifies the number of bytes received (parameter identifier: MQIACH_BYTES_RCVD).
Shown as byte
ibm_mq.channel.bytes_sent
(gauge)
This attribute specifies the number of bytes sent (parameter identifier: MQIACH_BYTES_SENT).
Shown as byte
ibm_mq.channel.channel_status
(gauge)
This attribute specifies the channel status (parameter identifier: MQIACH_CHANNEL_STATUS).
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.current_msgs
(gauge)
This attribute specifies the number of messages in-doubt (parameter identifier: MQIACH_CURRENT_MSGS).
Shown as message
ibm_mq.channel.disc_interval
(gauge)
This attribute is the length of time after which a channel closes down, if no message arrives during that period (parameter identifier: DISCINT).
Shown as second
ibm_mq.channel.hb_interval
(gauge)
This attribute specifies the approximate time between heartbeat flows that are to be passed from a sending MCA when there are no messages on the transmission queue (parameter identifier: HBINT).
Shown as second
ibm_mq.channel.indoubt_status
(gauge)
This attribute specifies the number whether the channel is currently in doubt (parameter identifier: MQIACH_INDOUBT_STATUS).
ibm_mq.channel.keep_alive_interval
(gauge)
This attribute is used to specify a timeout value for a channel (parameter identifier: KAINT).
Shown as second
ibm_mq.channel.long_retry
(gauge)
This attribute specifies the maximum number of times that the channel is to try allocating a session to its partner (parameter identifier: LONGRTY).
Shown as time
ibm_mq.channel.long_timer
(gauge)
This attribute is the approximate interval in seconds that the channel is to wait before retrying to establish connection, during the long retry mode (parameter identifier: LONGTMR).
Shown as second
ibm_mq.channel.max_message_length
(gauge)
This attribute specifies the maximum length of a message that can be transmitted on the channel (parameter identifier: MAXMSGL).
Shown as byte
ibm_mq.channel.mca_status
(gauge)
This attribute specifies the MCA status (parameter identifier: MQIACH_MCA_STATUS).
ibm_mq.channel.mr_count
(gauge)
This attribute specifies the number of times the channel tries to redeliver the message (parameter identifier: MRRTY).
ibm_mq.channel.mr_interval
(gauge)
This attribute specifies the minimum interval of time that must pass before the channel can retry the MQPUT operation (parameter identifier: MRTMR).
Shown as second
ibm_mq.channel.msgs
(gauge)
This attribute specifies the number of messages sent or received, or number of MQI calls handled (parameter identifier: MQIACH_MSGS).
Shown as message
ibm_mq.channel.network_priority
(gauge)
This attribute specifies the priority for the network connection. Distributed queuing chooses the path with the highest priority if there are multiple paths available. The value must be in the range 0 through 9; 0 is the lowest priority (parameter identifier: NETPRTY).
ibm_mq.channel.npm_speed
(gauge)
This attribute specifies the speed at which non-persistent messages are to be sent (parameter identifier: NPMSPEED).
ibm_mq.channel.sharing_conversations
(gauge)
This attribute specifies the maximum number of conversations that can share a channel instance associated with this channel (parameter identifier: SHARECNV).
ibm_mq.channel.short_retry
(gauge)
This attribute specifies the maximum number of attempts that are made by a sender or server channel to establish a connection to the remote machine (parameter identifier: MQIACH_SHORT_RETRY).
ibm_mq.channel.short_timer
(gauge)
This attribute specifies the short retry wait interval for a sender or server channel that is started automatically by the channel initiator (Parameter identifier: MQIACH_SHORT_TIMER).
Shown as second
ibm_mq.channel.ssl_key_resets
(gauge)
The value represents the total number of unencrypted bytes that are sent and received on the channel before the secret key is renegotiated (parameter identifier: SSLRSTCNT).
ibm_mq.queue.backout_threshold
(gauge)
Backout threshold (parameter identifier: MQIA_BACKOUT_THRESHOLD). That is, the number of times a message can be backed out before it is transferred to the backout queue specified by BackoutRequeueName.
Shown as resource
ibm_mq.queue.depth_current
(gauge)
The number of messages currently in the queue (parameter identifier: MQIA_CURRENT_Q_DEPTH).
Shown as message
ibm_mq.queue.depth_high_event
(gauge)
High limit for queue depth (parameter identifier: MQIA_Q_DEPTH_HIGH_LIMIT). This event indicates that an application has put a message to a queue, and this has caused the number of messages on the queue to become greater than or equal to the queue depth high threshold.
Shown as event
ibm_mq.queue.depth_high_limit
(gauge)
This attribute specifies the threshold against which the queue depth is compared before generated a queue high event (parameter identifier: MQIA_Q_DEPTH_HIGH_LIMIT).
Shown as resource
ibm_mq.queue.depth_low_event
(gauge)
Low limit for queue depth (parameter identifier: MQIA_Q_DEPTH_LOW_LIMIT). This event indicates that an application has retrieved a message from a queue, and this has caused the number of messages on the queue to become less than or equal to the queue depth low threshold.
Shown as event
ibm_mq.queue.depth_low_limit
(gauge)
This attribute specifies low limit for queue depth. This indicates that an application has retrieved a message from a queue, and this has caused the number of messages on the queue to become less than or equal to the queue depth low threshold (parameter identifier: MQIAQDEPTHLOWLIMIT).
Shown as item
ibm_mq.queue.depth_max
(gauge)
Maximum queue depth (parameter identifier: MQIA_MAX_Q_DEPTH). The maximum number of messages allowed on the queue. Note that other factors may cause the queue to be treated as full; for example, it will appear to be full if there is no storage available for a message.
Shown as message
ibm_mq.queue.depth_max_event
(gauge)
Controls whether Queue Full events are generated (parameter identifier: MQIA_Q_DEPTH_MAX_EVENT).
Shown as event
ibm_mq.queue.depth_percent
(gauge)
The percent of the queue that is currently utilized.
Shown as percent
ibm_mq.queue.harden_get_backout
(gauge)
Whether to harden backout count. Specifies whether the count of backed out messages should be saved (hardened) across restarts of the message queue manager (parameter identifier: MQIA_HARDEN_GET_BACKOUT).
Shown as request
ibm_mq.queue.high_q_depth
(gauge)
This attribute specifies the maximum number of messages on a queue (parameter identifier: MQIA_HIGH_Q_DEPTH).
Shown as message
ibm_mq.queue.inhibit_get
(gauge)
Whether get operations are allowed (parameter identifier: MQIA_INHIBIT_GET).
Shown as occurrence
ibm_mq.queue.inhibit_put
(gauge)
This attribute specifies whether put operations are allowed (parameter identifier: MQIA_INHIBIT_PUT).
Shown as occurrence
ibm_mq.queue.input_open_option
(gauge)
Specifies the default share option for applications opening this queue for input (parameter identifier: MQIA_DEF_INPUT_OPEN_OPTION).
Shown as resource
ibm_mq.queue.last_get_time
(gauge)
The elapsed time in seconds since the last message get from a queue.
Shown as second
ibm_mq.queue.last_put_time
(gauge)
The elapsed time in seconds since the last message put to a queue.
Shown as second
ibm_mq.queue.max_channels
(gauge)
This attribute is the maximum number of channels that can be current (parameter identifier: MQIA_MAX_CHANNELS).
Shown as connection
ibm_mq.queue.max_message_length
(gauge)
This attribute specifies the maximum message length that can be transmitted on the channel (parameter identifier: MQIACH_MAX_MSG_LENGTH).
Shown as resource
ibm_mq.queue.message_delivery_sequence
(gauge)
The order in which messages will be returned after a get operation (parameter identifier: MQIA_MSG_DELIVERY_SEQUENCE).
Shown as resource
ibm_mq.queue.msg_deq_count
(count)
This attribute specifies the number of messages dequeued (parameter identifier: MQIA_MSG_DEQ_COUNT).
Shown as message
ibm_mq.queue.msg_enq_count
(count)
This attribute specifies the number of messages enqueued (parameter identifier: MQIA_MSG_ENQ_COUNT).
Shown as message
ibm_mq.queue.oldest_message_age
(gauge)
The age, in seconds, of the oldest message on the queue (parameter identifier: MSGAGE).
Shown as second
ibm_mq.queue.open_input_count
(gauge)
Number of MQOPEN calls that have the queue open for input (parameter identifier: MQIA_OPEN_INPUT_COUNT).
Shown as connection
ibm_mq.queue.open_output_count
(gauge)
Number of MQOPEN calls that have the queue open for output (parameter identifier: MQIA_OPEN_OUTPUT_COUNT).
Shown as connection
ibm_mq.queue.persistence
(gauge)
Specifies the default for message-persistence on the queue. Message persistence determines whether or not messages are preserved across restarts of the queue manager (parameter identifier: MQIA_DEF_PERSISTENCE).
Shown as resource
ibm_mq.queue.priority
(gauge)
Specifies the default priority of messages put on the queue (parameter identifier: MQIA_DEF_PRIORITY).
Shown as resource
ibm_mq.queue.retention_interval
(gauge)
The number of hours for which the queue may be needed, based on the date and time when the queue was created (parameter identifier: MQIA_RETENTION_INTERVAL).
Shown as hour
ibm_mq.queue.scope
(gauge)
Scope of the queue definition (parameter identifier: MQIA_SCOPE). On OS/400, this is valid for receipt by MQSeries for AS/400 V4R2, or later. Specifies whether the scope of the queue definition does not extend beyond the queue manager which owns the queue, or whether the queue name is contained in a cell directory, so that it is known to all of the queue managers within the cell.
Shown as resource
ibm_mq.queue.service_interval
(gauge)
This attribute specifies the target for queue service interval. This is used for comparison to generate Queue Service Interval High and Queue Service Interval OK events (parameter identifier: MQIA_Q_SERVICE_INTERVAL).
Shown as millisecond
ibm_mq.queue.service_interval_event
(gauge)
Controls whether Service Interval High or Service Interval OK events are generated (parameter identifier: MQIA_Q_SERVICE_INTERVAL_EVENT).
Shown as occurrence
ibm_mq.queue.time_since_reset
(count)
This attribute specifies the time since statistics reset in seconds (parameter identifier: MQIA_TIME_SINCE_RESET).
Shown as second
ibm_mq.queue.trigger_control
(gauge)
This attribute specifies whether trigger messages are written to the initiation queue (parameter identifier: MQIA_TRIGGER_CONTROL).
Shown as method
ibm_mq.queue.trigger_depth
(gauge)
This attribute specifies the number of messages that will initiate a trigger message to the initiation queue (parameter identifier: MQIA_TRIGGER_DEPTH).
Shown as resource
ibm_mq.queue.trigger_message_priority
(gauge)
Threshold message priority for triggers (parameter identifier: MQIA_TRIGGER_MSG_PRIORITY). Specifies the minimum priority that a message must have before it can cause, or be counted for, a trigger event. The value must be in the range of priority values that are supported (0 through 9).
Shown as resource
ibm_mq.queue.trigger_type
(gauge)
The conditions under which trigger messages are written as a result of messages arriving on this queue (parameter identifier: MQIA_TRIGGER_TYPE).
Shown as resource
ibm_mq.queue.type
(gauge)
Type of queue to which the alias resolves (parameter identifier: MQIA_Q_TYPE).
Shown as resource
ibm_mq.queue.uncommitted_msgs
(gauge)
Specifies the maximum number of uncommitted messages. That is, the number of messages that can be retrieved, the number of messages that can be put, and any trigger messages generated within this unit of work (parameter identifier: MQIA_MAX_UNCOMMITTED_MSGS).
Shown as message
ibm_mq.queue.usage
(gauge)
This attribute whether the queue is for normal usage or for transmitting messages to a remote message queue manager (parameter identifier: MQIA_USAGE).
Shown as resource
ibm_mq.queue_manager.dist_lists
(gauge)
Specifies whether distribution-list messages can be placed on the queue (parameter identifier: MQIA_DIST_LISTS).
Shown as resource
ibm_mq.queue_manager.max_msg_list
(gauge)
Specifies the maximum message length that can be transmitted on the channel. This is compared with the value for the remote channel and the actual maximum is the lowest of the two values (parameter identifier: MQIACH_MAX_MSG_LENGTH).
Shown as byte
ibm_mq.stats.channel.avg_batch_size
(gauge)
The average batch size of batches processed by the channel (parameter identifier: MQIAMO_AVG_BATCH_SIZE).
Shown as message
ibm_mq.stats.channel.bytes
(count)
The number of bytes sent or received for persistent and nonpersistent messages. (parameter identifier: QCSTNBYT).
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 (parameter identifier: MQIAMO_FULL_BATCHES).
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 (parameter identifier: MQIAMO_INCOMPLETE_BATCHES).
Shown as message
ibm_mq.stats.channel.msgs
(count)
The number of persistent and nonpersistent messages sent or received (parameter identifier: QCSTNMSG).
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 (parameter identifier: MQIAMO_PUT_RETRIES).
Shown as message
ibm_mq.stats.queue.avg_q_time
(gauge)
The average latency, in microseconds, of messages destructively retrieved from the queue during the monitoring period for persistent and non-persistent messages (parameter identifier: MQIAMO64_AVG_Q_TIME).
Shown as message
ibm_mq.stats.queue.browse_bytes
(gauge)
The number of bytes read in non-destructive get requests for persistent and non-persistent messages (parameter identifier: MQIAMO64_BROWSE_BYTES).
Shown as message
ibm_mq.stats.queue.browse_count
(count)
The number of successful non-destructive get requests for persistent and non-persistent messages (parameter identifier: MQIAMO_BROWSES).
Shown as message
ibm_mq.stats.queue.browse_fail_count
(count)
The number of unsuccessful non-destructive get requests (parameter identifier: MQIAMO_BROWSES_FAILED).
Shown as message
ibm_mq.stats.queue.expired_msg_count
(count)
The number of persistent and non-persistent messages that were discarded because they had expired before they could be retrieved (parameter identifier: MQIAMO_MSGS_EXPIRED).
Shown as message
ibm_mq.stats.queue.get_bytes
(count)
The number of bytes read in destructive put requests for persistent and non-persistent messages (parameter identifier: MQIAMO64_GET_BYTES).
Shown as message
ibm_mq.stats.queue.get_count
(count)
The number of successful destructive get requests for persistent and non-persistent messages (parameter identifier: MQIAMO_GETS).
Shown as message
ibm_mq.stats.queue.get_fail_count
(count)
The number of unsuccessful destructive get requests (parameter identifier: MQIAMO_GETS_FAILED).
Shown as message
ibm_mq.stats.queue.non_queued_msg_count
(count)
The number of messages that bypassed the queue and were transferred directly to a waiting application. This number represents how many times WebSphere MQ was able to bypass the queue, and not the number of times an application was waiting (parameter identifier: MQIAMOMSGSNOT_QUEUED).
Shown as message
ibm_mq.stats.queue.purge_count
(count)
The number of messages purged (parameter identifier: MQIAMO_MSGS_PURGED).
Shown as message
ibm_mq.stats.queue.put1_count
(count)
The number of persistent and non-persistent messages successfully put to the queue using MQPUT1 calls (parameter identifier: MQIAMO_PUT1S).
Shown as message
ibm_mq.stats.queue.put1_fail_count
(count)
The number of unsuccessful attempts to put a message using MQPUT1 calls (parameter identifier: MQIAMO_PUT1S_FAILED).
Shown as message
ibm_mq.stats.queue.put_bytes
(count)
The number of bytes written in put requests to the queue for persistent and non-persistent messages (parameter identifier: MQIAMO64_PUT_BYTES).
Shown as message
ibm_mq.stats.queue.put_count
(count)
The number of persistent and non-persistent messages successfully put to the queue, with exception of MQPUT1 requests (parameter identifier: MQIAMO_PUTS).
Shown as message
ibm_mq.stats.queue.put_fail_count
(count)
The number of unsuccessful attempts to put a message to the queue (parameter identifier: MQIAMO_PUTS_FAILED).
Shown as message
ibm_mq.stats.queue.q_max_depth
(gauge)
The maximum queue depth during the monitoring period (parameter identifier: MQIAMO_Q_MAX_DEPTH).
Shown as message
ibm_mq.stats.queue.q_min_depth
(gauge)
The minimum queue depth during the monitoring period (parameter identifier: MQIAMO_Q_MIN_DEPTH).
Shown as message

Eventos

IBM MQ no incluye eventos.

Checks de servicio

ibm_mq.can_connect
Returns CRITICAL if the Agent cannot connect to the MQ server for any reason or UNKNOWN if the configured queue manager is not matched by the queue_manager_process option. Returns OK otherwise.
Statuses: ok, critical, unknown

ibm_mq.queue_manager
Returns CRITICAL if the Agent cannot retrieve stats from the queue manager or UNKNOWN if the configured queue manager is not matched by the queue_manager_process option. Returns OK otherwise.
Statuses: ok, critical, unknown

ibm_mq.queue
Returns CRITICAL if the Agent cannot retrieve queue stats. Returns OK otherwise.
Statuses: ok, critical

ibm_mq.channel
Returns CRITICAL if the Agent cannot retrieve channel stats. Returns OK otherwise.
Statuses: ok, critical

ibm_mq.channel.status
Return CRITICAL if the status is INACTIVE/STOPPED/STOPPING. Returns OK if the status is RUNNING. Returns WARNING if the status might lead to running.
Statuses: ok, critical, warning, unknown

Solucionar problemas

Advertencia de permiso MQRC_NOT_AUTHORIZED de las estadísticas de cola de restablecimiento

Si recibes la siguiente advertencia:

Warning: Error getting pcf queue reset metrics for SAMPLE.QUEUE.1: MQI Error. Comp: 2, Reason 2035: FAILED: MQRC_NOT_AUTHORIZED

Esto se debe a que el usuario datadog no tiene el permiso +chg para recopilar las métricas de cola de restablecimiento. Para solucionarlo, puedes otorgar permisos +chg al usuario datadog mediante setmqaut y recopilar las métricas de cola de restablecimiento, o bien puedes deshabilitar collect_reset_queue_metrics:

    collect_reset_queue_metrics: false

Utilización de recursos elevada

El check de IBM MQ realiza consultas en el servidor, y a veces estas consultas pueden ser costosas y provocar una degradación en el check.

Si observas que el check tarda demasiado en ejecutarse o que consume muchos recursos de tu host, puedes reducir potencialmente el contexto del check al intentar lo siguiente:

  • Si utilizas auto_discover_queues, prueba usar queue_patterns o queue_regex en su lugar para descubrir solo determinadas colas. Esto es especialmente importante si tu sistema crea colas dinámicas.
  • Si utilizas el autodescubrimiento de colas con queue_patterns o queue_regex, intenta ajustar el patrón o regex para que coincida con menos colas.
  • Deshabilita auto_discover_channels si tienes demasiados canales.
  • Deshabilita collect_statistics_metrics.

Errores en los logs

  • Unpack for type ((67108864,)) not implemented: si ves errores como éste y tu servidor de MQ se ejecuta en un sistema operativo de IBM, habilita convert_endianness y reinicia el Agent.

Advertencias en los logs

  • Error getting [...]: MQI Error. Comp: 2, Reason 2085: FAILED: MQRC_UNKNOWN_OBJECT_NAME: si ves mensajes como este, es porque la integración está intentando recopilar métricas de una cola que no existe. Esto puede deberse a una configuración incorrecta o, si utilizas auto_discover_queues, la integración puede descubrir una cola dinámica y luego, cuando intenta recopilar sus métricas, la cola ya no existe. En este caso, puedes mitigar el problema al definir queue_patterns o queue_regex más estrictos, o simplemente ignorar la advertencia.

Otro

¿Necesitas ayuda? Ponte en contacto con el equipo de asistencia de Datadog.

Referencias adicionales

Más enlaces, artículos y documentación útiles: