Cacti/Bcache: Difference between revisions

From fakedWiki
Jump to: navigation, search
(Created page with "== Host using bcache == Add to your '''/etc/snmp/snmpd.conf''' <pre> exec bcache /usr/bin/cacti-bcache.sh </pre> Create '''/usr/bin/cacti-bcache.sh''' <pre> #!/bin/bash PATH...")
 
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Host using bcache ==
== bcache Host ==
Add to your '''/etc/snmp/snmpd.conf'''
Add to your '''/etc/snmp/snmpd.conf'''
<pre>
<pre>
exec bcache /usr/bin/cacti-bcache.sh
exec bcache /etc/snmp/bcache.sh
</pre>
</pre>


Create '''/usr/bin/cacti-bcache.sh'''
Create '''/etc/snmp/bcache.sh'''
<pre>
<pre>
#!/bin/bash
#!/bin/bash


PATH='/sys/fs/bcache/'
PATH='/sys/fs/bcache'


if [ ! -d ${PATH} ]; then
if [ ! -d ${PATH} ]; then
Line 17: Line 17:


DIRTY_DATA=0
DIRTY_DATA=0
BYPASSED=0


get_dirty_data () {
get_dirty_data () {
   local size=$(<${PATH}/${1}/bdev0/dirty_data)
   for dev in "${PATH}/${1}/bdev*/"; do
  DIRTY_DATA=$(/usr/bin/numfmt --from=iec ${size})
    local size=$(<${dev}/dirty_data)
    local bytes=$(/usr/bin/numfmt --from=iec ${size})
    DIRTY_DATA=$(( ${DIRTY_DATA} + ${bytes} ))
  done
}
}


for dir in "${PATH}/*/"; do
get_hitrate () {
   uuid=$(/usr/bin/basename ${dir})
  local hitrate=""
  for dev in "${PATH}/${1}/bdev*/"; do
    local dev_hr=$(<${dev}/stats_${2}/cache_hit_ratio)
    if [ -z ${hitrate} ]; then
      hitrate=${dev_hr}
    fi
    hitrate=$(( (${hitrate} + ${dev_hr}) / 2 ))
  done
  eval HITRATE_${2}=${hitrate}
}
 
get_requests () {
  for dev in "${PATH}/${1}/bdev*/"; do
    local value=$(<${dev}/stats_five_minute/cache_${2})
    eval REQUEST_${2}=$(( $REQUEST_${2} + ${value} ))
  done
}
 
get_bypassed () {
  for dev in "${PATH}/${1}/bdev*/"; do
    local size=$(<${dev}/stats_five_minute/bypassed)
    local bytes=$(/usr/bin/numfmt --from=iec ${size})
    BYPASSED=$(( ${BYPASSED} + ${bytes} ))
  done
}
 
for cache in "${PATH}/*/"; do
   uuid=$(/usr/bin/basename ${cache})
  get_bypassed ${uuid}
   get_dirty_data ${uuid}
   get_dirty_data ${uuid}
  get_hitrate ${uuid} total
  get_hitrate ${uuid} day
  get_hitrate ${uuid} hour
  get_hitrate ${uuid} five_minute
  get_requests ${uuid} bypass_hits
  get_requests ${uuid} bypass_misses
  get_requests ${uuid} hits
  get_requests ${uuid} misses
  get_requests ${uuid} miss_collisions
  get_requests ${uuid} readaheads
done
done


echo "dirty_data:${DIRTY_DATA}"
echo "bb:${BYPASSED}\
dd:${DIRTY_DATA}\
hr:${HITRATE_total}\
hr_1d:${HITRATE_day}\
hr_1h:${HITRATE_hour}\
hr_5m:${HITRATE_five_minute}\
req_bh:${REQUEST_bypass_hits}\
req_bm:${REQUEST_bypass_misses}\
req_h:${REQUEST_hits}\
req_m:${REQUEST_misses}\
req_mc:${REQUEST_miss_collisions}\
req_ra:${REQUEST_readaheads}"


exit 0
exit 0
</pre>
</pre>


