Giunsa ang Pag-setup sa Central Logging Server nga adunay Rsyslog sa Linux


Ang mga log usa ka kritikal nga sangkap sa bisan unsang software o operating system. Ang mga log kasagarang nagrekord sa mga aksyon sa tiggamit, mga panghitabo sa sistema, kalihokan sa network ug daghan pa, depende sa kung unsa ang gituyo niini. Usa sa labing kaylap nga gigamit nga sistema sa pag-log sa mga sistema sa Linux mao ang rsyslog.

Ang Rsyslog usa ka gamhanan, luwas ug high-performance nga log processing system nga modawat sa datos gikan sa lain-laing matang sa tinubdan (systems/applications) ug mopagawas niini ngadto sa daghang mga format.

Nagbag-o kini gikan sa usa ka regular nga syslog daemon hangtod sa usa ka hingpit nga gipakita, sistema sa pag-log sa lebel sa negosyo. Gidisenyo kini sa modelo sa kliyente/server, busa mahimo kining i-configure isip kliyente ug/o isip sentral nga logging server para sa ubang mga server, network device, ug remote applications.

Alang sa katuyoan niini nga giya, among gamiton ang mosunod nga mga host:

  • Server: 192.168.241.140
  • Kliyente: 172.31.21.58

Giunsa ang Pag-install ug Pag-configure sa Rsyslog Server

Kadaghanan sa mga distribusyon sa Linux moabut uban ang rsyslog package nga na-preinstall. Kung wala kini ma-install, mahimo nimo kini i-install gamit ang imong Linux package manager tool sama sa gipakita.

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

Sa higayon nga ma-install ang rsyslog, kinahanglan nimo nga sugdan ang serbisyo sa pagkakaron, himoa kini nga auto-start sa boot ug susihon kini nga status gamit ang systemctl command.

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Ang nag-unang rsyslog configuration file nahimutang sa /etc/rsyslog.conf, nga nag-load sa mga module, naghubit sa global nga mga direktiba, adunay mga lagda alang sa pagproseso sa mga mensahe sa log ug naglakip usab kini sa tanang config files sa /etc/rsyslog.d/ para sa nagkalain-laing mga aplikasyon/serbisyo .

$ sudo vim /etc/rsyslog.conf

Sa kasagaran, ang rsyslog naggamit sa imjournal ug imusock modules alang sa pag-import sa structured log messages gikan sa systemd journal ug sa pagdawat sa mga mensahe sa syslog gikan sa mga aplikasyon nga nagdagan sa lokal nga sistema pinaagi sa Unix sockets, matag usa.

Aron ma-configure ang rsyslog isip usa ka network/central logging server, kinahanglan nimo nga itakda ang protocol (bisan UDP o TCP o pareho) nga gamiton niini alang sa remote nga pagdawat sa syslog ingon man ang port nga gipaminaw niini.

Kung gusto nimo mogamit usa ka koneksyon sa UDP, nga mas paspas apan dili kasaligan, pangitaa ug i-uncomment ang mga linya sa ubos (ilisan ang 514 sa pantalan nga gusto nimo nga paminawon, kini kinahanglan nga mohaum sa address sa pantalan nga ipadala sa mga kliyente ang mga mensahe, among tan-awon sa kini labi pa kung nag-configure sa usa ka kliyente sa rsyslog).

$ModLoad imudp
$UDPServerRun 514

Aron magamit ang koneksyon sa TCP (nga mas hinay apan mas kasaligan), pangitaa ug i-uncomment ang mga linya sa ubos.

$ModLoad imtcp
$InputTCPServerRun 514

Niini nga kaso, gusto namong gamiton ang UDP ug TCP nga koneksyon sa samang higayon.

Sunod, kinahanglan nimo nga ipasabut ang mga lagda alang sa pagproseso sa hilit nga mga troso sa mosunod nga format.

facility.severity_level	destination (where to store log)

diin:

  • pasilidad: mao ang tipo sa proseso/aplikasyon nga nagpatunghag mensahe, kini naglakip sa auth, cron, daemon, kernel, local0..local7. Ang paggamit sa * nagpasabot sa tanang pasilidad.
  • severity_level: mao ang tipo sa log message: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Ang paggamit sa * nagpasabot sa tanang lebel sa kagrabe ug walay usa nga nagpasabot nga walay lebel sa kagrabe.
  • destinasyon: mao ang lokal nga payl o remote rsyslog server (gipasabot sa porma nga IP:port).

Gamiton namo ang mosunod nga ruleset para sa pagkolekta og mga troso gikan sa mga remote hosts, gamit ang RemoteLogs template. Timan-i nga kini nga mga lagda kinahanglan mag-una sa bisan unsang mga lagda alang sa pagproseso sa mga lokal nga mensahe, ingon sa gipakita sa screenshot.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~

Sa pagtan-aw sa mga lagda sa ibabaw, ang unang lagda mao ang \$template RemoteLogs,/var/log/%HOSTNAME%/%PROGRAMNAME%.log.

