
Li nan 2019, epi nou toujou pa gen yon solisyon estanda pou agrÊgation boutèy demi lit nan Kubernetes. Nan atik sa a, nou ta renmen, sèvi ak egzanp ki soti nan pratik reyèl, pataje rechèch nou yo, pwoblèm yo rankontre ak solisyon yo.
Sepandan, premye, mwen pral fè yon rezèvasyon ke kliyan diferan konprann bagay trè diferan nan kolekte mòso bwa:
- yon moun vle wè sekirite ak odit journaux;
- yon moun - santralize antre nan enfrastrikti a tout antye;
- ak pou kèk, li se ase yo kolekte sèlman mòso bwa aplikasyon, eksepte, pou egzanp, balans.
Anba a se koupe ki anba a sou fason nou aplike divès "lis vle" ak ki difikilte nou rankontre.
Teyori: sou zouti pou antre
Jan nou koumanse sou konpozan yo nan yon sistèm journal
Logging in vin byen lwen, akoz ki bann metodoloji pou kolekte e analiz bann logs in ganny devlope, ki se sa ki nou servi ozordi. Retounen nan ane 1950 yo, Fortran te entwodui yon analogue nan kouran D '/sòti estanda, ki te ede pwogramè a debogaj pwogram li a. Sa yo te premye mòso bwa òdinatè ki te fè lavi pi fasil pou pwogramasyon nan tan sa yo. Jodi a nou wè nan yo premye eleman nan sistèm nan antre - sous oswa "pwodiktè" mòso bwa.
Syans enfòmatik pa t kanpe: rezo enfòmatik parèt, premye grap yo... Sistèm konplèks ki gen plizyè òdinatè te kòmanse travay. Koulye a, administratè sistèm yo te fòse yo kolekte mòso bwa ki soti nan plizyè machin, ak nan ka espesyal yo te kapab ajoute mesaj nwayo OS nan ka yo te bezwen mennen ankèt sou yon echèk sistèm. Pou dekri sistèm koleksyon boutèy bwason santralize yo, nan kòmansman ane 2000 yo li te pibliye , ki ofisyèl remote_syslog. Men ki jan yon lòt eleman enpòtan parèt: pèseptè boutèy demi lit ak depo yo.
Avèk ogmantasyon nan volim nan mòso bwa ak entwodiksyon toupatou nan teknoloji entènèt, kesyon an leve nan ki mòso bwa yo bezwen fasilman montre itilizatè yo. Zouti konsole senp (awk/sed/grep) yo te ranplase pa plis avanse journal telespektatè yo - twazyèm eleman.
Akòz ogmantasyon nan volim nan mòso bwa, yon lòt bagay te vin klè: mòso bwa yo bezwen, men se pa tout nan yo. Ak diferan mòso bwa mande diferan nivo nan prezèvasyon: kèk ka pèdi nan yon jou, pandan ke lòt bezwen yo dwe estoke pou 5 ane. Se konsa, yon eleman pou filtraj ak routage done koule yo te ajoute nan sistèm nan antre - ann rele li. filtre.
Depo tou te fè yon gwo kwasans: soti nan dosye regilye nan baz done relasyon, ak Lè sa a, nan depo oryante dokiman (pa egzanp, Elasticsearch). Se konsa, depo a te separe de pèseptè a.
Alafen, konsèp la menm nan yon boutèy demi lit te elaji nan yon kalite kouran abstrè nan evènman ke nou vle prezève pou listwa. Oswa pito, nan ka ou bezwen fè yon ankèt oswa fè yon rapò analyse...
Kòm yon rezilta, nan yon peryòd de tan relativman kout, koleksyon boutèy demi lit te devlope nan yon sous-sistèm enpòtan, ki ka jis rele youn nan sou-seksyon yo nan Big Data.

