Cacti/Bcache: Difference between revisions
From fakedWiki
(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 | == bcache Host == | ||
Add to your '''/etc/snmp/snmpd.conf''' | Add to your '''/etc/snmp/snmpd.conf''' | ||
<pre> | <pre> | ||
exec bcache / | exec bcache /etc/snmp/bcache.sh | ||
</pre> | </pre> | ||
Create '''/ | 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 () { | ||
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 | |||
} | } | ||
for | get_hitrate () { | ||
uuid=$(/usr/bin/basename ${ | 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 " | 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 == | ||
'''/ | '''/var/www/cacti/scripts/get_bcache.sh''' | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
if [ ${#} -ne | 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/ | 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 22: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