Rsyslog Server

Sistemde ki ayrı ayrı sunucuların veya servislerin düzenli olarak loglarını bir sunucuda toplayıp takip etmenizi kolaylaştırır. Bunu her sunucuya Rsyslog kurup hepsi topladığı veriyi tek bir sunucuya göndermesini söylebilirsiniz.

Sistem Bilgileri

  • RAM : 1 GB
  • Disk : 120 GB
  • CPU : 1 Core
  • IP : 192.168.1.9

Kurulum


apt update && apt upgrade -y
apt install curl wget vim gpg -y

rsyslog yüklemek


sudo apt-get install rsyslog

Burada rsyslog servisini enable ediyoruz ki sistem tekrar başladığında otomatik başlasın. syslog Kullanıcısını adm grubuna ekliyoruz böylece oluşacak log dosyalarını syslog kullanıcısı ve grubu yönetecek.


sudo usermod -a -G adm syslog
systemctl enable rsyslog && systemctl start rsyslog && systemctl status rsyslog

rsyslog config dosyasında belirli yerleri düzenlenmemiz gerekiyor. Burada TCP ve UDP bölümlerinde ki kısımları açıklama satırlarını düzeltin ve en alt hangi sunucudan logları alacağımızı ve nereye kayıt edeceğini yazıyoruz. Bu dizini oluşturmanıza gerek yok kendisi oluşturuyor.


oot@rsyslog:/var/log/grafana# cat /etc/rsyslog.conf
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

#############
authpriv.*                        /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none   /var/log/messages
##############

# Grafana loglarını yaz
if $fromhost-ip == '192.168.1.12' then /var/log/grafana/grafana.log
& stop

# InfluxDB logların yaz
if $fromhost-ip == '192.168.1.11' then /var/log/influxdb/influxdb.log
& stop

# Proxmox loglarını yaz
if $fromhost-ip == '192.168.1.10' then /var/log/proxmox/proxmox.log
& stop

# Uptime Kuma logları nı  yaz
if $fromhost-ip == '192.168.1.13' then /var/log/uptime/uptime.log
& stop

Grafana Loglarını Alma

Grafana config dosyası ile yapmak isterseniz bu yöntemi kullanabilirsiniz fakat burada sadece grafana ile ilgili veriler gelir grafana sunucusu ile ilgili bilgiler gelmez. Bu bize grafananın sunduğu bir şey her serviste bu olacak diye bir şey olmayabilir.


vim /etc/grafana/grafana.ini
[log.syslog]
level = info
format = text
network = udp
address = 192.168.1.9:514 # Rsyslog Suncusunun ip adresi
facility = local0
tag = grafana
mode = syslog

Sonra grafana servisini restartlıyoruz


sudo systemctl restart grafana-server

Geleneksel Yöntem

Sunucu üzerinde rsyslog yükleyebilirsiniz fakat genelde bütün linux dağıtımlarında kendiliğinden yüklü olarak gelir. Aşşağıda ki ifadeyi eklediğinizde bu sunucu da ki logları istediğiniz başka rsyslog sunucusuna yönlendirecektir.


vim /etc/rsyslog.conf
...
# Logları rsyslog sunucusuna gönder
*.* @192.168.1.9:514

Proxmox Loglarını Alma

Proxmox da bu iş biraz daha kolay olacak ilk önce sunucuyu güncelleyip sonra rsyslog paketini yükleceğiz.


apt update
apt install rsyslog

Rsyslog servisini enable edip çalışır duruma getireceğiz.


systemctl enable rsyslog && systemctl start rsyslog && systemctl status rsyslog

Rsyslog dosyasına logları nereye gönderceğini ekleceğiz bu dosyanın en alt satırına bu ifadeyip ekleyip yaptığımız değişikliklerin geçerli olabilmesi için servisi restartlıacağız.


vim /etc/rsyslog.conf
...
# Logları rsyslog sunucusuna gönder
*.* @192.168.1.9:514

systemctl restart rsyslog

InfluxDB Loglarını Alma

Aslında proxmox için yaptığımız şeylerin aynısnı yapacağız grafana gibi kendi config dosyası olmadığı için rsyslog ile yönlendireceğiz ve rsyslog servisini tekrar başlatacağız.


vim /etc/rsyslog.conf
...
# Logları rsyslog sunucusuna gönder
*.* @192.168.1.9:514

systemctl restart rsyslog