ActiveMQ
インストールと設定¶
ActiveMQ の設定¶
ActiveMQ は Java で記述されており、jmx prometheus プラグインを使用してメトリクスを公開できます。
1.1 jmx-exporter をダウンロード¶
ダウンロード先:https://github.com/prometheus/jmx_exporter
1.2 ActiveMQ の jmx 設定を追加¶
ActiveMQ の conf ディレクトリに jmx.yaml ファイルを追加し、内容は以下のとおりです。
lowercaseOutputName: true
lowercaseOutputLabelNames: true
blacklistObjectNames:
- "org.apache.activemq:clientId=*,*"
whitelistObjectNames:
- "org.apache.activemq:destinationType=Queue,*"
- "org.apache.activemq:destinationType=Topic,*"
- "org.apache.activemq:type=Broker,brokerName=*"
- "org.apache.activemq:type=Topic,brokerName=*"
- "org.apache.activemq:type=Broker,brokerName=*,destinationType=Queue,destinationName=*,endpoint=*,clientId=*,consumerId=*"
- "org.apache.activemq:type=Broker,brokerName=*,destinationType=Topic,destinationName=*,endpoint=*,clientId=*,consumerId=*"
rules:
- pattern: org.apache.activemq:type=Broker,brokerName=(\S+),destinationType=(\S+),destinationName=(\S+),endpoint=(\S+),clientId=(\S+),consumerId=(\S+),?>(\w+)
name: "activemq_consumer_$7"
labels:
broker_name: "$1"
destination_type: "$2"
destination_name: "$3"
endpoint: "$4"
client_id: "$5"
consumer_id: "$6"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Queue, destinationName=(\S*)><>(\w+)
name: activemq_queue_$3
attrNameSnakeCase: true
labels:
broker_name: "$1"
destination_name: "$2"
destination_type: "Queue"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*), destinationType=Topic, destinationName=(\S*)><>(\w+)
name: activemq_topic_$3
attrNameSnakeCase: true
labels:
broker_name: "$1"
destination_name: "$2"
destination_type: "Topic"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>CurrentConnectionsCount
name: activemq_connections
type: GAUGE
labels:
broker_name: "$1"
connection_type: current
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>TotalConnectionsCount
name: activemq_connections
type: GAUGE
labels:
broker_name: "$1"
connection_type: total
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>Total(.*)Count
name: activemq_$2_total
type: COUNTER
labels:
broker_name: "$1"
- pattern: org.apache.activemq<type=Broker, brokerName=(\S*)><>(.*)PercentUsage
name: activemq_$2_usage_ratio
type: GAUGE
labels:
broker_name: "$1"
valueFactor: 0.01
1.3 起動パラメータを調整¶
ActiveMQ の bin ディレクトリで、setenv ファイルを修正し、次の内容を追加します。
ACTIVEMQ_OPTS="-javaagent:${ACTIVEMQ_BASE}/jmx_prometheus_javaagent-1.2.0.jar=8081:${ACTIVEMQ_BASE}/conf/jmx.yaml"
現在設定されているポート番号は 8081 です。後続の収集で使用するため、変更はできますが、収集側のポートと一致させる必要があります。
1.4 ActiveMQ を再起動¶
bin/activemq stop bin/activemq start
DataKit¶
コレクターを有効にする¶
prometheus コレクターを有効にして ActiveMQ のメトリクスを収集します。 DataKit インストールディレクトリ の conf.d/samples に移動し、次のコマンドを実行します。
cp prom.conf.sample activemq.conf
activemq.conf の内容を調整します。主に次の内容を変更します。
- 再起動
調整が完了したら、Datakit を再起動します。
datakit service -R
メトリクス¶
| メトリクス名 | 説明 | 単位 |
|---|---|---|
connections |
現在 ActiveMQ Broker に接続しているクライアント接続数 | 個 |
consumer_total |
これまでに作成されたコンシューマー(Consumer)の累計数 | 個 |
dequeue_total |
すべてのキュー/トピックで正常に消費されたメッセージ総数 | 件 |
enqueue_total |
すべてのキュー/トピックで受信した新規メッセージ総数 | 件 |
jobschedulerstore_usage_ratio |
JobSchedulerStore の使用率。永続タスクストレージの占有率を示します | パーセント(%) |
memory_usage_ratio |
ActiveMQ Broker が使用するメモリの設定上限に対する割合 | パーセント(%) |
message_total |
現在 Broker 上に存在するすべてのメッセージ数(処理待ちおよび未確認のメッセージを含む) | 件 |
producer_total |
これまでに作成されたメッセージプロデューサー(Producer)の累計数 | 個 |
queue_always_retroactive |
このキューで「常時遡及」機能が有効かどうか。新しいコンシューマーが過去のメッセージを取得できます | ブール値(0/1) |
queue_average_blocked_time |
リソース不足によりキューがブロックされた時間の平均値 | ミリ秒(ms) |
queue_average_enqueue_time |
メッセージがキューに入るまでの平均時間 | ミリ秒(ms) |
queue_average_message_size |
キュー内メッセージの平均バイトサイズ | バイト(B) |
queue_blocked_producer_warning_interval |
キュー満杯によりプロデューサーがブロックされた際の警告間隔 | 秒(s) |
queue_blocked_sends |
キュー満杯によりプロデューサーがブロックされた累計回数 | 回 |
queue_cache_enabled |
このキューでキャッシュ機構が有効かどうか | ブール値(0/1) |
queue_consumer_count |
このキューを購読または監視しているコンシューマー数 | 個 |
queue_cursor_full |
キューのメッセージカーソル(Cursor)が最大容量に達しているかどうか | ブール値(0/1) |
queue_cursor_memory_usage |
キューカーソルが使用しているメモリ量 | バイト(B) |
queue_cursor_percent_usage |
キューカーソルのメモリ使用量が総割り当てメモリに占める割合 | パーセント(%) |
queue_dequeue_count |
このキューから正常に消費されたメッセージ数 | 件 |
queue_dispatch_count |
コンシューマーへの配信を試行した累計メッセージ数 | 件 |
queue_dlq |
デッドレターキュー(DLQ)に移されたメッセージ数 | 件 |
queue_duplicate_from_store_count |
ネットワークまたはその他の問題により、永続ストレージからメッセージが重複して読み込まれた回数 | 件 |
queue_enqueue_count |
このキューに追加されたメッセージ数 | 件 |
queue_expired_count |
TTL 設定により期限切れになったメッセージ数 | 件 |
queue_forward_count |
このキューがメッセージを他の宛先へ転送した累計回数 | 件 |
queue_in_flight_count |
コンシューマーによって処理中だが、まだ確認されていないメッセージ数 | 件 |
queue_max_audit_depth |
重複メッセージ監査時の最大記録件数 | 件 |
queue_max_enqueue_time |
メッセージがキューに入るまでの最大時間 | ミリ秒(ms) |
queue_max_message_size |
キュー内の単一メッセージの最大バイトサイズ | バイト(B) |
queue_max_page_size |
ページング読み込み時の最大ページサイズ | 件 |
queue_max_producers_to_audit |
追跡および重複チェックに使用できるプロデューサーの最大数 | 個 |
queue_memory_limit |
このキューにメッセージ保存用として割り当てられる最大メモリ | バイト(B) |
queue_memory_percent_usage |
キューの現在のメモリ使用量が設定上限に占める割合 | パーセント(%) |
queue_memory_usage_byte_count |
キューが現在実際に使用しているメモリ量 | バイト(B) |
queue_memory_usage_portion |
キューの全体メモリ使用における割合 | 浮動小数点数(0〜1) |
queue_min_enqueue_time |
メッセージがキューに入るまでの最小時間 | ミリ秒(ms) |
queue_min_message_size |
キュー内の単一メッセージの最小バイトサイズ | バイト(B) |
queue_paused |
このキューが一時停止状態かどうか | ブール値(0/1) |
queue_prioritized_messages |
このキューでメッセージ優先順位付け機能が有効かどうか | ブール値(0/1) |
queue_producer_count |
現在このキューにメッセージを送信しているプロデューサー数 | 個 |
queue_producer_flow_control |
プロデューサーフロー制御が有効かどうか | ブール値(0/1) |
queue_queue_size |
現在このキューで消費待ちのメッセージ総数 | 件 |
queue_send_duplicate_from_store_to_dlq |
永続ストレージからデッドレターキューへ送られた重複メッセージ数 | 件 |
queue_store_message_size |
キュー内のすべてのメッセージが永続ストレージ上で占める総サイズ | バイト(B) |
queue_temp_usage_limit |
キューの一時メッセージストレージの最大制限 | バイト(B) |
queue_temp_usage_percent_usage |
キューの一時ストレージ使用量が設定上限に占める割合 | パーセント(%) |
queue_total_blocked_time |
キューがリソース不足によりブロックされた累計時間 | ミリ秒(ms) |
queue_use_cache |
このキューでキャッシュ機構が有効かどうか | ブール値(0/1) |
store_usage_ratio |
主要メッセージストレージ(ファイルシステムやデータベースなど)の使用率 | パーセント(%) |
temp_usage_ratio |
一時メッセージストレージの使用率 | パーセント(%) |
topic_always_retroactive |
このトピックで「常時遡及」機能が有効かどうか。新しいコンシューマーが過去のメッセージを取得できます | ブール値(0/1) |
topic_average_blocked_time |
リソース不足によりトピックがブロックされた時間の平均値 | ミリ秒(ms) |
topic_average_enqueue_time |
メッセージがトピックに入るまでの平均時間 | ミリ秒(ms) |
topic_average_message_size |
トピック内メッセージの平均バイトサイズ | バイト(B) |
topic_blocked_producer_warning_interval |
トピック満杯によりプロデューサーがブロックされた際の警告間隔 | 秒(s) |
topic_blocked_sends |
トピック満杯によりプロデューサーがブロックされた累計回数 | 回 |
topic_cache_enabled |
このトピックでキャッシュ機構が有効かどうか | ブール値(0/1) |
topic_consumer_count |
このトピックを購読または監視しているコンシューマー数 | 個 |
topic_cursor_full |
トピックのメッセージカーソル(Cursor)が最大容量に達しているかどうか | ブール値(0/1) |
topic_cursor_memory_usage |
トピックカーソルが使用しているメモリ量 | バイト(B) |
topic_cursor_percent_usage |
トピックカーソルのメモリ使用量が総割り当てメモリに占める割合 | パーセント(%) |
topic_dequeue_count |
このトピックから正常に消費されたメッセージ数 | 件 |
topic_dispatch_count |
コンシューマーへの配信を試行した累計メッセージ数 | 件 |
topic_dlq |
デッドレタートピック(DLQ)に移されたメッセージ数 | 件 |
topic_duplicate_from_store_count |
ネットワークまたはその他の問題により、永続ストレージからメッセージが重複して読み込まれた回数 | 件 |
topic_enqueue_count |
このトピックに追加されたメッセージ数 | 件 |
topic_expired_count |
TTL 設定により期限切れになったメッセージ数 | 件 |
topic_forward_count |
このトピックがメッセージを他の宛先へ転送した累計回数 | 件 |
topic_in_flight_count |
コンシューマーによって処理中だが、まだ確認されていないメッセージ数 | 件 |
topic_max_audit_depth |
重複メッセージ監査時の最大記録件数 | 件 |
topic_max_enqueue_time |
メッセージがトピックに入るまでの最大時間 | ミリ秒(ms) |
topic_max_message_size |
トピック内の単一メッセージの最大バイトサイズ | バイト(B) |
topic_max_page_size |
ページング読み込み時の最大ページサイズ | 件 |
topic_max_producers_to_audit |
追跡および重複チェックに使用できるプロデューサーの最大数 | 個 |
topic_memory_limit |
このトピックにメッセージ保存用として割り当てられる最大メモリ | バイト(B) |
topic_memory_percent_usage |
トピックの現在のメモリ使用量が設定上限に占める割合 | パーセント(%) |
topic_memory_usage_byte_count |
トピックが現在実際に使用しているメモリ量 | バイト(B) |
topic_memory_usage_portion |
トピックの全体メモリ使用における割合 | 浮動小数点数(0〜1) |
topic_min_enqueue_time |
メッセージがトピックに入るまでの最小時間 | ミリ秒(ms) |
topic_min_message_size |
トピック内の単一メッセージの最小バイトサイズ | バイト(B) |
topic_prioritized_messages |
メッセージ優先順位付け機能が有効かどうか | ブール値(0/1) |
topic_producer_count |
現在このトピックにメッセージを送信しているプロデューサー数 | 個 |
topic_producer_flow_control |
プロデューサーフロー制御が有効かどうか | ブール値(0/1) |
topic_queue_size |
現在このトピックで消費待ちのメッセージ総数 | 件 |
topic_send_duplicate_from_store_to_dlq |
永続ストレージからデッドレタートピックへ送られた重複メッセージ数 | 件 |
topic_store_message_size |
トピック内のすべてのメッセージが永続ストレージ上で占める総サイズ | バイト(B) |
topic_temp_usage_limit |
トピックの一時メッセージストレージの最大制限 | バイト(B) |
topic_temp_usage_percent_usage |
トピックの一時ストレージ使用量が設定上限に占める割合 | パーセント(%) |
topic_total_blocked_time |
トピックがリソース不足によりブロックされた累計時間 | ミリ秒(ms) |
topic_use_cache |
このトピックでキャッシュ機構が有効かどうか | ブール値(0/1) |