Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4625 } | Select-Object TimeCreated, Id, Message
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.Level -eq 2 }
$start = (Get-Date).AddDays(-1) # Логи за последние 24 часа
Get-WinEvent -LogName Security | Where-Object { $_.TimeCreated -ge $start -and $_.Message -match "admin" }
PowerShell удобен, но не всегда эффективен при анализе больших логов. Тут поможет LogParser.
LogParser.exe "SELECT TimeGenerated, EventID, Message FROM System WHERE EventType = 1" -i:EVT
LogParser.exe "SELECT TimeGenerated, SID, Message FROM Security WHERE EventID = 4625" -i:EVT
LogParser.exe "SELECT TOP 10 Image, COUNT(*) AS Hits FROM 'C:\Windows\System32\winevt\Logs\Application.evtx' GROUP BY Image ORDER BY Hits DESC" -i:EVT
LogParser умеет анализировать не только логи, но и файлы CSV, IIS-логи, текстовые файлы и даже WMI-запросы.
#windows #logs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Если вы работаете на современном дистрибутиве linux, то почти наверняка используете systemd, а значит - и journald для сбора логов. Это система логирования, которая умеет куда больше, чем просто показывать логи командой journalctl. Сегодня - о том, как удобно фильтровать и разделять логи по уровню важности (info, warning, error и т.д.) и сервисам, чтобы быстро находить нужную информацию.
journalctl -u nginx.service
Добавьте -b для вывода только с текущей загрузки:
journalctl -u ssh.service -b
journalctl -p err # Только ошибки и критичнее
Список уровней (от менее к более важным):
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
Пример: показать все warning и выше от sshd:
journalctl -u ssh.service -p warning
journalctl --since "1 hour ago"
journalctl --since "2025-09-18" --until "2025-09-19 03:00"
/run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
/etc/systemd/journald.conf можно настроить:
Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=100M
MaxRetentionSec=7day
После правок - перезапустите journald:
systemctl restart systemd-journald
journalctl _TRANSPORT=kernel -p err
Фильтр по PID:
journalctl _PID=1234
По имени бинарника:
journalctl _COMM=nginx
#logs #systemd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5
Systemd умеет не только собирать и хранить логи, но и отдавать их по HTTP. Для этого есть служба
systemd-journal-gatewayd, которая позволяет просматривать журнал прямо в браузере. Настраивается все буквально в пару шагов (пример для debian).
apt install systemd-journal-remote
Запускаем службу:
systemctl start systemd-journal-gatewayd.service
По умолчанию используется порт 19531.
http://10.25.1.55:19531/browse
Только логи текущей загрузки:
http://10.25.1.55:19531/entries?boot
В интерфейсе удобно переключаться между сервисами через выпадающий список.
curl --silent -H 'Accept: application/json' \
'http://10.25.1.55:19531/entries?UNIT=ssh.service'
systemd-journal-gatewayd умеет работать не только с локальным журналом, но и с логами, собранными с других серверов. Для этого можно указать директорию с журналами:
systemd-journal-gatewayd -D /path/to/logs
#systemd #logs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8