IBM MQ 集成
编辑IBM MQ 集成
编辑概述
编辑IBM MQ 是一种面向消息的中间件,用于分布式系统之间安全可靠的通信。它支持诸如队列、发布/订阅之类的消息模式,并确保消息传递,而无需发送方和接收方之间的直接连接。
使用 IBM MQ 集成可以
- 收集队列管理器性能指标和错误日志,从而深入了解消息、主题、订阅和操作事件。
- 通过将 IBM MQ 指标和日志引入 Elasticsearch 来简化可观测性,从而实现对 IBM MQ 环境的集中监控和分析。
- 通过基于收集的指标和日志进行实时分析和主动警报来增强系统可靠性。
数据流
编辑IBM MQ 集成收集日志和指标数据。
日志提供对 IBM MQ 环境内操作和事件的深入了解。IBM MQ 集成收集的 errorlog 数据流使用户能够跟踪错误和警告,了解其原因,并解决与消息处理和处理相关的问题。
指标提供有关 IBM MQ 的性能和运行状况的统计信息。IBM MQ 集成收集的 qmgr 数据流涵盖队列管理器性能指标,包括消息吞吐量、主题、订阅和其他操作统计信息。这允许用户监控和优化其 IBM MQ 实例的性能和可靠性。
数据流
-
errorlog
:从 IBM MQ 队列管理器收集错误和警告消息,提供诸如错误描述、操作、解释和错误代码之类的详细信息。 -
qmgr
:从队列管理器收集性能指标,包括消息吞吐量、主题、订阅和其他重要的操作统计信息。
注意
- 用户可以使用 Discover 中 logs-* 索引模式来监控和查看 IBM MQ 引入的文档中的日志。对于指标,相应的索引模式是 metrics-*。
兼容性
编辑此集成已针对 IBM MQ v9.1 和 IBM MQ v9.2 进行了测试。目前,ibmmq qmgr
数据流仅与 IBM MQ 的容器化版本兼容,例如那些可从 IBM Cloud Container Registry 或 Docker Hub 获得的版本。
先决条件
编辑用户需要 Elasticsearch 来存储和搜索其数据,以及 Kibana 来可视化和管理数据。他们可以使用我们在 Elastic Cloud 上的托管 Elasticsearch Service(推荐),或者在他们自己的硬件上自行管理 Elastic Stack。
为了从 IBM MQ 引入数据
- 用户应指定 Prometheus 端点的 Hostname 和 Port(示例:localhost:9157)(/metrics)。
- 用户应指定 IBM MQ 队列管理器错误日志的路径。(默认路径:
/var/mqm/errors/*.LOG
和/var/mqm/qmgrs/*/errors/*.LOG
)
设置
编辑有关如何设置集成的分步说明,请参阅入门指南。
设置 Prometheus 的步骤
编辑在 IBM MQ 中启用指标:确保为用户的 IBM MQ 服务将 MQ_ENABLE_METRICS
环境变量设置为 true,以公开指标端点。
Docker 镜像启动 runmqserver 进程,该进程生成 HTTP 服务器,在端口 9157
上以 Prometheus 格式公开指标。
验证
编辑成功配置集成后,单击 IBM MQ 集成的“资产”选项卡应显示可用仪表板的列表。单击为用户配置的数据流提供的仪表板。它应填充所需的数据。
问题排查
编辑- 在此集成的 1.3.0 版本中,
ibmmq.errorlog.error.description
的字段类型已从text
更改为keyword
。因此,建议更新ibmmq.errorlog.error.description
字段以使用keyword
类型(无论在哪里使用)。这可以通过使用 Update By Query API 来实现,从而可以无缝地将字段类型从text
过渡到keyword
,涵盖所有相关文档。
指标参考
编辑队列管理器性能指标
编辑qmgr
数据流收集 队列管理器的性能指标,例如消息、主题、订阅和调用。
示例
qmgr
的一个示例事件如下所示
{ "@timestamp": "2024-05-28T10:25:41.537Z", "agent": { "ephemeral_id": "2a2b7004-c50a-4ee2-9bc6-78d99713b117", "id": "476beedd-c7de-4696-a85b-d20aa455d46a", "name": "docker-fleet-agent", "type": "metricbeat", "version": "8.12.0" }, "data_stream": { "dataset": "ibmmq.qmgr", "namespace": "ep", "type": "metrics" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "476beedd-c7de-4696-a85b-d20aa455d46a", "snapshot": false, "version": "8.12.0" }, "event": { "agent_id_status": "verified", "category": [ "web" ], "dataset": "ibmmq.qmgr", "duration": 15347292, "ingested": "2024-05-28T10:25:53Z", "kind": "metric", "module": "ibmmq", "type": [ "info" ] }, "host": { "architecture": "x86_64", "containerized": true, "hostname": "docker-fleet-agent", "id": "829324aac17946dcace17006fa82a2d2", "ip": [ "192.168.243.9" ], "mac": [ "02-42-AC-1F-00-07" ], "name": "docker-fleet-agent", "os": { "codename": "focal", "family": "debian", "kernel": "3.10.0-1160.102.1.el7.x86_64", "name": "Ubuntu", "platform": "ubuntu", "type": "linux", "version": "20.04.6 LTS (Focal Fossa)" } }, "ibmmq": { "labels": { "job": "ibmmq", "qmgr": "QM1" }, "qmgr": { "calls": { "failed": { "callback": { "count": 0 }, "close": { "count": 0 }, "connections": { "count": 0 }, "get": { "count": 2 }, "inquire": { "count": 0 }, "open": { "count": 0 }, "set": { "count": 0 }, "subscription_request": { "count": 0 } }, "succeeded": { "callback": { "count": 0 }, "close": { "count": 0 }, "connections": { "count": 0 }, "control": { "count": 0 }, "disconnect": { "count": 0 }, "inquire": { "count": 4 }, "open": { "count": 0 }, "set": { "count": 0 }, "status": { "count": 0 }, "subscription_request": { "count": 0 } } }, "destructive": { "get": { "bytes": 4868, "count": 13 } }, "log": { "written": { "bytes": { "logical": 0, "physical": 0 } } }, "messages": { "commit": { "count": 0 }, "expired": { "count": 0 }, "failed": { "browse": { "count": 0 }, "mq": { "put": { "count": 0 }, "put1": { "count": 0 } } }, "mq": { "put": { "bytes": 4868, "count": 13 } }, "non_persistent": { "browse": { "bytes": 0, "count": 0 }, "destructive": { "get": { "count": 13 } }, "get": { "bytes": 4868 }, "mq": { "put": { "count": 13 }, "put1": { "count": 0 } }, "put": { "bytes": 4868 } }, "persistent": { "browse": { "bytes": 0, "count": 0 }, "destructive": { "get": { "count": 0 } }, "get": { "bytes": 0 }, "mq": { "put": { "count": 0 }, "put1": { "count": 0 } }, "put": { "bytes": 0 } }, "published": { "subscribers": { "bytes": 3500, "count": 13 } }, "purged": { "queue": { "count": 0 } } }, "rollback": { "count": 0 }, "subscription": { "durable": { "alter": { "count": 0 }, "create": { "count": 0 }, "delete": { "count": 0 }, "resume": { "count": 0 } }, "failed": { "create_alter_resume": { "count": 0 }, "delete": { "count": 0 } }, "non_durable": { "create": { "count": 0 }, "delete": { "count": 0 } } }, "topic": { "mq": { "put": { "count": 13, "failed": { "count": 0 }, "non_persistent": { "count": 13 }, "persistent": { "count": 0 } } }, "put": { "bytes": 3500 } } } }, "metricset": { "name": "collector", "period": 10000 }, "service": { "address": "http://elastic-package-service-ibmmq-1:9157/metrics", "type": "ibmmq" }, "tags": [ "ibmmq-qmgr" ] }
ECS 字段参考
请参考以下文档以获取有关 ECS 字段的详细信息。
导出的字段
字段 | 描述 | 类型 | 指标类型 |
---|---|---|---|
@timestamp |
事件时间戳。 |
date |
|
agent.id |
此代理的唯一标识符(如果存在)。示例:对于 Beats,这将是 beat.id。 |
keyword |
|
cloud.account.id |
用于在多租户环境中标识不同实体的云帐户或组织 ID。示例:AWS 帐户 ID、Google Cloud ORG ID 或其他唯一标识符。 |
keyword |
|
cloud.availability_zone |
此主机、资源或服务所在的可用区。 |
keyword |
|
cloud.instance.id |
主机机器的实例 ID。 |
keyword |
|
cloud.provider |
云提供商的名称。示例值是 aws、azure、gcp 或 digitalocean。 |
keyword |
|
cloud.region |
此主机、资源或服务所在的区域。 |
keyword |
|
container.id |
唯一容器 ID。 |
keyword |
|
data_stream.dataset |
数据流数据集。 |
constant_keyword |
|
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
|
data_stream.type |
数据流类型。 |
constant_keyword |
|
host.name |
主机的名称。它可以包含 Unix 系统上 hostname 返回的内容、完全限定域名 (FQDN) 或用户指定的名称。建议的值是主机的小写 FQDN。 |
keyword |
|
ibmmq.labels.job |
Prometheus 标签作业。 |
keyword |
|
ibmmq.labels.qmgr |
队列管理器的名称。 |
keyword |
|
ibmmq.qmgr.calls.failed.callback.count |
失败的 MQCB 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.close.count |
失败的 MQCLOSE 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.connections.count |
失败的 MQCONN/MQCONNX 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.get.count |
失败的 MQGET - 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.inquire.count |
失败的 MQINQ 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.open.count |
失败的 MQOPEN 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.set.count |
失败的 MQSET 计数。 |
long |
counter |
ibmmq.qmgr.calls.failed.subscription_request.count |
失败的 MQSUBRQ 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.callback.count |
MQCB 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.close.count |
MQCLOSE 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.connections.count |
MQCONN/MQCONNX 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.control.count |
MQCTL 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.disconnect.count |
MQDISC 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.inquire.count |
MQINQ 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.open.count |
MQOPEN 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.set.count |
MQSET 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.status.count |
MQSTAT 计数。 |
long |
counter |
ibmmq.qmgr.calls.succeeded.subscription_request.count |
MQSUBRQ 计数。 |
long |
counter |
ibmmq.qmgr.destructive.get.bytes |
间隔总销毁性获取 - 字节计数。 |
long |
counter |
ibmmq.qmgr.destructive.get.count |
间隔总销毁性获取 - 计数。 |
long |
counter |
ibmmq.qmgr.log.written.bytes.logical |
日志 - 写入的逻辑字节。 |
long |
counter |
ibmmq.qmgr.log.written.bytes.physical |
日志 - 写入的物理字节。 |
long |
counter |
ibmmq.qmgr.messages.commit.count |
提交计数。 |
long |
counter |
ibmmq.qmgr.messages.expired.count |
过期消息计数。 |
long |
counter |
ibmmq.qmgr.messages.failed.browse.count |
失败的浏览计数。 |
long |
counter |
ibmmq.qmgr.messages.failed.mq.put.count |
失败的 MQPUT 计数。 |
long |
counter |
ibmmq.qmgr.messages.failed.mq.put1.count |
失败的 MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.messages.mq.put.bytes |
间隔总 MQPUT/MQPUT1 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.mq.put.count |
间隔总 MQPUT/MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.browse.bytes |
非持久消息浏览 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.browse.count |
非持久消息浏览 - 计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.destructive.get.count |
非持久消息销毁性获取 - 计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.get.bytes |
获取的非持久消息 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.mq.put.count |
非持久消息 MQPUT 计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.mq.put1.count |
非持久消息 MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.messages.non_persistent.put.bytes |
放入的非持久消息 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.browse.bytes |
持久消息浏览 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.browse.count |
持久消息浏览 - 计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.destructive.get.count |
持久消息销毁性获取 - 计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.get.bytes |
获取的持久消息 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.mq.put.count |
持久消息 MQPUT 计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.mq.put1.count |
持久消息 MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.messages.persistent.put.bytes |
放入持久消息 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.published.subscribers.bytes |
发布到订阅者 - 字节计数。 |
long |
counter |
ibmmq.qmgr.messages.published.subscribers.count |
发布到订阅者 - 消息计数。 |
long |
counter |
ibmmq.qmgr.messages.purged.queue.count |
清除的队列计数。 |
long |
counter |
ibmmq.qmgr.rollback.count |
回滚计数。 |
long |
counter |
ibmmq.qmgr.subscription.durable.alter.count |
更改持久订阅计数。 |
long |
counter |
ibmmq.qmgr.subscription.durable.create.count |
创建持久订阅计数。 |
long |
counter |
ibmmq.qmgr.subscription.durable.delete.count |
删除持久订阅计数。 |
long |
counter |
ibmmq.qmgr.subscription.durable.resume.count |
恢复持久订阅计数。 |
long |
counter |
ibmmq.qmgr.subscription.failed.create_alter_resume.count |
创建/更改/恢复订阅失败计数。 |
long |
counter |
ibmmq.qmgr.subscription.failed.delete.count |
订阅删除失败计数。 |
long |
counter |
ibmmq.qmgr.subscription.non_durable.create.count |
创建非持久订阅计数。 |
long |
counter |
ibmmq.qmgr.subscription.non_durable.delete.count |
删除非持久订阅计数。 |
long |
counter |
ibmmq.qmgr.topic.mq.put.count |
主题 MQPUT/MQPUT1 间隔总数。 |
long |
counter |
ibmmq.qmgr.topic.mq.put.failed.count |
主题 MQPUT/MQPUT1 失败计数。 |
long |
counter |
ibmmq.qmgr.topic.mq.put.non_persistent.count |
非持久 - 主题 MQPUT/MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.topic.mq.put.persistent.count |
持久 - 主题 MQPUT/MQPUT1 计数。 |
long |
counter |
ibmmq.qmgr.topic.put.bytes |
间隔总主题放入字节数。 |
long |
counter |
service.address |
收集有关此服务数据的地址。 这应该是一个 URI、网络地址(ipv4:port 或 [ipv6]:port)或资源路径(套接字)。 |
keyword |
日志参考
编辑队列管理器错误日志
编辑errorlog
数据流收集队列管理器的错误日志,其中包括错误的描述、操作、解释和代码。
示例
errorlog
的示例事件如下所示
{ "@timestamp": "2024-05-28T10:29:59.860Z", "agent": { "ephemeral_id": "cbbb6e1e-c10f-4635-bb3e-b42063268637", "id": "476beedd-c7de-4696-a85b-d20aa455d46a", "name": "docker-fleet-agent", "type": "filebeat", "version": "8.12.0" }, "data_stream": { "dataset": "ibmmq.errorlog", "namespace": "ep", "type": "logs" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "476beedd-c7de-4696-a85b-d20aa455d46a", "snapshot": false, "version": "8.12.0" }, "event": { "agent_id_status": "verified", "created": "2024-05-28T10:30:26.219Z", "dataset": "ibmmq.errorlog", "ingested": "2024-05-28T10:30:38Z", "kind": "event", "module": "ibmmq", "type": [ "error" ] }, "host": { "hostname": "99726abecb7d", "name": "docker-fleet-agent" }, "ibmmq": { "errorlog": { "error": { "action": "Host Info :- Linux 3.10.0-1160.102.1.el7.x86_64 (MQ Linux (x86-64 platform) 64-bit) Installation :- /opt/mqm (Installation1) Version :- 9.2.4.0 (p924-L211105.DE) ACTION: None.", "code": "AMQ6287I", "description": "IBM MQ V9.2.4.0 (p924-L211105.DE).", "explanation": "IBM MQ system" }, "insert": { "comment": [ "Linux 3.10.0-1160.102.1.el7.x86_64 (MQ Linux (x86-64 platform) 64-bit)", "/opt/mqm (Installation1)", "9.2.4.0 (p924-L211105.DE)" ] }, "installation": "Installation1" } }, "input": { "type": "log" }, "log": { "file": { "path": "/tmp/service_logs/AMQERR01.LOG" }, "flags": [ "multiline" ], "offset": 0 }, "process": { "pid": 58.1, "title": "crtmqm" }, "service": { "version": "9.2.4.0" }, "tags": [ "forwarded", "ibmmq-errorlog" ], "user": { "name": "root" } }
ECS 字段参考
请参考以下文档以获取有关 ECS 字段的详细信息。
导出的字段
字段 | 描述 | 类型 |
---|---|---|
@timestamp |
事件时间戳。 |
date |
data_stream.dataset |
数据流数据集。 |
constant_keyword |
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
data_stream.type |
数据流类型。 |
constant_keyword |
ibmmq.errorlog.error.action |
定义发生错误时要执行的操作。 |
keyword |
ibmmq.errorlog.error.code |
错误代码。 |
keyword |
ibmmq.errorlog.error.description |
错误描述。 |
keyword |
ibmmq.errorlog.error.explanation |
更详细地解释错误。 |
keyword |
ibmmq.errorlog.insert.arith |
根据 error.id 更改内容。 |
keyword |
ibmmq.errorlog.insert.comment |
根据 error.id 更改内容。 |
keyword |
ibmmq.errorlog.installation |
这是安装时可以给定的安装名称。在 UNIX、Linux 和 Windows 上,IBM MQ 的每个安装都有一个唯一的标识符,称为安装名称。安装名称用于将诸如队列管理器和配置文件之类的项与安装相关联。 |
keyword |
ibmmq.errorlog.queue_manager |
队列管理器的名称。 队列管理器为应用程序提供排队服务,并管理属于它们的队列。 |
keyword |
input.type |
从中生成事件的输入类型。此字段设置为 Filebeat 配置文件输入部分中为 type 选项指定的值。 |
keyword |
log.flags |
此字段包含事件的标志。 |
keyword |
log.offset |
报告的行开始的文件偏移量。 |
long |
变更日志
编辑变更日志
版本 | 详情 | Kibana 版本 |
---|---|---|
1.4.1 |
增强功能 (查看拉取请求) |
8.13.0 或更高版本 |
1.4.0 |
增强功能 (查看拉取请求) |
8.13.0 或更高版本 |
1.3.0 |
增强功能 (查看拉取请求) |
8.12.0 或更高版本 |
1.2.5 |
缺陷修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.2.4 |
缺陷修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.2.3 |
缺陷修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.2.2 |
缺陷修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.2.1 |
增强功能 (查看拉取请求) |
8.8.0 或更高版本 |
1.2.0 |
增强功能 (查看拉取请求) |
8.8.0 或更高版本 |
1.1.0 |
增强功能 (查看拉取请求) |
8.5.0 或更高版本 |
1.0.0 |
增强功能 (查看拉取请求) |
8.5.0 或更高版本 |
0.6.0 |
增强功能 (查看拉取请求) |
— |
0.5.0 |
增强功能 (查看拉取请求) |
— |
0.4.0 |
增强功能 (查看拉取请求) |
— |
0.3.1 |
增强功能 (查看拉取请求) |
— |
0.3.0 |
增强功能 (查看拉取请求) |
— |
0.2.0 |
增强功能 (查看拉取请求) |
— |
0.1.1 |
增强功能 (查看拉取请求) |
— |
0.1.0 |
增强功能 (查看拉取请求) |
— |