Како поједноставити анализу евиденције Доцкер контејнера помоћу Еластиц Стацк-а

Евидентирање је кључна компонента било које апликације. Евиденције вам омогућавају да анализирате и увидите оно што се догађа у коду ваше апликације попут приче. Програмери софтвера проводе велик део свог свакодневног живота надгледајући, решавајући проблеме и отклањајући грешке у апликацијама, што понекад може бити ноћна мора. Евидентирање омогућава програмерима да овај ужурбани процес учине много лакшим и лакшим.

Ако сте контејнерирали своју апликацију са платформом контејнера као што је Доцкер, можда су вам познати дневници доцкеракоји вам омогућава да видите евиденције креиране у вашој апликацији које се изводе у вашем спремнику доцкера. Зашто онда мислите на Еластиц Стацк да бисте анализирали своје евиденције? Па, овде су углавном два горућа проблема:

  • Замислите да имате десетине, стотине, па чак и хиљаде контејнера који генеришу дневнике - ССХ улазак на све те сервере и вађење дневника неће добро функционисати.
  • Такође су контејнери непроменљиви и краткотрајни, што значи да имају краћи животни век. Дакле, након што ваши контејнери нестану и замене се новим, сви ваши дневници апликација који се односе на старе контејнере нестају.

Дакле, крајње решење за ово је стварање централизоване компоненте за евидентирање за прикупљање свих ваших дневника контејнера на једном месту. Овде долази Еластиц Стацкс.

Еластиц Стацк се углавном састоји од четири главне компоненте:

  • Беатс је нови члан који је направио ЕЛК стацк познат као Еластиц Стацк. Откуцаји су лаки отпремници података дневника који могу гурнути дневнике у ЕЛК стог. За овај пост користићу Филебеатс, члана породице Беатс, који нуди лаган начин за прикупљање и прослеђивање и централизовање дневника и датотека.
  • Логстасх је компонента која обједињује, модификује и преноси евиденције са више улазних локација у Еластицсеарцх.
  • Еластицсеарцх једистрибуирани механизам за претрагу и аналитику заснован на ЈСОН-у који складишти и индексира податке (уносе дневника у овом случају) на скалабилан и управљив начин.
  • Кибана је обогаћени кориснички интерфејс за анализу и лак приступ подацима у Еластицсеарцх-у.

У овом посту размотрићемо како се користе горе поменуте компоненте и примењује централизовани анализатор дневника за прикупљање и издвајање дневника из Доцкер контејнера.

За потребе овог чланка користио сам две инстанце т2.смалл АВС ЕЦ2, на којима је покренут Убунту 18.04 инсталиран са Доцкер-ом и Доцкер-ом. Инстанце 1 покреће томцат вебапп, а инстанца 2 ЕЛК стек (Еластицсеарцх, Логстасх, Кибана).

У Линуку се подразумевано евиденције доцкера могу наћи на овој локацији:

/ вар / либ / доцкер / контејнери // гт; -јсон.лог

Сви дневници доцкера прикупљаће се помоћу Филебеат-а који се покреће унутар рачунара домаћина као контејнер. Филебеат ће бити инсталиран на свакој рачунарској рачунарској рачунарској машини (за то ћемо користити прилагођену Филебеат доцкер датотеку и системд јединицу, што ће бити објашњено у одељку Конфигурисање Филебеат-а.)

Наш томцат вебапп ће записати дневнике на горенаведену локацију помоћу подразумеваног управљачког програма за евидентирање доцкера. Филебеат ће тада извући евиденције са те локације и гурнути их према Логстасх-у.

Још једна важна ствар коју треба приметити је да су нам, осим дневника генерисаних апликацијом, потребни и метаподаци повезани са контејнерима, као што су име контејнера, слика, ознаке, хост итд ... То ће нам омогућити да тачно идентификујемо тачно хоста и контејнер који евиденције генеришу . Филебеат такође може лако послати ове податке заједно са уносима дневника апликација.

Радећи ову врсту имплементације покренути контејнери не морају да брину о покретачком програму за евидентирање, начину прикупљања и гурања дневника. Филебеат ће се побринути за то. Ово је често познато као принцип јединствене одговорности.

Конфигурисање Филебеат-а

За овај одељак филебеат.имл и Доцкерфиле су добијени из репо-а гитхуб-а Бруне ЦОСТЕ-а сампле-филебеат-доцкер-логгинг. Велико хвала његовом сјајном раду. Али пошто сам унео неколико промена у датотеку филебеат.имл у складу са захтевима овог чланка, одвојено сам угостио оне са датотеком филебеат.сервице (датотека системд) на свом репо-у. Репо-у можете приступити овде.

