From ae76e8efc5415e404e2e8e600695bbffbcbde02b Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Tue, 30 May 2023 17:04:16 +0800 Subject: [PATCH] support monitoring opensuse os metrics (#997) --- .../main/resources/define/app-opensuse.yml | 394 ++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100644 manager/src/main/resources/define/app-opensuse.yml diff --git a/manager/src/main/resources/define/app-opensuse.yml b/manager/src/main/resources/define/app-opensuse.yml new file mode 100644 index 00000000000..5299c9cbd2e --- /dev/null +++ b/manager/src/main/resources/define/app-opensuse.yml @@ -0,0 +1,394 @@ +# 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: os +# The monitoring type eg: linux windows tomcat mysql aws... +# 监控类型 eg: linux windows tomcat mysql aws... +app: opensuse +# The monitoring i18n name +# 监控类型国际化名称 +name: + zh-CN: OpenSUSE + en-US: OpenSUSE +# 监控所需输入参数定义(根据定义渲染页面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: 端口 + en-US: 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: 22 + # field-param field key + # field-变量字段标识符 + - field: timeout + # name-param field display i18n name + # name-参数字段显示名称 + name: + zh-CN: 超时时间(ms) + en-US: Timeout(ms) + # 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: '[400,200000]' + # required-true or false + # required-是否是必输项 true-必填 false-可选 + required: false + # default value + # 默认值 + defaultValue: 6000 + # field-param field key + # field-变量字段标识符 + - field: username + # name-param field display i18n name + # name-参数字段显示名称 + name: + zh-CN: 用户名 + en-US: Username + # type-param field type(most mapping the html input type) + # type-字段类型,样式(大部分映射input标签type属性) + type: text + # when type is text, use limit to limit string length + # 当type为text时,用limit表示字符串限制大小 + limit: 20 + # required-true or false + # required-是否是必输项 true-必填 false-可选 + required: true + # field-param field key + # field-变量字段标识符 + - field: password + # name-param field display i18n name + # name-参数字段显示名称 + name: + zh-CN: 密码 + en-US: Password + # type-param field type(most mapping the html input tag) + # type-字段类型,样式(大部分映射input标签type属性) + type: password + # required-true or false + # required-是否是必输项 true-必填 false-可选 + required: false + # field-param field key + # field-变量字段标识符 + - field: privateKey + # name-param field display i18n name + # name-参数字段显示名称 + name: + zh-CN: 私钥 + en-US: PrivateKey + # type-param field type(most mapping the html input type) + # type-字段类型,样式(大部分映射input标签type属性) + type: textarea + # required-true or false + # required-是否是必输项 true-必填 false-可选 + required: false + # hide param-true or false + # 是否隐藏字段 true or false + hide: true +# collect metrics config list +# 采集指标组配置列表 +metrics: + # metrics - basic, inner monitoring metrics (responseTime - response time) + # 监控指标组 - basic, 内置监控指标有 (responseTime - 响应时间) + - name: basic + # 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集 + # 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: hostname + type: 1 + instance: true + - field: version + type: 1 + - field: uptime + type: 1 + # the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk + protocol: ssh + # the config content when protocol is ssh + ssh: + # ssh host: ipv4 ipv6 domain + host: ^_^host^_^ + # ssh port + port: ^_^port^_^ + # ssh username + username: ^_^username^_^ + # ssh password + password: ^_^password^_^ + # ssh private key + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + # ssh run collect script + script: (uname -r ; hostname ; uptime | awk -F "," '{print $1}' | sed "s/ //g") | sed ":a;N;s/\n/^/g;ta" | awk -F '^' 'BEGIN{print "version hostname uptime"} {print $1, $2, $3}' + # ssh response data parse type: oneRow, multiRow + parseType: multiRow + + - name: cpu + priority: 1 + fields: + - field: info + type: 1 + - field: cores + type: 0 + - field: interrupt + type: 0 + - field: load + type: 1 + - field: context_switch + type: 0 + - field: usage + type: 0 + unit: '%' + # (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field + # (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换 + aliasFields: + - info + - cores + - load + - interrupt + - context_switch + - idle + # mapping and conversion expressions, use these and aliasField above to calculate metrics value + # (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值 + # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime + calculates: + - info=info + - cores=cores + - load=load + - interrupt=interrupt + - context_switch=context_switch + - usage=100-idle + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: "LANG=C lscpu | awk -F: '$1==\"Model name\" {print $2}';awk '/processor/{core++} END{print core}' /proc/cpuinfo;uptime | sed 's/,/ /g' | awk '{for(i=NF-2;i<=NF;i++)print $i }' | xargs;vmstat 1 1 | awk 'NR==3{print $11}';vmstat 1 1 | awk 'NR==3{print $12}';vmstat 1 2 | awk 'NR==4{print $15}'" + parseType: oneRow + + - name: memory + priority: 2 + fields: + - field: total + type: 0 + unit: Mb + - field: used + type: 0 + unit: Mb + - field: free + type: 0 + unit: Mb + - field: buff_cache + type: 0 + unit: Mb + - field: available + type: 0 + unit: Mb + - field: usage + type: 0 + unit: '%' + aliasFields: + - total + - used + - free + - buff_cache + - available + calculates: + - total=total + - used=used + - free=free + - buff_cache=buff_cache + - available=available + - usage=(used / total) * 100 + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: free -m | awk 'BEGIN{print "total used free buff_cache available"} NR==2{print $2,$3,$4,$6,$7}' + parseType: multiRow + + - name: disk + priority: 3 + fields: + - field: disk_num + type: 0 + unit: 'block' + - field: partition_num + type: 0 + - field: block_write + type: 0 + unit: 'block' + - field: block_read + type: 0 + unit: 'block' + - field: write_rate + type: 0 + unit: iops + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: vmstat -D | awk 'NR==1{print $1}';vmstat -D | awk 'NR==2{print $1}';vmstat 1 1 | awk 'NR==3{print $10}';vmstat 1 1 | awk 'NR==3{print $9}';vmstat 1 1 | awk 'NR==3{print $16}' + parseType: oneRow + + - name: interface + priority: 4 + fields: + - field: interface_name + type: 1 + instance: true + - field: receive_bytes + type: 0 + unit: byte + - field: transmit_bytes + type: 0 + unit: byte + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: cat /proc/net/dev | tail -n +3 | awk 'BEGIN{ print "interface_name receive_bytes transmit_bytes"} {print $1,$2,$10}' + parseType: multiRow + + - name: disk_free + priority: 5 + fields: + - field: filesystem + type: 1 + - field: used + type: 0 + unit: Mb + - field: available + type: 0 + unit: Mb + - field: usage + type: 0 + unit: '%' + - field: mounted + type: 1 + instance: true + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: df -m | tail -n +2 | awk 'BEGIN{ print "filesystem used available usage mounted"} {print $1,$3,$4,$5,$6}' + parseType: multiRow + + - name: top_cpu_process + priority: 6 + fields: + - field: pid + type: 1 + instance: true + - field: cpu_usage + type: 0 + unit: '%' + - field: mem_usage + type: 0 + unit: '%' + - field: command + type: 1 + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: ps -aux | sort -k3nr | awk 'BEGIN{ print "pid cpu_usage mem_usage command" } {print $2, $3, $4, $11}'| head -n 10 + parseType: multiRow + + - name: top_mem_process + priority: 7 + fields: + - field: pid + type: 1 + instance: true + - field: cpu_usage + type: 0 + unit: '%' + - field: mem_usage + type: 0 + unit: '%' + - field: command + type: 1 + protocol: ssh + ssh: + host: ^_^host^_^ + port: ^_^port^_^ + username: ^_^username^_^ + password: ^_^password^_^ + privateKey: ^_^privateKey^_^ + timeout: ^_^timeout^_^ + script: ps -aux | sort -k4nr | awk 'BEGIN{ print "pid cpu_usage mem_usage command" } {print $2, $3, $4, $11}'| head -n 10 + parseType: multiRow