配置 IBM App Connect Enterprise (ACE)传感器

您可以在传统环境或云原生环境中配置 IBM ACE 传感器。

有关监控 IBM ACE 的更多信息,请参阅《 监控 IBM App Connect Enterprise (ACE) 》。

传统的ACE环境

先决条件

注: 对于 ACE 11 及更高版本,资源和消息流统计信息默认处于启用状态。 要验证其状态,请执行以下步骤。 这些命令以 IIB 10 为基础,ACE 11 及以后版本的参数略有不同。 如需更多信息,请参阅 ACE 文档。 请在以下命令中,将 <integrationNode> 和 <integrationServer> 替换为您各自集成节点和服务器上的实际名称。

在配置 IBM ACE 传感器之前,请完成以下步骤:

  1. 验证并激活资源和信息流统计收集状态。 ACE 指标只有在激活资源和报文流统计收集时才存在。

    • 要检查资源收集状态,请运行以下命令:

      mqsireportresourcestats <integrationNode> -e <integrationServer>
       

      如果资源收集状态处于非激活状态,请运行以下命令激活它:

      mqsichangeresourcestats <integratorNode> -e <integrationServer> -c active
       
    • 要检查报文流统计的状态,请运行以下命令:

      mqsireportflowstats <integratorNode>  -s -e <integrationServer>  -j
       

      如果消息流收集状态为非活动状态,请为指定集成服务器和节点中的所有消息流激活快照统计信息收集,然后以 JSON 格式发送数据。

      • 要在不设置线程数据级别的情况下激活快照统计收集,请运行以下命令:

        mqsichangeflowstats <integrationNode> -s -e <integrationServer> -j -c active -o json
         
      • 要通过设置线程数据级别激活快照统计收集,请运行以下命令:

        mqsichangeflowstats <integrationNode> -s -e <integrationServer> -j -t basic -c active -o json
         
      • 要通过设置线程数据级别和节点数据级别来激活快照统计收集,请运行以下命令:

        mqsichangeflowstats <integrationNode> -s -e <integrationServer> -j -t basic -n basic -c active -o json
         
      注意: 若要查看每个消息流的线程使用情况,在使用 mqsichangeflowstats 命令时,需通过选项 ` -t basic` 启用线程数据。 您可以申请两种类型的数据收集:快照和存档。 快照类型是数据收集的首选。 如需更多信息,请参阅 IIB 或 ACE 文档中的相关命令。
  2. 请检查您的 ACE 是否使用 MQTT 或 IBM MQ。 以下命令用于查找MQTT或 IBM MQ 进程,并检查操作事件是否已发布到ACE传感器。

    • 要检查 MQTT,请运行以下命令:

      ps -ef | awk '/bipMQTT/ && /<integrationNode>/'
      mqsireportproperties <integrationNode> -b Events -o OperationalEvents/MQTT -n enabled
       

      要将 MQTT 用作 ACE 传感器中 OperationalEvents 发布的目标,请完成以下步骤:

      • 请确保运行 Instana 代理的用户属于ACE组。

      • configuration.yaml 文件中指定 MQTT 端口。 有关详细信息,请参阅 ACE 配置示例

        注意:configuration.yaml 中的参数 acePassword: ‘<VIWER_USER_PASSWORD>’ 和 不适用于 UnixaceUsername: ‘<VIWER_USER>’ Socket。
      • 启用 MQTT。 如需了解更多信息,请访问 IBMApp Connect

      • 使用前述命令检查已发布的事件。

      使用以下请求示例,确保连接已打开并在 MQTT 端正常工作:

      • 使用 Unix 进行请求,收到 403 响应:

        root@itm-0:~# curl --unix-socket /var/mqsi/INODE4.uds http://127.0.0.1:4417/apiv2/servers
        {"name":"servers","type":"integrationServers","uri":"/apiv2/servers","hasChildren":true,"children":[{"name":"IServer_2","hasChildren":true,"uri":"/apiv2/servers/IServer_2","type":"integrationServer","apiResponseCode":403}]}
         
      • 请求带用户名,响应 403:

        root@itm-0:~# curl -u user1 --unix-socket /var/mqsi/INODE4.uds http://127.0.0.1:4417/apiv2/servers
        Enter host password for user 'user1':
        {"name":"servers","type":"integrationServers","uri":"/apiv2/servers","hasChildren":true,"children":[{"name":"IServer_2","hasChildren":true,"uri":"/apiv2/servers/IServer_2","type":"integrationServer","apiResponseCode":403}]}
         
      • 移除 Unix 接口并提供用户,响应 200:

        root@itm-0:~# curl -u user1 http://127.0.0.1:4417/apiv2/servers
        Enter host password for user 'user1':
        {"name":"servers","type":"integrationServers","uri":"/apiv2/servers","hasChildren":true,"children":[{"name":"IServer_2","hasChildren":true,"uri":"/apiv2/servers/IServer_2","type":"integrationServer","active":{"processId":26013,"isRunning":true,"state":"started"},"apiResponseCode":200}]}
         
      • 将 "root "添加到 ACE 组后,无需提供用户名和密码,响应 200:

        root@itm-0:~# grep root /etc/group
        root:x:0:
        mqbrkrs:x:1001:mquser,mq,root
        root@itm-0:~# curl --unix-socket /var/mqsi/INODE4.uds http://127.0.0.1:4417/apiv2/servers
        {"name":"servers","type":"integrationServers","uri":"/apiv2/servers","hasChildren":true,"children":[{"name":"IServer_2","hasChildren":true,"uri":"/apiv2/servers/IServer_2","type":"integrationServer","active":{"processId":26013,"isRunning":true,"state":"started"},"apiResponseCode":200}]}
         
    • 要检查 IBM MQ ,请运行以下命令:

      mqsilist | grep <integrationNode>  # check there is a default queue manager configured.
      mqsireportproperties <integrationNode> -b Events -o OperationalEvents/MQ -n enabled
       

      要在 ACE 中使用 IBM MQ ,请按照以下步骤操作:

      1. 为集成服务器、信息流和流节点的性能指标数据流设置通道或使用现有通道。

      2. 确保可以通过 configuration.yaml 文件中指定的用户名或密码访问通道。

      3. configuration.yaml 文件中指定队列管理器名称和监听端口,以及通道名称、用户名和密码。 有关通道配置的更多信息,请参阅《 解决 CHLAUTH 访问问题 》。

  3. 如果受监控的服务器是独立的集成服务器,请确保满足以下要求:

    • 配置事件消息的发布,因为默认情况下是禁用的。 ACE 传感器只监控 OperationalEvents,而不是 BusinessEvents。 如需更多信息,请参阅 “配置事件消息的发布 ”。
    • 使用 ACE 11.0.0.11 或更高版本。 否则,您就无法使用 UNIX 域套接字,因为每个服务器都不存在 .uds 文件。
  4. 要在传统 ACE 环境中启用自动发现功能,请确保满足以下要求:

    • IBM ACE 传感器已在文件中启用,无需配置集成节点或服务器 <agent_install_dir>/etc/instana/configuration.yaml
    • 启动代理的用户具有访问 ACE 工作路径(例如)的权限 /var/mqsi/
    • 相关集成节点的 MQTT 进程正在正常运行。 要进行检查,请在主机上运行该 ps -ef | grep -E 'bipMQTT.*<integrationNode>’ 命令。
    注意: 通过自动发现功能,即使未满足所有先决条件,您仍可在 Instana 用户界面的主机仪表盘上查看所有正在运行的集成服务器。
  5. 对于 IBM ACE 13及更高版本,集成服务器默认使用 HTTPS 协议,并采用自签名证书。 若要支持 Instana 的监控功能,请选择以下选项之一:

    • 使用包含有效证书的适当 JKS 密钥库启动集成服务器。 如果您正在使用 HTTPS 并配有正确的密钥库,请在代理的 configuration.yaml 文件中配置 和 keystorePassword keystore 参数。
    • 将集成服务器的协议从 HTTPS 更改为 HTTP。

