debian:syslog-ng

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
debian:syslog-ng [2025/04/30 10:26] Methoddebian:syslog-ng [2025/05/01 19:52] (поточний) – [DNS query logging] Method
Рядок 128: Рядок 128:
 ===== DNS query logging ===== ===== DNS query logging =====
   apt-get install syslog-ng-mod-python   apt-get install syslog-ng-mod-python
 +
 +Підготуємо каталоги
 +
 +Створюємо tmpfs директорію та монтуємо
 +
 +  mkdir -p /var/log/syslog-ng/tmpfs
 +  echo "tmpfs /var/log/syslog-ng/tmpfs tmpfs defaults,size=2G,noatime,nodiratime 0 0" >> /etc/fstab
 +  mount -a
 +  mkdir -p /var/log/syslog-ng/tmpfs/dnsdist
 +
 +Створюємо директорію для архівів
 +  mkdir -p /var/log/syslog-ng/archive/dnsdist
 +
 +Створимо скрипт для переміщення логів
 +<code bash>
 +cat <<EOT > /usr/local/bin/move_old_dns_logs.sh
 +#!/bin/bash
 +
 +SRC_DIR="/var/log/syslog-ng/tmpfs/dnsdist"
 +DST_DIR="/var/log/syslog-ng/archive/dnsdist"
 +
 +# Знайти файли старші за 15 хвилин
 +find "$SRC_DIR" -type f -mmin +15 | while read -r file; do
 +    # Визначити відносний шлях
 +    rel_path="${file#$SRC_DIR/}"
 +    target_dir="$DST_DIR/$(dirname "$rel_path")"
 +
 +    # Створити директорію в цільовому місці
 +    mkdir -p "$target_dir"
 +
 +    # Перемістити файл
 +    mkdir -p "$(dirname "$target_dir/$rel_path")"
 +    mv "$file" "$target_dir/"
 +done
 +
 +# Видалити всі порожні каталоги у вихідному каталозі
 +find "$SRC_DIR" -type d -empty -delete
 +EOT
 +</code>
 +
 +  chmod +x /usr/local/bin/move_old_dns_logs.sh
 +  bash /usr/local/bin/move_old_dns_logs.sh
 +
 +  crontab -e
 +
 +Вписуємо
 +  * * * * * /usr/local/bin/move_old_dns_logs.sh
 +
 +Додатково логи можна переміщати на віддаленний сервер по NFS
 +
 +  apt install nfs-common
 +  mkdir -p /var/log/syslog-ng/nfs
 +  showmount --exports 172.16.0.14
 +  echo "172.16.0.14:/volume2/dns-log /var/log/syslog-ng/nfs/ nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0" >> /etc/fstab
 +  mount -a
 +  mkdir -p /var/log/syslog-ng/nfs/dnsdist
 +
 +Створимо скрипт для переміщення логів
 +<code bash>
 +cat <<EOT > /usr/local/bin/move_dns_logs_to_nfs.sh
 +#!/bin/bash
 +
 +SRC_DIR="/var/log/syslog-ng/archive/dnsdist"
 +NFS_DIR="/var/log/syslog-ng/nfs/dnsdist"   # шлях до каталогу на NFS
 +NFS_MOUNT="/var/log/syslog-ng/nfs/" # основна точка монтування NFS
 +RETENTION_DAYS=100                   # кількість днів для зберігання файлів
 +
 +# Перевірити, чи змонтовано NFS
 +if ! mountpoint -q "$NFS_MOUNT"; then
 +    echo "ERROR: NFS не змонтовано у $NFS_MOUNT."
 +    exit 1
 +fi
 +
 +# Знайти файли старші за 15 хвилин
 +find "$SRC_DIR" -type f -mmin +15 | while read -r file; do
 +    # Визначити відносний шлях
 +    rel_path="${file#$SRC_DIR/}"
 +    target_dir="$NFS_DIR/$(dirname "$rel_path")"
 +
 +    # Створити директорію на NFS
 +    mkdir -p "$target_dir"
 +
 +    # Перемістити файл
 +    mkdir -p "$(dirname "$target_dir/$rel_path")"
 +    mv "$file" "$target_dir/"
 +done
 +
 +# Видалити всі порожні каталоги у вихідному каталозі
 +find "$SRC_DIR" -type d -empty -delete
 +
 +# Видалити файли на NFS, які старші за вказану кількість днів
 +find "$NFS_DIR" -type f -mtime +"$RETENTION_DAYS" -delete
 +
 +# Також видалити порожні каталоги на NFS після видалення файлів
 +find "$NFS_DIR" -type d -empty -delete
 +EOT
 +</code>
 +
 +  chmod +x  /usr/local/bin/move_dns_logs_to_nfs.sh
 +  ln -s /usr/local/bin/move_dns_logs_to_nfs.sh /etc/cron.hourly/move_dns_logs_to_nfs
 +  bash /usr/local/bin/move_dns_logs_to_nfs.sh
  
 <code bash> <code bash>
 cat <<EOT > /etc/syslog-ng/conf.d/source_net_udp_514.conf cat <<EOT > /etc/syslog-ng/conf.d/source_net_udp_514.conf
 source source_net_udp_514 { source source_net_udp_514 {
-    tcp(ip(0.0.0.0) port(514));+    udp(ip(0.0.0.0) port(514) flags(no-parse));
 }; };
 EOT EOT
 cat <<EOT > /etc/syslog-ng/conf.d/source_net_tcp_514.conf cat <<EOT > /etc/syslog-ng/conf.d/source_net_tcp_514.conf
 source source_net_tcp_514 { source source_net_tcp_514 {
-    tcp(ip(0.0.0.0) port(514));+    tcp(ip(0.0.0.0) port(514) flags(no-parse));
 }; };
 EOT EOT
 </code> </code>
