Layout 'Krebs' Display 'DPF' Variables { # Ticks: second 1000 minute 60 * second # Standard Dimensions: linesize 53 # max line length, for status lines etc. width100 51 # full width after padding (border) width050 24 # 1/2 of full width width033 17 # 1/3 of full width width025 12 # 1/4 of full width width010 5 # 1/10 of full width # Colors: # ToDo: Alphakanal ausnutzen black '000000' white 'ffffff' red 'ff0000' darkblue '000066' lightgray 'b2b2b2' darkgray '191919' barcolor0 '5f5fff' barcolor1 'ff5f5c' # To be set later by timers: FileMsg 'Dummy' } Display dpf { Driver 'DPF' Port 'usb0' Font '6x8' Foreground white Background darkblue Basecolor darkblue } Widget System { class 'Text' expression '*** ' . uname('nodename') . ' '. netinfo::ipaddr('eth0') . ' ***' width linesize align 'C' update 0 Background lightgray Foreground darkgray } Widget Time { class 'Text' expression strftime('%a, %d.%m.%Y %H:%M:%S', time()) . ' Up: ' . uptime('%d days %H:%M:%S') width linesize align 'C' update 1 * second Background lightgray Foreground darkgray } Widget Busy { class 'Text' expression proc_stat::cpu('busy', 0.5 * second) prefix 'Busy' postfix '%' width width050 precision 1 align 'R' update 0.5 * second } Widget BusyBar { class 'Bar' expression proc_stat::cpu('busy', 0.5 * second) expression2 proc_stat::cpu('system', 0.5 * second) length width050 direction 'E' update 0.5 * second Background darkgray BarColor0 barcolor0 BarColor1 barcolor1 } Widget Load { class 'Text' expression loadavg(1) prefix 'Load' postfix loadavg(1) > 1.0 ? '!' : ' ' width width050 precision 1 align 'R' update 0.5 * second # Foreground loadavg(1) > 1.0 ? red : white } Widget LoadBar { class 'Bar' expression loadavg(1) max 4.0 length width050 direction 'E' update 0.5 * second Background darkgray BarColor0 barcolor0 BarColor1 barcolor1 } Widget Disk { class 'Text' # disk.[rw]blk return blocks, we assume a blocksize of 512 # to get the number in kB/s we would do blk*512/1024, which is blk/2 # expression (proc_stat::disk('.*', 'rblk', 0.5 * second)+proc_stat::disk('.*', 'wblk', 0.5 * second))/2 # with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat # therefore you have to use another function called 'diskstats': expression (diskstats('sd[a-z]$', 'read_sectors', 0.5 * second) + diskstats('sd[a-z]$', 'write_sectors', 0.5 * second)) / 2 / 1024 prefix 'Disk' postfix ' MB/s' width width050 precision 1 align 'R' update 0.5 * second } Widget DiskBar { class 'Bar' #expression proc_stat::disk('.*', 'rblk', 0.5 * second) #expression2 proc_stat::disk('.*', 'wblk', 0.5 * second) # for kernel 2.6: expression diskstats('sd[a-z]$', 'read_sectors', 0.5 * second) / 2 / 1024 expression2 diskstats('sd[a-z]$', 'write_sectors', 0.5 * second) / 2 / 1024 length width050 direction 'E' update 0.5 * second Background darkgray BarColor0 barcolor0 BarColor1 barcolor1 } Widget Eth0 { class 'Text' expression (netdev('eth0', 'Rx_bytes', 0.5 * second) + netdev('eth0', 'Tx_bytes', 0.5 * second)) / 1024 prefix 'eth0' postfix ' KB/s' width width050 precision 1 align 'R' update 0.5 * second } Widget Eth0Bar { class 'Bar' expression netdev('eth0', 'Rx_bytes', 0.5 * second) / 1024 expression2 netdev('eth0', 'Tx_bytes', 0.5 * second) / 1024 length width050 direction 'E' update 0.5 * second Background darkgray BarColor0 barcolor0 BarColor1 barcolor1 } Widget Eth0Traffic { class 'Text' expression (netdev('eth0', 'Rx_bytes', 0)+netdev('eth0', 'Tx_bytes', 0))/1024/1024/1024 prefix 'Traffic:' postfix ' GB' width 21 precision 3 align 'R' update 10 * second } Widget MemoryTitle { class 'Text' expression 'Memory/Swap' width width050 align 'L' update 0 } Widget MemoryTotal { class 'Text' expression meminfo('MemTotal') / 1024 prefix 'Memory Total ' postfix ' MB' width width050 precision 0 align 'R' update 0 } Widget MemoryFree { class 'Text' expression (meminfo('MemFree') + meminfo('Cached')) / 1024 prefix 'Memory Free ' postfix ' MB' width width050 precision 0 align 'R' update 1 * second } Widget MemorySwappedTotal { class 'Text' expression (meminfo('SwapTotal')) / 1024 prefix 'Swap Total ' postfix ' MB' width width050 precision 0 align 'R' update 1 * second } Widget MemorySwappedFree { class 'Text' expression (meminfo('SwapTotal') - meminfo('SwapUsed')) / 1024 prefix 'Swap Free'' postfix ' MB' width width050 precision 0 align 'R' update 1 * second } Widget MemorySwappedUsed { class 'Text' expression (meminfo('SwapTotal') - meminfo('SwapFree')) / 1024 prefix 'Swap Used ' postfix ' MB' width width050 precision 0 align 'R' update 1 * second } Widget LoggedInTitle { class 'Text' expression 'Hosts in Krebs Darknet' width width050 align 'L' update 0 } Widget LoggedIn { class 'Text' expression exec('/krebs/oncology/bin/krebshostup') width width050 align 'L' update 300 * second } Widget FSSpaceTitle { class 'Text' expression 'Disk Space available' width width050 align 'L' update 0 } Widget FSSpace1 { class 'Text' expression statfs('/', 'bavail') * statfs('/', 'bsize') / 1024 / 1024 / 1024 prefix '/ (Root FS)' postfix ' GB' width width050 precision 2 align 'R' update 10 * second } Widget HDDTempTitle { class 'Text' expression 'Disk Temperature°C' width width050 align 'L' update 0 } Widget HDDTemp1 { class 'Text' expression hddtemp('/dev/sda') width width010 precision 1 align 'R' update 10 * second } Widget HDDTemp2 { class 'Text' expression hddtemp('/dev/sdb') width width010 precision 1 align 'R' update 10 * second } Widget HDDTemp3 { class 'Text' expression hddtemp('/dev/sdc') width width010 precision 1 align 'R' update 10 * second } Widget ServicesTitle { class 'Text' expression 'Services' width width100 align 'C' Background lightgray Foreground darkgray } Widget ApacheStatus { class 'Text' expression 'Apache ' width width050 postfix strstr(exec('/etc/init.d/apache2 status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget BindDNSStatus { class 'Text' expression 'Bind DNS ' width width050 postfix strstr(exec('/etc/init.d/bind9 status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget MuninStatus { class 'Text' expression 'Monitoring ' width width050 postfix strstr(exec('/etc/init.d/munin-node status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget MiniDLNAStatus { class 'Text' expression 'MiniDLNA ' width width050 postfix strstr(exec('/etc/init.d/minidlna status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget MySQLStatus { class 'Text' expression 'MySQL ' width width050 postfix strstr(exec('/sbin/status mysql', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget MythTVStatus { class 'Text' expression 'MythTV Backend ' width width050 postfix strstr(exec('/sbin/status mythtv-backend', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget PostfixStatus { class 'Text' expression 'Postfix ' width width050 postfix strstr(exec('/etc/init.d/postfix status', 10 * second), 'not running') > 0 ? 'down!' : 'up' update 10 * second } Widget ProFTPStatus { class 'Text' expression 'ProFTP ' width width050 postfix strstr(exec('/etc/init.d/proftpd status', 10 * second), 'not running') > 0 ? 'down!' : 'up' update 10 * second } Widget SambaStatus { class 'Text' expression 'Samba ' width width050 postfix strstr(exec('/sbin/status smbd', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget SambaStatusDS { class 'Text' expression 'Samba ' width width050 postfix strstr(exec('/etc/init.d/samba status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget SSHStatus { class 'Text' expression 'SSH ' width width050 postfix strstr(exec('/sbin/status ssh', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget SSHStatusDS { class 'Text' expression 'SSH ' width width050 postfix strstr(exec('/etc/init.d/ssh status', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget SWRAIDStatus { class 'Text' expression 'SW RAID ' width width050 postfix strstr(exec('cat /proc/mdstat', 10 * second), '[UUU]') > 0 ? 'up' : 'attention!' update 10 * second } Widget TwonkyStatus { class 'Text' expression 'Twonkymedia ' width width050 postfix strstr(exec('/sbin/status twonkymedia', 10 * second), 'running') > 0 ? 'up' : 'down!' update 10 * second } Widget FileTitle { class 'Text' expression 'Syslog' width width100 align 'C' Background lightgray Foreground darkgray } Widget SetFileMsg { class 'Timer' expression FileMsg = exec('tail -n 1 /var/log/syslog', 2 * second) active 1 update 2 * second } Widget File1 { class 'Text' expression substr(FileMsg, 0 * width100, width100) width width100 align 'L' Background darkgray update 2 * second } Widget File2 { class 'Text' expression substr(FileMsg, 1 * width100, width100) width width100 align 'L' Background darkgray update 2 * second } Widget File3 { class 'Text' expression substr(FileMsg, 2 * width100, width100) width width100 align 'L' Background darkgray update 2 * second } Widget Weather1 { class 'Text' expression exec('/krebs/kachelmann/wetter', 10 * second) prefix 'Wetter:' width width100 align 'L' Background darkgray update 10 * second } Widget Bitcoin { class 'Text' expression exec('/krebs/btc/mtgox/ticker_text.sh', 10 * second) prefix 'BTC: ' width width100 align 'L' Background darkgray update 30 * second } Widget Stream { class 'Text' expression exec('/krebs/streams/streams status', 10 * second) #prefix 'Stream:' width width100 align 'L' Background darkgray update 10 * second } Widget Debug { class 'Text' expression 'Serverdisplay - Krebs' width linesize align 'C' Foreground lightgray } Widget na { class 'Text' expression 'n/a' width 3 align 'L' } Widget Bgnd { class 'Image' file '/krebs/cholerab/bling/krebs-v2_320x240.png' reload 0 update 0 inverted 0 visible 1 } Layout Krebs { Row01.Col01 'System' Row02.Col01 'Time' Row04.Col02 'Busy' Row05.Col02 'BusyBar' Row07.Col02 'Load' Row08.Col02 'LoadBar' Row10.Col02 'Disk' Row11.Col02 'DiskBar' Row13.Col02 'Eth0' Row14.Col02 'Eth0Bar' Row15.Col02 'Eth0Traffic' Row04.Col28 'MemoryTitle' Row05.Col29 'MemoryTotal' Row06.Col29 'MemoryFree' Row07.Col29 'MemorySwappedTotal' Row08.Col29 'MemorySwappedUsed' Row10.Col28 'LoggedInTitle' Row11.Col29 'LoggedIn' Row13.Col28 'FSSpaceTitle' Row14.Col29 'FSSpace1' Row17.Col02 'ServicesTitle' #Row18.Col02 'BindDNSStatus' #Row19.Col02 'MuninStatus' Row18.Col02 'ApacheStatus' #Row21.Col02 'MiniDLNAStatus' #Row18.Col29 'PostfixStatus' #Row19.Col29 'ProFTPStatus' #Row20.Col29 'SambaStatusDS' Row18.Col29 'SSHStatusDS' Row19.Col02 'Weather1' Row21.Col02 'Bitcoin' Row23.Col02 'Stream' Row25.Col02 'FileTitle' Row26.Col02 'File1' Row27.Col02 'File2' Row28.Col02 'File3' Row30.Col01 'Debug' Timer1 'SetFileMsg' Layer 2 { X1.Y1 'Bgnd' } }