> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Periodic Monitoring of Pods' Instant Thread Counts

> You can periodically monitor thread counts of Apinizer pods running in Kubernetes environment, and configure automatic monitoring with bash script.

This document provides a bash script to periodically monitor the thread counts of Apinizer pods running in a Kubernetes environment.

## Script Creation

Create the script file:

```bash theme={null}
vi Thread_Count.sh
```

## Script Content

```bash theme={null}
#!/bin/bash
OUTPUT_FILE="threadCount"
# It continues every 10 seconds for a total of 5 minutes.
INTERVAL=10
DURATION=300
END_TIME=$((SECONDS + DURATION))

# Clear or create previous file
echo "" > $OUTPUT_FILE

# Start loop for each namespace
while [ $SECONDS -lt $END_TIME ]; do
  for NAMESPACE in "${@}"; do
    echo "Processing namespace: $NAMESPACE at $(date)" >> $OUTPUT_FILE
    
    # List all pods in namespace
    pods=$(kubectl get pods -n $NAMESPACE -o jsonpath='{.items[*].metadata.name}')
    
    # Start loop for each pod
    for pod in $pods; do
      echo "  Processing pod: $pod" >> $OUTPUT_FILE
      
      # Get the number of threads in the pod
      thread_count=$(kubectl exec -n $NAMESPACE $pod -- ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }' 2>/dev/null)
      
      # If thread count is not available, mark it as 'N/A'
      if [ -z "$thread_count" ]; then
        thread_count="N/A"
      fi
      
      # Write results to file
      echo "$NAMESPACE/$pod: $thread_count" >> $OUTPUT_FILE
    done
  done
  
  # Wait for INTERVAL time
  sleep $INTERVAL
done

echo "Thread counts have been written to $OUTPUT_FILE."
```

## Making Script Executable

```bash theme={null}
sudo chmod +x Thread_Count.sh
```

## Manual Usage

If you want to use it manually, you can run it with the following command:

```bash theme={null}
./Thread_Count.sh <Namespace1> <Namespace2> <Namespace3>
```

## Automatic Execution (Cron)

If you wish, you can ensure that the script runs at a specific time or time period. Cron can be used for this.

```bash theme={null}
sudo crontab -e
```

Add the line below to the opened file. In the example usage, the script will run every 5 minutes.

```bash theme={null}
*/5 * * * * /path/Thread_Count.sh namespace1 namespace2 namespace3
```
