Забежали как-то со смежного отдела люди с просьбой проверять логин/логаут пользователя на windows-машине и оповещать по этим событиям. Ну надо-так надо, на то я тут и сижу, что бы хотелки выполнять.
Подготовка машины.
Перво на перво включаем в групповой политике логон-аудит. Расскажу вкратце, потому что работа с групповыми политиками и без того гуглится на раз-два. Интересующая нас политика находится в Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Audit Policy. Интересующая нас политика называется Audit logon events, необходимое для нас значение — Success, Failure.
Подготовка агента.
- ServerActive — адресс/FQDN заббикс сервера
- Hostname — должен быть ровно таким же (учитывая регистр) как имя этой машины в самом заббиксе
Настройка мониторинга.
Item 1.
- Type — Zabbix agent (active);
- Key — eventlog[Security,@CustomUsername,,,4624|4647,,skip]. Разбираем используемые нами параметры: name (Security) — имя журнала событий, в данном случае нас интересуют логи беопасности; regexp (@CustomUsername) — тут я написал комплексное регулярное выражение, разберём его ниже; eventid (4624|4647) — принимаем только два возможных события successfully logged on и initiated logoff; mode (skip) — пропускать обработку накопленных данных, нам это не нужно, ибо этот айтем будет выступать только в роли кэша.
- Type of information — Log
- History storage period (in days) — можно поставить максимально короткое время, так как это лишь промежуточный айтем.

Идём в Administration\General\Regular expressions. Создаём новое регулярное выражение с именем CustomUsername. Нам необходимы два фильтра:
- Expression type — Result is TRUE; Expression — имя пользователя (или маска соответствующая нескольким именам) логин/логаут которого необходимо отслеживать.
- Expression type — Result is TRUE; Expression — Logon Type: 10|logoff|Logon Type: 2. Да, с этими чудовищными отступами. Первое — совершён удалённый вход на ПК, второе — logoff, третье — совершён непосредственный вход на ПК.

Не обязательный пункт, необходимо для более удобного чтения собираемых данных. Идём в Administration\General\Value mapping. Создаём новый маппинг с двумя вариантами:
- Value — 0, Mapped to — Not logged;
- Value — 1, Mapped to — Logged;

Item 2.
- Type — Calculated;
- Key — logonstatus (в действительности, задавайте любой).
- Formula — 1 — logeventid(«eventlog[Security,@CustomUsername,,,4624|4647,,skip]»,4647) Разбираем: функция logeventid проверяет соответствует ли значение Item (eventlog[Security,@CustomUsername,,,4624|4647,,skip]) регулярному выражению (4647). Результат выполнения 1 — если соответствует, 0 — если не соответствует.
- Type of information — Numeric (unsigned)
- Data type — Decimal;
- Show value — маппинг, который мы создали ранее.
