Jinsi ya Kusanidi Seva ya Kuweka Magogo ya Kati na Rsyslog katika Linux


Kumbukumbu ni sehemu muhimu ya programu yoyote au mfumo wa uendeshaji. Kumbukumbu kawaida hurekodi vitendo vya mtumiaji, matukio ya mfumo, shughuli za mtandao na mengine mengi, kulingana na yale yamekusudiwa. Mojawapo ya mifumo inayotumika sana ya ukataji miti kwenye mifumo ya Linux ni rsyslog.

Rsyslog ni mfumo wenye nguvu, salama na wa utendaji wa juu wa usindikaji wa kumbukumbu ambao unakubali data kutoka kwa aina tofauti za chanzo (mifumo/programu) na kuzitoa katika miundo mbalimbali.

Imebadilika kutoka kwa daemoni ya kawaida ya syslog hadi mfumo kamili wa kukata miti wa kiwango cha biashara. Imeundwa kwa mtindo wa mteja/seva, kwa hivyo inaweza kusanidiwa kama mteja na/au kama seva kuu ya ukataji miti kwa seva zingine, vifaa vya mtandao na programu za mbali.

Kwa madhumuni ya mwongozo huu, tutatumia majeshi yafuatayo:

  • Seva: 192.168.241.140
  • Mteja: 172.31.21.58

Jinsi ya Kusakinisha na Kusanidi Seva ya Rsyslog

Usambazaji mwingi wa Linux huja na kifurushi cha rsyslog kilichowekwa mapema. Iwapo haijasakinishwa, unaweza kuisakinisha kwa kutumia zana yako ya kidhibiti kifurushi cha Linux kama inavyoonyeshwa.

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

Mara tu rsyslog ikiwa imewekwa, unahitaji kuanza huduma kwa sasa, iwezeshe kuanza kiotomatiki kwenye buti na uangalie hali yake kwa amri ya systemctl.

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

Faili kuu ya usanidi wa rsyslog iko kwenye /etc/rsyslog.conf, ambayo hupakia moduli, inafafanua maagizo ya kimataifa, ina sheria za usindikaji wa ujumbe wa kumbukumbu na pia inajumuisha faili zote za usanidi /etc/rsyslog.d/ kwa programu/huduma mbalimbali. .

$ sudo vim /etc/rsyslog.conf

Kwa chaguo-msingi, rsyslog hutumia moduli za imjournal na imusock kwa kuleta ujumbe wa kumbukumbu uliopangwa kutoka kwa jarida la mfumo na kwa kukubali ujumbe wa syslog kutoka kwa programu zinazoendeshwa kwenye mfumo wa ndani kupitia soketi za Unix, mtawalia.

Ili kusanidi rsyslog kama seva ya mtandao/kati ya ukataji miti, unahitaji kuweka itifaki (ama UDP au TCP au zote mbili) itatumia kwa mapokezi ya syslog ya mbali pamoja na mlango unaosikiliza.

Ikiwa ungependa kutumia muunganisho wa UDP, ambao ni wa haraka lakini usiotegemewa, tafuta na uondoe maoni kwenye mistari iliyo hapa chini (badilisha 514 na bandari unayotaka isikilize, hii inapaswa kufanana na anwani ya bandari ambayo wateja hutuma ujumbe, tutaangalia. kwa hii zaidi wakati wa kusanidi mteja wa rsyslog).

$ModLoad imudp
$UDPServerRun 514

Ili kutumia muunganisho wa TCP (ambao ni wa polepole lakini unaotegemewa zaidi), tafuta na uondoe maoni kwenye mistari iliyo hapa chini.

$ModLoad imtcp
$InputTCPServerRun 514

Katika kesi hii, tunataka kutumia miunganisho ya UDP na TCP kwa wakati mmoja.

Ifuatayo, unahitaji kufafanua kanuni ya usindikaji wa kumbukumbu za mbali katika umbizo lifuatalo.

facility.severity_level	destination (where to store log)

Wapi:

  • kituo: ni aina ya ujumbe unaozalisha mchakato/programu, ni pamoja na auth, cron, daemon, kernel, local0..local7. Kutumia * kunamaanisha vifaa vyote.
  • severity_level: ni aina ya ujumbe wa kumbukumbu: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Kutumia * inamaanisha viwango vyote vya ukali na hakuna inamaanisha hakuna kiwango cha ukali.
  • lengwa: ni faili ya ndani au seva ya rsyslog ya mbali (imefafanuliwa katika mfumo wa IP: bandari).

Tutatumia kanuni ifuatayo kukusanya kumbukumbu kutoka kwa wapangishi wa mbali, kwa kutumia kiolezo cha RemoteLogs. Kumbuka kuwa sheria hizi lazima ziwe mbele ya sheria zozote za kuchakata ujumbe wa ndani, kama inavyoonyeshwa kwenye picha ya skrini.

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

Ukiangalia kanuni iliyo hapo juu, sheria ya kwanza ni \$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log””.

