Mar 02 2010

Překlad utility SysBench na Debianu Lenny

Tag: Debian,English,HW Tunning,Linux,MySQLJens @ 23:00

Tento článke je k dispozici pouze v jazyce English.


Feb 10 2010

Linuxový repozitář aplikací od Googlu

Tag: Debian,LinuxJens @ 09:30

Na stánkách http://www.google.com/linuxrepositories/ lze najít návody a odkazy na repozitáře software od Googlu — a to pro různé linuxové distribuce: Debian, Ubuntu, Suse, Mandrivia, RedHat. Je zde popsán jak postup přidání repositáře preš „naklikání“ v GUI, tak pomocí příkazového řádku — například pro Debian s APT.

A jaké že to aplikace (je tam i několik knihoven) lze v repositáři nalézt?

  • google-chrome-beta – The web browser from Google
  • google-desktop-linux – Google Desktop: Personalize and organize your own computer
  • picasa – Image management application from Google

Moc toho není, ale komu se nechce složitě schánět/překládat třeba zrovna prohlížeč Google Chrome, může využít právě tuto nejjednodušší cestu.


Aug 12 2009

Není RAID jako RAID – díl 1. Úvod

Tag: HW Tunning,Linux,RAIDJens @ 21:00

Tímto článkem bych chtěl odstartovat sérii několik článků, které budou věnovány diskovým polím RAID a konfiguraci souborového systému (filesystému) v Linuxu vzhledem k maximálnímu výkonu, dostatečné bezpečnosti a minimální ceně. V seriálu se zaměřím především na softwarový RAID vytvořený pomocí utility mdadm, jeho konfiguraci na úrovni fyzických disků a operačního systém, budou popsány metodiky testování a jednotlivé testy, kterým se bude daná konfigurace testovat. Dalším aspektem bude i výběr souborového systému a jeho nastavení – zde se bude volit mezi systémy ext3, ReiserFS a XFS.

Nebude zde popisovat základní typy RAIDu, to už udělali dávno jiní a lépe, viz třeba česká stránka na Wikipedii o RAID, nebo ještě lépe anglická Wikipedia a RAID a mnoho dalších. Zaměřím se spíše na konkrétní konfigurační postupy a testy, na základě kterých bude možné vybrat konkrétní variantu pro konkrétní aplikaci – tou aplikací bude v našem případě databázový server MySQL, jehož výkonnost je mimo jiné silně spjata s výkonem souborového systému úložiště tabulek a dočasných souborů.

Hardwarový RAID

Hardwarový RAID je speciální kus hardware, který umožní vašemu počítači konfigurovat a spravovat diskové pole bez nutnosti instalace jakýkoliv ovladačů a zcela nezávisle na operačním systému.
Hardwarový RAID lze definovat takto:

  • má vlastní speciální procesor a vlastní paměť (ta může být navíc zálohována speciální baterií pro případ výpadku napájení),
  • je naprosto nezávislý na ovladačích a operačním systému, pro operační systém se tváří jako jeden disk (případně více disků v případě konfigurace více logických RAID svazků),
  • jeho cena je typicky dosti vysoká a pohybuje se v našich končinách na spodní hranici kolem 10 tisíc Kč.

Pokud vám tedy někdo bude tvrdit, že jeho deska za 4 000 Kč má hardwarový RAID, tak se tomu můžete klidně zasmát, protože je to zcela jistě nesmysl. Současné desky totiž mají pouze jednoduchou RAID utilitu na definici RAID pole, nicméně bez ovladačů a operačního systému z toho opravdové diskové pole nikdy nedostanete. Navíc ovladače pro takovéto „fake RAIDy“ existují pouze pro Windows a to často ještě v podivné kvalitě. Integrovaný RAID přímo na desce tedy není nic jiného než marketingový tah a podvod na uživatele, kteří problému příliš nerozumí a jsou ochotní připlatit za něco, co dostanou pouze při splnění speciálních požadavků. Navíc v případě problému s ovladačem takovéhoto RAIDu se vám diskové pole rozpadne, v lepším případě přijdete o data, v horším pak ani do systému nenabootujete.