- 
- 
  
 <code bash> <code bash>
Рядок 207: Рядок 306:
 #    destination(d_debug_all); #    destination(d_debug_all);
 #}; #};
 +
 +# Фільтр для ігнорування доменів
 +filter f_ignore_domains {
 +    not match("($(cat /etc/syslog-ng/ignore_domains.list | tr '\n' '|' | sed 's/|$//'))" value("MESSAGE"));
 +};
  
 log { log {
Рядок 238: Рядок 342:
     keep_hostname(yes);     keep_hostname(yes);
 }; };
 +EOF
 +</code>
 +
 +Домени, які не будуть логуватися
 +
 +Формат: один домен на рядок
 +<code bash>
 +cat << EOF > /etc/syslog-ng/ignore_domains.list
 +google.com
 +youtube.com
 +facebook.com
 +instagram.com
 +twitter.com
 +netflix.com
 +amazon.com
 +microsoft.com
 +apple.com
 EOF EOF
 </code> </code>
Рядок 243: Рядок 364:
 Перевіримо правильність конфігурацій Перевіримо правильність конфігурацій
   syslog-ng -s -f /etc/syslog-ng/syslog-ng.conf   syslog-ng -s -f /etc/syslog-ng/syslog-ng.conf
 +
 +Тестовий запуск
 +  syslog-ng -Fev
 +або
 +  syslog-ng -R /tmp/syslog-ng.persist -Fevdd
 +
 +З іншої консолі посилаємо тестове повідомлення
 +  logger -n 127.0.0.1 -P 514 -d "Тестове повідомлення через UDP"
  
 Перезапуск служб Перезапуск служб
Рядок 249: Рядок 378:
  
  
 +FIXME
 +  361  nano /usr/local/bin/move_logs_to_nfs.sh
 +  362  nano /usr/local/bin/move_old_logs.sh
 +  382  nano /etc/fstab
 +  393  nano /etc/tmpfiles.d/syslog-ng.conf
 +  394  systemd-tmpfiles --create /etc/tmpfiles.d/syslog-ng.conf
 +  396  systemctl restart syslog-ng
 +FIXME
 +<code bash>
 +cat <<EOT > /etc/syslog-ng/conf.d/dnsdist.conf
 +D /var/log/syslog-ng/tmpfs 0755 root root
 +D /var/log/syslog-ng/tmpfs/buffer 0700 root root
 +D /var/log/syslog-ng/tmpfs/dnsdist 0755 root root
 +EOT
 +</code>
 +FIXME