过程

对于传统的 ACE 环境, Instana 支持对远程和本地 IBM ACE 实例进行监控。 您需要在代理配置 <agent_install_dir>/etc/instana/configuration.yaml 文件中配置字段。 您可以使用以下配置:

  • 要使用远程监控,请将目标 ACE 服务器的 IP 地址设置为主机值。

  • 要使用本地监控,请注释掉主机属性。 默认使用本地监控。

  • 要监控不同主机上具有相同名称的代理服务器或集成服务器,请使用 brokerName:xintegrationServer:x 作为代理服务器或集成服务器的密钥。 例如,BK1:1BK:2

  • 要使用自动发现功能,请不要在 NodesOrServers 下设置任何字段。 ACE 传感器的自动发现功能可发现主机上运行的所有集成服务器,并开始自动监控它们,而无需任何配置。

如需了解如何获取这些字段的值,请参阅《 ACE 传感器配置实用技巧 》博客。

有关 ACE 配置,请参阅以下 configuration.yaml 文件示例:

com.instana.plugin.ace:
  enabled: true
  poll_rate: 60
  forceRemote: false
  flowNodesExcludedRegex: ''
  messageFlow:
    limit: 0
    sortByMetric: 'MaximumElapsedTime'
  NodesOrServers:
    SampleNode/Server:
      host: '<ACE_SERVEr_HOST>'
      restApiPort: '<ACE_REST_API_PORT>'
      aceUsername: '<VIWER_USER>'
      acePassword: '<VIWER_USER_PASSWORD>'
      keystore: '<ACE_KEYSTORE_PATH>'
      keystorePassword: '<ACE_KEYSTORE_PASSWORD>'
      excludedServers: '<INTEGRATION_SERVER_NAMES>'
      flowNodesExcludedRegex: ''
      messageFlow:
        limit: 0
        sortByMetric: 'MaximumElapsedTime'
      availabilityZone: 'IBM ACE Custom Zone'
      mqHost: '<MQ_HOST>'
      mqport: '<MQ_LISTENING_PORT>'
      queuemanagerName: '<QMGR_NAME>'
      channel: '<SVRCONN_CHANNEL>'
      mqUsername: '<AUTHORIZED_USER>'
      mqPassword: '<USER_PASSWORD>'
      mqKeystore: '<MQ_KEYSTORE_PATH>'
      mqKeystorePassword: '<MQ_KEYSTORE_PASSWORD>'
      mqCipherSuite: '<MQ_CIPHER_SUITE>'
 