Opravdový hardwarový RAID je však sofistikovaný kus hardware, který obsahuje vlastní procesor pro výpočet paritních dat (které jinak počítá CPU), zajišťuje rozložení výkonu v rámci zvolené úrovně RAID na fyzické disky. Dále řeší sestavení, obnovu a rozšiřování diskového pole v případě přidání fyzického disku, případně v případě výpadku či havárie havarují disků atd. Dále obsahuje speciální paměť – takzvanou „read/write cache”, do které jsou ukládán data před fyzickým zápisem na disky v případě zápisu (operační systému si tak myslí, že data jsou skutečně zapsána na disku a posílá další, kdežto oni jsou ve skutečnosti pouze v rychlé paměti a zapíší se až v okamžiku, kdy má „fyzický disk volno“ – toto je velmi jednoduše řečeno, celé je to mnohem sofistikovanější a podstatně složitější) a v případě čtení jsou zde uloženy před-načtené bloky dat, u kterých se předpokládá že o ně systém požádá v rámci čtení většího bloku dat. Takováto vyrovnávací paměť řadiče je obvykle v rozmezí 64MB512MB a často bývá zálohována speciální baterií (obvykle volitelná komponenta řadiče), která je schopna data ve vyrovnávací paměti udržet i v případě výpadku napájení. To znamená, že data jsou po celou dobu v paměti udržována a v momentě kdy je počítač znovu spuštěn, řadič zajistí jejich zapsání na disk (ještě před zavedením systému).

Toto vše je schopen hardwarový RAID bez potřeby jakéhokoliv operačního systému nebo ovladače. Operační systém pak vidí celé diskové pole jako fyzický disk a není třeba žádných speciálních aplikací na jeho inicializaci a správu. Takovýto řadič se pak stává na operačním systému zcela nezávislý a je možné ho provozovat bez nutnosti podpory ovladačů od výrobce hardware.

Softwarový RAID

Do této kategorie patří tedy i řadiče pevných disků, které si na hardwarový RAID pouze hrají (a zdá se, že výrobcům těchto předražených „akcelerátorů“ tento trik poměrně vychází) a ve skutečnosti vyžadují speciální ovladače, které instaluje do operačního systému – nazývají se „fake RAID”. Bez nich vám diskové pole fungovat nebude a utilita, která se spouští typicky po ukončení BIOSu počítače tak slouží pouze k tomu, abyste do operačního systému poslali informaci o tom, jak by měl váš RAID vypadat.

Jedná se tedy konkrétně o řadiče/čipsety dodávané přímo na základní desce:

  • Intel: (jižní můstky) ICH7R, ICH8R, ICH9R a ICH10R
  • nVidia: (čipsety) nForce4, nForce 500, nForce 600
  • AMD: (jižní můstky) SB450 (čipsety Radeon Xpress 200, Radeon Xpress 1150), SB600 (čipsety AMD 480/570/580)

Dále se pak prodávají speciální karty (to už je však opravdu vrchol zlodějiny a podvodů na neznalé), především od firmy Adaptec (Adaptec jim říká „HostRAID”), které jsou jakési „hardwarové akcelerátory“ pro RAID pole – které však bez OS a speciálních ovladačů nefungují nebo pouze částečně, přičemž jejich cena je poměrně vysoká.

Jedná se konkrétně o tyto produkty:

  • Adaptec 1220SA (cca 1700 Kč),
  • Adaptec 1225SA (cca 1500 Kč),
  • Adaptec 1420SA a 1430SA (cca 3000 Kč),
  • Adaptec 2405 (cca 6-7 tis. Kč !!!)
  • Adaptec 2410SA a 2420SA (cca 7-8 tis. Kč !!!)

Další softwarové RAIDy, které se však vydávají za RAIDy hardwarové naleznete například na stránce Linux SATA RAID FAQ.

mdadm

Základem softwarového RAIDu pro Linux je utilita mdamd (dříve mdctl), která je součastí linuxového jádra od verze 2. Ta vytváří v systému „md“ (multiple devices) zařízení, které se skládají z jednotlivých blokových zařízení (především fyzických disků a jejich oddílů — /dev/hda, /dev/sda atd.). Tato utilita umí vytvářet (bez potřeby jakéhokoliv „fake RAIDu”) RAID 0, RAID 1, RAID 4, RAID 5, RAID 6 a RAID 10 (a další speciální režimy: LINEAR, MULTIPATH a FAULTY).

