IBM MQ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

IBM MQ

Agent Check Agentチェック

Supported OS: Linux Mac OS

概要

このチェックは IBM MQ バージョン 5 から 9.0 を監視します。

セットアップ

インストール

IBM MQ チェックは Datadog Agent パッケージに含まれています。

IBM MQ チェックを使用するには、次を行う必要があります。

  1. IBM MQ クライアント 9.1 以上がインストールされていることを確認します (IBM MQ サーバーがインストールされていない場合)。
  2. ライブラリの場所を指定する LD_LIBRARY_PATH と C_INCLUDE_PATH を更新します。

例:

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

: Agent v6 以上は、upstartsystemd、または launchd を使用して datadog-agent サービスをオーケストレーションします。場合によっては、サービス構成ファイルに環境変数を追加する必要があります。サービス構成ファイルのデフォルトの場所は、以下の通りです。

  • Upstart (Linux): /etc/init/datadog-agent.conf
  • Systemd (Linux): /lib/systemd/system/datadog-agent.service
  • Launchd (MacOS): ~/Library/LaunchAgents/com.datadoghq.agent.plist
    • これは、MacOS SIP が無効になっている場合にのみ機能します (セキュリティポリシーによっては推奨されない場合があります)。これは SIP パージ LD_LIBRARY_PATH 環境変数が原因です。

以下は、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

以下は、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
```Agent

以下は、`launchd` の構成の例です。

```xml
<?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>

Agent が更新されるたびに、これらのファイルは消去されるため、再更新する必要があります。

または、Linux を使用している場合は、MQ クライアントのインストール後に、ランタイムリンカがライブラリを見つけることができることを確認します。たとえば、ldconfig を使用します。

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"

バインディングを更新します。

sudo ldconfig

アクセス許可と認証

IBM MQ でアクセス許可をセットアップする方法はいくつかあります。実際のセットアップの動作に応じて、MQ 内に読み取り専用アクセス許可を持つ datadog ユーザーを作成します。

: “Queue Monitoring” を有効にして、少なくとも “Medium” に設定する必要があります。これは、MQ UI または 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.

コンフィギュレーション

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには:

メトリクスの収集
  1. IBM MQ のパフォーマンスデータを収集するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/ フォルダーの ibm_mq.d/conf.yaml ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションについては、サンプル ibm_mq.d/conf.yaml を参照してください。 IBM MQ を構成するオプションはいくつかあり、使用方法によって構成は変わります。

    • channel: IBM MQ チャンネル
    • queue_manager: 指定されたキューマネージャー
    • host: IBM MQ が実行されているホスト
    • port: IBM MQ が公開しているポート

    ユーザー名とパスワードのセットアップを使用している場合、usernamepassword を設定できます。ユーザー名が設定されていない場合、Agent プロセスの所有者が使用されます(例: dd-agent)。

    : このチェックは、queues パラメーターで設定したキューのみを監視します

    queues:
      - APP.QUEUE.1
      - ADMIN.QUEUE.1
    
  2. Agent を再起動します

ログの収集

Agent バージョン 6.0 以降で利用可能

  1. Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml ファイルでこれを有効にします。

    logs_enabled: true
    
  2. 次に、構成ファイルで適切な MQ ログファイルを指定します。MQ インテグレーションの構成ファイルの下部にある行のコメントを解除し、適宜修正してください。

      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. Agent を再起動します

コンテナ化

コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。

メトリクスの収集
パラメーター
<インテグレーション名>ibm_mq
<初期コンフィギュレーション>空白または {}
<インスタンスコンフィギュレーション>{"channel": "DEV.ADMIN.SVRCONN", "queue_manager": "datadog", "host":"%%host%%", "port":"%%port%%", "queues":["<キュー名>"]}
ログの収集

Agent バージョン 6.0 以降で利用可能

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集のドキュメントを参照してください。

パラメーター
<LOG_CONFIG>{"source": "ibm_mq", "service": "<サービス名>", "log_processing_rules": {"type":"multi_line","name":"new_log_start_with_date", "pattern":"\d{2}/\d{2}/\d{4}"}}

検証

Agent の status サブコマンドを実行し、Checks セクションで ibm_mq を探します。

収集データ

メトリクス

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

サービスのチェック

ibm_mq.can_connect:
何らかの理由で Agent が MQ サーバーに接続できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

ibm_mq.queue_manager:
Agent がキューマネージャーから統計を取得できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

ibm_mq.queue:
Agent がキュー統計を取得できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

ibm_mq.channel:
Agent がチャンネル統計を取得できない場合は、CRITICAL を返します。それ以外の場合は、OK を返します。

ibm_mq.channel.status:
ステータスが INACTIVE/STOPPED/STOPPING の場合は、CRITICAL を返します。ステータスが RUNNING の場合は、OK を返します。ステータスが RUNNING になると推定される場合は、WARNING を返します。

イベント

IBM MQ には、イベントは含まれません。

トラブルシューティング

ご不明な点は、Datadog のサポートチームまでお問合せください。

その他の参考資料

お役に立つドキュメント、リンクや記事: