Skip to content
Snippets Groups Projects
Select Git revision
  • 564667476bc0570e1d97a499e4dba4f1d9edf564
  • master default
  • v0.52.5
  • v0.52.4
  • v0.52.3
  • v0.52.2
  • v0.52.1
  • v0.52.0
  • v0.51.0
  • v0.50.0
  • v0.49.0
11 results

osfamilymap.yaml

Blame
  • gluster 2.09 KiB
    #!/bin/bash
    # we parse the output of gluster volume heal [vol] info summary
    # which looks like that:
    #
    #Brick t3backend-00.it.hs-hannover.de:/srv/gluster/fileadmin
    #Status: Connected
    #Total Number of entries: 0
    #Number of entries in heal pending: 0
    #Number of entries in split-brain: 0
    #Number of entries possibly healing: 0
    #
    #Brick t3backend-01.it.hs-hannover.de:/srv/gluster/fileadmin
    #Status: Connected
    #Total Number of entries: 0
    #Number of entries in heal pending: 0
    #Number of entries in split-brain: 0
    #Number of entries possibly healing: 0
    # [...]
    
    hostname=$(hostname)
    
    # iterate over all available volumns
    for volume in $(gluster volume list)
    do
      # check /tmp/gluster_heal_summary for the last parsed output.
      gluster volume heal $volume info summary > /tmp/gluster_heal_summary
      # check heal info summary  ->   below you see sample lines
      while read -r brickline; do  # 'Brick [hostname]:[path_on_the_host]'
        read -r statusline         # 'Status: Connected'
        read -r entriesline        # 'Total Number of entries: [num]'
        # we do not use the 3 lines below - may use them for more detailed metrics
        read -r entriespendingline
        read -r entriessplitbrainline
        read -r entrieshealingline
        # bricks are separated by empty line
        read -r emptyline
        # skip those that are not located on our host (others are monitored on their corresponding host)
        if [[ "$brickline" != *"$hostname"* ]]
        then
          continue
        fi
        # parse lines of the last brick, since it is located on this gluster cluster node
        brick=$(echo "$brickline" | cut -f2 -d' ')
        heal_status=$(echo "$statusline" | cut -d ':' -f2 | tr -d '[:space:]')
        entries=$(echo "$entriesline" | cut -d ':' -f2 | tr -d '[:space:]')
        case "$heal_status" in
         Connected) chmk_status=0 ;; # Online means OK
                 *) chmk_status=3 ;; # everything else we don't know...
        esac
        metrics="healing_entries=$entries"
        msg="Online status of volume '$volume' brick '$brick' is: '$heal_status'"
        # echo chmk local check output
        echo "$chmk_status gluster_volume:$volume $metrics $msg"
      done < /tmp/gluster_heal_summary
    done