从【巡检平台】-【巡检项管理】进入,已为云产品内置了巡检项,可以通过巡检项来检查云产品状态。
1 巡检项列表
此模块汇总当前平台的巡检项清单,可对巡检项进行启用/停用、编辑、新增和删除;下拉框选择业务树路径、巡检项分组可以过滤巡检项,以及通过巡检项描述或巡检项分组等关键字搜索巡检项。
2 查看巡检项详情信息
在巡检项列表,点击要查看的【巡检项ID】,进入该巡检项详情页面;页面展示巡检项信息,包含:基础信息、参数、知识库、YAML。
3 编辑巡检项
在巡检项管理页面,点击【编辑】进行操作。
4 启用/停用巡检项
启用:点击未启用状态的按钮开关,对已停用巡检项进行启用,启用后已加入的巡检任务下一次执行时该巡检项会被执行。
停用:点击已启用状态的按钮开关,对启用中的巡检项进行停用,停用后已加入的巡检任务下一次执行时该巡检项不会执行,相关异常项自动消除。
5 添加自定义巡检项
支持巡检项白屏化管理,以下提供新建自定义巡检项的指引。
开始添加自定义巡检项
从【巡检平台】-【巡检项管理】进入,点击【新建巡检项】。
编写巡检项的流程为:
- 巡检项产品:选择当前巡检项的检查对象
- 巡检项分组:选择巡检项分组名称
- 巡检项分级:选择巡检项分级
- 分类:选择分类(默认是日常运维)
- 配置yaml文件
- 根据巡检途径,找到合适的巡检插件、巡检函数。
i. 远程执行命令通常使用 system 插件的 system_exec_command 函数
ii. 执行 SQL 通常使用 mysql 插件的 check_field_value 函数
iii. ...... - 为巡检函数声明参数
- 声明描述信息、uuid(uuid 尽量使用具有实际含义的英文名称)
- 根据巡检途径,找到合适的巡检插件、巡检函数。
- 启用巡检项,并加入巡检任务。
配置yaml文件
(1)基础格式
yaml文件包含以下字段:
host_type: host # 目标主机类型,支持 host(登录主机巡检)、container(登录容器巡检,当前路径是 k8s-master-ip 或者 tianxun 的时候,host_type 要写成 container)
host_mode: target_all # 目标主机选择方式,支持 local(本地执行)、target_any(选取当前巡检项所属业务路径下任意一台主机执行)、target_all(选取当前巡检项所属业务路径全部主机执行)
func: MysqlExec # 巡检项引用函数名称
stack_name: checks-base # 巡检函数 func 所属插件二进制名。若 func 为通用功能,可省略此字段或填写为 checks-base。若为技术栈特有功能,则需填写技术栈二进制名称如 tce-compute
uuid: tx_cvm_podcheck_1 # (必填)巡检项 uuid
desc: 巡检项描述 # (必填)巡检项描述
args: # 巡检项参数列表("键:值"格式),如果 func 无需参数则可省略 args
database: yhimage
sql: show tables;
# btree_resources: (选填)引用业务树资源声明
# - type: host # 业务树资源类型
# path: Platform.TCENTER.K8S.Node # 业务树路径
# scope: region # 资源获取范围。支持默认或不声明(az级别)、region(region级别)、global(全局级别)
(2)引用业务树资源(btree_resources)
host_type: host
host_mode: local
func: ExecuteShResultNum
btree_resources: # 此处声明业务树 Platform.TCENTER.K8S.Node 路径下当前 region 内 host 资源
- type: host
path: Platform.TCENTER.K8S.Node
scope: region
args:
sh_list:
- sh_name: "tgwadm_whitelist_check.sh"
params: '{{ .btree_resources.host | map(.ip) | join(" ") }}' # 此处使用 .btree_resources.host 来引用已声明的资源。语法为 jq 格式
expect_equation: eq
expect_value: 1
(3)常用函数格式
执行 shell 命令,比较输出结果与预期数字。
stack_name: checks-base func: SystemCmdResultNum args: cmd_list: cmd: "uptime | awk '{print $3/365}'" desc: '服务器运行时间是否超过3年' expect_equation: 'le' expect_value: 3执行 shell 命令,比较输出结果与预期字符串。
stack_name: checks-base func: SystemCmdResultStr args: cmd_list: cmd: kubectl get secret -n cert-manager cert-manager-webhook-tls -o json | jq '.data["tls.crt"]' | xargs echo | base64 -d | openssl x509 -checkend 3888000 desc: '检查cert-manager的证书过期时间在45天以后' expect_equation: 'eq' expect_value: 'Certificate will not expire'检查 pod 是否存活
stack_name: checks-base func: PodActiveCheck args: pod_name: 'tcloud-argus2-adp-synchronizer'检查 pod 是否存活,并在 pod 内执行 shell 命令。
stack_name: checks-base func: PodActiveCheck args: cmd_list: - cmd: ps aux | grep 'gw-controller-monitor' | grep -v grep | awk '{print $11}' |sort | wc -l desc: 检查ocloud-vpc-nfv-gw-controller gw-controller-monitor 进程运行正常 expect_equation: ge expect_value: 1 pod_name: ocloud-vpc-nfv-gw-controller复制 shell 脚本并执行,检查执行结果。
stack_name: checks-base func: ExecuteShResultNum args: sh_list: - sh_name: "tgwadm_whitelist_check.sh" params: '"ip1" "ip2"' expect_equation: eq expect_value: 1
(4)完整函数列表
checks-base
CheckOsVersion ClusterAllocationCheck CpuFrequency CpuUsage CrontabGrep DiskCapacity DiskMount DiskUsage ElasticsearchCheck EtcdCheck ExecuteShResultNum ExecuteShResultNumProxy ExecuteShResultStr ExecuteShResultStrProxy GetK8sCert GetOcloudCert GetServerCert GetTcloudCert HttpApiResult HttpApiResultNum HttpApiResultStr IOUsage LoadAverage MemSwapUsage MemUsage MysqlCheck MysqlCheckDemo MysqlCheckFieldValue MysqlExec PartitionUsage PingCheck PodActiveCheck PodImageCheck PodLogCheck PodNodeCheck PodReplicaCheck PodRestartCheck PodUsageCheck PortCheck ProcessCheck PvcUsageCheck RedisConfigCheck RedisExecCheck ServiceActiveCheck SyncDate SysLogCheck SystemCmdResult SystemCmdResultNum SystemCmdResultNumProxy SystemCmdResultStr SystemCmdResultStrProxy SystemModeCheck ZookeeperCheck
(5)示例
示例1:tx_tcenter_check_cert-manager_expire
uuid: tx_tcenter_check_cert-manager_expire
host_mode: target_all
host_type: host
stack_name: tce-base
func: SystemCmdResultStr
args:
cmd_list:
- cmd: kubectl get secret -n cert-manager cert-manager-webhook-tls -o json | jq '.data["tls.crt"]' | xargs echo | base64 -d | openssl x509 -checkend 3888000
desc: 检查cert-manager的证书过期时间在45天以后
expect_equation: eq
expect_value: Certificate will not expire
desc: 检查cert-manager的证书过期时间在45天以后
btree_resources: []
以上述巡检项为例:
- 该巡检项 uuid 为 tx_tcenter_check_cert-manager_expire,desc 为 '检查cert-manager的证书过期时间在45天以后'。uuid 和 desc 会展示在巡检列表页。

