IBM MQ 集成

编辑

版本

1.4.1 (查看全部)

兼容的 Kibana 版本

8.13.0 或更高版本

支持的无服务器项目类型
这是什么?

安全性
可观测性

订阅级别
这是什么?

基本

支持级别
这是什么?

Elastic

概述

编辑

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 RegistryDocker 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

增强功能 (查看拉取请求)
更新 IBM MQ 兼容性部分。

8.13.0 或更高版本

1.4.0

增强功能 (查看拉取请求)
ECS 版本已更新至 8.11.0。将 Kibana 约束更新为 ^8.13.0。修改了字段定义,以删除由 ecs@mappings 组件模板冗余的 ECS 字段。

8.13.0 或更高版本

1.3.0

增强功能 (查看拉取请求)
password 字段启用密钥,并添加仪表板级别的过滤器。

8.12.0 或更高版本

1.2.5

缺陷修复 (查看拉取请求)
从 errorlog 数据流响应中删除空事件。

8.8.0 或更高版本

1.2.4

缺陷修复 (查看拉取请求)
添加 null 和 ignore_missing 检查以处理 event.original 字段。

8.8.0 或更高版本

1.2.3

缺陷修复 (查看拉取请求)
从指标数据流中删除转发的标记。

8.8.0 或更高版本

1.2.2

缺陷修复 (查看拉取请求)
更新 Docker 镜像。

8.8.0 或更高版本

1.2.1

增强功能 (查看拉取请求)
更新兼容性描述

8.8.0 或更高版本

1.2.0

增强功能 (查看拉取请求)
为指标数据集启用时间序列数据流。这大大减少了指标的存储空间,并有望逐步提高查询性能。有关更多详细信息,请参见 https://elastic.ac.cn/guide/en/elasticsearch/reference/current/tsds.html

8.8.0 或更高版本

1.1.0

增强功能 (查看拉取请求)
为 TSDB 启用添加了 qmgr 数据流的 metric_type 映射

8.5.0 或更高版本

1.0.0

增强功能 (查看拉取请求)
使 IBM MQ GA

8.5.0 或更高版本

0.6.0

增强功能 (查看拉取请求)
为 TSDB 启用添加了 qmgr 数据流的维度字段

0.5.0

增强功能 (查看拉取请求)
将所有权从 obs-service-integrations 重命名为 obs-infraobs-integrations

0.4.0

增强功能 (查看拉取请求)
将可视化迁移到 Lens。

0.3.1

增强功能 (查看拉取请求)
添加了类别和/或子类别。

0.3.0

增强功能 (查看拉取请求)
将 ECS 版本更新到 8.5.1

0.2.0

增强功能 (查看拉取请求)
添加了基础设施类别。

0.1.1

增强功能 (查看拉取请求)
具有 “qmgr” 数据流的 IBM MQ 集成包

0.1.0

增强功能 (查看拉取请求)
具有 “errorlog” 数据流的 IBM MQ 集成包