Ang direktiba nga $template nagsulti sa rsyslog daemon nga tigumon ug isulat ang tanan nga nadawat nga hilit nga mga mensahe sa lahi nga mga log sa ilawom sa /var/log, base sa hostname (ngalan sa makina sa kliyente) ug pasilidad sa hilit nga kliyente (programa/aplikasyon) nga nagpatungha sa mga mensahe ingon gipasabut. pinaagi sa mga setting nga naa sa template nga RemoteLogs.

Ang ikaduhang linya nga \*.* ?RemoteLogs” nagpasabot sa pagrekord sa mga mensahe gikan sa tanang pasilidad sa tanang lebel sa kagrabe gamit ang RemoteLogs template configuration.

Ang katapusang linya nga \& ~ nagmando sa rsyslog sa paghunong sa pagproseso sa mga mensahe sa higayon nga kini gisulat ngadto sa usa ka file. Kung dili nimo iapil ang & ~, ang mga mensahe isulat na hinuon ngadto sa lokal nga mga file.

Adunay daghang uban pang mga templates nga imong magamit, alang sa dugang nga kasayuran, tan-awa ang rsyslog configuration man page (man rsyslog.conf) o i-refer ang Rsyslog online nga dokumentasyon.

Mao kana ang pag-configure sa rsyslog server. I-save ug isira ang configuration file. Aron magamit ang bag-ong mga pagbag-o, i-restart ang rsyslog daemon gamit ang mosunud nga mando.

$ sudo systemctl restart rsyslog

Karon pamatud-i ang rsyslog network sockets. Gamita ang ss command (o grep para salain ang rsyslogd connections.

$ sudo ss -tulnp | grep "rsyslog"

Sunod, sa CentOS 7, kung gipagana nimo ang SELinux, padagana ang mosunud nga mga mando aron tugutan ang trapiko sa rsyslog base sa tipo sa socket sa network.

$ sudo semanage -a -t syslogd_port_t -p udp 514
$ sudo semanage -a -t syslogd_port_t -p tcp 514 

Kung ang sistema adunay firewall nga gipagana, kinahanglan nimo nga ablihan ang port 514 aron tugutan ang duha nga koneksyon sa UDP/TCP sa rsyslog server, pinaagi sa pagdagan.

------------- On CentOS ------------- 
$ sudo firewall-cmd --permanent --add-port=514/udp
$ sudo firewall-cmd --permanent --add-port=514/tcp
$ sudo firewall-cmd --reload

------------- On Ubuntu -------------
$ sudo ufw allow 514/udp
$ sudo ufw allow 514/tcp
$ sudo ufw reload 

Giunsa ang Pag-configure sa Kliyente sa Rsyslog aron Ipadala ang mga Log sa Server sa Rsyslog

Karon sa sistema sa kliyente, susiha kung ang serbisyo sa rsyslog nagdagan o wala sa mosunod nga sugo.

$ sudo systemctl status rsyslog

Kung wala kini ma-install, i-install kini ug sugdi ang serbisyo sama sa gipakita sa sayo pa.

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Sa diha nga ang rsyslog nga serbisyo anaa na ug nagdagan, ablihi ang nag-unang configuration file diin imong himoon ang mga kausaban sa default configuration.

$ sudo vim /etc/rsyslog.conf

Aron pugson ang rsyslog daemon nga molihok isip log client ug ipasa ang tanang locally generated log messages ngadto sa remote rsyslog server, idugang kini nga forwarding rule, sa katapusan sa file sama sa gipakita sa mosunod nga screenshot.

*. *  @@192.168.100.10:514

Ang lagda sa ibabaw magpadala mga mensahe gikan sa tanan nga pasilidad ug sa tanan nga lebel sa kagrabe. Aron magpadala og mga mensahe gikan sa usa ka piho nga pasilidad sama sa auth, gamita ang mosunod nga lagda.

auth. *  @@192.168.100.10:514

I-save ang mga pagbag-o ug isira ang configuration file. Aron magamit ang mga setting sa ibabaw, i-restart ang rsyslog daemon.

$ sudo systemctl restart rsyslog

Giunsa Pag-monitor ang Hilit nga Pag-log sa Rsyslog Server

Ang kataposang lakang mao ang pagmatuod kon ang rsyslog aktuwal nga nagdawat ug nag-log sa mga mensahe gikan sa kliyente, ubos sa /var/log, sa porma nga hostname/programname.log.

Pagdalagan og ls command sa taas nga listahan sa parent logs directory ug susiha kon duna bay directory nga gitawag og ip-172.31.21.58 (o unsa man ang hostname sa imong client machine).

 
$ ls -l /var/log/

Kung naa ang direktoryo, susiha ang mga file sa log sa sulod niini, pinaagi sa pagdagan.

$ sudo ls -l /var/log/ip-172-31-21-58/

Ang Rsyslog usa ka high-performance log processing system, nga gidisenyo sa usa ka client/server architecture. Kami nanghinaut nga makahimo ka sa pag-instalar ug pag-configure sa Rsyslog isip sentro/network logging server ug isip kliyente sama sa gipakita niini nga giya.

Mahimo usab nimong i-refer ang mga may kalabotan nga panid sa manwal sa rsyslog alang sa dugang nga tabang. Mobati nga gawasnon sa paghatag kanamo bisan unsang feedback o pangutana.