Журнал LinuxFormat - перейти на главную

LXF158:The Journal? Что за штука…

Материал из Linuxformat
Перейти к: навигация, поиск


The Journal? Что за штука?

Джо­на­тан Ро­бертс изу­ча­ет но­вый ин­ст­ру­мент для за­пи­си сис­тем­ных ло­гов.

В Раз­ве мы не го­во­ри­ли о жур­на­лах со­всем недав­но?

О Вер­но, го­во­ри­ли, в свя­зи с Zeitgeist. Но это бы­ла на­столь­ная про­грам­ма для за­пи­си ва­ших по­се­щений фай­лов, что­бы по­том лег­че най­ти эти фай­лы.

В А чем этот но­вый Journal от­ли­ча­ет­ся от старого?

О The Journal – это сис­тем­ный жур­нал. Он не ищет фай­лы, а за­пи­сы­ва­ет ин­фор­ма­цию о ра­бо­те сис­те­мы: дан­ные об ис­поль­зо­вании ре­сур­сов, све­дения о безо­пас­но­сти и ошиб­ках – все это хранит­ся в сис­тем­ных жур­на­лах.

В Но Linux же и так за­пи­сы­ва­ет эту ин­фор­ма­цию. За­тем и нуж­ны все эти .log фай­лы в /var/log/messages, вер­но?

О Да, это так. Когда сис­тем­ным про­цес­сам есть что за­пи­сать, они в фо­но­вом ре­жи­ме по­сы­ла­ют со­об­щение в со­от­вет­ст­вую­щую про­грам­му. Про­ис­хо­дит это по про­то­ко­лу, из­вест­но­му как syslog, а са­мо при­ло­жение на­зы­ва­ет­ся syslog daemon.

В Да, точ­но, мно­гие фо­но­вые про­цес­сы на­зы­ва­ют­ся де­мо­на­ми. Так этот syslog daemon пи­шет в жур­на­лы?

О Пи­шет, в неко­то­рые. У дру­гих при­ло­жений бы­ва­ют и соб­ст­вен­ные сис­те­мы жур­на­ли­ро­вания, и соб­ст­вен­ные фор­ма­ты фай­лов. Ло­ги, со­став­лен­ные syslog, обыч­но пи­шут­ся в фор­ме обыч­ных че­ло­ве­ко-чи­тае­мых тек­сто­вых фай­лов.

В Хо­ро­шо, сколь­ко бы их ни бы­ло, за­чем во­об­ще нуж­на но­вая сис­те­ма жур­на­ли­ро­вания? Ведь Linux сей­час се­бя про­яв­ля­ет очень хо­ро­шо, да­же в сфе­рах очень от­вет­ст­вен­ных; ведь не мо­жет же нынеш­няя сис­те­ма ло­ги­ро­вания по умол­чанию быть пло­хой?

О Она и не плоха, и дей­ст­ви­тель­но мно­гим впе­чат­ля­ет, но ей, как-никак, 30 лет. За это вре­мя бы­ли вы­яв­ле­ны уяз­ви­мо­сти, несо­от­вет­ст­вия раз­рослись в от­дель­ные ре­шения, и поя­ви­лись но­вые про­грам­мы, спо­соб­ные ис­поль­зо­вать жур­на­лы так, как не до­га­да­лись бы прежние соз­да­те­ли syslog.

В Это все об­щие сло­ва, а вы не мог­ли бы при­вес­ти ре­аль­ный при­мер?

О Конеч­но. На са­мом де­ле, раз­ра­бот­чи­ки The Journal су­ме­ли при­вес­ти по­ряд­ка 14 та­ких при­ме­ров.

В Аж целых 14! Вы вро­де го­во­ри­ли, что syslog был не так уж плох.

О Вот именно, и раз­ра­бот­чи­ки syslog все­рь­ез усомнились в том, что все 14 ре­аль­но пра­во­мер­ны. Но в ито­ге с несколь­ки­ми они со­гла­си­лись. В том чис­ле – с про­бле­мой от­сут­ст­вия пра­вил, оп­ре­де­ляю­щих фор­мат за­пи­сы­вае­мо­го лог-фай­ла, и про­бле­мой ин­дек­са­ции, возникаю­щей из-за то­го, что эти фай­лы неот­ли­чи­мы от обыч­ных тек­сто­вых.

В А что тут пло­хо­го, ведь в Linux столь­ко при­ло­жений, что не обой­тись без раз­ных тре­бо­ваний к жур­на­ли­ро­ванию. Ис­поль­зо­вание од­но­го фор­ма­та мо­жет ог­раничить сво­бо­ду их ра­бо­ты.