Maagizo ya $template huiambia rsyslog daemon kukusanya na kuandika ujumbe wote wa mbali uliopokelewa kwa kumbukumbu tofauti chini ya /var/log, kulingana na jina la mpangishaji (jina la mashine ya mteja) na kituo cha mteja cha mbali (programu/programu) ambacho kilitoa ujumbe kama ilivyofafanuliwa. kulingana na mipangilio iliyopo kwenye kiolezo cha RemoteLogs.

Laini ya pili \*.* ?RemoteLogs inamaanisha kurekodi ujumbe kutoka kwa vifaa vyote katika viwango vyote vya ukali kwa kutumia usanidi wa kiolezo cha RemoteLogs.

Mstari wa mwisho \& ~ unaelekeza rsyslog kuacha kuchakata ujumbe mara tu inapoandikwa kwa faili. Ikiwa hutajumuisha & ~, barua pepe zitaandikwa kwa faili za karibu.

Kuna violezo vingine vingi ambavyo unaweza kutumia, kwa maelezo zaidi, tazama ukurasa wa mtu wa usanidi wa rsyslog (man rsyslog.conf) au rejelea hati za mtandaoni za Rsyslog.

Hiyo ni kwa kusanidi seva ya rsyslog. Hifadhi na funga faili ya usanidi. Ili kutumia mabadiliko ya hivi majuzi, anzisha tena daemon ya rsyslog kwa amri ifuatayo.

$ sudo systemctl restart rsyslog

Sasa thibitisha soketi za mtandao wa rsyslog. Tumia ss amri (au grep kuchuja miunganisho ya rsyslogd.

$ sudo ss -tulnp | grep "rsyslog"

Ifuatayo, kwenye CentOS 7, ikiwa umewezesha SELinux, endesha amri zifuatazo ili kuruhusu trafiki ya rsyslog kulingana na aina ya tundu la mtandao.

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

Ikiwa mfumo umewashwa ngome, unahitaji kufungua mlango 514 ili kuruhusu miunganisho yote miwili ya UDP/TCP kwa seva ya rsyslog, kwa kuendesha.

------------- 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 

Jinsi ya Kusanidi Mteja wa Rsyslog ili Kutuma Kumbukumbu kwa Seva ya Rsyslog

Sasa kwenye mfumo wa mteja, angalia ikiwa huduma ya rsyslog inaendesha au la kwa amri ifuatayo.

$ sudo systemctl status rsyslog

Ikiwa haijasakinishwa, isakinishe na uanze huduma kama ilivyoonyeshwa hapo awali.

$ 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

Mara tu huduma ya rsyslog inapoanza na kufanya kazi, fungua faili kuu ya usanidi ambapo utafanya mabadiliko kwenye usanidi chaguo-msingi.

$ sudo vim /etc/rsyslog.conf

Ili kulazimisha daemon ya rsyslog kufanya kama mteja wa kumbukumbu na kusambaza ujumbe wote wa kumbukumbu unaozalishwa ndani kwa seva ya rsyslog ya mbali, ongeza sheria hii ya usambazaji, mwishoni mwa faili kama inavyoonyeshwa kwenye skrini ifuatayo.

*. *  @@192.168.100.10:514

Sheria iliyo hapo juu itatuma ujumbe kutoka kwa vifaa vyote na viwango vyote vya ukali. Kutuma ujumbe kutoka kwa kituo maalum kwa mfano auth, tumia sheria ifuatayo.

auth. *  @@192.168.100.10:514

Hifadhi mabadiliko na funga faili ya usanidi. Ili kutumia mipangilio iliyo hapo juu, anzisha upya daemon ya rsyslog.

$ sudo systemctl restart rsyslog

Jinsi ya Kufuatilia Uwekaji Magogo wa Mbali kwenye Seva ya Rsyslog

Hatua ya mwisho ni kuthibitisha ikiwa rsyslog inapokea na kuingia ujumbe kutoka kwa mteja, chini ya /var/log, katika fomu hostname/programname.log.

Tekeleza ls amri kwa uorodheshaji mrefu wa saraka ya kumbukumbu za wazazi na uangalie ikiwa kuna saraka iitwayo ip-172.31.21.58 (au jina la mwenyeji wa mashine yako ya mteja ni lolote).

 
$ ls -l /var/log/

Ikiwa saraka iko, angalia faili za logi ndani yake, kwa kukimbia.

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

Rsyslog ni mfumo wa uchakataji wa kumbukumbu wa utendaji wa juu, ulioundwa katika usanifu wa mteja/seva. Tunatumahi kuwa unaweza kusakinisha na kusanidi Rsyslog kama seva kuu ya ukataji miti/mtandao na kama mteja kama inavyoonyeshwa katika mwongozo huu.

Unaweza pia kutaka kurejelea kurasa za mwongozo za rsyslog kwa usaidizi zaidi. Jisikie huru kutupa maoni yoyote au kuuliza maswali.