# 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
# 监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控 cn-云原生cloud native network-网络监控
category: cn
# The monitoring type eg: linux windows tomcat mysql aws...
# 监控类型 eg: linux windows tomcat mysql aws...
app: kubernetes
# The monitoring i18n name
# 监控类型国际化名称
name:
zh-CN: Kubernetes
en-US: Kubernetes
# The description and help of this monitoring type
# 监控类型的帮助描述信息
help:
zh-CN: HertzBeat 对 kubernetes 的通用性能指标(nodes、namespaces、pods、services)进行采集监控。
⚠️注意:为了监控 Kubernetes 中的信息,则需要获取到可访问 Api Server 的授权 TOKEN,让采集请求获取到对应的信息,点击查看获取步骤。
en-US: "HertzBeat monitors kubernetes through general performance metrics such as nodes, namespaces and pods.
⚠️Note: In order to monitor the information of Kubernetes, Hertzbeat need to obtain the authorized TOKEN that can access Api Server. Click here to view the specific steps."
zh-TW: HertzBeat對kubernetes的通用性能指標(nodes、namespaces、pods、services)進行採集監控。
⚠️ 注意:為了監控Kubernetes中的資訊,則需要獲取到可訪問Api Server的授權TOKEN,讓採集請求獲取到對應的資訊,點擊查看獲取步驟。
helpLink:
zh-CN: https://hertzbeat.com/zh-cn/docs/help/kubernetes
en-US: https://hertzbeat.com/docs/help/kubernetes
# 监控所需输入参数定义(根据定义渲染页面UI)
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
# field-变量字段标识符
- field: host
# name-param field display i18n name
# name-参数字段显示名称
name:
zh-CN: 主机Host
en-US: Host
# type-param field type(most mapping the html input type)
# type-字段类型,样式(大部分映射input标签type属性)
type: host
# required-true or false
# required-是否是必输项 true-必填 false-可选
required: true
# field-param field key
# field-变量字段标识符
- field: port
# name-param field display i18n name
# name-参数字段显示名称
name:
zh-CN: ApiServer端口
en-US: ApiServer Port
# type-param field type(most mapping the html input type)
# type-字段类型,样式(大部分映射input标签type属性)
type: number
# when type is number, range is required
# 当type为number时,用range表示范围
range: '[0,65535]'
# required-true or false
# required-是否是必输项 true-必填 false-可选
required: true
# default value
defaultValue: 6443
# field-param field key
# field-变量字段标识符
- field: authType
# name-param field display i18n name
# name-参数字段显示名称
name:
zh-CN: 认证方式
en-US: Auth Type
# type-param field type(radio mapping the html radio tag)
# type-当type为radio时,前端用radio展示开关
type: radio
# required-true or false
# required-是否是必输项 true-必填 false-可选
required: true
# when type is radio checkbox, use option to show optional values {name1:value1,name2:value2}
# 当type为radio单选框, checkbox复选框时, option表示可选项值列表 {name1:value1,name2:value2}
options:
- label: Bearer Token
value: Bearer Token
defaultValue: Bearer Token
- field: token
name:
zh-CN: 认证Token
en-US: Access Token
type: text
required: true
# collect metrics config list
# 采集指标组配置列表
metrics:
# metrics - nodes
# 监控指标组 - nodes
- name: nodes
# metrics group scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics group is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
# 指标组调度优先级(0->127)->(优先级高->低) 优先级低的指标组会等优先级高的指标组采集完成后才会被调度, 相同优先级的指标组会并行调度采集
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
priority: 0
# collect metrics content
# 具体监控指标列表
fields:
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), instance-if is metrics group unique identifier
# field-指标名称, type-指标类型(0-number数字,1-string字符串), unit-指标单位('%','ms','MB'), instance-是否是指标集合唯一标识符字段
- field: node_name
type: 1
- field: is_ready
type: 1
- field: capacity_cpu
type: 0
- field: allocatable_cpu
type: 0
- field: capacity_memory
type: 0
unit: Mi
- field: allocatable_memory
type: 0
unit: Mi
- field: creation_time
type: 1
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- $.metadata.name
- $.status.conditions[?(@.type=='Ready')].status
- $.status.capacity.cpu
- $.status.capacity.memory
- $.status.allocatable.cpu
- $.status.allocatable.memory
- $.metadata.creationTimestamp
# (optional)mapping and conversion expressions, use these and aliasField above to calculate metrics value
# (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- node_name=$.metadata.name
- is_ready=$.status.conditions[?(@.type=='Ready')].status
- capacity_cpu=$.status.capacity.cpu
- allocatable_cpu=$.status.allocatable.cpu
- capacity_memory=$.status.capacity.memory
- allocatable_memory=$.status.allocatable.memory
- creation_time=$.metadata.creationTimestamp
# (optional)field unit mapping and conversion expressions, origin unit -> final unit
# (可选)指标单位映射转换计算表达式, 原单位值 -> 最终单位值
units:
- capacity_memory=Ki->Mi
- allocatable_memory=Ki->Mi
protocol: http
http:
host: ^_^host^_^
port: ^_^port^_^
url: /api/v1/nodes
method: GET
ssl: true
authorization:
type: ^_^authType^_^
bearerTokenToken: ^_^token^_^
parseType: jsonPath
parseScript: '$.items.*'
- name: namespaces
priority: 1
fields:
- field: namespace
type: 1
- field: status
type: 1
- field: creation_time
type: 1
aliasFields:
- $.metadata.name
- $.status.phase
- $.metadata.creationTimestamp
calculates:
- namespace=$.metadata.name
- status=$.status.phase
- creation_time=$.metadata.creationTimestamp
protocol: http
http:
host: ^_^host^_^
port: ^_^port^_^
url: /api/v1/namespaces
method: GET
ssl: true
authorization:
type: ^_^authType^_^
bearerTokenToken: ^_^token^_^
parseType: jsonPath
parseScript: '$.items.*'
- name: pods
priority: 1
fields:
- field: pod
type: 1
- field: namespace
type: 1
- field: status
type: 1
- field: restart
type: 1
- field: host_ip
type: 1
- field: pod_ip
type: 1
- field: creation_time
type: 1
- field: start_time
type: 1
aliasFields:
- $.metadata.name
- $.metadata.namespace
- $.status.phase
- $.spec.restartPolicy
- $.status.hostIP
- $.status.podIP
- $.metadata.creationTimestamp
- $.status.startTime
calculates:
- pod=$.metadata.name
- namespace=$.metadata.namespace
- status=$.status.phase
- restart=$.spec.restartPolicy
- host_ip=$.status.hostIP
- pod_ip=$.status.podIP
- creation_time=$.metadata.creationTimestamp
- start_time=$.status.startTime
protocol: http
http:
host: ^_^host^_^
port: ^_^port^_^
url: /api/v1/pods
method: GET
ssl: true
authorization:
type: ^_^authType^_^
bearerTokenToken: ^_^token^_^
parseType: jsonPath
parseScript: '$.items.*'
- name: services
priority: 1
fields:
- field: service
type: 1
- field: namespace
type: 1
- field: type
type: 1
- field: cluster_ip
type: 1
- field: selector
type: 1
- field: creation_time
type: 1
aliasFields:
- $.metadata.name
- $.metadata.namespace
- $.spec.type
- $.spec.clusterIP
- $.spec.selector
- $.metadata.creationTimestamp
calculates:
- service=$.metadata.name
- namespace=$.metadata.namespace
- type=$.spec.type
- cluster_ip=$.spec.clusterIP
- selector=$.spec.selector
- creation_time=$.metadata.creationTimestamp
protocol: http
http:
host: ^_^host^_^
port: ^_^port^_^
url: /api/v1/services
method: GET
ssl: true
authorization:
type: ^_^authType^_^
bearerTokenToken: ^_^token^_^
parseType: jsonPath
parseScript: '$.items.*'