配置轮询频率

注意:Instana、 IBM ACE sensor 以及 1.0.84 及更高版本支持配置轮询速率,以减少数据摄入量。 此功能在自托管的 Instana 后端 311 及更高版本中受支持。

您可以通过在 configuration.yaml 代理配置文件中使用 poll_rate 该参数,配置 Instana 轮询 IBM ACE 以收集数据和指标的频率,如下例所示:

com.instana.plugin.ace:
  poll_rate: 60
注意: 默认轮询间隔为60秒,可缩短至最短20秒。

配置参数

下表列出了配置参数及其说明:

参数 描述 必需 缺省值
enabled 启用或禁用插件。 true
poll_rate 设置插件的轮询速率(以秒为单位)。 最小值为 20 秒。 60
forceRemote 强制插件使用远程监控而非本地监控。 False false
flowNodesExcludedRegex 设置全局正则表达式,用于从所有集成节点中过滤排他性流量节点。 仅在需要从所有受监控节点或服务器中过滤出某些类型的流量节点时才需要。 不适用
flowNodeLimit 限制每个消息流中被监控的流节点数量。 当设置为 `0` 时,将监控所有流节点。 当设置为任何大于 0 的数值 N 时,仅监控 N 个速度最慢的流节点。 False 0
limit 限制被监控或报告的消息流的数量(嵌套在 对象 messageFlow 之下)。 当设置为 0 时, Instana 会监听所有消息流。 当设置为大于 0 的值时,它仅根据性能指标监控前 N 个流量。 False 0
sortByMetric 指定用于对流量进行排序的性能指标,当 limit 大于 0 时生效(位于 对象 messageFlow 之下)。 Instana 按降序对数据流进行排序。 支持以下值: MaximumElapsedTimeThreadUtilization False MaximumElapsedTime
SampleNode/Server 定义集成节点或独立集成服务器。 是。 但是,如果计划使用自动发现功能,则不再需要包含该参数的所有后续字段。 不适用
host 设置 ACE 服务器的主机。 仅多实例或 RDQM 系统的远程监控或 HA 才需要。 对于 HA,请用逗号分隔多个主机。 不适用
restApiPort 设置 ACE 服务器的 REST API 端口。 不适用
aceUsername 设置 ACE 服务器“ REST API ”服务的用户名。 仅在启用安全功能时才需要。 不适用
acePassword 设置 ACE 服务器上“ REST API ”服务的密码。 仅在启用安全功能时才需要。 不适用
keystore 设置 HTTPS 连接的密钥库路径。 仅在启用 HTTPS 时才需要。 不适用
keystorePassword 设置用于 HTTPS 连接的密钥库密码。 仅在启用 HTTPS 时才需要。 不适用
excludedServers 设置要从监控中排除的集成服务器名称。 仅在要将某些集成服务器排除在监控范围之外时才需要。 用逗号分隔多个名称。 不适用
flowNodesExcludedRegex 设置正则表达式,用于从集成节点中过滤排他性流量节点。 仅在需要过滤掉某些类型的流量节点时才需要。 在此属性中设置的 regex 优先级高于全局 regex。 不适用
limit 限制针对此特定代理(位于 对象 messageFlow 之下)进行监控或报告的消息流数量。 此配置将覆盖全局设置。 False 继承自全局设置
sortByMetric 指定用于对该特定代理的流进行排序的性能指标(位于 对象 messageFlow 之下)。 此配置将覆盖全局设置。 False 继承自全局设置
availabilityZone 定义自定义区域。 仅在需要自定义区段时才需要。 默认使用经纪人名称。 IBM ACE Custom Zone
mqHost 设置 IBM MQ 的主机名或IP地址。 仅当可以通过外部 IP 地址访问 IBM MQ 时才需要。 不适用
mqport 设置MQTT或 IBM MQ 的监听端口。 不适用
queuemanagerName 设置队列管理器的名称。 仅适用于 IBM MQ。 不适用
channel 设置 SVRCONN 类型的授权通道。 仅适用于 IBM MQ。 不适用
mqUsername 设置 IBM MQ 频道的授权用户。 仅当为 IBM MQ 启用了chlauth、connauth或两者时才需要。 不适用
mqPassword 设置 IBM MQ 频道的授权用户密码。 仅当为 IBM MQ 启用了chlauth、connauth或两者时才需要。 不适用
mqKeystore 设置 TLS 连接的密钥库路径。 仅当为 IBM MQ 启用了 TLS 时才需要此设置。 不适用
mqKeystorePassword 设置用于 TLS 连接的密钥库密码。 仅当为 IBM MQ 启用了 TLS 时才需要此设置。 不适用
mqCipherSuite 设置 TLS 连接的密码套件。 仅当为 IBM MQ 启用了 TLS 时才需要。 不适用

