21.4. Node Observability Operator 脚本
脚本允许您使用当前的 Node Observability Operator 和 Node Observability 代理运行预先配置的 bash 脚本。
这些脚本监控 CPU 负载、内存压力和 worker 节点问题等关键指标。它们还收集 sar 报告和自定义性能指标。
21.4.1. 为脚本创建 Node Observability 自定义资源 复制链接链接已复制到粘贴板!
在运行脚本前,您必须创建并运行 NodeObservability 自定义资源 (CR)。运行 NodeObservability CR 时,它会在与 nodeSelector 标签匹配的计算节点上以脚本模式启用代理。
先决条件
- 已安装 Node Observability Operator。
-
已安装 OpenShift CLI(
oc)。 -
您可以使用
cluster-admin权限访问集群。
流程
运行以下命令登录到 OpenShift Container Platform 集群:
$ oc login -u kubeadmin https://<host_name>:6443运行以下命令切换到
node-observability-operator命名空间:$ oc project node-observability-operator创建名为
nodeobservability.yaml的文件,其中包含以下内容:apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservability metadata: name: cluster1 spec: nodeSelector: kubernetes.io/hostname: <node_hostname>2 type: scripting3 运行以下命令来创建
NodeObservabilityCR:$ oc apply -f nodeobservability.yaml输出示例
nodeobservability.olm.openshift.io/cluster created运行以下命令,检查
NodeObservabilityCR 的状态:$ oc get nob/cluster -o yaml | yq '.status.conditions'输出示例
conditions: conditions: - lastTransitionTime: "2022-07-05T07:33:54Z" message: 'DaemonSet node-observability-ds ready: true NodeObservabilityScripting ready: true' reason: Ready status: "True" type: Ready当
reason为Ready,status为"True"时代表NodeObservabilityCR 运行完成。
21.4.2. 配置 Node Observability Operator 脚本 复制链接链接已复制到粘贴板!
先决条件
- 已安装 Node Observability Operator。
-
您已创建了
NodeObservability自定义资源(CR)。 -
您可以使用
cluster-admin权限访问集群。
流程
创建一个名为
nodeobservabilityrun-script.yaml的文件,其中包含以下内容:apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservabilityRun metadata: name: nodeobservabilityrun-script namespace: node-observability-operator spec: nodeObservabilityRef: name: cluster type: scripting重要您只能请求以下脚本:
-
metrics.sh -
network-metrics.sh(使用monitor.sh)
-
使用以下命令创建
NodeObservabilityRun资源来触发脚本:$ oc apply -f nodeobservabilityrun-script.yaml运行以下命令,查看
NodeObservabilityRun脚本的状态:$ oc get nodeobservabilityrun nodeobservabilityrun-script -o yaml | yq '.status.conditions'输出示例
Status: Agents: Ip: 10.128.2.252 Name: node-observability-agent-n2fpm Port: 8443 Ip: 10.131.0.186 Name: node-observability-agent-wcc8p Port: 8443 Conditions: Conditions: Last Transition Time: 2023-12-19T15:10:51Z Message: Ready to start profiling Reason: Ready Status: True Type: Ready Last Transition Time: 2023-12-19T15:11:01Z Message: Profiling query done Reason: Finished Status: True Type: Finished Finished Timestamp: 2023-12-19T15:11:01Z Start Timestamp: 2023-12-19T15:10:51Z当
Status为True,Type为Finished时代表脚本完成。运行以下 bash 脚本,从容器的 root 路径检索脚本数据:
#!/bin/bash RUN=$(oc get nodeobservabilityrun --no-headers | awk '{print $1}') for a in $(oc get nodeobservabilityruns.nodeobservability.olm.openshift.io/${RUN} -o json | jq .status.agents[].name); do echo "agent ${a}" agent=$(echo ${a} | tr -d "\"\'\`") base_dir=$(oc exec "${agent}" -c node-observability-agent -- bash -c "ls -t | grep node-observability-agent" | head -1) echo "${base_dir}" mkdir -p "/tmp/${agent}" for p in $(oc exec "${agent}" -c node-observability-agent -- bash -c "ls ${base_dir}"); do f="/${base_dir}/${p}" echo "copying ${f} to /tmp/${agent}/${p}" oc exec "${agent}" -c node-observability-agent -- cat ${f} > "/tmp/${agent}/${p}" done done