- 该巡检项的 host_mode 为 target_all,表示该巡检项最终会在所属业务树路径的所有机器上执行。如果是 target_any 的话则会在所属业务树路径的任一机器上执行。
- 该巡检项的 host_type 为 host,表示该巡检项的目标巡检对象为主机。除了 host 外,巡检平台还支持 container 类型的 host_type,表示目标巡检对象为容器或特殊节点。
- 该巡检项的 stack_name 为 tce-base,func 为 SystemCmdResultStr。表示巡检的实现位于名为 tce-base 的二进制文件中,被调用函数名称为 SystemCmdResultStr。
- 后续的 args 字段是需要传递给 SystemCmdResultStr 的参数。与 2.2 类似,SystemCmdResultStr 函数支持执行多个 shell 命令,每个 shell 命令使用 cmd 指定,预期输出值为 'Certificate will not expire'。
示例2:tx_cbs_pod_processor
uuid: tx_cbs_pod_processor
host_mode: target_any
host_type: container
stack_name: tce-storage
func: PodActiveCheck
args:
cmd_list:
- cmd: df -h | grep '/' |tr -d '%' | awk '{if ($5>80)print}' | wc -l
desc: 检查pod容器磁盘使用率>80%的挂载分区个数为0
expect_equation: eq
expect_value: 0
pod_name: ocloud-cbs-processor
desc: pod ocloud-cbs-processor 容器状态为running,磁盘使用率小于80%
btree_resources: []
在此只列出此巡检项与前一个巡检项不同的部分:
- 当前巡检项 host_mode 为 target_any,host_type 为 container。表示此巡检只需执行一次,同时需要到容器(pod)内执行。
- 当前巡检项 func 为 PodActiveCheck,args 为传递给 PodActiveCheck 的参数,此函数也支持多 shell 命令同时声明。
6 删除巡检项
点击【删除】对自定义巡检项进行删除;系统巡检项不支持删除,如果不使用,则可以进行停用。