sortByMetric 参数(嵌套在 之下 messageFlow)仅在 limit 大于 0 时生效。 如果 limit 设置为 0(监控所有流量),则 sortByMetric 参数将被忽略,因为不会执行流量限制。

ACE 配置示例

  • 使用自动发现功能的配置(仅适用于 ACE 11 及更高版本):

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
     
  • 使用 MQTT 进行本地监控的配置:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      NodesOrServers:
        BK1:
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          mqport: '11883'
     
  • 使用 IBM MQ 配置本地监控和远程监控:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      NodesOrServers:
        BK1:      # remote monitoring
          host: 'ace.example.com'
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          mqport: '2121'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
          mqKeystore: '/path/to/mq/keystore.jks'
          mqKeystorePassword: 'securepassword'
        BK1:1:     # local monitoring
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          mqport: '2121'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
     
  • 排除集成服务器和某些流量节点的 HA 支持配置:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      NodesOrServers:
        BK1:
          host: 'ha-host1.com, ha-host2.com'
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          excludedServers: 'IS1, IS2'              # Integration servers IS1, IS2 will be excluded from monitoring.
          flowNodesExcludedRegex: 'MSLMapping.*'   # Flow nodes that have types beginning with "MSLMapping" will be excluded from monitoring
          mqport: '2121'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
     
  • 全局消息流限制和基于性能的排序配置:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      messageFlow:                                  # Global message flow configuration
        limit: 20                                   # Monitor only top 20 flows globally
        sortByMetric: 'MaximumElapsedTime'          # Sort by maximum elapsed time
      NodesOrServers:
        BROKER1:
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          mqport: '1414'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
     
  • 针对每个代理的消息流限制覆盖配置:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      messageFlow:                                  # Global defaults
        limit: 10                                   # Monitor top 10 flows globally
        sortByMetric: 'MaximumElapsedTime'          # Sort by maximum elapsed time
      NodesOrServers:
        BROKER1:
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          messageFlow:                              # Override global settings for this broker
            limit: 5                               # Monitor only top 5 flows for this broker
            sortByMetric: 'ThreadUtilization'      # Sort by thread utilization for this broker
          mqport: '1414'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
        BROKER2:
          restApiPort: '4415'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          # This broker inherits global settings: limit=10, sortByMetric='MaximumElapsedTime'
          mqport: '1415'
          queuemanagerName: 'QM2'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'
     
  • 流量节点限制的配置:

    com.instana.plugin.ace:
      enabled: true
      poll_rate: 60
      flowNodeLimit: 10                                 # Monitor only top 10 slowest flow nodes per message flow
      NodesOrServers:
        BROKER1:
          restApiPort: '4414'
          aceUsername: 'viewer'
          acePassword: 'mypassword'
          flowNodeLimit: 5                             # Override: monitor only top 5 flow nodes for this broker
          mqport: '1414'
          queuemanagerName: 'QM1'
          channel: 'INSTANA.SVRCONN'
          mqUsername: 'mquser'
          mqPassword: 'password'

云原生 ACE 环境

在云原生环境中, IBM ACE 传感器的配置会自动发现。