Další díly seriálů se budou věnovat především práci s utilitou mdamd, popíšu v nich jednotlivé použitelné režimy RAID pro dosažení našeho cíle (maximálnímu výkon, dostatečná bezpečnost a minimální cena), jejich konfiguraci a sestavení na konkrétním hardware pro který budeme diskové pole optimalizovat. To je pro dnešek vše, můžete se těšit na další pokračovaní, které na sebe nedá dlouho čekat.


May 10 2009

BASH: escapovaní podtržítka mezi proměnnými

Tag: LinuxJens @ 01:30

Při vytváření jednoho SHELLového skriptu jsem narazil na jeden zajímavý problém, mám dvě proměnné, potřebu je zřetězit a mezi ně dát podtržítko a předhodit je jako parametr nějaké utilitě. Jelikož však většinou používám double quotes tak mě to s tím podtržítkem nemohlo projít, protože BASH si myslí, že je to celé i s podtržítkem proměnná, ona není definována a tak ji přiřadí null.

#!/bin/bash

NAME="hubert"
TIMESTAMP=`date +%F_%H%M%S`

echo "$NAME_$TIMESTAMP" # vypise pouze $TIMESTAMP bez $NAME: 2009-05-10_011835

Toto nefunguje, protože BASH zcela logicky bere $NAME_ jako proměnnou, problém ale je, že toto: "$NAME_$TIMESTAMP" taky nefunguje, výsledek je lomítko ve výsledném stringu, asi takto: hubert_2009-05-10_011835.

Takže malý příklad, ja to tedy funguje:

#!/bin/bash

PRED="jens"
POST="killer"

echo "$PRED_$POST"  # killer
echo '$PRED_$POST'  # $PRED_$POST
echo $PRED_$POST    # killer
echo ""

echo "$PRED_$POST" # jens_killer
echo $PRED_$POST   # jens_killer

Myslel jsem si, že BASH je jednoduchý a jasný, ale je to horší jak Céčko s makrama a pointrama :) Mám je ještě moc co učit!

A na závěr strašně zajímavé čtení na dobrou noc (četl jsme to několikrát a vždy tam najdu něco nového:): Advanced Bash-Scripting Guide: Special Characters.


May 07 2009

SSH autentizace pomocí klíčů bez hesla

Tag: LinuxJens @ 20:00

Tento článek v rychlosti popisuje SSH autentizaci mezi jednotlivými stroji pomocí dvojice soukromý/veřejný klíč. Nejedná se o nic nového ani převratného, akorát to vždycky zapomenu a tak si to raději napíšu sem, ať vím, kde hledat příště.

Scénář

Dva stroje, jeden franta (192.168.1.1) a druhý hubert (192.168.1.3) a chci se mezi nimi připojovat jednoduše tak, že nepotřebuji žádné heslo — tedy stačí zadat pouze franta:~# ssh hubert a jsem tam (klíče kopíruji pouze pro uživatele root na obou strojích). Stejně tak se chci připojit z huberta na frantu. Žádná parafráze, žádné heslo.

Předpoklad

Nainstalovaný SSH server na obou strojích:

# apt-get install ssh

a v souboru /etc/ssh/sshd_config povolenu autentizaci pomocí klíčů (je to defautlní nastavení Debianu):

RSAAuthentication yes
PubkeyAuthentication yes

Postup

  1. Vytvoření dvojice klíčů na obou strojích, nejdříve hubert (na pořadí nezáleží):
    hubert:~# ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@hubert
    The key's randomart image is:
    ...
    
    a franta to samé, na všechny otázky stačí stisknout <enter>
  2. Přenesení veřejných klíčů jednotlivých strojů na jejich protějšky:
    Klíč z huberta na frantu:

    hubert:~# scp .ssh/id_rsa.pub root@franta:~/hubert_rsa.pub
    root@franta's password:
    id_rsa.pub                                                                  100%  393     0.4KB/s   00:00
    
    a klíč z franty na huberta to samé:
    franta:~# scp .ssh/id_rsa.pub root@hubert:~/franta_rsa.pub
    root@hubert's password:
    id_rsa.pub                                                                  100%  393     0.4KB/s   00:00
    
    Při tomto přesunu budete naposledy potřebovat autentizaci pomocí hesla.
  3. Zapsání veřejného klíče huberta do autentizačního souboru franty a naopak:
    franta:~# cat hubert_rsa.pub >> .ssh/authorized_keys
    hubert:~# cat franta_rsa.pub >> .ssh/authorized_keys

