--- date-created: 20240222 tags: - ocp - bash/script --- # OCP container resource usage script ```bash= output_file="report.md" touch $output_file # Start with an empty output file > "$output_file" # Print the Markdown table header to the file echo "|container name| cpu request | CPU USAGE (POD) | cpu limit | memory request | memory limit | current memory usage (pod) |" >> "$output_file" echo "|--------------|-------------|-----------|----------------|--------------|-------------------------|---------------------------|" >> "$output_file" # Get namespaces, excluding those starting with "openshift" namespaces=$(oc get namespaces --no-headers | awk '{print $1}' | grep -v '^openshift') for namespace in $namespaces; do # Get all pods in the current namespace pods=$(oc get pods -n $namespace -o jsonpath="{.items[*].metadata.name}") for pod in $pods; do # Get pod metrics for current usage, ensure jq is available cpu_usage=$(oc get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/$namespace/pods/$pod" | jq -r '.containers[0].usage.cpu') memory_usage=$(oc get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/$namespace/pods/$pod" | jq -r '.containers[0].usage.memory') # Get container specs containers=$(oc get pod $pod -n $namespace -o jsonpath="{.spec.containers[*].name}") sleep 3 for container in $containers; do # Get requests and limits cpu_request=$(oc get pod $pod -n $namespace -o jsonpath="{.spec.containers[?(@.name=='$container')].resources.requests.cpu}") echo "Container: $container | pod: $pod | cpu req: $cpu_request" cpu_limit=$(oc get pod $pod -n $namespace -o jsonpath="{.spec.containers[?(@.name=='$container')].resources.limits.cpu}") memory_request=$(oc get pod $pod -n $namespace -o jsonpath="{.spec.containers[?(@.name=='$container')].resources.requests.memory}") memory_limit=$(oc get pod $pod -n $namespace -o jsonpath="{.spec.containers[?(@.name=='$container')].resources.limits.memory}") # Append the container details in Markdown format to the file echo "| $pod |$container| $cpu_request | $cpu_usage | $cpu_limit | $memory_request | $memory_limit | $memory_usage |" >> "$output_file" sleep 3 done done done ```