Tips&Tricks
Superkaramba
68
lipiec/sierpień 2008
Tips&Tricks
Superkaramba
69
www.lpmagazine.org
Superkaramba
Piotr Pawłowski
P
oprzednio opisywany program
Gkrellm (patrz artykuł z Linux+ nr
05/2008) stanowi dobre narzędzie
do monitoringu. Alternatywą dla
niego są aplety programu Superkaramba. W po-
niższym tekście postaram się pokazać jak łatwo
można stworzyć od podstaw lub zmodyfikować
aplet umożliwiający bieżące kontrolowanie kom-
ponentów komputera.
Instalacja Superkaramby
Program Superkaramba, umożliwiający nam
włączanie widżetów, można znaleźć na stronie
domowej projektu http://netdragon.sourceforge
.net/ . Znajduje się także w wielu repozytoriach
dla większości z dystrybucji linuksowych. Pro-
gram przeznaczony jest głównie dla środowiska
graficznego KDE, jednak nie ogranicza się tylko
do niego. Przy doinstalowaniu odpowiednich bi-
bliotek dla KDE możemy go uruchomić także na
innych GUI. Od wersji KDE 3.5 pakiet Super-
karamba jest dołączony standardowo. Podczas
budowy tematu mamy możliwość rozszerzania
funkcjonalności poprzez dodawanie składników
z takich języków programistycznych jak Python,
Ruby, Java Script czy C++.
Zabawa graficzna
Aby nasz motyw był czytelny i wyróżniał się na
pulpicie należy stworzyć obrazek, który posłuży
jako tło apletu. Wiedza z zakresu grafiki ograni-
cza się wyłącznie do stworzenia obrazku o wy-
miarach, jakie umożliwia nam rozdzielczość mo-
nitora. Metodą prób i błędów tworzymy przykła-
dowe tło o pożądanych przez nas wymiarach.
Wielkość tła umożliwia nam umieszczenie więk-
szej ilości komponentów, które chcemy śledzić.
Ciekawy efekt możemy uzyskać, gdy tło będzie
półprzeźroczyste. Aplet wykorzystujący taki ob-
razek bardzo dobrze komponuje się z pulpitem.
Oprócz stworzenia tła możemy się pokusić o
zrobienie siatki kartograficznej, na której umiesz-
czany będzie wykres obciążenia procesora, ilość
zajmowanej pamięci RAM lub prędkość wysyła-
nia i ściągania danych z sieci Internet. Oczywi-
ście wymiary takiej siatki muszą wymiarami być
dopasowane do tła. Warto także zwrócić uwagę
na kolorystykę. Odpowiednie dobranie kolorów
w stosunku do naszego pulpitu sprawi, że aplet
będzie wyglądał bardzo profesjonalnie.
Pierwsze kroki
Tworzenie nowego tematu można dokonać w do-
wolnym edytorze tekstu. Pliki należy zapisywać
w formacie nazwa.theme . Aby rozpocząć two-
rzenie należy zdefiniować, iż plik będzie aple-
tem programu Superkaramba. Następnym kro-
kiem jest zdefiniowanie szerokości i wysokości.
Warto tutaj nadmienić, że położenie każdego ele-
mentu względem całego tematu określane jest za
pomocą pikseli. Początek naszego apletu będzie
wyglądał następująco:
karamba x=100 y=100 w=220 h=730
locked=true
Zmienne x oraz y służą do ustawienia okna w
wybranej pozycji na pulpicie – okno będzie mia-
ło rozmiar 220x730. Rozdzielczość powinna
być dopasowana do naszego obrazka służącego
za tło. Parametr locked służy do zablokowania
możliwości zmiany położenia tematu. Ten frag-
ment można pominąć, gdyż blokowanie lub od-
blokowywanie każdego widżetu zmieniamy po-
przez najechanie kursorem na motyw i wciśnię-
cie kombinacji Ctrl+L lub kliknięcie prawym
przyciskiem myszy i wybraniu opcji Przełącz
zablokowanie pozycji. Kolejnym etapem jest
określenie standardowej czcionki, jej koloru
oraz rozmiaru. Jako, że chcemy dołączyć stwo-
rzone przez nas tło musimy również zadekla-
rować użycie obrazka. Uzyskujemy to poprzez
wpisanie poniższych linijek:
defaultfont font="Sans serif"
fontsize=11 color=255,255,255
image x=0 y=0 path="images/bg.png"
name="background"
Druga linijka służy do dodania stworzonego
przez nas obrazka jako tło motywu. Taki plik jest
już gotowy do implementacji w programie. Wy-
starczy zapisać go z rozszerzeniem *.theme.
Uzyskanie informacji o systemie
Pierwszą rzeczą, jaką chcielibyśmy uzyskać są
informacje o naszym ulubionym systemie ope-
racyjnym. Z rzeczy, jakie nas interesują to aktu-
alnie zalogowany użytkownik, wersja zainstalo-
wanego jądra, wersja KDE oraz czas pracy na-
szego komputera. Z pomocą przychodzą nam
zmienne środowiskowe. Należy zwrócić uwagę
na to, że aplety Superkaramby potrafią interpre-
tować takie polecenia jak konsola systemowa.
Listing 1. przedstawia uzyskanie wcześniej wy-
mienionych danych.
Przyjrzyjmy się bliżej opisanym polece-
niom. Jak widać, każde polecenie musi zo-
stać ujęte w cudzysłowie, podobnie jak zwy-
kły tekst, który chcemy wyświetlić dla opisa-
nia wartości. W linijkach opisujących aktual-
nie zalogowanego użytkownika skorzystałem
z dobrodziejstw zmiennych środowiskowych.
Dzięki nim, oprócz nazwy użytkownika, może-
Listing 1.
Pobieranie informacji o systemie
# Użytkownik
text
x
=10
y
=35
value
=
"Uzytkownik
:"
text
x
=100
y
=35
sensor
=program
program
=
"echo ${USER}"
# Kernel
text
x
=10
y
=50
value
=
"Kernel :"
text
x
=100
y
=50
sensor
=program
program
=
"echo `uname -r`"
# KDE
text
x
=10
y
=65
value
=
"KDE:"
text
x
=100
y
=65
sensor
=program
program
=
"kde-config --version |
grep KDE | sed -e 's/.*: //'"
#Uptime
text
x
=10
y
=80
value
=
"Czas pracy:"
text
x
=100
y
=80
sensor
=uptime
format
=
"%d dni(dzien) %Hh %Mmin"
interval
=6000
Tips&Tricks
Superkaramba
68
lipiec/sierpień 2008
Tips&Tricks
Superkaramba
69
www.lpmagazine.org
my uzyskać szereg innych danych takie jak ar-
chitektura naszego procesora, nazwę i typ hosta
czy domyślna używana powłoka. Informacja o
jądrze także została zaczerpnięta dzięki polece-
niu uname z flagą -r. Warto poeksperymento-
wać, jakie jeszcze przydatne informacje może-
my uzyskać. Sprawdzenie wersji naszego śro-
dowiska graficznego sprowadza się do skorzy-
stania z trzech poleceń:
kde-config
,
grep
oraz
sed
. Jak widać istnieje możliwość korzystania
z tzw. pipingu. W odmienny sposób wyciąga-
my informacje o czasie pracy. Superkaram-
ba posiada zaimplementowane funkcje, które
umożliwiają określenie długości pracy na kom-
puterze. Służą do tego zmienne
%D
,
%H
oraz
%M
. Polecenie
interval
służy do odświeżania in-
formacji. W tym momencie dane będą spraw-
dzane co 60 sekund.
Procesor
W następnej sekcji chcemy, aby wyświetlane by-
ło obciążenie, częstotliwość i temperatura proce-
sora oraz 8 procesów, które najbardziej obciąża-
ją nasz system.
Opcją szczególną, na którą pozwala nam
Superkaramba i która zostanie przeze mnie za-
stosowana, jest wykres graficzny. Aby wykres
był bardziej czytelny warto przygotować plik
graficzny, który będzie stanowił tło. W tym
przypadku najpierw należy zdefiniować poło-
żenie obrazka oraz ścieżkę dostępu do niego za
pomocą znacznika image, a następnie w tym sa-
mym miejscu w naszym motywie umieścić wy-
kres (wartości x oraz y muszą być identyczne)
za pomocą znacznika graph. Do pobrania da-
nych o obciążeniu znów przychodzi nam z po-
mocą Superkaramba – zmienna
%load
ułatwia
nam zadanie. Oprócz obciążenia możemy tak-
że dowiedzieć się ile obciążenia powoduje użyt-
kownik (
%user
) oraz system (
%system
). Odna-
lezienie informacji o częstotliwości oraz tempe-
raturze procesora należy do indywidualnego po-
dejścia użytkownika. W moim przypadku dane
te znajdowały się w plikach /proc/cpuinfo oraz
/proc/acpi/thermal_zone/TZS0/temperature
.
Za pomoca poleceń
cat
, grep oraz sed dotar-
łem do potrzebnych wartości. Całą sekcję opi-
suje Listing 2.
Pamięć
Znając już proces uzyskiwania informacji z ze-
wnętrznych poleceń możemy zająć się tym, na
co pozwala nam Superkaramba. Jedną z takich
opcji, jest uzyskiwanie danych dotyczących pa-
mięci – zarówno RAM oraz Swap, jak i pojem-
ności dysków twardych. Z pamięci podręcznej
możemy uzyskać takie dane jak: pamięć wol-
na (
%fm
), pamięć zajęta (
%um
), pamięć całkowi-
ta (
%tm
), całkowita, wolna i zajęta pamięć swap
(
%ts
,
%fs
,
%us
). Z dostępnych opcji wybiera-
my te, które chcemy śledzić i umieszczamy je
w zmiennej format.
Uzyskiwanie wolnej lub zajętej przestrze-
ni na dyskach twardych jest nie mniej łatwe jak
w przypadku pamięci podręcznej. Podstawowe
informacje uzyskujemy za pomocą zmiennych
opisanych w Listingu 3. Należy zwrócić uwa-
gę na zmienną mountpoint. Dzięki niej usta-
wiamy ścieżkę dostępu do dysku, którego ob-
jętość chcemy na bieżąco monitorować, np.
mountpoint="/mnt/cdrom"
. Daje to nam moż-
liwość nie tylko do nadzorowania objętości dys-
ków, lecz także poszczególnych katalogów, np.
domowego.
Sieć
Monitorowanie sieci LAN jest kolejnym eta-
pem w tworzeniu naszego widżetu. Znajo-
mość modyfikacji tej części jest bardzo przy-
datna, gdyż zdarzają się tematy Superkaram-
by, w które sami będziemy musieli zmodyfiko-
wać, aby uzyskać pożądany efekt. W tej sekcji
także warto posłużyć się poznanymi już wcze-
śniej znacznikami graph i image do graficznej
prezentacji obciążenia sieci. Istotnymi parame-
trami są device oraz format. Pierwsza z nich
wskazuje na urządzenie sieciowe w naszym
komputerze, dzięki któremu łączymy się z In-
ternetem. Za pomocą drugiego określamy, któ-
ra prędkość nas interesuje – wysyłanie czy po-
bieranie danych. Kolejnym etapem jest pobra-
nie danych dotyczących pobierania/wysyłania
danych. Takie informacje możemy uzyskać
z właściwości naszej karty sieciowej. Linijka
RX bytes odpowiada za aktualne prędkości na-
szego urządzenia. Zależy nam na pobraniu tyl-
ko wartości wysyłania. Wykorzystując polece-
nie
awk
podajemy, którą grupę znaków chcemy
pobrać. (Listing4).
Superkaramba pozwala na pisanie znacz-
nie bardziej rozbudowanych tematów. Warto
wykorzystywać skrypty pisane w językach pro-
gramowania do wprowadzenia większej inte-
rakcji z użytkownikiem.
Listing 2.
Obciążenie, taktowanie i temperatu-
ra procesora
# Procesor -> Obciążenie
image
x
=10
y
=140
path
=
"images/
grid.png"
graph
x
=10
y
=140
sensor
=CPU
w
=200
h
=25
points
=70
color
=255,255,127
text
x
=10
y
=170
value
=
"Obciazenie CPU : "
text
x
=200
y
=170
sensor
=CPU
format
=
"%load%"
align
=right
# Procesor -> Częstotliwość
...
text
x
=176
y
=185
sensor
=program
program
=
"cat /proc/cpuinfo |
grep 'cpu MHz' | sed -e 's/
.*: //'"
...
#Procesor -> Temperatura
...
text
x
=200
y
=200
sensor
=program
program
=
"cat /proc/acpi/thermal_
zone/TZS0/temperature | grep
'temperature' | sed -e 's/.*: //'"
align
=right
interval
=1000
Listing 3.
Zmienne do informacji stanów dysków
%fg – wolna przestrzeń w gigabajtach
%fp – procent wolnej przestrzeni
%ug – zajęta przestrzeń w gigabajtach
%up – procent zajętej przestrzeni
%tg – całkowita pojemnośc dysku w
gigabajtach
Listing 4.
Monitoring prędkości karty sieciowej
image
x
=10
y
=655
path
=
"images/
grid.png"
graph
x
=10
y
=655
sensor
=network
device
=
"eth1"
format
=
"%out"
w
=200
h
=25
color
=255,127,127
interval
=1000
max
=100
text
x
=200
y
=690
sensor
=program
program
="/sbin/ifconfig eth1 |
grep 'RX byte' | awk '{print
$3
$4
}'"
align
=right
interval
=10000
text
x
=10
y
=705
sensor
=network
device
=
"eth1"
format
=
"%out KB/s"
decimals
=1
Piotr Pawłowski jest studentem drugiego ro-
ku Informatyki i Ekonometrii. Z linuxa korzy-
sta od prawie roku jednak od pierwszego
zetknięcia stał się jego wiernym użytkowni-
kiem. Jest czynnym członkiem Koła Nauko-
wego Systemów Informatycznych E-xpert
działającego przy Katedrze Informatyki Eko-
nomicznej Uniwersytetu Gdańskiego.
Kontakt z autorem: p.pawlowski@e-xpert.pl
O autorze