Závěr

V tuto chvíli by již autentizace měla vzájemně fungovat, takže stačí jen vyzkoušet:

franta:~# ssh hubert
Linux hubert 2.6.26-2-amd64 #1 SMP Fri Mar 27 04:02:59 UTC 2009 x86_64
...
hubert:~#

Stejně tak, jako přihlašování přes SSH bude fungovat bez hesla i kopírování přes SCP.


May 06 2009

mdadm: RebuildStarted event na Debianu

Tag: Debian,HW Tunning,LinuxJens @ 21:30

Na několikati Debianích strojích, které mám možnost spravovat jsem si až nedávno všiml velmi pozoruhodného úkazu — každou první neděli v měsíci okolo prvním hodiny ráno vyletí zatížení stroje na poměrně vysoké hodnoty, přičemž převažují především iowaity. V zápětí jsem zjistil že to má nastarost softwarový RAID a démon mdadm, který právě v tuto dobu spouští „kontrolu“ softwarového diskového RAIDu — utilita checkarray.

Příčinu jsem našel v souboru /etc/cron.d/mdadm:

#
# cron.d/mdadm -- schedules periodic redundancy checks of MD devices
#
# Copyright © martin f. krafft <madduck@madduck.net>
# distributed under the terms of the Artistic Licence 2.0
#

# By default, run at 00:57 on every Sunday, but do nothing unless the day of
# the month is less than or equal to 7. Thus, only run on the first Sunday of
# each month. crontab(5) sucks, unfortunately, in this regard; therefore this
# hack (see #380425).
57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet

Předpokládal bych, že tato utilita „nějak“ zkontroluje příslušný MD oddíl a v případě zjištění nedostatků, spustí jeho synchronizaci. Realita je však jiná, na všech strojích spustila tato utilita kompletní synchronizaci všech oddílů.

