Jinsi ya Kuunda Seva ya Magogo ya Kati na Rsyslog katika CentOS/RHEL 7


Ili msimamizi wa mfumo atambue au kusuluhisha shida kwenye mfumo wa seva ya CentOS 7 au RHEL 7, lazima ajue na aangalie matukio yaliyotokea kwenye mfumo katika kipindi fulani cha muda kutoka kwa faili za logi zilizohifadhiwa kwenye mfumo kwenye /var./saraka ya logi.

Seva ya syslog kwenye mashine ya Linux inaweza kuchukua hatua kuu ya ufuatiliaji kwenye mtandao ambapo seva zote, vifaa vya mtandao, vipanga njia, swichi na huduma zao nyingi za ndani zinazozalisha kumbukumbu, iwe zinahusiana na suala maalum la ndani au ujumbe wa taarifa tu unaweza kutuma kumbukumbu zao. .

Kwenye mfumo wa CentOS/RHEL 7, Rsyslog daemon ndiyo seva kuu ya kumbukumbu iliyosakinishwa awali, ikifuatiwa na Systemd Journal Daemon (journald).

Seva ya Rsyslog katika ujenzi kama huduma ya usanifu wa mteja/seva na inaweza kufikia majukumu yote mawili kwa wakati mmoja. Inaweza kufanya kazi kama seva na kukusanya kumbukumbu zote zinazotumwa na vifaa vingine kwenye mtandao au inaweza kufanya kazi kama mteja kwa kutuma matukio yote ya mfumo wa ndani yaliyowekwa kwenye seva ya syslog ya mbali.

Wakati rsyslog imeundwa kama mteja, kumbukumbu zinaweza kuhifadhiwa ndani ya faili kwenye mfumo wa faili wa ndani au zinaweza kutumwa kwa mbali badala ya kuziandika kwenye faili zilizohifadhiwa kwenye mashine au kuandika faili za kumbukumbu za matukio ndani ya nchi na kuzituma kwa seva ya mbali ya syslog kwa wakati huo huo.

Seva ya Syslog huendesha ujumbe wowote wa kumbukumbu kwa kutumia mpango ufuatao:

type (facility).priority (severity)  destination(where to send the log)

A. Data ya kituo au aina inawakilishwa na michakato ya mfumo wa ndani ambayo hutoa ujumbe. Katika michakato ya ndani ya Linux (vifaa) vinavyotengeneza kumbukumbu vinasawazishwa kama ifuatavyo:

  • auth = ujumbe unaotokana na michakato ya uthibitishaji (ingia).
  • cron= jumbe zinazotolewa na michakato iliyoratibiwa (crontab).
  • daemon = jumbe zinazotolewa na daemoni (huduma za ndani).
  • kernel = jumbe zinazotolewa na Linux Kernel yenyewe.
  • mail = jumbe zinazotolewa na seva ya barua.
  • syslog = jumbe zinazotolewa na daemon ya rsyslog yenyewe.
  • lpr = jumbe zinazotolewa na vichapishaji vya ndani au seva ya kuchapisha.
  • local0 – local7 = jumbe maalum zinazofafanuliwa na msimamizi (local7 kawaida hutumwa kwa Cisco au Windows).

B. Viwango vya  kipaumbele (ukali) vimesawazishwa pia. Kila kipaumbele kimepewa kifupi cha kawaida na nambari kama ilivyoelezwa hapa chini. Kipaumbele cha 7 ni kiwango cha juu kuliko vyote.

  • kutokea = Dharura – 0
  • tahadhari = Arifa – 1
  • err = Hitilafu - 3
  • warn = Maonyo – 4
  • taarifa = Arifa – 5
  • info = Taarifa – 6
  • debug = Utatuzi - 7

Maneno muhimu ya Rsyslog:

  • * = vifaa au vipaumbele vyote
  • hakuna = vifaa havina vipaumbele vilivyopewa Mfano: mail.none

