Hello!
Preview https://github.com/fouad-j/monitorin...onkyScreen.png
conkyrc
Code:
conky.config = {
total_run_times = 0,
out_to_console = false,
double_buffer = true,
no_buffers = true,
text_buffer_size = 2048,
update_interval = 1,
cpu_avg_samples = 4,
net_avg_samples = 2,
alignment = "top_left",
maximum_width = 350,
draw_shades = true,
draw_outline = false,
draw_borders = false,
border_width = 1,
border_outer_margin = 4,
own_window = true,
own_window_transparent = true,
own_window_hints = "undecorated,below,sticky,skip_taskbar,skip_pager",
own_window_argb_visual = true,
own_window_argb_value = 0,
use_xft = true,
xftalpha = .1,
override_utf8_locale = true,
font = "Monospace:size=9",
uppercase = false,
use_spacer = "left",
pad_percents = 2,
default_color = "f2f4f4",
default_outline_color = "black",
color1 = "FFF",
color2 = "A2B5BF",
color3 = "Tan1",
color4 = "Tan1",
color5 = "E1E6FA",
color6 = "C4D7ED",
color7 = "ABC8E2",
color8 = "375D81",
color9 = "5F8CA3"
}
conky.text = [[
${color3}Ordinateur ${hr 1}
${color2} ${execi 86400 lsb_release -si} : ${color1} ${execi 86400 lsb_release -sr} ${execi 86400 lsb_release -sc}
${color2} $sysname : ${color1} $kernel $machine $freq_g GHz
${color2} Uptime : ${color1} $uptime
${color3}CPU ${hr 1}
${color}${cpugraph 5e7b7b d8deeb}
${voffset -24}${alignc}${cpu cpu1}%
${color3}Memory / Swap ${hr 1}
${color2}RAM : ${color1}$memperc% $mem/$memmax $membar
${color2}Swap : ${color1}${swapperc}% $swap/$swapmax $swapbar
${color2}Process : ${color1}$processes ${color2}Running : ${color1}$running_processes
${color3}Temperatures ${hr 1}
${color2}CPU: ${color1}${hwmon 0 temp 1}C° ${color2}M/B: ${color1}${hwmon 0 temp 2}C° ${color2}Local: ${color1}sda ${execi 1800 hddtemp -n /dev/sda} C°
${color3}File systems ${hr 1}
${color2}/ : ${color1}${fs_used_perc /}% ${fs_free /} ${fs_bar 7 /}
${color2}/home : ${color1}${fs_used_perc /home/}% ${fs_free /home/} ${fs_bar 7 /home}
${color2}data : ${color1}${fs_used_perc /media/fouad/myData}% ${fs_free /media/fouad/myData} ${fs_bar 7 /media/fouad/myData}
${color3}Networking ${hr 1}
${color9}Eth0 ${hr 1}
${color2}Down ${color1}${offset 90}${totaldown enp2s0} ${offset 8}${color2}Up ${color1}${alignr}${totalup enp2s0}
${downspeedgraph enp2s0 22,175 5e7b7b d8deeb} ${upspeedgraph enp2s0 22,170 99c8e8 618094}
${offset 40}${voffset -21}${downspeedf enp2s0}k/s
${offset 190}${voffset -14}${upspeedf enp2s0}k/s
${color9}Wlan0 ${hr 1}
${color2}Down ${color1}${offset 90}${totaldown wlp3s0} ${offset 8}${color2}Up ${color1}${alignr}${totalup wlp3s0}
${downspeedgraph wlp3s0 22,175 5e7b7b d8deeb} ${upspeedgraph wlp3s0 22,170 99c8e8 618094}
${offset 40}${voffset -21}${downspeedf wlp3s0}k/s
${offset 190}${voffset -14}${upspeedf wlp3s0}k/s
${color2}IP Public : ${color1}${texeci 3600 wget http://checkip.dyndns.org -O - -o /dev/null | cut -d : -f 2 | cut -d \< -f 1}
${color2}Ip Local(eth0) : ${color1}${addr enp2s0} ${color2}|${color1} ${totaldown enp2s0} ${color2}|${color1} ${totalup enp2s0}
${color2}Ip Local(wlan0): ${color1}${addr wlp3s0} ${color2}|${color1} ${totaldown wlp3s0} ${color2}|${color1} ${totalup wlp3s0}
${color3}Process ${hr 2}
${color3}Name ${alignr}PID CPU RAM
${color #E1E6FA} ${top name 1} ${alignr}${top pid 1} ${top cpu 1} ${top mem 1}
${color #C4D7ED} ${top name 2} ${alignr}${top pid 2} ${top cpu 2} ${top mem 2}
${color #ABC8E2} ${top name 3} ${alignr}${top pid 3} ${top cpu 3} ${top mem 3}
${color #5F8CA3} ${top name 4} ${alignr}${top pid 4} ${top cpu 4} ${top mem 4}
${color #375D81} ${top name 5} ${alignr}${top pid 5} ${top cpu 5} ${top mem 5}
${color3}Mem usage
${color #E1E6FA} ${top_mem name 1} ${alignr} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color #C4D7ED} ${top_mem name 2} ${alignr} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color #ABC8E2} ${top_mem name 3} ${alignr} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
${color #5F8CA3} ${top_mem name 4} ${alignr} ${top_mem pid 4} ${top_mem cpu 4} ${top_mem mem 4}
]]
conky_server if you want to monitor server remotely
Code:
conky.config = {
total_run_times = 0,
out_to_console = false,
double_buffer = true,
no_buffers = true,
text_buffer_size = 2048,
update_interval = 1,
cpu_avg_samples = 4,
net_avg_samples = 2,
alignment = "top_left",
maximum_width = 350,
gap_x = 380,
draw_shades = true,
draw_outline = false,
draw_borders = false,
border_width = 1,
border_outer_margin = 4,
own_window = true,
own_window_transparent = true,
own_window_hints = "undecorated,below,sticky,skip_taskbar,skip_pager",
own_window_argb_visual = true,
own_window_argb_value = 0,
use_xft = true,
xftalpha = .1,
override_utf8_locale = true,
font = "Monospace:size=9",
uppercase = false,
use_spacer = "left",
pad_percents = 2,
default_color = "FFFFFF",
default_outline_color = "black",
color1 = "78af78",
color2 = "e8e8e8",
color3 = "Tan1"
}
conky.text = [[
${color3}SERVER: PI CI ${hr 1}
${color1}OS TYPE : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi osVersion osType | tr "\n" " "}
${color1}OS NAME : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi osName}
${color1}Kernel : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi kernel architecture | tr "\n" " "}
${color1}Uptime : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi upTime}
${color1}Hostname: ${color2}${execi 3600 ~/Conky/server_info.sh -s pi hostName}
${color1}Load Av.: ${color2}${execi 3600 ~/Conky/server_info.sh -s pi loadAverage}
${color3}NETWORK ${hr 1}
${color1}Internal IP : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi internalIp}
${color1}External IP : ${color2}${execi 3600 ~/Conky/server_info.sh -s pi externalIp}
${color1}Name Servers: ${color2}${execi 3600 ~/Conky/server_info.sh -s pi nameServers}
${color3}LOGGED USERS ${hr 1}
${color2}${execi 3600 ~/Conky/server_info.sh -s pi loggedInUsers}
${color3}MEMORY ${hr 1}
${color1}RAM ${alignr}${color2} ${execi 3600 ~/Conky/server_info.sh -s pi ram}
${execibar 3600 ~/Conky/server_info.sh -s pi ramPercent}
${color1}SWAP ${alignr}${color2} ${execi 3600 ~/Conky/server_info.sh -s pi swap}
${execibar 3600 ~/Conky/server_info.sh -s pi swapPercent}
${color3}HDD ${hr 1}
${color2}${execi 3600 ~/Conky/server_info.sh -s pi disks}
]]
monitor.sh
Code:
#! /bin/bash
########################################################
# Author : Fouad JADOUANI <fouad.j [at] live [dot] fr>
# Usage : ./monitor.sh
# Description : script allow to have some esesntial information about OS
# Created : 11/09/2016
# Version : 1.0
# License : MIT
###############
echo "OS Type:" $(uname -o)
echo "OS Name:" $(cat /etc/os-release | grep ^VERSION= | cut -f2 -d\")
echo "OS Version:" $(cat /etc/os-release | grep ^NAME= | cut -f2 -d\")
echo "Architecture:" $(uname -m)
echo "Kernel Release:" $(uname -r)
echo "Load Average: $(cat /proc/loadavg | cut -f 1-3 -d ' ')"
echo "System Uptime:" $(uptime -p | cut -f 2- -d " ")
echo "Hostname:" $HOSTNAME
echo "Internal IP:" $(hostname -I)
echo "External IP:" $(wget http://ipinfo.io/ip -qO -)
echo "Name Servers:" $(cat /etc/resolv.conf | grep 'nameserver' | awk '{print $2}')
echo -e "Logged In users:\n$(who)"
echo -e "Memory Usages(Mo):\n$(free -m | grep -v +)"
echo -e "Disk Usages:\n$(df -h| grep 'Filesystem\|^/dev/*')"
Code:
#! /bin/bash
########################################################
# Author : Fouad JADOUANI <fouad.j [at] live [dot] fr>
# Usage : ./server_info.sh -s severName [-t refreshRate] cmd...
# Description : script allow to format data returned by monitor.sh
# Created : 11/09/2016
# Version : 1.0
# License : MIT
###############
set -u
# Command and his appearance line
declare -A infos=([osType]=1 [osName]=2 [osVersion]=3 [architecture]=4 [kernel]=5 [loadAverage]=6 \
[upTime]=7 [hostName]=8 [externalIp]=9 [internalIp]=10 [nameServers]=11);
# Servers
declare -A servers=([pi]='pi@pi' [integration]='fouad@integration' [lisa]='ubuntu@lisa-prod');
function usage {
cat <<- FIN
Usage : $0 -s severName [-t refreshRate] cmd...
Options:
-s Server name
-t Refresh rate (by second)
-h Display help and exit
FIN
}
server="";
refreshRate=3000;
OPTERR=0;
while getopts ":s:t:h" arg ; do
case $arg in
s )
case "$OPTARG" in
"lisa"|"pi"|"integration") server=$OPTARG ;;
*) echo "Error: unknown server" >&2; exit 1 ;;
esac
;;
t )
if echo $OPTARG | grep -E "^[0-9]+$" > /dev/null 2>&1 ; then
refreshRate=$OPTARG;
else
echo "-f argument must be a number" >&2; exit 1;
fi
;;
h ) usage; exit 0 ;;
: ) echo "Missed argument for -$OPTARG" >&2; usage; exit 1 ;;
? ) echo "Unknown option -$OPTARG" >&2; usage; exit 1 ;;
esac
done
shift $((OPTIND - 1));
if [ -z "$server" ] ; then
echo "Missed '-s nameServer' option" >&2; usage; exit 1;
fi
if [ $# == '0' ] ; then
echo "You must provide at least one cmd" >&2; usage; exit 1;
fi
function fetchInfoServer {
pathConky="$(dirname ${0})";
# get latest file for this server
fileName=$(ls -1At ${pathConky}/log/${1}-* 2> /dev/null | head -1);
# check if no file exist for this server in log folder or if it has over than refreshRate
if [[ -z "$fileName" || $(( `date +%s` - `stat -L --format %Y $fileName` )) -gt "$refreshRate" ]] ; then
fileName="${pathConky}/log/${1}-$(date +'%b-%d-%y--%H-%M')";
monitorFile=$(cat $pathConky/monitor.sh);
# if monitor.sh doesn't exist in our server else we create and execut it
echo "$monitorFile" | ssh -q -p 2122 ${servers[$1]} '[[ ! -f ".monitor.sh" ]] && cat > .monitor.sh; bash .monitor.sh' > $fileName
fi
}
fetchInfoServer $server
for i in $@; do
case $i in
"osType"|"osName"|"osVersion"|"architecture"|"kernel"|"loadAverage"|"upTime"|"hostName"|"externalIp"|"internalIp"|"nameServers")
echo $(sed -n ${infos[$i]}p $fileName | cut -d ':' -f2)
;;
"ram")
echo $(sed -n '/^Memory/,/^Disk/{ /^Memory/d; /^Disk/d; /^Mem:/p }'< $fileName | \
awk '{printf("%-2d%% %.2fG/%.2fG\n", $3/$2 * 100.0, $3/1024, $2/1024)}')
;;
"ramPercent")
echo $(sed -n '/^Memory/,/^Disk/{ /^Memory/d; /^Disk/d; /^Mem:/p }'< $fileName | \
awk '{printf("%-2d\n", $3/$2 * 100.0)}')
;;
"swap")
echo $(sed -n '/^Memory/,/^Disk/{ /^Memory/d; /^Disk/d; /^Swap:/p }'< $fileName| \
awk '{printf("%-2d%% %.2fG/%.2fG\n", ($2!=0) ? $3/$2*100.0 : 0, $3/1024, $2/1024)}')
;;
"swapPercent")
echo $(sed -n '/^Memory/,/^Disk/{ /^Memory/d; /^Disk/d; /^Swap:/p }'< $fileName| \
awk '{printf("%-2d\n", ($2!=0) ? $3/$2*100.0 : 0)}')
;;
"loggedInUsers") echo $(sed -n '/^Logged In/,/^Memory/{ /^Logged In/d; /^Memory/d; p }' < $fileName) ;;
"disks") echo "$(sed -n '/^Filesystem/,$p'< $fileName)" ;;
*) echo "Error: unknown cmd" >&2; exit 1;
esac
done
If you want more information about how it works https://github.com/fouad-j/monitoring-server-conky
Bookmarks