May  3 00:57:01 localhost /USR/SBIN/CRON[22337]: (root) CMD ([ -x /usr/share/mdadm/checkarray ] && [ $(date +%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet)
May  3 00:57:02 localhost kernel: [141056.924658] md: data-check of RAID array md0
May  3 00:57:02 localhost kernel: [141056.924663] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
May  3 00:57:02 localhost kernel: [141056.924666] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check.
May  3 00:57:02 localhost kernel: [141056.924670] md: using 128k window, over a total of 97659008 blocks.
May  3 00:57:02 localhost kernel: [141056.926736] md: delaying data-check of md1 until md0 has finished (they share one or more physical units)
May  3 00:57:02 localhost kernel: [141056.928064] md: delaying data-check of md2 until md1 has finished (they share one or more physical units)
May  3 00:57:02 localhost kernel: [141056.928070] md: delaying data-check of md1 until md0 has finished (they share one or more physical units)
May  3 00:57:02 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md0
...

Nevím jestli je možné, že za měsíc provozu libovolného stroje se MD svazky tak rozhodí, že je třeba provést pravidelnou synchronizaci, ale přijde mě minimálně divné, že se to dělej na všech vzájemně nezávislých strojích měsíc co měsíc — vždy kompletní synchronizace pro všechny svazky.

May  3 00:57:02 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md0
May  3 01:00:02 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md0
May  3 01:04:02 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md0
May  3 01:07:02 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md0
May  3 01:10:02 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md0
May  3 01:12:11 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md1
May  3 01:12:11 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md0
May  3 01:18:11 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md1
May  3 01:24:11 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md1
May  3 01:30:11 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md1
May  3 01:36:11 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md1
May  3 01:41:31 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md2
May  3 01:41:31 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md1
May  3 01:48:31 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md2
May  3 01:54:31 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md2
May  3 02:02:31 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md2
May  3 02:09:31 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md2
May  3 02:18:00 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md2, component device mismatches found: 128

Z výsledku logu přitom jasně vyplýva, že problém byl nalezen pouze na svazku md3, ale všechny ostatní byly v pohodě.

Proto doporučuji, pokud používate mdadm a váš stroj poskytuje nějakou důležitou službu, jejíž chod by mohlo omezit přílišné zatížení systému v době synchronizace, tuto kontrolu vypnout a spouštět příkazem /usr/share/mdadm/checkarray --cron --all --quiet raději ručně v době, kdy vám to více vyhovuje.


Mar 22 2009

bonnie++: linux filesystem benchmark

Tag: Debian,HW Tunning,LinuxJens @ 01:00

Jak otestovat výkonnost souborového systému na linuxu? Je lepší ext3, ReiserFS, JFS nebo XFS? Jaký RAID použít a jako ho nastavit? Odpověď není jednoduchá, vždy záleží na konkrétní situaci a na konkrétních požadavcích. Jedno je ale jasné, většina z nás chce dosáhnout maximálního výkonu při zachování bezpečnosti uložených dat. To jak otestovat výkonnost filesystému na linuxu je předmětem tohoto článku.

Utilita bonnie++

Tato jednoduchá utilitka testuje zvolený filesystém tím že na něj vytvoří různými způsoby poměrně velké souboru (ve výchozím stavu 2 * velikost RAM po 1 GB — tedy 8 GB RAM = 16 * 1GB souborů), které následně čte a přepisuje. Toto všechno měří a počítá rychlosti jednotlivých operací, navíc v dalších testech umí vyvářet různé (volitelné) množství souborů a adresářů, ke kterým různě přistupuje (mazání a čtení). Otestuje tedy i schopnost filesystému rychle přistupovat k adresářům a souborům.
Instalace bonnie je na Debianu velmi jednoduchá, i ve stable existuje balíček bonnie++:

# apt-get install bonnie++

Spuštění je téměř stejně jednoduché jako instalace, vytvoříte si na testovaném FS nějaký adresář (například /var/bonnie):

# mkdir -m 0777 /var/bonnie
# bonnie++ -d bonnie -u root:root

a už to jede …, výsledek testu se pak zobrazí v textovém formátu přibližně takto (důležitý pro další zpracování je poslední řádek):

jens,16G,62748,98,180566,53,79826,14,71269,94,230871,21,614.8,0,16,31768,100,+++++,+++,+++++,+++,31162,99,+++++,+++,+++++,+++

Tomuto bonnie říká CSV formát, zároveň s utilitou bonnie++ se vám taky nainstalují bon_csv2html a bon_csv2txt. První převádí CSV formát do přehledné HTML tabulky a druhý generuje textovou tabulku.
bon_csv2html lze použít následovně:

# echo "jens,16G,62748,98,180566,53,79826,14,71269,94,230871,21,614.8,0,16,31768,100,+++++,+++,+++++,+++,31162,99,+++++,+++,+++++,+++" | bon_csv2html > bonnie.html

Výsledný soubor bonnie.html je výsledková tabulka s popisky a s výsledky (ke každému testu rychlost a zatížení CPU), pokud provedeme více testování, pak si všechny výsledné řádky dáme do jednoho souboru, např. bonnie.txt a vygenerujete si výsledkovou tabulku pro všechny testy:

# cat bonnie.txt | bon_csv2html > bonnie.html

Při použiti bon_csv2txt získáváte textový výstup:

Version  1.03e      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
jens            16G 62748  98 180566  53 79826  14 71269  94 230871  21 614.8   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
jens             16 31768 100 +++++ +++ +++++ +++ 31162  99 +++++ +++ +++++ +++

Je důležité říci, co znamenají hodnoty ++++ a +++ ve výsledku benchmarku: tento výsledek znamená, že test proběhl tak rychle (méně jako 500ms), že nebylo možně vyhodnotit správnou hodnotu a proto raději nevypíše nic, než nevypovídající číslo. Z tohoto důvodu je třeba parametry spuštění ještě lehce upravit tak, aby benchmark vyvořil více souborů a aby naměřil nějaké relevantní hodnoty. Vetšinou se s tím setkáte u create testů, které vytváří soubory a adresáře. Proto nastavte parametr -n například takto:

# bonnie++ -d bonnie -u root:root -n 16:10000:16:64

Důležité odkazy na bonnie++:


Mar 14 2009

Debian: jak změnit výchozí editor

Tag: Debian,LinuxJens @ 17:31

Debian (Etch i Lenny) používá ve výchozím stavuj editor nano. Toto lze jednoduše změnit pomocí utility update-alternatives. Pokud tedy chcete používat například vi nebo vim namísto nano, tak hurá do toho.

# update-alternatives --config editor

Tento příkaz vám pak dá na výběr, začátečník si pak může vybrat třeba i iterní editor který používá Midnight Commander: mcedit.

franta:~# update-alternatives --config editor

There are 5 alternatives which provide `editor'.

  Selection    Alternative
-----------------------------------------------
          1    /bin/ed
 +        2    /bin/nano
          3    /usr/bin/vim.tiny
*         4    /usr/bin/vim.basic
          5    /usr/bin/mcedit-debian

Press enter to keep the default[*], or type selection number:

Další zajímavá věc, které s tímto tak trochu souvisí je, že v poslední době se ve výchozí instalaci Midnight Commanderu (mc) používá také nano jako výchozí editor. To je poměrně nepříjemné, protože nano mě přijde oproti mcedit jaksi nepřívětivé. Toto lze však také velmi jednoduše změnit, v konfiguraci mc si zaškrtnete use internal edit (viz obrázek).

debian mcedit use internal editor


Jan 11 2009

Jak nainstalovat Monitorix na Debian

Tag: Debian,Linuxadmin @ 23:00

Nedávno jsem objevil další zajímavý nástroj na monitorování systémuMonitorix. Né že by to byla nějaká novinka na poli monitorovacích nástrojů různých systém, těch existuje celá řada, kvalitních a vyzkoušených, co monitorují kde co. Monitorix mě zaujal ale svými screenshoty, které vypadaly z dálky velmi dobře, tak jsem to zkusil nainstalovat. Jelikož to vypadá, že je to poměrně mladý projekt, tak mě bylo jasné že v Debianu balíček určitě nebude, i když používám současný testing (Lenny). Takže klasická instalace ze zdrojáků.

Monitorix monitoruje:

  • CPU: vytížení, procesy, pamět, teplotu
  • Časy procesů user, nice, system, idle a i/o wait)
  • Teploty pomcí LM-Sensors a HDDtemp
  • Využití disků (max. 5 mount-pointů)
  • Síťová rozhraní input/output (max. 5)
  • Aktivitu na uživatelsky definovatelných portech sítového rozhraní
  • Aktivitu přerušení sytému
  • Monitorování služeb SMTP, SSH, FTP, Telnet, Samba, NetAtalk, VirusMail, FAX, POP3 a HTTP
  • … a možná i další


Příprava instalace

V době psaní tohoto článku byla aktuální verze Monitorixu 1.2.2, na oficiálních stránkách je uveden návod na instalaci v Ubuntu, který bohužel se nezdá příliš aktuální. Monitorix používá pro vykreslování grafů nástroj RDDtool, takže před vlastní instalací Monitorixu bude třeba ještě nainstalovat balíček rddtool a knihovnu rddtool librrds-perl pro Perl – protože Monitorix je napsán celý v Perlu.

# apt-get install rrdtool librrds-perl

Instalace Monitorixu ze zdrojáků

# wget http://www.monitorix.org/monitorix-1.2.2.tar.gz
# tar xfz monitorix-1.2.2.tar.gz
# cd monitorix-1.2.2
# ./install.sh

Až se vás to zeptá, jakou distribuci chce instalovat, zvolte: 3 – Debian a poté už další otázky jen potvrďte (případně postupujte dle uvážení).

Příprava na spuštění

V tuto chvíli by teoreticky mohlo být vše připraveno na spuštění, ale to by autor musel odstranit všechny mušky příslušné verze. V první řadě je třeba vytvořit adresář, kam se budou logovat stavy systému aby se z nich následně daly vytvořit grafy.

# mkdir -p /var/lib/monitorix

Dále, ač jsme sice zvolili instalaci pro Debian, tak se nainstaluje defaultní verze konfiguračního souboru /etc/monitorix.conf, proto je třeba jej upravit (jedná se především o řádek 34our $OSTYPE="Linux-RHFC" přepsat na our $OSTYPE="Linux-Debian", další parametry pak podle uvážení a potřeby, včetně sekce vybraných grafů.

our $TITLE="Jens.cz";                   # your company name
our $HOSTNAME="";                       # hostname of this server
our $OSTYPE="Linux-Debian";             # choose your OS type (see below)
our $IDATE="01 Jan 2009";               # initial statistics date
our $SAMBAVER="3";                      # Samba version (2 or 3)
our $MULTIHOST="N";                     # Enable multihost feature
our $MULTIHOST_FOOTER="Y";              # (multihost) display URL in image
our $MULTIHOST_IMGPERLINE="2";          # (multihost) # of images per line
our $REPORT_LANG="en";                  # Report language
our $THEME_COLOR="black";               # Default is "black", none is "white"
our $EMAIL="root@localhost";           # Generic email for reports
our $REFRESH_RATE="150";                # Web stats' refresh rate in seconds
our $ENABLE_CROND_MAIL="N";             # Error messages are sent by crond

Poslední věc co musíte udělat je ověřit nastavení případně přenastavit Apache tak, aby jste měli přes nějakou adresu dostupnou složku /var/www/monitorix (já jsem použil do svého virtual-hostu Alias, protože nemám DocumentRoot ve /var/www) a poté přístup k CGI skriptům přes klasickou URL ../cgi-bin/...

Alias /monitorix/ /var/www/monitorix/

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

Spuštění

A konečně můžete Monitorix spustit. On se sice tváří jako daemon, a spouští přes /etc/init.d/monitorix, ale to je jen skript, který vytvoří minutový cron /etc/cron.d/monitorix, který provádí monitorování systému.

# /etc/init.d/monitorix start

V případě že vám to při spuštění napíše nějakou chybu, tak máte nejspíše špatně nastaven konfigurační soubor a nebo nemáte vytvořené příslušné adresáře (/var/lib/monitorix, /var/www/monitorix).

Zhodnocení

Monitorix lze nainstalovat velmi rychle, jeho konfigurace je taktéž poměrně jednoduchá (v defaultním stavu jsou zobrazeny všechny grafy). Vypnuté jsou pouze statistiky z lm-sensors a hddtemp, které umožňují monitorování hardwaru – teplot, otáček atd. Grafické výstupy jsou obstojné, na úvodní stránce s výběrem zobrazovaného intervalu by se dalo zapracovat a doplnit možnost hodinového zobrazení a možnost zobrazení konkrétního intervalu od – do. Po nahlédnutí do zdrojáku musím říci, že je na celém nástroji ještě hodně práce, spousta věcí je tam jaksi „natvrdo“ a chtělo byt to lepší dokumentaci jak na webu, tak v kódu.

monitorix tool cpu screenshot

Jinak ještě upozorním, že v defaultní konfiguraci se Monitorix pokouší provádět monitorování různých portu síťového rozhraní, to dělá tak, že si přidá vlastní „pravidla“ pomocí iptables. Toto chování se konkrétně mě silně nelíbí, a proto doporučují vypnout před prvním spuštěním monitorování portů pomocí proměnné $ENABLE_PORT na „N“.


Jan 04 2009

Apache mod_rewrite a htaccess na Debianu

Tag: Apache,Debian,LinuxJens @ 23:00

Zprovoznění mod_rewrite pro Apache2 na různých verzích debianu nebylo vždy stejné. Dřívější funkční použití a2enmod vyžadovalo (na prvních verzích Etche) předponu mod_. V současné stable verzi (Etch/6) i v testing (Lenny) se oba přístupy sjednotili a stačí tedy už jen: a2enmod rewrite. Musím připomenou že utilita a2enmod vytváří pouze symbolický link z /etc/apache2/mods-available do /etc/apache2/mods-enabled (takže se bez ní dá jednoduše obejít s využítím ln -s ...).

Celý postup pak tedy vypadá následovně (vše je třeba dělat pod rootem nebo použít sudo).

  1. Povolení modulu
  2. # a2enmod rewrite
    
  3. Nastavení konfigurace Apache pro daný adresář a (virtuální doménu):
    <Directory /var/www/projekt>
    	Options FollowSymLinks
    	AllowOverride All
    </Directory>
    
  4. A konečně, v souboru /var/www/projekt/.htaccess musí být hned na začátku:
    RewriteEngine on

Pokud by jste chtěli být úplně „precizní“, tak se doporučuje ještě v souboru .htaccess zapsat konfiguraci pro přepisovaní pomocí mod_rewrite do podmíněného bloku kde se testuje, zda-li je mod_rewrite natažen. Tedy například takto:

<IfModule mod_rewrite.c>
	RewriteEngine On
	...
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule . /index.php [L]
	...
</IfModule>

Vyzkoušeno na: Lenny: Apache/2.2.9 a Etch: Apache/2.2.3.


Další stránka »