# 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: cn # The monitoring type 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 ApiServer api 来对 kubernetes 的通用性能指标(nodes、namespaces、pods、services)进行采集监控。
注意⚠️:为了监控 Kubernetes 中的信息,则需要获取到可访问 Api Server 的授权 TOKEN,让采集请求获取到对应的信息,点击查看获取步骤 en-US: HertzBeat monitoring Kubernetes general metrics such as nodes, namespaces and pods through querying data from Kubernetes ApiServer api.
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 ApiServer api 來對 kubernetes 的通用性能指標(nodes、namespaces、pods、services)進行采集監控。
注意⚠️:爲了監控 Kubernetes 中的信息,則需要獲取到可訪問 Api Server 的授權 TOKEN,讓采集請求獲取到對應的信息,點擊查看獲取步驟 helpLink: zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/kubernetes en-US: https://hertzbeat.apache.org/docs/help/kubernetes # 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: ApiServer端口 en-US: ApiServer 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: 6443 # field-param field key - field: authType # name-param field display i18n name name: zh-CN: 认证方式 en-US: Auth Type # type-param field type(radio mapping the html radio tag) type: radio # required-true or false required: true # when type is radio checkbox, use option to show optional values {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 - name: nodes # 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: # field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field - field: node_name type: 1 i18n: zh-CN: 节点名称 en-US: Node Name - field: is_ready type: 1 i18n: zh-CN: 节点就绪状态 en-US: Node Ready Status - field: capacity_cpu type: 0 i18n: zh-CN: CPU 容量 en-US: CPU Capacity - field: allocatable_cpu type: 0 i18n: zh-CN: 可分配 CPU en-US: Allocatable CPU - field: capacity_memory type: 0 unit: Mi i18n: zh-CN: 内存容量 en-US: Memory Capacity - field: allocatable_memory type: 0 unit: Mi i18n: zh-CN: 可分配内存 en-US: Allocatable Memory - field: creation_time type: 1 i18n: zh-CN: 创建时间 en-US: Creation Time # (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 i18n: zh-CN: 命名空间 en-US: Namespace - field: status type: 1 i18n: zh-CN: 状态 en-US: Status - field: creation_time type: 1 i18n: zh-CN: 创建时间 en-US: Creation Time 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: 2 fields: - field: pod type: 1 i18n: zh-CN: Pod名称 en-US: Pod Name - field: namespace type: 1 i18n: zh-CN: 命名空间 en-US: Namespace - field: status type: 1 i18n: zh-CN: 状态 en-US: Status - field: restart type: 1 i18n: zh-CN: 重启次数 en-US: Restart Count - field: host_ip type: 1 i18n: zh-CN: 主机IP en-US: Host IP - field: pod_ip type: 1 i18n: zh-CN: Pod IP en-US: Pod IP - field: creation_time type: 1 i18n: zh-CN: 创建时间 en-US: Creation Time - field: start_time type: 1 i18n: zh-CN: 启动时间 en-US: Start Time 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: 3 fields: - field: service type: 1 i18n: zh-CN: 服务 en-US: Service - field: namespace type: 1 i18n: zh-CN: 命名空间 en-US: Namespace - field: type type: 1 i18n: zh-CN: 类型 en-US: Type - field: cluster_ip type: 1 i18n: zh-CN: 集群IP en-US: Cluster IP - field: selector type: 1 i18n: zh-CN: 选择器 en-US: Selector - field: creation_time type: 1 i18n: zh-CN: 创建时间 en-US: Creation Time 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.*'