# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The monitoring type category:service-application service monitoring db-database monitoring custom-custom monitoring os-operating system monitoring
category: mid
# The monitoring type eg: linux windows tomcat mysql aws...
app: emqx
# The app api i18n name
name:
zh-CN: EMQX MQTT
en-US: EMQX MQTT
# The description and help of this monitoring type
help:
zh-CN: EMQX 是一款开源的大规模分布式 MQTT 消息服务器。Hertzbeat对EMQX MQTT消息服务器 5.0+ 版本的通用指标进行测量监控,
您可以点击 “新建 EMQX 消息服务器” 并进行配置,或者选择“更多操作”,导入已有配置。
en-US: EMQX is an open source large-scale distributed MQTT message server. Hertzbeat measures and monitors common metrics of the EMQX message server 5.0+ version.
You can click "New EMQX message server" and configure it, or select "More operations", Import existing configuration.
zh-TW: EMQX 是一款開源的大規模分散式 MQTT 訊息伺服器。 Hertzbeat對EMQX MQTT訊息伺服器 5.0+ 版本的通用指標進行測量監控,
您可以點擊“新建 EMQX 訊息伺服器” 並進行配置,或者選擇“更多操作” ,導入已有配置。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/emqx
en-US: https://hertzbeat.apache.org/docs/help/emqx
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
- field: host
# name-param field display i18n name
name:
zh-CN: 目标Host
en-US: Target Host
# type-param field type(most mapping the html input type)
type: host
# required-true or false
required: true
# field-param field key
- field: port
# name-param field display i18n name
name:
zh-CN: 端口
en-US: Port
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[0,65535]'
# required-true or false
required: true
# default value
defaultValue: 18083
- field: ssl
name:
zh-CN: 启用HTTPS
en-US: HTTPS
type: boolean
defaultValue: false
- field: timeout
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
type: number
required: false
hide: true
- field: authType
name:
zh-CN: 认证方式
en-US: Auth Type
type: radio
required: true
options:
- label: Basic Auth
value: Basic Auth
defaultValue: Basic Auth
- field: apikey
name:
zh-CN: API Key
en-US: API Key
type: text
required: true
- field: secretkey
name:
zh-CN: Secret Key
en-US: Secret Key
type: text
required: true
metrics:
# metrics - summary
- name: summary
# metrics name i18n label
i18n:
zh-CN: 概要
en-US: Summary
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
# collect metrics content
fields:
# metrics content contains field-metric name, type-metric type:0-number,1-string, instance-if is metrics, unit-metric unit('%','ms','MB')
- field: version
type: 1
i18n:
zh-CN: 系统版本
en-US: Version
- field: node_name
type: 1
i18n:
zh-CN: 节点名称
en-US: Node Name
- field: broker_status
type: 1
i18n:
zh-CN: Broker 状态
en-US: Broker Status
- field: app_status
type: 1
i18n:
zh-CN: 应用状态
en-US: App Status
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- rel_vsn
- node_name
- broker_status
- app_status
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- version=rel_vsn
- node_name=node_name
- broker_status=broker_status
- app_status=app_status
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk, we use HTTP protocol here
protocol: http
# the config content when protocol is http
http:
# http host: ipv4 ipv6 domain
host: ^_^host^_^
# http port
port: ^_^port^_^
# http url, we don't need to enter a parameter here, just set the fixed value to /api/summary
url: /api/v5/status?format=json
timeout: ^_^timeout^_^
# http method: GET POST PUT DELETE PATCH, default fixed value is GET
method: GET
# if enabled https, default value is false
ssl: ^_^ssl^_^
# http auth
authorization:
# http auth type: Basic Auth, Digest Auth, Bearer Token
type: ^_^authType^_^
basicAuthUsername: ^_^apikey^_^
basicAuthPassword: ^_^secretkey^_^
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, we use jsonpath to parse response data here
parseType: jsonPath
parseScript: '$'
- name: metrics
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 1
# collect metrics content
fields:
# metrics content contains field-metric name, type-metric type:0-number,1-string, instance-if is metrics, unit-metric unit('%','ms','MB')
- field: client_connected
type: 0
- field: client_disconnected
type: 0
- field: packets_sent
type: 0
- field: packets_received
type: 0
- field: bytes_sent
type: 0
- field: bytes_received
type: 0
- field: messages_sent
type: 0
- field: messages_acked
type: 0
- field: messages_delayed
type: 0
- field: authorization_deny
type: 0
- field: client_authorize
type: 0
- field: session_created
type: 0
- field: session_discarded
type: 0
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- client.connected
- client.disconnected
- packets.sent
- packets.received
- bytes.sent
- bytes.received
- messages.sent
- messages.acked
- messages.delayed
- authorization.deny
- client.authorize
- session.created
- session.discarded
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- client_connected=client.connected
- client_disconnected=client.disconnected
- packets_sent=packets.sent
- packets_received=packets.received
- bytes_sent=bytes.sent
- bytes_received=bytes.received
- messages_sent=messages.sent
- messages_acked=messages.acked
- messages_delayed=messages.delayed
- authorization_deny=authorization.deny
- client_authorize=client.authorize
- session_created=session.created
- session_discarded=session.discarded
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk, we use HTTP protocol here
protocol: http
# the config content when protocol is http
http:
# http host: ipv4 ipv6 domain
host: ^_^host^_^
# http port
port: ^_^port^_^
# http url, we don't need to enter a parameter here, just set the fixed value to /api/summary
url: /api/v5/metrics?aggregate=true
timeout: ^_^timeout^_^
# http method: GET POST PUT DELETE PATCH, default fixed value is GET
method: GET
# if enabled https, default value is false
ssl: ^_^ssl^_^
# http auth
authorization:
# http auth type: Basic Auth, Digest Auth, Bearer Token
type: ^_^authType^_^
basicAuthUsername: ^_^apikey^_^
basicAuthPassword: ^_^secretkey^_^
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, we use jsonpath to parse response data here
parseType: jsonPath
parseScript: '$'
- name: stats
priority: 2
fields:
# metrics content contains field-metric name, type-metric type:0-number,1-string, instance-if is metrics, unit-metric unit('%','ms','MB')
- field: channels_count
type: 0
- field: channels_max
type: 0
- field: connections_count
type: 0
- field: connections_max
type: 0
- field: delayed_count
type: 0
- field: delayed_max
type: 0
- field: live_connections_count
type: 0
- field: live_connections_max
type: 0
- field: retained_count
type: 0
- field: retained_max
type: 0
- field: sessions_count
type: 0
- field: sessions_max
type: 0
- field: suboptions_count
type: 0
- field: suboptions_max
type: 0
- field: subscribers_count
type: 0
- field: subscribers_max
type: 0
- field: subscriptions_count
type: 0
- field: subscriptions_max
type: 0
- field: subscriptions_shared_count
type: 0
- field: subscriptions_shared_max
type: 0
- field: topics_count
type: 0
- field: topics_max
type: 0
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- channels.count
- channels.max
- connections.count
- connections.max
- delayed.count
- delayed.max
- live_connections.count
- live_connections.max
- retained.count
- retained.max
- sessions.count
- sessions.max
- suboptions.count
- suboptions.max
- subscribers.count
- subscribers.max
- subscriptions.count
- subscriptions.max
- subscriptions.shared.count
- subscriptions.shared.max
- topics.count
- topics.max
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- channels_count=channels.count
- channels_max=channels.max
- connections_count=connections.count
- connections_max=connections.max
- delayed_count=delayed.count
- delayed_max=delayed.max
- live_connections_count=live_connections.count
- live_connections_max=live_connections.max
- retained_count=retained.count
- retained_max=retained.max
- sessions_count=sessions.count
- sessions_max=sessions.max
- suboptions_count=suboptions.count
- suboptions_max=suboptions.max
- subscribers_count=subscribers.count
- subscribers_max=subscribers.max
- subscriptions_count=subscriptions.count
- subscriptions_max=subscriptions.max
- subscriptions_shared_count=subscriptions.shared.count
- subscriptions_shared_max=subscriptions.shared.max
- topics_count=topics.count
- topics_max=topics.max
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk, we use HTTP protocol here
protocol: http
# the config content when protocol is http
http:
# http host: ipv4 ipv6 domain
host: ^_^host^_^
# http port
port: ^_^port^_^
# http url, we don't need to enter a parameter here, just set the fixed value to /api/summary
url: /api/v5/stats?aggregate=true
timeout: ^_^timeout^_^
# http method: GET POST PUT DELETE PATCH, default fixed value is GET
method: GET
# if enabled https, default value is false
ssl: ^_^ssl^_^
# http auth
authorization:
# http auth type: Basic Auth, Digest Auth, Bearer Token
type: ^_^authType^_^
basicAuthUsername: ^_^apikey^_^
basicAuthPassword: ^_^secretkey^_^
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, we use jsonpath to parse response data here
parseType: jsonPath
parseScript: '$'