Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy

2019 izao, ary mbola tsy manana vahaolana manara-penitra momba ny fanangonana log ao amin'ny Kubernetes izahay. Ato amin'ity lahatsoratra ity, tianay, mampiasa ohatra avy amin'ny tena fanao, mba hizara ny fikarohana, olana sendra sy ny vahaolana.

Na izany aza, aloha, hanao famandrihana aho izay hahatakaran'ny mpanjifa samihafa ny zavatra tena samihafa amin'ny alàlan'ny fanangonana diary:

  • misy olona te-hahita ny fiarovana sy ny audit logs;
  • olona iray - ny fitrandrahana ivon'ny fotodrafitrasa manontolo;
  • ary ho an'ny sasany dia ampy ny manangona logs amin'ny fampiharana, tsy anisan'izany, ohatra, ny balancers.

Ity ambany ity ny fanapahana etsy ambany momba ny fomba nametrahanay "lisitra faniriana" isan-karazany sy ny fahasahiranana sendra anay.

Theory: momba ny fitaovan'ny logging

Fototra momba ny singa amin'ny rafitra logging

Lavitra ny fandehan'ny logging, vokatr'izany dia novolavolaina ny fomba fanangonam-bokatra sy famakafakana logs, izay ampiasaintsika ankehitriny. Tamin'ny taona 1950, Fortran dia nampiditra analogue amin'ny stream input/output mahazatra, izay nanampy ny programmer debug ny programany. Ireo no diarin'ny solosaina voalohany nanamora ny fiainana ho an'ny mpandrindra tamin'izany fotoana izany. Ankehitriny dia hitantsika ao amin'izy ireo ny singa voalohany amin'ny rafitra logging - loharano na "mpamokatra" hazo.

Tsy nijanona ny siansa informatika: nipoitra ny tamba-jotra informatika, ny cluster voalohany... Nanomboka niasa ny rafitra sarotra misy solosaina maromaro. Ankehitriny dia voatery nanangona logs avy amin'ny milina maromaro ny mpitantana ny rafitra, ary amin'ny tranga manokana dia afaka manampy hafatra kernel OS izy ireo raha toa ka mila manadihady ny tsy fahombiazan'ny rafitra. Mba hamaritana ny rafitra fanangonana lozisialy afovoany, dia navoaka tamin'ny fiandohan'ny taona 2000 RFC 3164, izay manara-penitra remote_syslog. Toy izao no nisehoan'ny singa manan-danja iray hafa: mpanangona hazo ary ny fitahirizana azy.

Miaraka amin'ny fitomboan'ny habetsaky ny logs sy ny fampidirana miely patrana ny teknolojian'ny tranonkala, dia nipoitra ny fanontaniana hoe inona ny logs tokony haseho amin'ny mpampiasa. Ny fitaovana fampiononana tsotra (awk/sed/grep) dia nosoloina fitaovana efa mandroso kokoa mpijery log - singa fahatelo.

Noho ny fitomboan'ny habetsaky ny hazo dia nisy zavatra hafa nazava: ilaina ny hazo, fa tsy izy rehetra. Ary ny hazo isan-karazany dia mitaky ambaratongam-piarovana samihafa: ny sasany mety ho very ao anatin'ny iray andro, ny hafa kosa mila tehirizina mandritra ny 5 taona. Noho izany, nisy singa iray ho an'ny fanivanana sy fampandehanana ny fikorianan'ny angon-drakitra nampiana tao amin'ny rafitra logging - andao hiantso azy sivana.

Ny fitehirizana dia nanao dingana lehibe ihany koa: avy amin'ny rakitra mahazatra mankany amin'ny angon-drakitra mifandraika, ary avy eo amin'ny fitahirizana miompana amin'ny antontan-taratasy (ohatra, Elasticsearch). Nisaraka tamin’ny mpanangom-bokatra àry ny fitahirizana.

Tamin'ny farany, ny foto-kevitry ny diary dia niitatra ho karazana fisehoan-javatra tsy fahita firy izay tiantsika hotehirizina ho an'ny tantara. Na ny marimarina kokoa, raha toa ka mila manao fanadihadiana ianao na manao tatitra momba ny fanadihadiana...

Vokatr'izany, tao anatin'ny fotoana fohy, ny fanangonana log dia nivoatra ho subsystem manan-danja, izay azo antsoina hoe iray amin'ireo fizarana ao amin'ny Big Data.

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy
Raha toa ka ampy ho an'ny “systeme logging” ny pirinty tsotra taloha, dia niova be ny toe-draharaha.

Kubernetes sy logs