Као почетни корак треба да ажурирате датотеку филебеат.имл која садржи Филебеат конфигурације. Доље је дат пример датотеке филебеат.имл који можете користити. Обратите пажњу на ред 21, поље оутпут.логстасх и поље хостс. Конфигурисао сам га на ИП адресу сервера на којем радим свој ЕЛК стек, али можете га изменити ако користите Логстасх на одвојеном серверу. Логстасх подразумевано слуша Филебеат на порту 5044.

Да бисте сазнали више о конфигурационим параметрима Филебеат Доцкера, погледајте овде.

Након тога можете креирати своју слику Филебеат Доцкер користећи следећу Доцкерфиле.

Једном када је слика изграђена, можете је гурнути у своје спремиште за доцкер. Будући да имате могућност да покренете Филебеат као доцкер контејнер, ствар је само у томе да покренете Филебеат контејнер на инстанцама хоста на којима се изводе контејнери. Ево наредбе за покретање доцкера.

docker run -v '/var/lib/docker/containers:/usr/share/dockerlogs/data:ro' -v '/var/run/docker.sock:/var/run/docker.sock' --name filebeat ${YOUR_FILEBEAT_DOCKER_IMAGE}:latest

У горњој наредби Доцкер, имајте на уму два параметра за везивање: / вар / либ / доцкер / контејнери је стаза у којој постоје евиденције доцкера у рачунарској машини и везана је за / уср / схаре / доцкерлогс / дата патх унутар Филебеат-а контејнер са приступом само за читање. У другом аргументу бинд моунт, /вар/рун/доцкер.соцк је везан за демон Доцкер Филебеат контејнера. То је уник утичница коју Доцкер демон подразумевано преслушава и може се користити за комуникацију с демоном из контејнера. То омогућава нашем Филебеат контејнеру да добије Доцкер метаподатке и обогати уносе дневника контејнера заједно са метаподацима и потисне их у ЕЛК стог.

Ако желите аутоматизовати овај процес, написао сам датотеку Системд Унит за управљање Филебеатом као услугом.

Конфигурисање ЕЛК стека

За ово ћу користити своју другу инстанцу ЕЦ2, где покрећем ЕЛК стек. То можете учинити једноставним инсталирањем Доцкер цомпосе-а и проверавањем овог сјајног девиантони / доцкер-елк репо-а и само покретањем доцкер-цомпосе уп -д

Имајте на уму да сва ваша правила заштитног зида дозвољавају улазни промет у Логстасх, Еластицсеарцх и Кибана.

Пре покретања стеза ЕЛК морате да се уверите да је датотека логстасх.цонф правилно конфигурисана да преслушава долазне записе откуцаја на порту 5044 и да ли се евиденција правилно додаје на домаћин еластичног претраживања. Такође морате осигурати да додате параметар индекса на ваш Еластицсеарцх да бисте идентификовали евиденције које је Филбеат јединствено генерирао.

У вашем рецкер-у доцкер-елк можете пронаћи датотеку логстасх.цонф пратећи име путање доцкер-елк / логстасх / пипелине. Ово је конфигурациона датотека за подешавање Логстасх конфигурација. Морате га ажурирати на следећи начин:

Једном када то учините, подразумевано можете приступити својој Кибана контролној табли на порту 5601, како је дефинисано у датотеци доцкер-цомпосе.имл на репо-у девиантони / доцкер-елк.

На картици за управљање можете створити образац индекса за евиденције Филебеат-а. То мора да се уради пре него што можете да прегледате евиденције на Кибана контролној табли.

Ако ваши контејнери правилно убацују евиденције у Еластицсеарцх путем Логстасх-а и успешно сте креирали образац индекса, можете отићи на картицу Откривање на контролној табли Кибана и прегледати своје евиденције апликација контејнера Доцкер заједно са Доцкер метаподацима под филебеат * индексним узорком.

Референце

  1. //ввв.еластиц.цо/гуиде/ен/беатс/филебеат/цуррент/филебеат-геттинг-стартед.хтмл
  2. //медиум.цом/@бцосте/поверфул-логгинг-витх-доцкер-филебеат-анд-еластицсеарцх-8ад021аецд87
  3. //ввв.еластиц.цо/гуиде/ен/логстасх/цуррент/цонфигуратион.хтмл
  4. //медиум.цом/луцјуггери/абоут-вар-рун-доцкер-соцк-3бфд276е12фд