cacti and friends


The last days I spent some time installing digitemp sensors on my watercooling system and setting up cacti to graph the temperatures.
For reading the sensors I use this little python script:

from subprocess import Popen, PIPE, STDOUT
from string import *
from sys import *

process = Popen("digitemp_DS9097 -q -c /etc/digitemp.conf -r2000 -a", shell=True, stdout=PIPE, stderr=STDOUT)

identifiers = argv[1:]
identifiers = map(lambda x: x+":",identifiers)


n = len(identifiers)
values = [.0]*n
valuecount = 0

for line in process.stdout:
line = line.split()
values[valuecount] = line[6]
valuecount += 1

output = ""
for i,j in zip(identifiers,values):
j = str(j)
output += (i+j+" ")
print output

It is called by cacti using

python /scripts/check_digitemp.py cool air hot out

The parameters given to the script are simply labels of your choice. Just make shure they fit the number of sensors installed.
Also make sure /etc/digitemp.conf exists and the cacti user (in my case www-data) has access to the serial port that connects the sensors. For me it also has been necessary to change the owner of /var/lockLCK..ttyS0 to www-data, otherwise digitemp was not able to lock the serial port.

This might not be the best sollution but for me it works.


I'm also using lm-sensors by cacti. There for I made another script:

from subprocess import Popen, PIPE, STDOUT
from string import *
from sys import *

process = Popen("sensors", stdout=PIPE, stderr=STDOUT)

identifiers = argv[1:]
identifiers = map(lambda x: x+":",identifiers)


n = len(identifiers)
values = [.0]*n


for line in process.stdout:
line = line.split()
if line != []:
#print line
if line[0] == "VCore":
line = line[1:]
for i in range(n):
if line[0] == identifiers[i]:
values[i] = line[1]
if values[i].endswith("\xc2\xb0C"):
values[i
] = values[i][:-3]
if values[i].startswith("+"):
values[i] = values[i][1:]
output = ""
for i,j in zip(identifiers,values):
j = str(j)
output += (i+j+" ")
print output


This is called from cacti by using:
python /scripts/check_sensors.py 1 2 +3.3V +5V +12V -12V -5V V5SB VBat fan1 fan2 temp1 temp2 temp3

In this case the parameters equal the name of the lm-sensors. Note that "VCore 1:" gets translated to "1" due some restriction I had to make when using blank spaces for splitting the output strings.

For some strange reason not all values read make it into the Round Robin Database, but the script itself seems to work.

Starting from theses scripts it should not be to hard to get the actual graphs. Just follow the guide in the cacti documentation.

Comments

Unknown said…
Hello can you help me add your script to cacti, I dont know how to make graphs from script :(
Brie Aleida said…
@Titus: See http://www.cacti.net/downloads/docs/html/how_to.html#SCRIPT_TO_GRAPH You'll be script-to-graphing in no time. :)!.
Unknown said…
wow, so crowded in here)) people, could you tell me please a good locksmith in California? I know that it is totally off topic, sorry, but i need it desperately. Maybe some of you applied to them san jose locksmith ?
historypak said…
I am very happy to discover your post as it will become on top in my collection of favorite blogs to visit. http://www.da247locksmiths.com/bkny/

Popular posts from this blog

Help me to improve support texts

Workshop Project: Hot Wire Anemometer

set order of alsa devices