Rehefa tonga teo amin'ny fotodrafitrasa i Kubernetes dia tsy nandalo izany koa ny olana efa misy amin'ny fanangonana hazo. Amin'ny lafiny sasany, dia vao mainka naharary izany: tsy vitan'ny hoe notsotsotra fotsiny ny fitantanana ny sehatra fotodrafitrasa, fa sarotra ihany koa tamin'izany. Tolotra tranainy maro no nanomboka nifindra tany amin'ny microservices. Ao anatin'ny tontolon'ny logs, izany dia hita taratra amin'ny fitomboan'ny isan'ny loharanon-drakitra, ny tsingerin'ny fiainany manokana, ary ny filàna ny fanaraha-maso ny fifandraisan'ny singa rehetra amin'ny rafitra amin'ny alàlan'ny log...

Raha mijery ny ho avy aho dia afaka milaza fa ankehitriny, indrisy, tsy misy safidy fanoratana manara-penitra ho an'ny Kubernetes izay mety hampitaha tsara amin'ny hafa rehetra. Ny tetika malaza indrindra eo amin'ny fiaraha-monina dia toy izao manaraka izao:

  • misy mamaha ny antontam-bato EFK (Elasticsearch, Fluentd, Kibana);
  • misy manandrana ilay navoaka vao haingana Loki na fampiasana Opérateur logging;
  • нас (ary angamba tsy isika ihany?..) Tena afa-po amin'ny fivoaran'ny tenako manokana aho - loghouse...

Amin'ny maha-fitsipika, mampiasa ireto amboara manaraka ireto ao amin'ny k8s cluster izahay (ho an'ny vahaolana ampiantranoan-tena):

Na izany aza, tsy hieritreritra momba ny torolàlana momba ny fametrahana sy ny fanamafisana azy ireo aho. Raha ny tokony ho izy dia hifantoka amin'ny lesokany sy ny fehin-kevitra manerantany bebe kokoa momba ny toe-draharaha miaraka amin'ny logs amin'ny ankapobeny aho.

Manaova fanazaran-tena miaraka amin'ny logs ao amin'ny K8s

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy

"Log isan'andro", firy aminareo no ao?..

Mitaky loharanon-karena be ny fanangonana hazo avy amin'ny fotodrafitrasa somary midadasika, izay holaniana amin'ny fanangonana, fitehirizana ary fanodinana hazo. Nandritra ny fampandehanana ny tetikasa isan-karazany, dia niatrika fepetra samihafa sy olana momba ny fampandehanan-draharaha niainga avy amin'izy ireo izahay.

Andao hanandrana ClickHouse

Andeha hojerentsika ny fitehirizana afovoany amin'ny tetikasa iray misy fampiharana iray mamokatra logs: andalana mihoatra ny 5000 isan-tsegondra. Andao hanomboka hiasa miaraka amin'ny diariny, ampio ao amin'ny ClickHouse.

Raha vantany vao takiana amin'ny fotoana tena izy, ny mpizara 4-core miaraka amin'ny ClickHouse dia efa ho be loatra amin'ny subsystem kapila:

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy

Ity karazana entana ity dia noho ny fiezahantsika hanoratra ao amin'ny ClickHouse haingana araka izay tratra. Ary mamaly izany ny angon-drakitra miaraka amin'ny enta-mavesatry ny kapila, izay mety hiteraka hadisoana manaraka:

DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts

Point dia MergeTree latabatra ao amin'ny ClickHouse (misy angona momba ny log) dia manana fahasahiranana manokana mandritra ny asa fanoratana. Ny angon-drakitra ampidirina ao anatin'izy ireo dia miteraka fisarahana vonjimaika, izay atambatra amin'ny latabatra lehibe avy eo. Vokatr'izany dia hita fa be fitakiana be ny firaketana ao amin'ny kapila, ary iharan'ny famerana ihany koa ny fampandrenesana momba ny etsy ambony: tsy mihoatra ny 1 subpartitions no azo atambatra ao anatin'ny 300 segondra (raha ny marina dia insert 300 izany. isan-tsegondra).

Mba hisorohana izany fihetsika izany, tokony hanoratra amin'ny ClickHouse amin'ny ampahany lehibe araka izay azo atao ary tsy mihoatra ny in-1 isaky ny 2 segondra. Na izany aza, ny fanoratana amin'ny fipoahana lehibe dia manoro hevitra fa tokony hanoratra matetika kokoa amin'ny ClickHouse isika. Izany, ho setrin'izany, dia mety hitarika amin'ny fihoaran'ny buffer sy ny fahaverezan'ny logs. Ny vahaolana dia ny hampitombo ny Fluentd buffer, fa avy eo dia hitombo ihany koa ny fanjifàna fahatsiarovana.

fanamarihana: Ny lafiny olana iray hafa amin'ny vahaolanay amin'ny ClickHouse dia mifandraika amin'ny hoe ny fisarahana amin'ny raharahanay (loghouse) dia ampiharina amin'ny alàlan'ny tabilao ivelany mifandray. Manambatra latabatra. Izany dia mitarika ho amin'ny zava-misy fa rehefa maka santionany ny elanelam-potoana lehibe dia ilaina ny RAM be loatra, satria ny metatable dia mihodina amin'ny fizarana rehetra - eny fa na dia ireo izay mazava ho azy fa tsy misy ny angon-drakitra ilaina. Na izany aza, amin'izao fotoana izao dia azo ambara fa lany andro io fomba fiasa io ho an'ny dikan-teny ClickHouse ankehitriny (c 18.16).

Vokatr'izany dia miharihary fa tsy ny tetikasa rehetra dia manana loharano ampy hanangonana logs amin'ny fotoana tena izy ao amin'ny ClickHouse (ny marimarina kokoa, ny fizarana azy ireo dia tsy mety). Ankoatra izany, dia mila mampiasa bateria, izay hiverenantsika any aoriana. Tena misy ilay tranga voalaza etsy ambony. Ary tamin'izany fotoana izany dia tsy afaka nanolotra vahaolana azo itokisana sy marin-toerana izay hifanaraka amin'ny mpanjifa izahay ary mamela anay hanangona hazo miaraka amin'ny fahatarana kely indrindra ...

Ahoana ny amin'ny Elasticsearch?

Elasticsearch dia fantatra amin'ny fiatrehana ny enta-mavesatra. Andeha isika hanandrana izany amin'ny tetikasa iray ihany. Toy izao ny load:

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy

Ny Elasticsearch dia afaka nandevona ny angon-drakitra, na izany aza, ny fanoratana boky toy izany dia mampiasa ny CPU. Manapa-kevitra izany amin'ny fikarakarana cluster. Ara-teknika, tsy olana izany, fa hita fa ny fampandehanana ny rafitra fanangonam-bokatra fotsiny dia efa mampiasa cores 8 eo ho eo ary manana singa fanampiny feno entana ao amin'ny rafitra ...

Fehiny: azo hamarinina io safidy io, fa raha lehibe ny tetikasa ary vonona ny handany loharanon-karena lehibe amin'ny rafi-pandrafetana afovoany ny fitantanana azy.

Dia mipetraka ny fanontaniana voajanahary:

Inona no logs tena ilaina?

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy Andao hiezaka hanova ny fomba fiasa: ny logs dia tokony hampahafantarina miaraka fa tsy mandrakotra tsirairay hetsika ao amin'ny rafitra.

Aoka hatao hoe manana fivarotana an-tserasera mahomby isika. Inona no zava-dehibe? Ny fanangonana fampahalalana betsaka araka izay azo atao, ohatra, avy amin'ny vavahadin'ny fandoavam-bola, dia hevitra tsara. Saingy tsy ny diary rehetra avy amin'ny serivisy fanetezana sary ao amin'ny katalaogin'ny vokatra no manakiana anay: ny lesoka sy ny fanaraha-maso mandroso ihany no ampy (ohatra, ny isan-jaton'ny lesoka 500 aterak'io singa io).

Noho izany dia tonga amin'ny fanatsoahan-kevitra isika tsy mitombina foana ny logging centralized. Matetika ny mpanjifa dia te-hangona ny logs rehetra amin'ny toerana iray, na dia raha ny marina, avy amin'ny log iray manontolo, ny 5% amin'ny hafatra manan-danja ho an'ny orinasa ihany no takiana:

  • Indraindray dia ampy ny manamboatra, ohatra, ny haben'ny lozisialy sy ny mpanangona fahadisoana (ohatra, Sentry).
  • Ny fampandrenesana hadisoana sy ny diary lehibe eo an-toerana dia mety ho ampy hanadihadiana tranga.
  • Nanana tetikasa izahay izay natao tamin'ny fitsapana miasa sy rafitra fanangonana fahadisoana. Tsy nila logs toy izany ny developer - nahita ny zava-drehetra avy amin'ny soritr'aretina izy ireo.

Fanoharana avy amin'ny fiainana

Ny tantara iray hafa dia mety ho ohatra tsara. Nahazo fangatahana avy amin'ny ekipan'ny fiarovana ny iray amin'ireo mpanjifanay izahay izay efa nampiasa vahaolana ara-barotra izay novolavolaina ela be talohan'ny nampidirana ny Kubernetes.

Ilaina ny "manao namana" amin'ny rafitra fanangonam-bokatra afovoany miaraka amin'ny sensor sensor-n'ny orinasa - QRadar. Ity rafitra ity dia afaka mandray logs amin'ny alàlan'ny protocol syslog ary maka azy ireo amin'ny FTP. Na izany aza, tsy azo atao avy hatrany ny nampiditra azy tamin'ny plugin remote_syslog ho an'ny fluentd (araka ny hita, tsy irery isika). Ny olana amin'ny fametrahana QRadar dia hita ho eo anilan'ny ekipan'ny fiarovana ny mpanjifa.

Vokatr'izany dia nampidirina tao amin'ny FTP QRadar ny ampahany amin'ny diarin'ny fandraharahana, ary ny ampahany hafa dia navitrika tamin'ny alàlan'ny syslog lavitra mivantana avy amin'ireo nodes. Ho an'izany aza dia nanoratra izahay tabilao tsotra - angamba hanampy olona hamaha olana mitovy amin'izany izany... Noho ny tetika vokarina, ny mpanjifa mihitsy no nahazo sy nandinika ireo lozisialy mitsikera (tamin'ny fampiasana ny fitaovana tiany indrindra), ary afaka nampihena ny vidin'ny rafitra logging izahay, tsy nisy afa-tsy ny volana lasa.

