RSS
people

PC Watchdog

Endlich mal ist es geschehen, was ich schon längst versprochen habe — Watchdog für einen Rechner ist fertig!

Also, wenn jemand es braucht, sein Rechner oder Server zu überwachen, dann liest weiter!

So. Für Anfang — ein paar Bilder. Natürlich während der Entwicklüng sind ein paar Änderungen vorgenommen wurde, was man auf der Fotos sieht, aber die Platine habe ich nicht neue gemacht, sondern alles auf der alten eingebaut.

So sieht das Teil von Oben:

PCWatchdog Parts side
PCWatchdog Parts side

Und so — von der anderen Seite:

PCWatchdog Bottom side
PCWatchdog Bottom side

Und hier ist es schon in meinem Server:

PCWatchdog in PC
PCWatchdog in PC

Zur Zeit ist das Wathcdog in der Testphase, deswegen habe ist es zu der Reset-Taste noch nicht angeschlossen. 

So. Hier findet man die Schaltplan davon. In Prinzip, nichts besonderes — normale Mega128 von Atmel. USB-Seriell Konverter von FTDI und Relais.

Das Relais habe ich folgendermaßen angeschloßen (Hier ist die Beschreibung von der Schaltung-Methode, russisch. )

Rellay shematic
Rellay shematic

Die Methode funktioniert, und sollte nur an der Schlisphase viel Strom verbrauchen, danach, aber, nur soviel, um das Relais in zugeschaltetem Zustand zu halten. Aber wenn man das Watchdog an einen Noutbook anschließt, dann wird, wahrscheinlich, das Relais nicht schließen können, da die Parameters von Kondensator nicht für von Notebooks Port gelieferten Strom geeignet.

Das ist eigentlich alles über die Schaltung. Natürlich Mega 128 ist ein bisschen zu viel für solche Aufgabe, deswegen werde ich versuchen die Frimware auf Mega 162 oder 16 umzubauen. aber es wird nicht sofort passieren.

Kurz über die Software. Die Firmware ist nicht so besonders kompliziert. Es werden auf dem UART Port die Pakete gelesen, die Kommandos werden geparst, und wenn das Kommando WD_CMD_TRIGGER, ankommt, wird interne Zähler zurückgesetzt. In einem Timer wird der Zähler decrementiert, und wenn der gleich 0 wird, wird das Relais angesteuert. Und in das EEPROM wird ein Eintrag reingeschrieben, dass es ein Reset Evenet passiert.

Genau so über den UART Port können die anderen Kommandos ankommen. Z.B: Request der Information über die Firmware und die Einstellungen des Watchdogs, Setzen die Einstellungen, Request der Log Einträge, Löschen des Logs.

Das Watchdog hängt bei mir auf meinem Linux-Server. Deswegen ist ein Linux-Programm erforderlich, um das Watchdog zu triggern. Nennen wir das als Demon, obwohl das nicht als Demon entwickelt wurde. Das Programm muss ständig laufen. Und wenn das aufgehängt, wird das Watchdog den Server reseten. Und natürlich, muss man das Programm bei jedem Start des Rechner mitstarten. Dafür habe ich den Start-Skript ins Start-Verzeichnis gelegt.

Ach ja. Die Version des Demons liest die Konfigurationsdaten aus dem aktuellen Verzeichnis. Deswegen habe ich ein kleines Skript geschrieben, der speichert das aktuelle Verzeichnis, geht in das Verzeichnis, wo das Demon liegt, starten dem, und geht wieder zurück:

  1. #!/bin/bash
  2. OldDir=`pwd`;
  3. cd /usr/share/PCWatchdog
  4. ./PCWatchDog &
  5. cd $OldDir

In der Konfigurationsdatei kann man volgendes finden:

  1. #This is Config file for PCWatchDog programm
  2. [WatchDog]
  3. ComPortName=/dev/ttyUSB
  4. BaudRate=19200
  5. TriggerDelay=10000
  6. AnswerWaitDelay = 1000
  7. [Network]
  8. LocalPort=30000
  9. [Logging]
  10. LogFile=/var/log/PCWatchDog.log
  11. LogToConsole=1
  12. # 0: LOG_NONE
  13. # 1: LOG_INFO
  14. # 2: LOG_ERROR
  15. # 3: LOG_DEBUG
  16. LogLevel=2