== Cacti ==
== Cacti Host ==
'''/usr/share/cacti/resource/scripts/get_bcache.sh'''
'''/var/www/cacti/scripts/get_bcache.sh'''
<pre>
<pre>
#!/bin/bash
#!/bin/bash


if [ ${#} -ne 3 ]; then
if [ ${#} -ne 2 ]; then
   echo "Usage: $0 <host> <community>"
   echo "Usage: $0 <host> <community>"
   exit 0
   exit 0
fi
fi


snmptable -c${2} -v1 ${1} .1.3.6.1.4.1.2021.8 | sed -n "s/\s*[0-9]+*\s*bcache.*\s*0\s*\(.*\)\s*noError/\1/p"
snmptable -CH -Cf '#' -c${2} -v1 ${1} .1.3.6.1.4.1.2021.8 | sed -n "s/.*#bcache#.*#0#\(.*\)#noError#/\1/p"
 
</pre>
</pre>



Latest revision as of 23:33, 5 September 2016

bcache Host

Add to your /etc/snmp/snmpd.conf

exec bcache /etc/snmp/bcache.sh

Create /etc/snmp/bcache.sh

#!/bin/bash

PATH='/sys/fs/bcache'

if [ ! -d ${PATH} ]; then
  echo "Error: bcache not loaded"
  exit 1
fi

DIRTY_DATA=0
BYPASSED=0

get_dirty_data () {
  for dev in "${PATH}/${1}/bdev*/"; do
    local size=$(<${dev}/dirty_data)
    local bytes=$(/usr/bin/numfmt --from=iec ${size})
    DIRTY_DATA=$(( ${DIRTY_DATA} + ${bytes} ))
  done
}

get_hitrate () {
  local hitrate=""
  for dev in "${PATH}/${1}/bdev*/"; do
    local dev_hr=$(<${dev}/stats_${2}/cache_hit_ratio)
    if [ -z ${hitrate} ]; then
      hitrate=${dev_hr}
    fi
    hitrate=$(( (${hitrate} + ${dev_hr}) / 2 )) 
  done
  eval HITRATE_${2}=${hitrate}
}

get_requests () {
  for dev in "${PATH}/${1}/bdev*/"; do
    local value=$(<${dev}/stats_five_minute/cache_${2})
    eval REQUEST_${2}=$(( $REQUEST_${2} + ${value} ))
  done
}

get_bypassed () {
  for dev in "${PATH}/${1}/bdev*/"; do
    local size=$(<${dev}/stats_five_minute/bypassed)
    local bytes=$(/usr/bin/numfmt --from=iec ${size}) 
    BYPASSED=$(( ${BYPASSED} + ${bytes} ))
  done
}

for cache in "${PATH}/*/"; do
  uuid=$(/usr/bin/basename ${cache})
  get_bypassed ${uuid}
  get_dirty_data ${uuid}
  get_hitrate ${uuid} total
  get_hitrate ${uuid} day
  get_hitrate ${uuid} hour
  get_hitrate ${uuid} five_minute
  get_requests ${uuid} bypass_hits
  get_requests ${uuid} bypass_misses
  get_requests ${uuid} hits
  get_requests ${uuid} misses
  get_requests ${uuid} miss_collisions
  get_requests ${uuid} readaheads
done

echo "bb:${BYPASSED}\
 dd:${DIRTY_DATA}\
 hr:${HITRATE_total}\
 hr_1d:${HITRATE_day}\
 hr_1h:${HITRATE_hour}\
 hr_5m:${HITRATE_five_minute}\
 req_bh:${REQUEST_bypass_hits}\
 req_bm:${REQUEST_bypass_misses}\
 req_h:${REQUEST_hits}\
 req_m:${REQUEST_misses}\
 req_mc:${REQUEST_miss_collisions}\
 req_ra:${REQUEST_readaheads}"

exit 0

Cacti Host

/var/www/cacti/scripts/get_bcache.sh

#!/bin/bash

if [ ${#} -ne 2 ]; then
  echo "Usage: $0 <host> <community>"
  exit 0
fi

snmptable -CH -Cf '#' -c${2} -v1 ${1} .1.3.6.1.4.1.2021.8 | sed -n "s/.*#bcache#.*#0#\(.*\)#noError#/\1/p"

Data Template

tbc