Ohatra iray hafa dia tena mampiseho ny tsy tokony hatao. Iray amin'ireo mpanjifanay amin'ny fanodinana ny tsirairay hetsika avy amin'ny mpampiasa, natao multiline vokatra tsy voarafitra fampahalalana ao anaty log. Araka ny mety ho eritreretinao, ny logs toy izany dia tena tsy nety tamin'ny famakiana sy ny fitahirizana.

Criteria ho an'ny logs

Ny ohatra toy izany dia mitarika amin'ny fanatsoahan-kevitra fa ankoatry ny fisafidianana rafitra fanangonana hazo dia mila mamolavola ny logs ihany koa! Inona no fepetra takiana eto?

  • Ny logs dia tsy maintsy amin'ny endrika azo vakiana amin'ny milina (ohatra, JSON).
  • Ny logs dia tokony ho matevina ary miaraka amin'ny fahafahana manova ny haavon'ny logging mba hamahana ny olana mety hitranga. Mandritra izany fotoana izany, ao amin'ny tontolo famokarana dia tokony hampandeha rafitra miaraka amin'ny haavon'ny logging ianao fampitandremana na Error.
  • Ny logs dia tsy maintsy atao ara-dalàna, izany hoe amin'ny zavatra log, ny andalana rehetra dia tsy maintsy manana karazana saha mitovy.

Ny logs tsy voarafitra dia mety hiteraka olana amin'ny fametahana ny logs ao anaty fitehirizana ary mijanona tanteraka amin'ny fanodinana azy ireo. Ho fanoharana, ity misy ohatra misy hadisoana 400, izay efa hitan'ny maro amin'ny logs fluentd:

2019-10-29 13:10:43 +0000 [warn]: dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch"

Ny hadisoana dia midika fa mandefa saha misy karazana tsy miorina amin'ny index ianao miaraka amin'ny sarintany efa vita. Ny ohatra tsotra indrindra dia saha iray ao amin'ny log nginx misy variable $upstream_status. Mety misy isa na tady. Ohatra:

{ "ip": "1.2.3.4", "http_user": "-", "request_id": "17ee8a579e833b5ab9843a0aca10b941", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staffs/265.png", "protocol": "HTTP/1.1", "status": "200", "body_size": "906", "referrer": "https://example.com/staff", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.001", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "127.0.0.1:9000", "upstream_status": "200", "upstream_response_length": "906", "location": "staff"}
{ "ip": "1.2.3.4", "http_user": "-", "request_id": "47fe42807f2a7d8d5467511d7d553a1b", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staff", "protocol": "HTTP/1.1", "status": "200", "body_size": "2984", "referrer": "-", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.010", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "10.100.0.10:9000, 10.100.0.11:9000", "upstream_status": "404, 200", "upstream_response_length": "0, 2984", "location": "staff"}

Ny logs dia mampiseho fa ny server 10.100.0.10 dia namaly tamin'ny fahadisoana 404 ary ny fangatahana dia nalefa tany amin'ny fitahirizana votoaty hafa. Vokatr'izany dia nanjary toy izao ny sandan'ny logs:

"upstream_response_time": "0.001, 0.007"

Io toe-javatra io dia mahazatra loatra ka mendrika ny hisaraka references amin'ny documentation.

Ahoana ny amin'ny fahatokisana?

Misy fotoana izay tena ilaina ny logs rehetra tsy an-kanavaka. Ary miaraka amin'izany, manana olana ny rafitra fanangonam-bokatra mahazatra ho an'ny K8 naroso/noresahina tetsy ambony.

Ohatra, tsy afaka manangona logs avy amin'ny kaontenera fohy ny fluentd. Ao amin'ny iray amin'ireo tetikasanay, ny fitoeran'entana fifindra-monina dia niaina nandritra ny 4 segondra latsaka ary voafafa avy eo - araka ny fanamarihana mifanaraka amin'izany:

"helm.sh/hook-delete-policy": hook-succeeded

Noho izany dia tsy nampidirina tao amin'ny fitehirizana ny diarin'ny famonoana ny fifindra-monina. Afaka manampy amin'ity tranga ity ny politika. before-hook-creation.

Ohatra iray hafa ny fihodinan'ny log Docker. Andeha atao hoe misy fampiharana izay mazoto manoratra amin'ny logs. Amin'ny toe-javatra mahazatra, dia vitantsika ny manodina ny logs rehetra, fa raha vao misy olana miseho - ohatra, araka ny voalaza etsy ambony miaraka amin'ny endrika diso - mijanona ny fanodinana, ary mamadika ny rakitra i Docker. Ny vokatr'izany dia mety ho very ny diary mitsikera orinasa.

Izany no antony zava-dehibe ny manasaraka ny log streams, mampiditra ny fandefasana ireo sarobidy indrindra mivantana ao amin'ny fampiharana mba hiantohana ny fiarovana azy ireo. Ankoatra izany, dia tsy ho tafahoatra ny mamorona sasany "accumulator" ny logs, izay afaka mivelona amin'ny tsy fisian'ny fitehirizana fohy rehefa mitahiry hafatra mitsikera.

Farany, tsy tokony hohadinointsika izany Zava-dehibe ny fanaraha-maso tsara ny subsystem rehetra. Raha tsy izany dia mora ny miditra amin'ny toe-javatra misy ny fluentd ao anaty fanjakana iray CrashLoopBackOff ary tsy mandefa na inona na inona, ary izany dia mampanantena ny fahaverezan'ny vaovao manan-danja.

hitany

Amin'ity lahatsoratra ity dia tsy mijery ny vahaolana SaaS toa an'i Datadog isika. Maro amin'ireo olana voalaza eto no efa voavaha amin'ny fomba iray na amin'ny fomba hafa nataon'ny orinasa ara-barotra manokana amin'ny fanangonana logs, saingy tsy ny rehetra no afaka mampiasa SaaS noho ny antony samihafa. (Ny tena zava-dehibe dia ny vidiny sy ny fanarahana ny 152-FZ).

Ny fanangonana logs centralized amin'ny voalohany dia toa asa tsotra, saingy tsy izany mihitsy. Zava-dehibe ny mahatsiaro fa:

  • Ny singa manan-danja ihany no tokony hosoratana amin'ny antsipiriany, raha azo amboarina ho an'ny rafitra hafa ny fanaraha-maso sy ny fanangonana ny fahadisoana.
  • Ny logs amin'ny famokarana dia tokony hotehirizina kely indrindra mba tsy hampidirana entana tsy ilaina.
  • Ny logs dia tokony ho mora vakiana amin'ny milina, atao ara-dalàna ary manana endrika hentitra.
  • Ny logs tena mitsikera dia tokony halefa amin'ny renirano misaraka, izay tokony hisaraka amin'ny lehibe.
  • Ilaina ny mandinika ny accumulator log, izay afaka mamonjy anao amin'ny fipoahan'ny enta-mavesatra ary mahatonga ny enta-mavesatra eo amin'ny fitahirizana fanamiana kokoa.

Misoratra anarana ao amin'ny Kubernetes (ary tsy izany ihany) ankehitriny: antenaina sy zava-misy
Ireo fitsipika tsotra ireo, raha ampiharina hatraiza hatraiza, dia hamela ireo faritra voalaza etsy ambony hiasa - na dia tsy ampy singa manan-danja aza (ny bateria). Raha tsy manaraka ny fitsipika toy izany ianao, ny asa dia hitarika anao mora foana sy ny fotodrafitrasa mankany amin'ny singa hafa feno entana (ary miaraka amin'izay koa tsy mahomby) amin'ny rafitra.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment