Zabbix-agent na OpenWrt.

Jakiś czas temu uruchomiłem parę sztuk OpenWrt na routerach Linksysach WRT54GL. Wybór dystrybucji na router podyktowany był głównie tym, że OpenWrt ma spore zaplecze w postaci pakietów z różnymi aplikacjami przygotowanych do bezpośredniego uruchomienia, wśród nich także pakiety Zabbix (nie wiem po co serwer, ale klient się przydaje), czyli niezłego IMO systemu monitoringu.

Niestety, dla przynajmniej w przypadku Kamikadze 8.09.1 po zainstalowaniu zabbix-agent nie działa. Konfig wygląda OK, skrypt uruchamiający jest trywialny, ale po

/etc/init.d/zabbix-agent start

nie pojawił się żaden proces Zabbiksa. Nie tak szybki debug (trick ze zmianą położenia logów był całkiem skteczną przeszkodą – wyglądało jakby ich nie było, a o strace na OpenWrt można zapomnieć) ujawnił, że plik konfiguracyjny ma prawa 600 i właściciela root, a tymczasem proces zabbix-agent jest uruchamiany z użytkownika zabbix. Rozwiązanie to oczywiście:

chmod +r /etc/zabbix/zabbix_agentd.conf

Po tym działa jak trzeba.

Cpulimit, czyli cichy laptop.

Czasem jest tak, że do wykonania jest jakieś zadanie, na czasie wykonania którego nie zależy nam szczególnie, ale wykonujemy je na sprzęcie, który przy większym obciążeniu zaczyna np. hałasować. Dobrym przykładem jest kompresja/dekompresja dużych archiwów lub konwersja filmów na laptopie. Mój laptop praktycznie nigdy nie korzysta z wiatraka. Włącza się on dopiero, gdy procesor osiągnie 75 st. C, ale za to jak się włączy… tragedia, że szkoda słów.

Zwykły nice nie wystarczy (to dobre do zapewnienia dobrej responsywności innych zadań), ale to jest Linux, więc na pewno coś jest, co może pomóc. I rzeczywiście istnieje program, który pozwoli procentowo przydzielić zasoby CPU, a  nazywa się on cpulimit.

Zasada działania jest prosta – uruchomiony program śledzi wskazany proces i okresowo zatrzymać jego działanie (wysyłając SIGSTOP), a następnie, po bardzo krótkiej chwili wznawia je (wysyłając SIGCONT). Dodatkowo oblicza, na ile zatrzymać działanie tak, aby średni czas działania był zgodny z podanym przez użytkownika procentowym udziałem przydzielonego czasu procesora. Żadnych cudów, ale efekt bardzo fajny – po -l 60 (limitowanie do 60%) mam pewność, że wiatrak się nie załączy – temperatura nie zbliża się w okolice krytycznych 75 st. C.

Żeby nie było za dobrze, są też wady. Oczywista to wydłużenie czasu wykonania operacji. Mniej oczywista, to trochę „śmieci” na ekranie (przy uruchomieniu jeden raz pojawia się informacja o zatrzymaniu działania procesu). Kolejna wada, to działanie tylko dla pierwszego procesu pasującego do nazwy (ale to już polecam przeczytanie uwag w man cpulimit).

Ponieważ miałem problem z opcjami -e oraz -P (pewnie zaraz zgłoszenie błędu pójdzie), za to -p działa bez problemu, to, jeśli ktoś koniecznie chce odwoływać się do nazwy, polecam użycie:

cpulimit -p `pidof PROCES` -l 60 -v

Z podobnych zagadnień, jeśli ktoś chciałby przypisać proces do danego CPU, to powinien zainteresować się programem taskset.

UPDATE: Jak Paweł słusznie zauważył w komentarzu (dzięki za info), już było na ten temat pisane. Dodaję linka.

Linki:

  1. Strona domowa programu cpulimit.
  2. Ciekawie wyglądający opis tworzenia demona na bazie programu cpulimit (nie testowałem w praktyce).
  3. Nieco więcej o taskset.
  4. Wpis Grzglo na ten sam temat – parę informacji więcej (zwł. o demonie) oraz dyskusja.
  5. Opis Control Groups w Linuksie – inny, wspierany przez kernel, bardziej uniwersalny, wydaje się, że lepszy (ale i nieco trudniejszy w użyciu) sposób na to samo.

Spięcie folksr i blox – praktyczne wykorzystanie tagów.

Od zawsze brakowało mi na Bloksie tagów. Niedawno pojawiły się i tagi, i miejsce na kod HTML pod wpisem. Na dodatek „programowalne”, czyli pozwalające na użycie zmiennych. 1+1=2, czyli pora na praktyczne wykorzystanie tagów, czyli automagiczne robienie odnośników do innych wpisów o podobnej treści na innych blogach za pośrednictwem serwisu Folksr. Folksr aktualnie wspiera platformę Jogger, wszystkie blogi oparte na WordPressie, oraz daje się spiąć z Blox. Poniżej opis spięcia.

Krok pierwszy – rejestrujemy się w serwisie Folksr. Od razu uprzedzam, że ostatnimi czasy było trochę zamieszania z mailami wysyłanymi do .pl – obecnie dochodzą, ale różnie z tym ostatnio było, więc proponuję cierpliwość.

Krok drugi – dodajemy bloga w serwisie. Podajemy adres, tytuł, podstawowy język z wpisami na blogu, określamy, ile ma być odnośników pod każdym wpisem. Jest też możliwość zawężenia grupy blogów, do których linkujemy (domyślnie korzysta tylko z tagów).

Następnie w Blox wchodzimy w Ustawienia -> Pozostałe i w Pole na dodatkowe tagi META wklejamy podany we Folksr kod weryfikacyjny. Po zatwierdzeniu zmian, możemy kliknąć Zweryfikuj, aby potwierdzić Folksrowi, że to naprawdę nasz blog.

Mnie poprosił jeszcze o wgranie pliku o określonej nazwie i zawartości (Notki -> Pliki), ale chyba zostało to wyłączone aktualnie.

Pora na skorzystanie z dobrodziejstwa zmiennych na Blox: wchodzimy w Ustawinia -> Pozostałe i w polu Dodaj pod każda notką wstawiamy kod:

[div id="folksr"] [/div]
[script type="text/javascript"
src="http://folksr.com/script.php?title={tytul}&tags={tagi_a} "][/script]

Oczywiście zamiast nawiasów kwadratowych muszą być ostre, ale znając Blox, znów mi je wytnie przy każdej edycji, więc wolę napisać tak.

Od tej chwili każde wejście (czyjekolwiek z włączoną obsługą JS) na stronę z wpisem będzie powodowało po pierwsze dodanie tegoż wpisu do bazy Folksr, po drugie, powinny pojawić się odnośniki do wpisów o podobnych tagach.

Jeśli chodzi o wygląd wpisów, to ustawiamy go w serwisie Folksr w Skin Editor (mam angielski jako podstawowy w przeglądarce, więc nie wiem, czy to się nie spolszczy). Ja używam:

[div]
[p]
Podobne wpisy:[br/]
{entry}
[a href="@@link"]@@title[/a] by [b][a href="@@profile"]@@author[/a][/b][br /]
{/entry}
[/p]
[/div]

Oczywiście ponownie zamieniamy wszystkie nawiasy kwadratowe na ostre.

Tyle jeśli chodzi o szybkie howto. Zakładam oczywiście, że nasze wpisy na Blox są już otagowane.

Folksr to młody, polski projekt (więcej o nim można poczytać na blogu autora, a tutaj o algorytmie szukania podobnych wpisów).

Sam projekt nie jest bez wad/błędów/niedoróbek (na razie wyszło skopane kodowanie pl-znaków przy wpisach z Blox – któż by spodziewał się ISO-8859-2? – ma być poprawione). Ja zachęcam do zgłaszania błędów za pośrednictwem Blip (użytkownik folksr oraz tag folksr) no a przede wszystkim do korzystania z serwisu – mi się pomysł bardzo podoba. Autor co prawda jest zajęty, ale może da się go rozruszać. 😉

UPDATE: Blox przy każdym wejściu w edycję w Ustawienia -> Pozostałe radośnie zmienia ciąg &tags na &tags (shift-7 amp dwukropek na shift-7 tags), co – jeśli nie poprawimy tego, a klikniemy Zapisz, powoduje niedodawanie się nowych wpisów do Folksr. Należy mieć na to baczenie za każdym razem w przypadku zmian w tej zakładce.

UPDATE2: Opis integracji dodany do Blox wiki.