Калі ў вас узнікнуць праблемы з прадукцыйнасцю сервера, першае, што вам трэба зрабіць, гэта праверыць журналы Linux . У сістэмным журнале вы можаце знайсці карысныя дыягнастычныя паведамленні ад розных кампанентаў аперацыйнай сістэмы, такіх як ядро або розныя службы, таму, хутчэй за ўсё, вы знойдзеце прычыну збою там.
Кожнае паведамленне ў журнале генеруецца ў выніку пэўных падзей у аперацыйнай сістэме: ад карыстальніка, аўтарызацыі да адключэння службы або збою прыкладання. Гэтыя падзеі маюць розныя прыярытэты ў залежнасці ад таго, наколькі яны важныя. У Linux бываюць наступныя тыпы падзей:
emerg- няўдача, найвышэйшы прыярытэт;alert- тэрміновае папярэджанне;crit- крытычная падзея;err- звычайная памылка;warn- звычайнае папярэджанне;notice- апавяшчэнне;info- інфармацыйнае паведамленне;debug- адладкавая інфармацыя;
На дадзены момант асноўнымі сэрвісамі збору журналаў у Linux з'яўляюцца 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»
- Ідэнтыфікатар працэсу - [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- паказваць паведамленні пэўнага прыярытэту, у дадзеным выпадку паведамленні з больш высокім прыярытэтам (крытычны ўдар, папярэджанне, з'яўленне)journalctl -f- паказваць паведамленні ў рэжыме рэальнага часу
Для большай гнуткасці вы можаце камбінаваць гэтыя параметры. Давайце пакажам усе памылкі службы pptpd
journalctl -u pptpd -p err
Калі вы пазначыце шлях да выканальнага файла ў якасці атрыбута, утыліта пакажа ўсе паведамленні, адпраўленыя гэтым файлам. Давайце пакажам усе паведамленні, адпраўленыя файлам “ /usr/bin/sudo ” з 04:15 18 лютага 2020 года. Фактычна, яна пакажа ўсе каманды, выкананыя з больш высокімі правамі доступу.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Каб даведацца, колькі месца на дыску займаюць файлы часопісаў, трэба выканаць наступную каманду
journalctl --disk-usage
Каб абмежаваць файл часопіса да 1 Гб, выканайце наступную каманду
journalctl --vacuum-size=1G
Адкрыццё бінарных файлаў
Цяпер давайце паглядзім на некаторыя спецыяльныя файлы ў тэчцы « /var/log/ », дзе захоўваюцца ўсе спробы ўваходу ў сістэму. Гэтыя файлы з'яўляюцца двайковымі і могуць быць адкрыты толькі з дапамогай спецыяльных праграм.
Файл /var/log/wtmp змяшчае інфармацыю пра паспяховыя спробы ўваходу. Каб адкрыць яго, выкарыстайце ўтыліту last.
/var/log/btmp — змяшчае ўсе няўдалыя спробы ўваходу ў сістэму. Яго можна адкрыць з дапамогай lastb з пашыранымі правамі доступу. Атрыбут -n вызначае колькасць радкоў, якія адлюстроўваюцца з канца файла.
/var/log/lastlog — змяшчае час апошняга ўваходу ў сістэму для кожнага запісу ўліковага запісу. Яго можна адкрыць з дапамогай lastlog.