C. Sehemu ya tatu ya taratibu za syslog inawakilishwa na maagizo lengwa. Rsyslog daemon inaweza kutuma ujumbe wa kumbukumbu kuandikwa katika faili kwenye mfumo wa faili wa ndani (zaidi katika faili iliyo /var/log/ saraka) au kutumwa kwa mchakato mwingine wa ndani au kutumwa kwa koni ya mtumiaji wa ndani (kwa stdout) , au tuma ujumbe kwa seva ya syslog ya mbali kupitia itifaki ya TCP/UDP, au hata utupe ujumbe kwa /dev/null.

Ili Kuweka Mipangilio ya CentOS/RHEL 7 kama Seva kuu ya Rekodi, kwanza tunahitaji kuangalia na kuhakikisha kuwa /var pamoja ambapo faili zote za kumbukumbu zimerekodiwa ni kubwa vya kutosha (kiwango cha chini cha GB chache) ili kuweza kuhifadhi faili zote. logi faili ambazo zitatumwa na vifaa vingine. Ni uamuzi mzuri kutumia kiendeshi tofauti (LVM, RAID) kuweka /var/log/ saraka.

  1. Utaratibu wa Usakinishaji wa CentOS 7.3
  2. RHEL 7.3 Utaratibu wa Kusakinisha

Jinsi ya kusanidi Rsyslog katika Seva ya CentOS/RHEL 7

1. Kwa chaguo-msingi, huduma ya Rsyslog inasakinishwa kiotomatiki na inapaswa kuwa inaendeshwa katika CentOS/RHEL 7. Ili kuangalia ikiwa daemoni imeanzishwa kwenye mfumo, toa amri ifuatayo yenye haki za mizizi.

# systemctl status rsyslog.service

Ikiwa huduma haifanyiki kwa chaguo-msingi, tekeleza amri iliyo hapa chini ili kuanza daemon ya rsyslog.

# systemctl start rsyslog.service

2. Ikiwa kifurushi cha rsyslog hakijasakinishwa kwenye mfumo unaonuia kutumia kama seva kuu ya ukataji miti, toa amri ifuatayo ili kusakinisha kifurushi cha rsyslog.

# yum install rsyslog

3. Hatua ya kwanza ambayo tunahitaji kufanya kwenye mfumo ili kusanidi daemon ya rsyslog kama seva ya kumbukumbu ya kati, ili iweze kupokea ujumbe wa kumbukumbu kwa wateja wa nje, ni kufungua na kuhariri, kwa kutumia mhariri wako wa maandishi unaopenda, usanidi kuu. faili kutoka /etc/rsyslog.conf, kama ilivyowasilishwa katika dondoo hapa chini.

# vi /etc/rsyslog.conf

Katika faili kuu ya usanidi ya rsyslog, tafuta na uondoe maoni kwenye mistari ifuatayo (ondoa alama ya reli #  mwanzoni mwa mstari) ili kutoa mapokezi ya usafiri wa UDP kwa seva ya Rsyslog kupitia lango la 514. UDP ni itifaki ya kawaida inayotumiwa kwa usambazaji wa kumbukumbu na Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. Itifaki ya UDP haina kichwa cha juu cha TCP, ambacho hufanya iwe haraka kwa kusambaza data kuliko itifaki ya TCP. Kwa upande mwingine, itifaki ya UDP haihakikishi kuegemea kwa data zinazopitishwa.

Hata hivyo, ikiwa unahitaji kutumia itifaki ya TCP kwa mapokezi ya kumbukumbu lazima utafute na uondoe maoni kwenye mistari ifuatayo kutoka /etc/rsyslog.conf faili ili kusanidi daemon ya Rsyslog ili kufunga na kusikiliza soketi ya TCP kwenye mlango wa 514. Soketi za kusikiliza za TCP na UDP za mapokezi zinaweza kusanidiwa kwenye seva ya Rsyslog kwa wakati mmoja.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Katika hatua inayofuata, usifunge faili bado, unda kiolezo kipya ambacho kitatumika kupokea ujumbe wa mbali. Kiolezo hiki kitaelekeza seva ya ndani ya Rsyslog mahali pa kuhifadhi ujumbe uliopokewa unaotumwa na wateja wa mtandao wa syslog. Kiolezo lazima kiongezwe kabla ya kuanza kwa uzuiaji wa GLOBAL DIRECTIVES kama inavyoonyeshwa kwenye dondoo hapa chini.

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

Maagizo ya hapo juu ya $template RemoteLogs inaelekeza daemon ya Rsyslog kukusanya na kuandika ujumbe wote wa kumbukumbu uliopokewa kwa faili mahususi, kulingana na jina la mashine ya mteja na kifaa cha mteja cha mbali (programu) ambacho kilitoa ujumbe kulingana na sifa zilizobainishwa zinazowasilishwa katika usanidi wa kiolezo. : %HOSTNAME% na %PROGRAMNAME%.

Faili hizi zote za kumbukumbu zitaandikwa kwa mfumo wa faili wa ndani kwa faili iliyojitolea inayoitwa jina la mwenyeji wa mashine ya mteja na kuhifadhiwa katika /var/log/ saraka.

Sheria ya & ~ kuelekeza kwingine huelekeza seva ya ndani ya Rsyslog kuacha kuchakata ujumbe wa kumbukumbu uliopokewa zaidi na kutupa ujumbe (usiandike kwa faili za kumbukumbu za ndani).

Jina la RemoteLogs ni jina la kiholela lililopewa maagizo ya kiolezo hiki. Unaweza kutumia jina lolote unaloweza kupata linafaa zaidi kwa kiolezo chako.

Ili kuandika ujumbe wote uliopokelewa kutoka kwa wateja katika faili moja ya kumbukumbu inayoitwa baada ya Anwani ya IP ya mteja wa mbali, bila kuchuja kituo kilichozalisha ujumbe, tumia dondoo hapa chini.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Mfano mwingine wa kiolezo ambapo barua pepe zote zilizo na bendera ya kituo cha uthibitishaji zitawekwa kwenye kiolezo kinachoitwa TmplAuth.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Ifuatayo ni dondoo la ufafanuzi wa kiolezo kutoka kwa seva ya Rsyslog 7:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Dondoo la kiolezo hapo juu pia linaweza kuandikwa kama:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Ili kuandika violezo changamano vya Rsyslog, soma mwongozo wa faili wa usanidi wa Rsyslog kwa kutoa amri ya man rsyslog.conf au shauriana na nyaraka za mtandaoni za Rsyslog.

6. Baada ya kuhariri faili ya usanidi ya Rsyslog na mipangilio yako mwenyewe kama ilivyoelezwa hapo juu, anzisha upya daemon ya Rsyslog ili kutekeleza mabadiliko kwa kutoa amri ifuatayo:

# service rsyslog restart

7. Kufikia sasa, seva ya Rsyslog inapaswa kusanidiwa kutenda seva ya kumbukumbu ya kati na kurekodi ujumbe kutoka kwa wateja wa syslog. Ili kuthibitisha soketi za mtandao wa Rsyslog, endesha amri ya netstat na upendeleo wa mizizi na utumie grep kuchuja kamba ya rsyslog.

# netstat -tulpn | grep rsyslog 

8. Ikiwa umewasha SELinux katika CentOS/RHEL 7, toa amri ifuatayo ili kusanidi SELinux ili kuruhusu trafiki ya rsyslog kulingana na aina ya soketi ya mtandao.

# semanage -a -t syslogd_port_t -p udp 514
# semanage -a -t syslogd_port_t -p tcp 514 

9. Ikiwa ngome imewashwa na inafanya kazi, endesha amri iliyo hapa chini ili kuongeza sheria muhimu za kufungua milango ya rsyslog katika Firewalld.

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd –reload

Ni hayo tu! Rsyslog sasa imesanidiwa katika hali ya seva na inaweza kuweka kumbukumbu kati kutoka kwa wateja wa mbali. Katika makala inayofuata, tutaona jinsi ya kusanidi mteja wa Rsyslog kwenye seva ya CentOS/RHEL 7.

Kwa kutumia seva ya Rsyslog kama sehemu kuu ya ufuatiliaji wa ujumbe wa kumbukumbu wa mbali unaweza kukagua faili za kumbukumbu na kuangalia hali ya afya ya mteja au kutatua matatizo ya mteja kwa urahisi zaidi wakati mifumo inapoharibika au inaposhambuliwa kwa namna fulani.