2008-09-26 2 views
1

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

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

Мы попытались создать псевдоним DNS для файлового сервера регистрации, чтобы при необходимости указать его на резервную машину, но псевдонимы DNS не работают с файлами Windows.

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

Мы также изучили использование распределенной файловой системы Microsoft, но цена смехотворна.

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

Edit: Я хотел бы избежать создания файла-доли на каждой рабочей станции пользователя, или решения, которые траловых для журналов каждую ночь, так как я хочу, чтобы иметь возможность читать свежие журналы по требованию, или моменты после того, как сообщается о проблеме.

ответ

1

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

3

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

0

Можете ли вы иметь файлы журналов writtin to people local machine, а затем иметь сценарий, который вытаскивает их на общий файловый сервер в качестве ночного пакетного задания?

+0

Это означало бы создание файлового архива на рабочей станции каждого пользователя. Я также хотел бы иметь возможность читать свежие журналы по запросу в любое время. – 2008-09-26 21:01:04

0

Что касается регистратора вашего приложения как услуги абонента (с использованием удаленного доступа). Затем реализуйте LogServers, которые подписываются на приложение. Когда в приложении есть что-то для регистрации, он отправляет его подписчикам. Если есть проблема, например, абонент не отвечает/не работает, а у вас нет работающих подписчиков, пишите локально, но звучите сигнал тревоги. Например. многоуровневую версию классов TraceListener и Debug.

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

0

Мы написали одно приложение, в котором размещены другие приложения (архитектура подключаемого модуля). Когда возникает исключение, необходимая информация записывается в файл XML на машине пользователя (который называется <USERNAME>. Xml). Либо по нашему запросу, либо когда приложение выходит, он отправляет XML в веб-службу, где он записывает файлы в место, где мы можем пойти и проверить их.

Если веб-служба не работает, это не имеет большого значения, поскольку файл XML все еще находится на машине пользователя и будет загружен при следующем запуске приложения.

0

DFS входит в комплект Windows Server, и вы можете использовать regedit, чтобы включить NetBIOS с CNAME.

Я также пробовал Splunk для вытягивания и анализа лог-файлов, но это немного процессорный боров, и я не мог сэкономить мощность. В противном случае, это был довольно хороший продукт.

1

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

+0

Да, это первое, о чем я думал. Может быть, вернуться к файловой системе, если доступ к базе данных журналов невозможен, зарегистрируйте эту ошибку один раз и загрузите все журналы в следующий раз, когда сервер резервное копирование. – dotjoe 2009-06-09 01:48:41

0

записи в базу данных, также (как CALM), так что у вас есть только троллить файлы журнала, когда база данных была вниз

1

Мы используем подход лесозаготовок в известном месте локально, который является общим. Затем легко получить второй процесс, который вытащил эти журналы для последующей обработки (сбрасывать в базу данных, собирать и архивировать и т. Д.). Если процесс сбора данных умирает, то на самом деле ничего не происходит.

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

0

Я согласен с комментарием craigb. В локальной среде следует избегать создания дополнительных отдельных точек отказа.

Мое предпочтение заключается в том, чтобы клиенты регистрировались локально, а затем копировали эти файлы журналов в центральное место. В этом случае, если ваш лог-сервер упадет, серьезных сбоев не будет. Кроме того, иногда запись файла журнала в сеть может быть узким местом производительности.

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

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

Смежные вопросы