Si yon fwa sou yon tan simagri òdinè ta ka ase pou yon "sistèm antre," kounye a sitiyasyon an chanje anpil.
Kubernetes ak mòso bwa
Lè Kubernetes rive nan enfrastrikti a, pwoblèm ki deja egziste nan kolekte mòso bwa pa t 'kontoune li tou. Nan kèk fason, li te vin menm plis douloure: jere platfòm enfrastrikti a te pa sèlman senplifye, men tou, konplike an menm tan an. Anpil ansyen sèvis yo te kòmanse imigre nan mikwosèvis. Nan kontèks mòso bwa yo, sa a reflete nan kantite sous mòso k ap grandi yo, sik lavi espesyal yo, ak bezwen pou swiv relasyon yo nan tout eleman sistèm nan mòso bwa ...
Gade pi devan, mwen ka deklare ke kounye a, malerezman, pa gen okenn opsyon anrejistreman estanda pou Kubernetes ki ta konpare favorableman ak tout lòt moun. Konplo ki pi popilè nan kominote a se jan sa a:
- yon moun dewoule pil la EFK (Elasticsearch, Fluentd, Kibana);
- yon moun ap eseye fèk lage a oswa itilizasyon ;
- nou (e petèt pa sèlman nou? ..) Mwen lajman satisfè ak pwòp devlopman mwen - ...
Kòm yon règ, nou itilize pakèt sa yo nan grap K8s (pou solisyon pwòp tèt ou akomode):
- ;
- .
Sepandan, mwen pa pral rete sou enstriksyon pou enstalasyon yo ak konfigirasyon yo. Olye de sa, mwen pral konsantre sou enpèfeksyon yo ak plis konklizyon mondyal sou sitiyasyon an ak mòso bwa an jeneral.
Pratike ak mòso bwa nan K8s

"Bònn chak jou", konbyen nan nou ki la?...
Koleksyon santralize mòso bwa ki soti nan yon enfrastrikti jistis gwo mande anpil resous, ki pral depanse nan kolekte, estoke ak trete mòso bwa. Pandan operasyon an nan pwojè divès kalite, nou te fè fas ak kondisyon divès kalite ak pwoblèm operasyonèl ki soti nan yo.
Ann eseye ClickHouse
Ann gade nan yon depo santralize sou yon pwojè ak yon aplikasyon ki jenere mòso bwa byen aktivman: plis pase 5000 liy pou chak segonn. Ann kòmanse travay ak mòso bwa l 'yo, ajoute yo nan ClickHouse.
Le pli vit ke maksimòm tan reyèl la nesesè, sèvè 4 nwayo a ak ClickHouse pral deja twò chaje sou subsistèm ki gen kapasite a:

Kalite loading sa a se akòz lefèt ke nou ap eseye ekri nan ClickHouse pi vit ke posib. Ak baz done a reyaji nan sa a ak ogmante chaj disk, ki ka lakòz erè sa yo:
DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts
Reyalite se ke nan ClickHouse (yo gen done boutèy demi lit) gen difikilte pwòp yo pandan operasyon ekri. Done yo mete nan yo jenere yon patisyon tanporè, ki se Lè sa a, fizyone ak tab prensipal la. Kòm yon rezilta, anrejistreman an vin trè egzijan sou disk la, epi li tou sijè a limit la ke nou te resevwa avi sou pi wo a: pa plis pase 1 subpartitions ka fizyone nan 300 segonn (an reyalite, sa a se foure 300). pou chak segonn).
Pou evite konpòtman sa a, an gwo moso ke posib epi pa plis pase 1 fwa chak 2 segonn. Sepandan, ekri nan gwo eklat sijere ke nou ta dwe ekri mwens souvan nan ClickHouse. Sa a, nan vire, ka mennen nan yon debòde tanpon ak pèt mòso bwa. Solisyon an se ogmante tanpon Fluentd la, men Lè sa a, konsomasyon memwa a ap ogmante tou.
Note: Yon lòt aspè pwoblèm nan solisyon nou an ak ClickHouse te gen rapò ak lefèt ke patisyon nan ka nou an (loghouse) se aplike atravè tab ekstèn konekte. . Sa a mennen nan lefèt ke lè pran echantiyon gwo entèval tan, yo mande twòp RAM, depi metatab la itere nan tout patisyon - menm sa yo ki evidamman pa gen done ki nesesè yo. Sepandan, kounye a, apwòch sa a ka san danje deklare demode pou vèsyon aktyèl ClickHouse (c ).
Kòm yon rezilta, li vin klè ke se pa tout pwojè ki gen ase resous pou kolekte mòso bwa an tan reyèl nan ClickHouse (pi jisteman, distribisyon yo pa pral apwopriye). Anplis de sa, w ap bezwen sèvi ak akimile, kote nou pral retounen pita. Ka ki dekri pi wo a se reyèl. Ak nan moman sa a nou pa t 'kapab ofri yon solisyon serye ak ki estab ki ta adapte kliyan an epi ki pèmèt nou kolekte mòso bwa ak reta minimòm ...
E Elasticsearch?
Se Elasticsearch li te ye pou okipe chay travay lou. Ann eseye li nan menm pwojè a. Koulye a, chaj la sanble sa a:

Elasticsearch te kapab dijere kouran done a, sepandan, ekri komèsan sa yo anpil itilize CPU a. Sa a se deside pa òganize yon gwoup. Teknikman, sa a se pa yon pwoblèm, men li vire soti ke jis opere sistèm nan koleksyon boutèy demi lit nou deja itilize apeprè 8 nwayo epi yo gen yon eleman adisyonèl trè chaje nan sistèm nan ...
Anba liy: opsyon sa a ka jistifye, men sèlman si pwojè a se gwo ak jesyon li yo pare yo depanse resous enpòtan nan yon sistèm antre santralize.
Lè sa a, yon kesyon natirèl rive:
Ki mòso bwa ki vrèman nesesè?
Ann eseye chanje apwòch nan tèt li: mòso bwa yo ta dwe ansanm enfòmatif epi yo pa kouvri chak evènman nan sistèm nan.
Ann di nou gen yon magazen sou entènèt ki gen siksè. Ki mòso bwa ki enpòtan? Kolekte enfòmasyon ke posib, pou egzanp, nan yon pòtay peman, se yon bon lide. Men, se pa tout mòso bwa ki soti nan sèvis la tranch imaj nan katalòg pwodwi a enpòtan anpil pou nou: sèlman erè ak siveyans avanse yo ase (pa egzanp, pousantaj 500 erè ke eleman sa a jenere).
Se konsa, nou te rive nan konklizyon an ke antre santralize pa toujou jistifye. Trè souvan kliyan an vle kolekte tout mòso bwa yo nan yon sèl kote, byenke an reyalite, soti nan boutèy la tout antye, se sèlman yon kondisyonèl 5% nan mesaj ki enpòtan pou biznis la yo mande:
- Pafwa li se ase yo konfigirasyon, di, sèlman gwosè a nan boutèy la veso ak pèseptè a erè (pa egzanp, Sentry).
- Yon notifikasyon erè ak yon gwo boutèy demi lit lokal ka ase souvan pou mennen ankèt sou ensidan yo.
- Nou te gen pwojè ki te fè fas ak tès sèlman fonksyonèl ak sistèm koleksyon erè. Pwomotè a pa t 'bezwen mòso bwa kòm sa yo - yo te wè tout bagay soti nan tras erè.
Ilistrasyon nan lavi
Yon lòt istwa ka sèvi kòm yon bon egzanp. Nou te resevwa yon demann nan men ekip sekirite youn nan kliyan nou yo ki te deja itilize yon solisyon komèsyal ki te devlope lontan anvan entwodiksyon Kubernetes.
Li te nesesè pou "fè zanmi" nan sistèm koleksyon boutèy demi lit santralize ak Capteur deteksyon pwoblèm antrepriz - QRadar. Sistèm sa a ka resevwa mòso bwa atravè pwotokòl syslog la epi rekipere yo nan FTP. Sepandan, li pa t posib imedyatman pou entegre li ak plugin remote_syslog pou fluentd (jan sa te parèt, ). Pwoblèm ak mete kanpe QRadar yo te tounen soti nan bò a nan ekip sekirite kliyan an.
Kòm yon rezilta, yon pati nan mòso bwa kritik biznis yo te Uploaded nan FTP QRadar, ak lòt pati a te redireksyon atravè syslog aleka ki sòti dirèkteman nan nĹuds yo. Pou sa nou menm ekri - petèt li pral ede yon moun rezoud yon pwoblèm ki sanble... Mèsi a konplo a ki kapab lakòz, kliyan an li menm te resevwa ak analize mòso bwa kritik (lè l sèvi avèk zouti pi renmen l '), epi nou te kapab redwi pri a nan sistèm nan antre, ekonomize sèlman a. mwa pase a.
Yon lòt egzanp se byen indicative de sa pou yo pa fè. Youn nan kliyan nou yo pou trete chak evènman ki soti nan itilizatè a, te fè multiline pwodiksyon san estrikti enfòmasyon nan log. Kòm ou ta ka devine, mòso bwa sa yo te trè enkonvenyan pou li ak magazen.
Kritè pou mòso bwa
Egzanp sa yo mennen nan konklizyon an ke nan adisyon a chwazi yon sistèm koleksyon boutèy demi lit, ou bezwen tou konsepsyon mòso bwa yo tèt yo! Ki kondisyon yo isit la?
- Jounal yo dwe nan fòma machin lizib (pa egzanp, JSON).
- Jounal yo ta dwe kontra enfòmèl ant ak kapasite pou chanje degre nan antre yo nan lòd yo debogaj pwoblèm posib. An menm tan an, nan anviwònman pwodiksyon ou ta dwe kouri sistèm ak yon nivo antre tankou Avètisman oswa erè.
- Jounal yo dwe nòmalize, se sa ki, nan yon objè boutèy demi lit, tout liy yo dwe gen menm kalite jaden.
Mòso bwa ki pa estriktire ka mennen nan pwoblèm ak chaje mòso bwa nan depo ak yon sispann konplè nan pwosesis yo. Kòm yon ilistrasyon, isit la se yon egzanp ak erè 400, ke anpil moun te definitivman rankontre nan mòso bwa kouran:
2019-10-29 13:10:43 +0000 [warn]: dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch"
Erè a vle di ke w ap voye yon jaden ki gen kalite enstab nan endèks la ak yon kat ki pare. Egzanp ki pi senp la se yon jaden nan boutèy nginx ak yon varyab $upstream_status. Li ka genyen swa yon nimewo oswa yon fisèl. Pa egzanp:
{ "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"}
Jounal yo montre ke sèvè 10.100.0.10 reponn ak yon erè 404 epi yo te voye demann lan nan yon lòt depo kontni. Kòm yon rezilta, valè a nan mòso bwa yo te vin tankou sa a:
"upstream_response_time": "0.001, 0.007"
Sitiyasyon sa a tèlman komen ke li menm merite yon separe .
E sou fyab?
Gen kèk fwa lè tout mòso bwa san eksepsyon enpòtan anpil. Ak sa a, konplo koleksyon boutèy demi lit tipik pou K8 yo pwopoze/diskite pi wo a gen pwoblèm.
Pa egzanp, fluentd pa ka kolekte mòso bwa nan resipyan ki dire kout. Nan youn nan pwojè nou yo, kontenè migrasyon baz done a te viv pou mwens pase 4 segonn epi apre sa yo te efase - dapre anotasyon ki koresponn lan:
"helm.sh/hook-delete-policy": hook-succeeded
Poutèt sa, jounal ekzekisyon migrasyon an pa te enkli nan depo a. Politik ka ede nan ka sa a. before-hook-creation.
Yon lòt egzanp se wotasyon boutèy Docker. Ann di gen yon aplikasyon ki aktivman ekri nan mòso bwa. Nan kondisyon nòmal, nou jere trete tout mòso bwa yo, men le pli vit ke yon pwoblèm parèt - pou egzanp, jan sa dekri pi wo a ak yon fòma kòrèk - pwosesis sispann, ak Docker wotasyon dosye a. Rezilta a se ke mòso bwa ki enpòtan pou biznis yo ka pèdi.
Se poutèt sa li enpòtan pou separe flux journal, embedding voye sa yo ki gen plis valè dirèkteman nan aplikasyon an asire sekirite yo. Anplis de sa, li pa ta initil yo kreye kèk "akimilatè" nan mòso bwa, ki ka siviv brèf depo indisponibilite pandan y ap sove mesaj kritik.
Finalman, nou pa dwe bliye sa Li enpòtan pou kontwole nenpòt subsistèm byen. Sinon, li fasil pou kouri nan yon sitiyasyon kote fluentd nan yon eta CrashLoopBackOff epi li pa voye anyen, e sa pwomèt pèt enfòmasyon enpòtan.
Jwenn
Nan atik sa a, nou pa gade solisyon SaaS tankou Datadog. Anpil nan pwoblèm ki dekri isit la te deja rezoud nan yon fason oswa yon lòt pa konpayi komèsyal ki espesyalize nan kolekte mòso bwa, men se pa tout moun ka itilize SaaS pou plizyè rezon. (prensipal yo se pri ak konfòmite ak 152-FZ).
Koleksyon boutèy demi lit santralize an premye sanble yon travay ki senp, men li pa ditou. Li enpòtan sonje ke:
- Se sèlman eleman kritik yo dwe konekte an detay, pandan y ap siveyans ak koleksyon erè yo ka configurÊ pou lòt sistèm.
- Mòso bwa nan pwodiksyon yo ta dwe kenbe minim pou yo pa ajoute chaj nesesè.
- Jounal yo dwe lizib nan machin, nòmal, epi yo dwe gen yon fòma strik.
- Yo ta dwe voye mòso bwa vrèman kritik yo nan yon kouran separe, ki ta dwe separe de prensipal yo.
- Li se vo konsidere yon akimilatè boutèy demi lit, sa ki ka sove ou soti nan eklat gwo chaj epi fè chaj la sou depo a pi inifòm.

Règ senp sa yo, si yo aplike toupatou, ta pèmèt sikui yo dekri pi wo a travay - menm si yo manke eleman enpòtan (batri a). Si ou pa respekte prensip sa yo, travay la pral fasilman mennen ou menm ak enfrastrikti a nan yon lòt eleman trè chaje (e an menm tan an efikas) nan sistèm nan.
PS
Li tou sou blog nou an:
- ÂŤ";
- ÂŤ";
- ÂŤ'.
Sous: www.habr.com
