Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • f2598a78801fb36c0545052b1c2e0774f5b91a98
  • 12.0-evo-202003 par défaut
  • 14-RV-20250324
  • 14-RV-20240830
  • 14-RV-20231222
  • 12-RV-Bug_ecrasement_date_radiation
  • 12-RV-revision-staff
  • 12-RV-copadev
  • 12-RV-Correctif-open-instagram
  • 12-RV-Tree-Coop-Ajout-effectif
  • 12.0-RV-Instagram
  • 12.0-RV-segment_visibility
  • 12.0 protégée
  • 12.0-RV-Abonnements
14 résultats

res_partner.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    check_docker.sh 3,38 Kio
    #!/bin/bash
    
    # Default threshold values.
    cpu_threshold_warning=25
    cpu_threshold_critical=50
    mem_threshold_warning=50
    mem_threshold_critical=75
    filter=''
    
    print_help() {
        echo "usage: ${0} [OPTIONS]"
        echo "options:"
        echo -e " -c, --cpu <warning:critical>\t\tthreshold values for cpu usage"
        echo -e " -f, --filter <regex>\t\t\tcontainers to check"
        echo -e " -h, --help\t\t\t\tprint this help"
        echo -e " -m, --memory <warning:critical>\tthreshold values for memory usage"
    }
    
    while [[ $# -gt 0 ]]; do
        case "$1" in
            -c|--cpu)
                cpu_threshold_warning=$(/usr/bin/awk -F ':' '{print +$1}' <(echo $2))
                cpu_threshold_critical=$(/usr/bin/awk -F ':' '{print +$2}' <(echo $2))
                shift 2
                ;;
    
            -f|--filter)
                filter=$2
                shift 2
                ;;
    
            -m|--memory)
                mem_threshold_warning=$(/usr/bin/awk -F ':' '{print +$1}' <(echo $2))
                mem_threshold_critical=$(/usr/bin/awk -F ':' '{print +$2}' <(echo $2))
                shift 2
                ;;
    
            --help|-h)
                print_help
                exit 0
                ;;
    
            *)
                echo "Error while parsing argument '$1'."
                exit 1
                ;;
        esac
    done
    
    # Gathering facts.
    all_containers=$(sudo /usr/bin/docker ps --format '{{.Names}}' --filter "name=${filter}" --no-trunc --quiet --all)
    running_containers=$(sudo /usr/bin/docker ps --format '{{.Names}}' --filter "name=${filter}" --no-trunc --quiet)
    running_containers_stats=$(sudo /usr/bin/docker stats --format '{{.Name}}:{{.CPUPerc}}:{{.MemPerc}}' --filter "name=${filter}" --no-stream)
    
    not_running_containers=$(comm -23 <(echo $all_containers | /usr/bin/tr ' ' '\n') <(echo $running_containers | /usr/bin/tr ' ' '\n'))
    
    # Format data.
    output=''
    perf=''
    
    cpu_scale=";${cpu_threshold_warning};${cpu_threshold_critical};0;100"
    mem_scale=";${mem_threshold_warning};${mem_threshold_critical};0;100"
    
    # Running containers.
    for container in ${running_containers}; do
        output+="OK: ${container} status is running\n"
    done
    # Not running containers.
    for container in ${not_running_containers}; do
        output+="NOK: ${container} status is not running\n"
    done
    
    # CPU and memory statistics for running containers.
    for container_stats in ${running_containers_stats}; do
        name=$(/usr/bin/awk -F ':' '{print $1}' <(echo $container_stats))
        [[ ! $name =~ ${filter} ]] && continue
        all_cpu=$(/usr/bin/awk -F ':' '{print +$2}' <(echo $container_stats))
        mem=$(/usr/bin/awk -F ':' '{print +$3}' <(echo $container_stats))
        proc_number=$(nproc --all)
        cpu=$(echo "${all_cpu} ${proc_number}" | /usr/bin/awk '{printf "%.2f", $1 / $2}')
    
        status='OK'
        [[ ${cpu%.*} -ge $cpu_threshold_warning ]] && status='WARNING'
        [[ ${cpu%.*} -ge $cpu_threshold_critical ]] && status='CRITICAL'
        output+="${status}: ${name} cpu is ${cpu}%\n"
    
        status='OK'
        [[ ${mem%.*} -ge $mem_threshold_warning ]] && status='WARNING'
        [[ ${mem%.*} -ge $mem_threshold_critical ]] && status='CRITICAL'
        output+="${status}: ${name} memory is ${mem}%\n"
    
        perf+="${name}_cpu=${cpu}%${cpu_scale} "
        perf+="${name}_mem=${mem}%${mem_scale} "
    done
    
    # Nagios OK status.
    exit_code=0
    # Nagios WARNING status.
    grep --quiet 'WARNING:' <(echo $output) && exit_code=1
    # Nagios CRITICAL status.
    grep --quiet 'NOK:\|CRITICAL:' <(echo $output) && exit_code=2
    
    # Plugin output.
    echo "${output%'\n'}|${perf%' '}"
    exit $exit_code