In dem [WatchDog] Bereich befinden sich die Einstellungen für das Watchdog selbst:

  • ComPortName — Name des Kommunikation-Ports. Aber ohne Nummer am Ende! Darüber erzähle ich weiter.
  • BaudRate — Kom.Port Geschwindigkeit.
  • TriggerDelay — Die Zeit, nach der das Demon das WD_CMD_TRIGGER Kommandos schicken wird.
  • AnswerWaitDelay — Die Zeit, währen das Demon auf einen Antwort von dem Watchdog warten wird.

In dem [Network] Bereich ist im Moment nur eine Einstellung: LocalPort. Das ist die Port-Nummer, an der wird das dritte Programm sich anschließen. Darüber ain bisschen später. Vielleicht in einem andern Post.

In dem [Logging] Bereich sind die Einstellungen des Logging System des Demons: 

  • LogFile — die Datei für die Logeinträge.
  • LogToConsole — definiert, ob für Logging die Konsole benutzt werden muss, oder die Log-Datei.
  • LogLevel — definiert, was genau geloggt werden muss:
  • 0 — LOG_NONE — Es wird nichts geloggt.
  • 1 — LOG_INFO — Nur die kleinste Informationsmenge.
  • 2 — LOG_ERROR — es werden noch die Fehlermeldungen dazugeschrieben.
  • 3 — LOG_DEBUG — und auch einige Debug Information.

Jetzt über den Port und seine Nummer. Das Problemm ist das, dass ich den USB-Seriell Konverter benutze. In dem Linux Kernel, laut einigen Forumen, seit der Version 2.6.18 gibt es eine tolle Feature. Den USB Hub ab und zu verschwindet für kurze Zeit und wird wieder aufgetaucht. Und es ist egal, was an dem Hub hängt — ein USB Stick, oder eine Kamera oder noch was. 

Und bei mir wurde es in ein Fehler gewandelt, in dem das Demon nicht mehr ins Port schreiben konnte, weil der nicht mehr da ist. Und wenn USB Hub wieder da wird, wird ein weiteres Serielles Port gemacht, weil der erste von dem Demon besetzt ist.

So. In Google gibt es nicht viel Infomationen darüber. Deswegen habe ich mich folgendes ausgedacht. Sobald das Programm eine Fehlermeldung bekommt, dass das ins Port nicht schreiben kann, wird es versucht einen weiteren Port aufmachen. Und das passiert solange, bis von irgend einem Port eine richtige Antwort kommt. Es werden alle Ports mit der Nummern 0 bis 9 ausprobiert. 

Und dieses Demon funktioniert sowohl als Trigger des Watchdogs, als auch die Anbindung zwischen das Watchdog und dem dritten GUI- Programm, mit dem man die einige Kontrolle über das Watchdog bekommen kann. Darüber werde ich in meinen weiteren Posts berichten. und jetzt ist die Liste der Dateien, die man braucht, um das Teil zu bauen: 

