Երբ դուք բախվում եք ձեր սերվերի աշխատանքի հետ կապված որևէ խնդրի, առաջին բանը, որ դուք պետք է անեք, ձեր Linux գրանցամատյանների ստուգումն է : Համակարգի գրանցամատյանում կարող եք գտնել օպերացիոն համակարգի տարբեր բաղադրիչներից, ինչպիսիք են միջուկը կամ տարբեր ծառայություններից ստացված որոշ օգտակար ախտորոշիչ հաղորդագրություններ, ուստի, ամենայն հավանականությամբ, այնտեղ կգտնեք խափանման պատճառը:
Գրանցամատյանում յուրաքանչյուր հաղորդագրություն ստեղծվում է օպերացիոն համակարգի որոշակի իրադարձությունների արդյունքում՝ օգտատերից, ծառայության անջատման թույլտվություն կամ հավելվածի ձախողում: Այս իրադարձությունները տարբեր առաջնահերթություններ ունեն՝ կախված այն բանից, թե որքան կարևոր են դրանք: Linux-ում կան իրադարձությունների հետևյալ տեսակները.
emerg- ձախողում, առաջնահերթություն;alert- հրատապ նախազգուշացում;crit- կրիտիկական իրադարձություն;err- սովորական սխալ;warn- սովորական նախազգուշացում;notice- ծանուցում;info- տեղեկատվական հաղորդագրություն;debug- վրիպազերծման տեղեկատվությունը;
Այս պահին Linux-ում logs հավաքագրման հիմնական ծառայություններն են rsyslog-ը և systemd-journald-ը ։ Դրանք համատեղելի են ժամանակակից բաշխման փաթեթների մեծ մասի հետ և աշխատում են անկախ։
rsyslog
Այս ծառայության գրանցամատյանները գտնվում են « /var/log/ » թղթապանակում՝ սովորական տեքստային ֆայլերի տեսքով: Գրանցամատյանի հաղորդագրությունները տեղադրվում են տարբեր ֆայլերում՝ կախված իրադարձության տեսակից: Օրինակ՝ « /var/log/auth.log»- ը պարունակում է համակարգում օգտատերերի լիազորությունների մասին տեղեկատվություն, իսկ « /var/log/kern.log»- ը՝ միջուկի հաղորդագրություններ: Ֆայլերի անունները կարող են տարբեր լինել բաշխման փաթեթների միջև, ուստի եկեք նայենք կարգավորման ֆայլին՝ պատկերացում կազմելու համար, թե որտեղ է գտնվում « /etc/rsyslog.d/50-default.conf»- ը:
Այս կանոնները ցույց են տալիս, թե որ ֆայլն է պարունակում գրանցամատյանի հաղորդագրությունների յուրաքանչյուր տեսակը։ Ձախ մասը ցույց է տալիս հաղորդագրության տեսակը՝ հետևյալ ձևով՝ « [Աղբյուր].[Առաջնահերթություն] », իսկ աջ մասը՝ գրանցամատյանի ֆայլի անունը։ Գրելիս հաղորդագրության տեսակին կարելի է ավելացնել « * » նիշը։ Դա նշանակում է դատարկ արժեք կամ « ոչ մեկը », որը հեռացնում է այն ցանկից։ Եկեք ավելի մանրամասն քննարկենք առաջին երկու կանոնները։
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Առաջին կանոնը նշանակում է, որ լիազորման մեխանիզմից ստացված բոլոր հաղորդագրությունները կգրանցվեն « /var/log/auth.log » ֆայլում: Բոլոր լիազորման փորձերը (ինչպես հաջող, այնպես էլ անհաջող) կգրանցվեն այս ֆայլում: Երկրորդ կանոնը նշում է, որ բոլոր հաղորդագրությունները, բացառությամբ լիազորման հետ կապվածների, կգրանցվեն « /var/log/syslog » ֆայլում: Այս երկու ֆայլերը սովորաբար ամենատարածվածն են: Հետևյալ կանոնները սահմանում են « kern.* » միջուկի գրանցամատյանների և « mail.* » փոստային ծառայության գրանցամատյանների պահպանման ուղին:
Գրանցամատյանի ֆայլերը կարող են բացվել ցանկացած տեքստային խմբագրիչի օգնությամբ, ինչպիսիք են less-ը , cat-ը , tail-ը ։ Եկեք բացենք « /var/log/auth.log » ֆայլը։
less /var/log/auth.log
Ֆայլի յուրաքանչյուր տող առանձին հաղորդագրություն է, որը ստացվել է հավելվածից կամ ծառայությունից: Բոլոր հաղորդագրությունները, անկախ դրանց աղբյուրից, ունեն մեկ ձևաչափ և բաղկացած են 5 մասից։ Որպես օրինակ վերցնենք սքրինշոթում ընդգծված հաղորդագրությունը:
- Հաղորդագրության ժամանակի դրոշմակնիք – «Փետրվարի 12 06:18:33»
- Հաղորդագրություն ուղարկած համակարգչի անվանումը՝ «vds»
- Հաղորդագրություն ուղարկած հավելվածի կամ ծառայության անվանումը՝ «sshd»
- Գործընթացի ID - [653]
- Հաղորդագրության տեքստ - «Ընդունված գաղտնաբառ mihail-ի համար 188.19.42.165 պորտից 2849 ssh2»
Սա SSH-ի հետ հաջող միացման օրինակ էր:
Եվ ահա, թե ինչպես է թվում անհաջող մուտքի փորձը.
Այս ֆայլը նաև գրանցում է առաջադեմ թույլտվություններով հրամաններ
Եկեք բացենք /var/log/syslog ֆայլը
Սքրինշոթի վրա ընդգծված հաղորդագրությունը ցանցային ինտերֆեյսի անջատման մասին հաղորդագրությունն է:
Երկար տեքստային ֆայլերում տեղեկատվություն որոնելու համար օգտագործեք grep ծրագիրը: pptpd ծառայությունից ստացված բոլոր հաղորդագրությունները կարող եք գտնել « /var/log/syslog » ֆայլում:
grep 'pptpd' /var/log/syslog
Ախտորոշման ընթացքում կարող եք օգտագործել tail ծրագիրը, որը կարող է ցուցադրել ֆայլերի վերջին մի քանի տողեր: « tail -f /var/log/syslog » հրամանը թույլ կտա ձեզ դիտել գրանցամատյանների գրանցումը իրական ժամանակում:
Rsyslog ծառայությունը շատ ճկուն է և հզոր։ Այն կարող է օգտագործվել տեղական համակարգերում, ինչպես նաև ձեռնարկության մակարդակում գրանցամատյաններ հավաքելու համար։ Ամբողջական փաստաթղթերը կարող եք գտնել պաշտոնական կայքում՝ https://www.rsyslog.com/:
Տեղեկամատյանների ռոտացիան Linux-ում
Գրանցամատյանի գրանցումը տեղի է ունենում անընդհատ, ուստի ֆայլերի չափը անընդհատ աճում է: Ռոտացիայի մեխանիզմը ապահովում է հին գրանցամատյանների ավտոմատ արխիվացումը և նոր ֆայլերի ստեղծումը: Կախված կանոններից՝ դա կարող է տեղի ունենալ օրական, շաբաթական, ամսական կամ չափի սահմանափակմամբ: Նոր գրանցամատյանների ստեղծմանը զուգընթաց, հիները կարող են պարզապես ջնջվել կամ ուղարկվել էլեկտրոնային փոստով: Գրանցամատյանների ռոտացիան կատարվում է logrotate ծրագրի կողմից: Հիմնական կարգավորումը կարող եք գտնել « /etc/logrotate.conf » ֆայլում: Ֆայլերի պարունակությունը նույնպես մշակվում է « /etc/logrotate.d/ » թղթապանակում :
Նոր կանոնները կարող են մուտքագրվել հիմնական կարգավորման ֆայլում։ Այնուամենայնիվ, լավագույնն է ստեղծել առանձին ֆայլ « /etc/logrotate.d/»- ում ։ Ըստ լռելյայնի, այս գրացուցակում կան մի քանի ֆայլեր։
Եկեք նայենք « /etc/logrotate.d/rsyslog » ֆայլին, որը պարունակում է rsyslog ծառայության գրանցամատյանների պտտման կանոններ ։
Նախ, կանոնը պետք է պարունակի լոգարիթմական ֆայլի ուղին և այնուհետև անցնի բոլոր ուղեցույցները կոր փակագծերում:
- պտտել 7 - պահվող ֆայլերի քանակը - 7
- օրական - ամեն օր ստեղծել նոր ֆայլ
- սեղմել - սեղմել և արխիվացնել հին ֆայլերը
Էկրանի նկարում կարող եք տեսնել, որ « /var/log/ » թղթապանակում գտնվում են հիմնական գրանցամատյանը՝ « syslog »-ը, և 7 արխիվ, որոնք համապատասխանում են կարգավորման ֆայլի կանոններին։
Logrotate-ի ավելի մանրամասն նկարագրությունը կարող եք գտնել ձեռնարկում՝ կատարելով « man logrotate » հրամանը։
Linux-ի տեղեկամատյանների հավաքում - ամսագիր
Systemd-journald-ի տեղեկամատյանների հավաքագրման ծառայությունը systemd- ի նախնականացման համակարգի մի մասն է ։ Linux-ի տեղեկամատյանների ֆայլերը պահվում են « /var/log/journal/ » ֆայլում հատուկ ձևաչափով և կարող են բացվել journalctl ծրագրի օգնությամբ ։ Գրառումների ձևաչափը բացարձակապես նույնն է, ինչ rsyslog- ում ։
Առանց ատրիբուտների journalctl հրամանը ցույց է տալիս բոլոր գրառումները, բայց այն հարմար չէ ավելի մեծ գրանցամատյանների համար։ Եկեք նայենք այս ծրագրի որոշ տարբերակներին։
journalctl -b- ցույց տալ բոլոր գրառումները վերջին մեկնարկից ի վերjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- ցույց տալ գրառումը որոշակի ժամանակահատվածումjournalctl -u pptpd- ցույց տալ որոշակի ծառայության գրառումներըjournalctl -k- ցույց տալ միջուկի հաղորդագրություններըjournalctl -p err- ցույց տալ որոշակի առաջնահերթության հաղորդագրություններ, այս դեպքում ավելի առաջնահերթ հաղորդագրություններ (crit, alert, emerg)journalctl -f- ցույց տալ հաղորդագրությունները իրական ժամանակում
Ավելի մեծ ճկունության համար կարող եք համատեղել այս տարբերակները։ Եկեք ցույց տանք pptpd ծառայության բոլոր սխալները։
journalctl -u pptpd -p err
Եթե որպես ատրիբուտ նշեք կատարվող ֆայլի ուղին, ծրագիրը կցուցադրի այս ֆայլի կողմից ուղարկված բոլոր հաղորդագրությունները: Եկեք ցույց տանք « /usr/bin/sudo » ֆայլի կողմից 2020 թվականի փետրվարի 18-ի, ժամը 04:15-ից ի վեր ուղարկված բոլոր հաղորդագրությունները: Փաստորեն, այն կցուցադրի բոլոր հրամանները, որոնք կատարվել են ավելի բարձր թույլտվություններով:
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Պարզելու համար, թե որքան սկավառակի տարածք են զբաղեցնում գրանցամատյանների ֆայլերը հետևյալ հրամանը կատարելու համար
journalctl --disk-usage
Մատյան ֆայլը 1 Գբ-ով սահմանափակելու համար կատարեք հետևյալ հրամանը
journalctl --vacuum-size=1G
Երկուական ֆայլերի բացում
Հիմա եկեք նայենք « /var/log/ » թղթապանակի որոշ հատուկ ֆայլերի, որտեղ պահվում են բոլոր մուտք գործելու փորձերը: Այս ֆայլերը երկուական են և կարող են բացվել միայն հատուկ ծրագրերով:
/var/log/wtmp ֆայլը պարունակում է հաջող մուտք գործելու փորձերի մասին տեղեկատվություն: Օգտագործեք վերջին ծրագիրը այն բացելու համար:
/var/log/btmp - պարունակում է բոլոր անհաջող մուտք գործելու փորձերը: Այն կարող է բացվել lastb-ով լրացուցիչ թույլտվություններով: Attribute -n-ը սահմանում է ֆայլի վերջից ցուցադրվող տողերի քանակը:
/var/log/lastlog - պարունակում է հաշվի յուրաքանչյուր գրառման վերջին մուտքի գործողության ժամը։ Այն կարող է բացվել lastlog- ով։