О Дей­ст­ви­тель­но, ма­лое ко­ли­че­­ст­во тре­бо­ваний к фор­ма­ту со­об­щения де­ла­ет сис­те­му бо­лее гиб­кой и мощ­ной, но в то же вре­мя услож­ня­ет чтение жур­на­лов. Пусть вам нуж­но на­пи­сать про­грам­му для про­смот­ра жур­на­лов яд­ра, Х-сер­ве­ра и поч­ты: при­дет­ся иметь де­ло с тре­мя раз­ны­ми фор­ма­та­ми. Это отнимет вре­мя и уве­ли­чит объ­ем ко­да, а вме­сте с ним и ве­ро­ят­ность оши­бок.

В Да, это и прав­да про­бле­ма. Но я не вполне убе­ж­ден, что тек­сто­вый фор­мат неудо­бен — ведь его мож­но чи­тать при по­мо­щи про­сто­го тек­сто­во­го ре­дак­то­ра, и вы никогда не за­бу­де­те, как это де­ла­ет­ся. Это в сти­ле Unix!

О И да, и нет. От­кры­тый текст дей­ст­ви­тель­но об­ла­да­ет на­зван­ны­ми ва­ми пре­иму­ще­ст­ва­ми, но та­кие фай­лы нель­зя про­ин­дек­си­ро­вать, и их дол­го ис­кать. На­при­мер, что­бы най­ти в жур­на­ле все HTTP-за­про­сы с кон­крет­но­го IP-ад­ре­са, при­дет­ся ис­поль­зо­вать линей­ный по­иск, а в вы­чис­ли­тель­ной сре­де – это очень мед­лен­но.

В Линей­ный по­иск? А вы не поясните, что это такое?

О Про­ще все­го пред­ста­вить се­бе но­во­год­нюю гир­лян­ду, в ко­то­рой не ра­бо­та­ет все­го од­на лам­поч­ка, но из-за нее не го­рит и вся гир­лян­да в це­лом. Что­бы най­ти неис­прав­ную, вам при­дет­ся пе­ре­про­бо­вать все по от­дель­но­сти! А те­перь при­кинь­те, что зна­чит про­де­лать та­кое с де­сят­ка­ми ты­сяч единиц дан­ных.

В Так, суть про­бле­мы яс­на. Но, по­доз­ре­ваю, The Journal с этим спра­вит­ся?

О Имен­но. Пер­вая про­бле­ма снима­ет­ся за счет унифи­ка­ции фор­ма­та жур­на­лов. Ка­ж­дая запись со­сто­ит из ря­да по­лей ключ/зна­чение. По­это­му ка­ж­дая про­грам­ма, об­ра­ща­ясь к жур­на­лам, бу­дет ис­кать нуж­ный ключ в лю­бой за­пи­си, та­ким об­ра­зом на­хо­дя ис­ко­мое зна­чение.

В То есть фор­мат фай­ла ра­бо­та­ет по прин­ци­пу сло­ва­ря? Ключ — это нуж­ное сло­во, а зна­чение — это оп­ре­де­ление?

О Да, так и есть. Сравните это с тек­сто­вы­ми фай­ла­ми syslog, где тип дан­ных, са­ми дан­ные и дру­гая ин­фор­ма­ция пе­ре­ме­ша­ны в ку­чу – причем в ка­ж­дом фай­ле по-сво­ему!

А та­кой под­ход не толь­ко об­лег­ча­ет доступ к фай­лам, но и доста­точ­но ги­бок. Запись мо­жет со­сто­ять из мно­же­ст­ва раз­ных по­лей, но они всегда бу­дут за­пи­са­ны ин­туи­тив­но по­нят­ным и доступ­ным спо­со­бом.

В Хм.... ин­те­рес­но. Но как это свя­за­но со ско­ро­стью на­хо­ж­дения ин­фор­ма­ции?

О На­пря­мую – никак. Но здесь по­мо­жет еще од­на важ­ная функ­ция The Journal. Ка­ж­до­му лог-фай­лу те­перь при­сваи­ва­ет­ся соб­ст­вен­ный длин­ный но­мер, на­зы­вае­мый UUID. Он бу­дет уникаль­ным не для ка­ж­до­го фай­ла в от­дель­но­сти, а для кон­крет­но­го ти­па жур­на­лов. А зна­чит, мож­но соз­дать ин­ст­ру­мен­та­рий для рас­по­зна­вания ти­па жур­на­ла, что­бы за­тем про­смат­ри­вать по­ля толь­ко в них и на­хо­дить необ­хо­ди­мую ин­фор­ма­цию.

В Мно­го­обе­щаю­щее на­ча­ло, но для пол­но­стью но­вой сис­те­мы но­вых функ­ций как-то ма­ло­ва­то.

О На са­мом де­ле, их мно­же­ст­во. Из то­го, что мы еще не упо­мя­ну­ли, The Journal ведь яв­ля­ет­ся ком­понен­том systemd – это но­вей­ший дис­пет­чер служб и сис­те­ма за­груз­ки, ис­поль­зуе­мая мно­ги­ми ди­ст­ри­бу­ти­ва­ми Linux.

В О да, об этом вы уже го­во­ри­ли. При вклю­чении ком­пь­ю­те­ра стар­ту­ют раз­но­об­раз­ные «про­цес­сы» — фо­но­вые про­грам­мы, под­дер­жи­ваю­щие ра­бо­ту ком­пь­ю­те­ра. Systemd кон­тро­ли­рует эти служ­бы, за­став­ляя их за­пускать­ся бы­ст­рее и да­вая воз­мож­ность пе­ре­за­пуска и оста­нов­ки.

О Бра­во, при­ят­но ви­деть, что со­бе­седник те­бя дей­ст­ви­тель­но слу­ша­ет. По­сколь­ку systemd управ­ля­ет служ­ба­ми, мно­гие из ко­то­рых яв­ля­ют­ся про­грам­ма­ми, за­пи­сы­ваю­щи­ми ин­фор­ма­цию, systemd мно­го о них зна­ет. А по­сколь­ку The Journal на­хо­дит­ся в со­ста­ве systemd, он так­же мо­жет поль­зо­вать­ся этой ин­фор­ма­ци­ей. К при­ме­ру, он мо­жет со­би­рать и, что еще важнее, про­ве­рять под­лин­ность массы кон­тек­ст­ной ин­фор­ма­ции, по­лез­ной для от­лад­ки про­грамм: ID про­цес­сов, мес­та хра­нения ис­пол­няе­мых фай­лов, и т. д.

В Про­ве­рять под­лин­ность? По­хо­же, это на­счет безо­пас­но­сти.

О Да. Ведь по су­ти, лю­бая служ­ба мо­жет от­пра­вить со­об­щение в syslog и за­пи­сать ту­да лю­бую ин­фор­ма­цию, а syslog никак не про­ве­ря­ет ее ис­тин­ность. А зло­на­ме­рен­ные про­грам­мы мо­гут восполь­зо­вать­ся этим для эму­ля­ции за­кон­ных про­грамм и мас­ки­ров­ки сво­их дей­ст­вий в жур­на­ле, что­бы вре­дить неза­мет­но. Есть и мно­го дру­гих функ­ций. Чи­тай­те о них в под­роб­ном анон­се вы­хо­да The Journal (http://tinyurl.com/853f73n).

В Не­пре­мен­но. Еще во­прос: ка­ко­вы у The Journal шан­сы на вы­жи­вае­мость? Ни­кто не лю­бит пе­ре­мен, осо­бен­но ес­ли есть дей­ст­вую­щая аль­тер­на­ти­ва.

О Очень хо­ро­ший во­прос. По­сколь­ку The Journal ин­тег­ри­ро­ван в systemd, уже вхо­дя­ще­го в со­став мно­гих ди­ст­ри­бу­ти­вов, есть все шан­сы на то, что он об­ре­тет по­пу­ляр­ность. Тем не менее, су­ще­ст­ву­ет некое пре­ду­бе­ж­дение про­тив са­мой идеи The Journal. Одни со­мнева­ют­ся в его безо­пас­но­сти, дру­гим жал­ко рас­ста­вать­ся с тек­сто­вы­ми фай­ла­ми, тре­тьи счи­та­ют, что луч­ше бы­ло бы под­пра­вить syslog, чем изо­бре­тать ве­ло­си­пед. Не го­во­ря уж о том, что раз­ра­бот­чи­кам мно­гих дру­гих про­ек­тов при­дет­ся пе­ре­пи­сать свои про­грам­мы, что­бы восполь­зо­вать­ся но­вы­ми функ­ция­ми The Journal.

В Так зна­чит, следует ожидать гря­дущих боев?

О Мож­но и так ска­зать. Но не за­бу­дем о том, что на сче­ту раз­ра­бот­чи­ков The Journal как минимум еще несколь­ко весь­ма про­ти­во­ре­чи­вых ре­шений для Linux, вклю­чая небезызвестный PulseAudio. И тем не менее все они во­шли в со­став боль­шин­ст­ва ди­ст­ри­бу­ти­вов, так что, по­хо­же, эти ре­бя­та зна­ют, что де­ла­ют. |

«The Journal – это ком­понент systemd, но­вый дис­пет­чер служб и сис­те­ма за­груз­ки.»

Персональные инструменты
купить
подписаться
Яндекс.Метрика