17 комментариев к “PC Watchdog”

  1. marshallab пишет:

    И как, работает?

    По опыту установки компов в качестве серверов, такая система не особо нужна. Хорошее/качественное железо, связанное с управляемым бесперибойником. Винду/сервисы 2000/2003/2008 урезать до необходимого минимума, вход и работа только под юзером (опять же набор прав нужно подправить), антивирус какойнть... годами работает (в магазинах).

    Еще знакомые ставят такие девайсы: коробочка с выходами PS/2 мышь, клава (с УСБ не видел), вроде бы ресет есть, все это через ethternet + vpn подключено к инету = Удаленное управление. Не помню как коробочки называются, но они есть.

  2. MasterAlexei пишет:

    Ну, у меня не коробочка а обычный комп, самосборный и линукс на нем в качестве сервера. Для винды нужна лицензия (незабываем, что я в Германии нахожусь, а тут шутки с нелицинзированным софтом прокатывают не долго, находят быстро ;-) особенно если этот софт в интернет смотрит. ).

    Работает. Может и пол года работать, а может и три дня поработать и в 4е утра зависнуть. Я уж отключил все ненужные процессы, всякие сканеры измененных прав и прочее. Но вот все равно вешается, и в логах ничего не пишет, почему. Т.е. такая плавающая ошибка.

    Еще он зависать может, когда достаточно запылился, и проц перегревается, тогда, по частым ресетам можно уже сделать вывод, что пришел таки час профилактических работ с пылесосом ;-) Вот такой брутальный метод определения запыления :-D

  3. MasterAlexei пишет:

    Прочитал твой коммент повнимательней: «по опыту установки компов в качестве серверов...». А на критические задачи ставили компы? Там где софту доверяют в последнюю очередь. Вот там вот как раз таки без вачдога не обойтись. Например станции слежения/наблюдения за электро сетями (это те, которые сразу за электростанциями, т.е. наблюдают сети с напругой в 10 КВ и больше). Мне как то посчастливилось программить один такой компик. Конечно с обычным домашним компом ничего общего. Но без вачдога его даже в стойку не поставят ;-) Не говоря о том, что не включат без него.

  4. marshallab пишет:

    Привет. Нет, у меня попроще «сервера». Продуктовые и другие магазины: один комп главная база, кассы периферийные базы. Но если что глюканет, да еще какойнть умник начнет бочку в мое сторону катить... ничего приятного. Так что качественное новое железо и полное урезание прав и свобод пользователям/персоналу. Так спокойней.

  5. Vetal пишет:

    хм... Mega128, mega162... Думаю тут достаточно какой-нибудь tiny13 если с FTDI или mega8 без FTDI.

    А зачем конденсатор в цепи реле ?

  6. MasterAlexei пишет:

    Ну, как бы, сейчас код для вачдога занимает 9696 байт. Т.е. в мегу 8 уже не влезет. А вы туда хотели еще и УСБ драйвер воткнуть ;-)

    Конденсатор в цепи реле, чтобы реле сработало, «сорвало» якорь. А когда он зарядится, то через сопротивление уже идет меньше тока, так как чтобы удерживать якорь много тока не надо. Там по ссылке на сайт DI HALTa все подробно описано про это.

  7. Vetal пишет:

    Ого... Если это только вачдог что-то очень раздут. Что он у вас такое делает? Анализирует адекватность ответов сервера? :) Весь функционал надо переносить на PC. Про конденсатор понял, приму на вооружение, но в вашем случае он не нужен, т.к. всего на долю секунды надо замкнуть Reset.

  8. MasterAlexei пишет:

    А вы продолжение читали? Самая свежая статься на сайте, пока что. Там и написано, чего оно так «раздуто».

    Кстати — я вот тут мыслю одну обрабатываю сейчас — и еще «вдую» в него небольшую функциональность — будет у меня температуру мониторить в сервере, чтобы можно было ее в логи сохранять ;-) и потом на сервере в виде графика представлять.

  9. MasterAlexei пишет:

    Функционал на PC. Вачдог как раз таки нужен для того, чтобы смотреть, чтобы этот PC, с перенесенным на него функционалом, не завис случаем. А то толку от этого «перенесенного» функционала будет не так много.

  10. Vetal пишет:

    Вачдог на то и вачдог что от него не требуются фитчи, он просто должен нажать резет. Посмотрите на вачдог в микроконтроллере может просто его использовать.

    З.Ы. я вас не осуждаю, просто думаю что можно проще смотреть на жизнь

  11. MasterAlexei пишет:

    Ага. Но мне почему то еще хочется, чтобы он мне показал, сколько раз он нажал на ресет, когда именно это произошло, чтобы он попищал малость перед тем как нажать на ресет. И чтобы я мог навремя отключить его, не вскрывая корпус, например, чтобы перезапустить некоторые службы и при этом демон вачдога будет вырублен, и ресет в данный момент не желателен. Так же мне бы хотелось настраивать время, когда при отсутствии сигнала с наблюдаемого компа нажмется ресет.

    Почему все думают, что вачдог — это такая штучка, которой даже питания не надо подавать? Это вам не будильник, который раз в сутки звонит и говорит, что пора на работу.

    Ну и потом, мне бы очень не хотелось, чтобы именно по вине вачдога, а не самого сервера, этот сервер перегружался. Т.е. он должен быть более менее надежным и не допускать ложных срабатываний.

  12. Vetal пишет:

    Чем умнее устройство тем больше в нем багов и склонность к зависанию.

    1. Сколько раз он нажал резет — эти логи можно и нужно вести сразу на компьютере. Запоминать в вачдоге только последний резет.

    2. Отключить — тупо тумблер, хотя можно и по оригинальнее, но на размере прошивки это не сильно скажется.

    3. настраивать время — согласен, надо.

    З.Ы. Просмотрел исходник. Не нашел функцию main. Где комментарии? Мало что понял. :)

  13. MasterAlexei пишет:

    >1. Сколько раз он нажал резет — эти логи можно и нужно вести сразу на компьютере. Запоминать в вачдоге только последний резет.

    Интересно, как вы собираетесь на зависшем компе вести логи?

    >2. Отключить — тупо тумблер, хотя можно и по оригинальнее, но на размере прошивки это не сильно скажется.

    Такой сценарий — ваш сервер стоит, скажем, далеко в сибири (я в географии не силен, но вы меня поняли — далеко в общем) и собирает данные о погоде. Вы находитесь в, ну скажем в Москве. Вы поедете туда, чтобы переткнуть два проводка, а потом, через денек, еще раз, чтобы снова их воткнуть. Да? И кто будет финансировать вам такую увесилительную поездку?

    >З.Ы. Просмотрел исходник. Не нашел функцию main. Где комментарии? Мало что понял.

    Коментарии я пишу на работе. А дома я отдыхаю от работы ;-) Вот такая вот отговорка. А вообще в своем коде я пишу комменты, обычно, но в таких местах, где уж точно хрен чего поймешь без них. А тут все вроде как понятно. Я специально старался избегать имен пременных/функций типа a1 b2 c3 и так далее.

    main находится в PCWatchdog.с

    Если вы мне экзамен решили устроить, то его мне уже устроил мой текущий работодатель. И остался вполне доволен, о чем говорит мой заработок. Хотя хотелось бы и побольше малость :)

  14. Vetal пишет:

    Что вы, ни о каком экзамене не может быть и речи. Только выражаю свое мнение по вашему проекту и критика (надеюсь объективная). Про комментарии просто вопрос, без упрека.

    Считаю что вы слишком отклонились от первоначальной цели.

    >>1. После перезагрузки сразу прочитать когда она произошла и сохранить.

    >>2. Такой сценарий: как вы собираетесь отключить удаленно вачдог если сервер висит?

    >>З.Ы. просто, мое мнение: «много букв» можно проще и надежней.

    З.Ы Сейчас начну с main :)

  15. MasterAlexei пишет:

    Эммм. Я даже потерялся, чего ответить :)

    Вачдог отключать надо если сервер живой, и вам не надо его перегружать, когда вы выполняете на нем профилактические работы. Почему то мне казалось что в моих постах я донес эту мысль правильно. Видимо сказывается долгое пребывание в среде, которая по русски не разговаривает :)

    А вот если он завис, то на это и нужен вачдог, что бы он его перегрузил.

    После перезагрузки, как бы некоторые системы и сами пишут, что они включились. Тот же линукс, проблема только в том, что они об этом пишут всегда, даже когда во всем здании свет отключают и потом снова включают. Т.е. есть вероятность не узнать, по причине зависа произошел рестарт или же просто уборщица со шваброй мимо проходила.

    Можно проще — не спорю, но в ущерб функциональности.

  16. shworker пишет:

    Для измерения температуры и не только и выдачи оных в виде графиков есть волшебные слова

    lmsensors / net-snmp / rrdtool

  17. MasterAlexei пишет:

    2 shworker:

    Круть. Только вот все эти волшебные слова нихрена не помогают, когда ядро исследуемого «пациента» паникует, однако.

Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.