Көмек

systemd көмегімен жүйелік журналдау

systemd жүйелік менеджері Ubuntu, Debian және CentOS қоса алғанда, заманауи Linux дистрибутивтерінің көпшілігінде бар. Ол серверді және қызметтерді басқару функцияларын, мысалы, іске қосу мен тоқтатуды орындайды, сондай-ақ журналдауға жауап береді. journal деп аталатын systemd журналы ядродан, қызметтерден және қолданбалардан жүйелік хабарламаларды жинайды. systemd көмегімен журналдау syslog-пен қатар жұмыс істей алады немесе оны толығымен алмастыра алады.

Журналмен жұмыс істеу үшін journalctl утилитасы пайдаланылады.

Логтарды қарау және сүзу

Логтардағы уақытты көрсету

Журнал жазбаларын командадағы --utc опциясын пайдаланып, жергілікті уақытпен немесе UTC уақытымен қарауға болады.

Әдепкі бойынша логтар жергілікті уақытпен шығарылады. Уақыт белдеуінің дұрыс бапталғанына келесі команданы орындап көз жеткізе аласыз:

timedatectl status

Дұрыс уақыт белдеуі Local time жолында көрсетіледі.

Егер өзгерістер енгізу қажет болса, қолжетімді уақыт белдеулерінің тізімін қарауға болады:

timedatectl list-timezones

Содан кейін қалаған уақыт белдеуін орнатыңыз:

timedatectl set-timezone уақыт_белдеуі

Осыдан кейін баптауларды timedatectl status командасы арқылы қайта тексеріңіз.

Белгілі бір жүктеу бойынша сүзгі

Соңғы (ағымдағы) жүктеудегі оқиғаларды шығару үшін -b опциясын пайдаланыңыз:

journalctl -b

Егер жазбаларды UTC пішіміндегі уақытпен көрсету қажет болса:

journalctl -b --utc

Қолжетімді жүктеулер тізімін шығару үшін:

journalctl --list-boots

Шығыс мысалы:

-2 b94zf405f9424a1d39b667ce0bdbcff7 Wed 2020-07-08 08:34:12 MSK—Wed 2020-07-08 08:41:22 MSK
-1 t80dc883d180dc04z5db0abcb0dc5fa2 Wed 2020-07-08 09:01:46 MSK—Wed 2020-07-08 09:28:08 MSK
0 8cabc9420ea34a8d868e3014895269d8 Wed 2020-07-08 11:56:57 MSK—Wed 2020-07-08 13:51:27 MSK

Тізімдегі нақты жүктеудің деректерін қарау үшін оның реттік нөмірін (шығыстағы бірінші баған) немесе ID-ін (екінші баған) көрсетіңіз:

journalctl -b -1

# Немесе:

journalctl -b t80dc883d180dc04z5db0abcb0dc5fa2

Егер әдепкі бойынша алдыңғы жүктеулер сақталмаса, конфигурациялық файлға өзгерістер енгізу керек:

sudo nano /etc/systemd/journald.conf

Содан кейін Storage параметрінің мәнін persistent мәніне ауыстырыңыз:

[Journal]
Storage=persistent

Уақыт аралығы бойынша сүзгі

Егер сізді алдыңғы жүктеулермен сәйкес келмейтін кезең қызықтырса, нақты уақыт аралығын көрсетуге болады. Ол үшін келесі опциялар пайдаланылады:

  • --since (бастап)
  • --until (дейін)
  • Уақыт мына пішімде көрсетіледі: "ЖЖЖЖ-АА-КК СС:ММ:СС"
  • Сондай-ақ yesterday (кеше), today (бүгін), now (қазір) кілт сөздерін пайдалануға болады

Мысалы, көрсетілген уақыттан бастап қазіргі сәтке дейінгі оқиғаларды қарау үшін:

journalctl --since "2020-07-06 07:00:00"

Белгілі бір уақыт кезеңіндегі оқиғаларды шығару үшін:

journalctl --since "2020-07-06 07:00:00" --until "2020-07-06 08:00:00"

Ал өткен күннен бергі оқиғаларды көру үшін мынаны пайдаланыңыз:

journalctl --since yesterday

Қызмет (юнит) бойынша сүзгі

Егер сізді тек белгілі бір қызметтің оқиғалары қызықтырса, мына команданы пайдалана аласыз:

journalctl -u қызмет_атауы

Қажет болса, уақыт параметрлерін көрсетуге болады. Мысалы, Nginx-тің белгілі бір сағаттардағы оқиғаларын қарау үшін мынаны орындаңыз:

journalctl -u nginx.service --since 10:00 --until 16:00

Сондай-ақ бірнеше юнитті көрсетуге болады:

journalctl -u nginx.service -u php-fpm.service --since today

Ядро оқиғаларының сүзгісі

-k опциясын пайдаланып, тек ядро оқиғаларын шығаруға болады:

journalctl -k -2

Пайдаланушы, топ немесе процесс бойынша сүзгі

Сондай-ақ нақты PID, UID немесе GID үшін деректерді қарауға болады:

journalctl _PID=процесс_идентификаторы
journalctl _UID=пайдаланушы_идентификаторы 
journalctl _GID=топ_идентификаторы

Мысалы, ағымдағы күндегі белгілі бір процеске қатысты оқиғаларды ғана қарау үшін келесі команданы орындаңыз:

journalctl _PID=544 --since today

Журналдарда жазбалары бар барлық идентификаторлардың тізімін алу үшін мынаны пайдаланыңыз:

journalctl -F _UID 

# GID үшін де солай:

journalctl -F _GID

Басымдық бойынша сүзгі

-p опциясымен белгілі бір басымдық деңгейінен бастап оқиғаларды шығаруға болады. Деңгейлерге мыналар жатады:

  • 0: emerg (апат, жүйе жұмысқа жарамсыз)
  • 1: alert (дабыл, дереу назар аудару қажет)
  • 2: crit (сындарлы күй)
  • 3: err (қате)
  • 4: warning (ескерту)
  • 5: notice (хабарлама)
  • 6: info (ақпарат)
  • 7: debug (жөндеу)

Командада деңгейдің атауын да, оның сандық белгіленуін де көрсетуге болады.

Мысалы, келесі командамен ағымдағы жүктеудегі 3 (қате) және одан жоғары деңгейдегі барлық оқиғаларды қарай аламыз:

journalctl -p err -b 

# Немесе:

journalctl -p 3 -b

Көрсетуді баптау

Негізгі баптаулар

Терминал терезесімен үйлесімді болу үшін жолдардың енін азайту:

journalctl --no-full

Жазбаларды стандартты шығысқа шығару (жазбаларды grep сияқты басқа утилиталармен өңдеуге немесе мәтіндік файлға сақтауға мүмкіндік береді):

journalctl --no-pager

Шығыс пішімдері

Шығыс пішімін -o арқылы көрсетуге болады:

journalctl -o пішім

Қолжетімді пішімдер:

  • cat — қосымша ақпаратсыз, логтардағы хабарламалардың мәтіні ғана;
  • export — журналдарды экспорттауға немесе резервтік көшірмелерін жасауға жарамды бинарлық пішім;
  • json — әр жолда бір жазбадан тұратын стандартты .json пішімі;
  • json-pretty немесе json-sse — оқуға ыңғайлы .json пішімі;
  • short — syslog-қа ұқсас шығыс пішімі;
  • short-iso — ISO8601 уақыт белгілері бар syslog шығыс пішімі;
  • short-monotonic — монотонды уақыт белгілері бар syslog шығыс пішімі;
  • short-precise — уақыты микросекундқа дейін көрсетілетін syslog шығыс пішімі;
  • verbose — қосымша ақпараты бар барынша толық шығыс.

Пайдалану мысалы:

journalctl -b -u nginx.service -o json-pretty

Жақындағы оқиғаларды көрсету

Әдепкі бойынша соңғы 10 оқиға шығарылады:

journalctl -n

Оқиғалар санын нақтылауға болады, мысалы:

journalctl -n 20

Оқиғаларды нақты уақыт режимінде шығару:

journalctl -f

Журналды басқару

Алатын көлемі

Журналдың дискіде алатын көлемін анықтау үшін мына команданы орындаңыз:

journalctl --disk-usage

Көлемді шектеу

Журнал көлемін шектеуге арналған баптауларды оның конфигурациялық файлын өңдеу арқылы беруге болады:

sudo nano /etc/systemd/journald.conf

Келесі параметрлерді баптауға болады:

  • SystemMaxUse= Журналдың дискіде алуы мүмкін ең үлкен көлемі.
  • SystemKeepFree= Логтар сақталғаннан кейін дискіде бос қалуы тиіс көлем.
  • SystemMaxFileSize= Журнал файлының ең үлкен өлшемі, оған жеткенде файл жойылады.
  • RuntimeMaxUse= Логтардың /run файлдық жүйесінде алуы мүмкін ең үлкен көлемі.
  • RuntimeKeepFree= Логтар сақталғаннан кейін /run файлдық жүйесінде бос қалуы тиіс көлем.
  • RuntimeMaxFileSize= Журнал файлының ең үлкен өлшемі, оған жеткенде файл /run файлдық жүйесінен жойылады.

Ескі жазбаларды жою

Ескі жазбаларды тазалау және журнал көлемін азайту үшін екі әдісті пайдалануға болады.

1. Журналды қысқарту керек болатын қалаған көлемді көрсетуге болады. Бұл журнал көлемі көрсетілген мәнге жеткенше ескі жазбалардың жойылуына әкеледі. Мысалы:

sudo journalctl --vacuum-size=1G

2. Деректерді сақтау керек уақыт кезеңін көрсетуге болады. Бұл жағдайда көрсетілген кезеңнен ескі барлық жазбалар жойылады. Мысалы:

sudo journalctl --vacuum-time=1year

Осылайша, соңғы бір жыл ішінде жасалғандарынан басқа барлық жазбалар жойылады.

Сұрақтарыңыз бар болса, жазыңыз