Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Il-proġetti tagħna huma ġeneralment reġjonali, u l-klijenti huma normalment ministeri. Iżda, minbarra s-settur pubbliku, organizzazzjonijiet privati ​​jużaw ukoll is-sistemi tagħna. Prattikament m'hemm l-ebda problema magħhom.

Għalhekk, il-proġetti ewlenin huma reġjonali, u xi drabi jkun hemm problemi magħhom. Pereżempju, bil-prestazzjoni, meta fir-reġjuni jkun hemm aktar minn 20k tal-utenti prezzjużi tagħna matul il-perjodu ta 'rolling ta' funzjonalità ġdida fuq is-servers tal-prodotti. Huwa wġigħ...

Jisimni Ruslan u nappoġġja s-sistemi ta' informazzjoni ta' BARS Group u jiżviluppaw bot qattiel għal DBAs serjali vjolenti. Din il-kariga mhix għal dawk debboli – hemm ħafna ittri u stampi.

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

/awr

Uħud mill-applikazzjonijiet tagħna jaħdmu fuq Oracle DBMS. Hemm ukoll proġetti fuq id-DBMS PostgreSQL. Oracle għandu ħaġa sabiħa - ġbir ta 'statistika dwar it-tagħbija fuq id-DBMS, li jenfasizza problemi eżistenti u anke jagħmel rakkomandazzjonijiet għall-eliminazzjoni - Automatic Workload Repository (AWR). F'punt wieħed (jiġifieri fil-mument ta 'uġigħ), l-iżviluppaturi kontinwament talbu biex jiġbru Rapporti AWR għall-analiżi tal-prestazzjoni. Onestament morna lejn is-server tad-DBMS, ġbarna rapporti, ħadna magħna u bgħatthom għall-produzzjoni għall-analiżi. Wara l-5 darba sar tedjanti... wara l-10 sar irritanti...

Wieħed mill-kollegi tiegħi darba esprima l-idea li dak kollu li jsir aktar minn darba għandu jkun awtomatizzat. Sal-mument tal-irritazzjoni, biex inkun onest, ma ħsibtx dwarha u ppruvajt awtomat dak kollu li jista 'jiġi awtomatizzat, iżda ħafna drabi ma kienx fid-domanda u kien aktar ta' riċerka aktar milli ta 'natura applikata.

U mbagħad ħsibt: "L-amministraturi mhumiex meħtieġa biex jiġġeneraw rapport...". Wara kollox, il-ġbir ta 'rapport ifisser li tesegwixxi l-iscript sql @$ORACLE_HOME/rdbms/admin/awrrpt.sql u tieħu r-rapport mis-server f'postek... Oh iva, ma nħallux żvilupp għall-produzzjoni.

Imbagħad I Googled l-informazzjoni meħtieġa, ħoloq il-funzjoni mill-artiklu fuq il-bażi tat-test, dam l-iskrittura u l-miraklu - ir-rapport ġie kkompilat u jista 'jiġi ffrankat lokalment. Ħoloq funzjonijiet fejn ir-rapporti AWR spiss kienu meħtieġa u qalu lill-iżviluppaturi kif jużawhom.

Madwar dan iż-żmien, fil-ħin liberu tiegħi, wara li tkellimt ma' @BotFather, ħloqt bot Telegram għalija nnifsi, biss għall-gost. I invitat f'funzjonalità sempliċi hemmhekk - uri l-ħin kurrenti, ir-rati tal-kambju, it-temp, għallimha tibgħat kumplimenti lil marti (imbagħad ħabiba) fuq skeda. Forsi, dak iż-żmien, li tibgħat kumplimenti kienet l-aktar funzjonalità popolari tal-bot tiegħi, u marti apprezzatha.

Allura. L-iżviluppaturi jiktbu lilna f'Telegram, aħna nibagħtulhom rapport f'Telegram... X'jiġri jekk jiktbu mhux lilna, iżda lil bot? Wara kollox, ikun aħjar għal kulħadd, ir-rapport se jiġi riċevut aktar malajr, u l-aktar importanti, jinjora lilna. Hekk twieldet l-idea tal-ewwel funzjonalità popolari għall-bot tiegħi.

Bdejt l-implimentazzjoni. Għamilt dan, mill-aħjar li stajt, fil-PHP (l-applikazzjoni tagħna nnifisha hija fil-PHP, jien aktar kapaċi fiha milli fil-Python). M'iniex kodifikatur tajjeb, għalhekk mhux se nuruk il-kodiċi tiegħi :)

Il-bot jgħix fuq in-netwerk korporattiv tagħna u għandu aċċess għal ċerti proġetti, inklużi databases fil-mira. Sabiex ma niddejjaqx bil-parametri fit-tim jew fil-menu, żidt din il-funzjonalità mal-chat tal-grupp b'notifiki ta 'monitoraġġ. Dan il-mod il-bot immedjatament jaf minn liema database jiġbor ir-rapport.

Wara li rċeviet kmand bħal /awr N, fejn N huwa n-numru ta 'sigħat sħaħ li għalihom huwa meħtieġ rapport (b'mod awtomatiku - 1 siegħa), anke għal ġimgħa, jekk id-database ma tkunx inbdiet mill-ġdid, il-bot immedjatament jibda jaħdem, jiġbor ir-rapport, jippubblikah bħala paġna tal-web u immedjatament (kważi eżatt hemm) tipprovdi link għar-rapport tant meħtieġ.

Segwi l-link u hawn hu, ir-rapport AWR:

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Kif mistenni, l-iżviluppaturi laħqu ma 'tali ġenerazzjoni ta' rapport, u xi wħud saħansitra rringrazzjawna.

Wara li apprezzaw il-konvenjenza tat-tim, il-maniġers tal-proġetti minn reġjuni oħra riedu l-istess, peress li jirċievu l-aktar mill-klijent u huma mħassba dwar il-prestazzjoni u d-disponibbiltà tas-sistemi. Żid il-bot ma' chats oħra. Għadhom jużawha, u jien ferħan biha.

Aktar tard, kollegi mis-CIT sabu kif aħna niġbru r-rapporti u riedu nagħmluh ukoll. Ma żidthomx maċ-chats tagħna, ħloqt chat separat bil-ġenerazzjoni ta 'rapporti fuq skeda u fuq talba.

/pgBadger

Għandna wkoll applikazzjonijiet oħra fil-PHP flimkien ma 'PostgreSQL. Implimentajt il-ġbir tar-rapporti pgBadger għal dawk fil-bżonn bl-użu tal-istess prinċipju - f'chats tal-grupp. Għall-ewwel użawh, iżda mbagħad waqfu. Il-funzjonalità kienet maqtugħa bħala mhux meħtieġa.

/dmir

Id-dipartiment tagħna għandu xiftijiet ta’ billejl u, għaldaqstant, għandu skeda. Huwa fil-Google Sheets. Mhux dejjem konvenjenti li tfittex link, tiftaħ chart, tfittex lilek innifsek... Wieħed mill-ex kollegi tiegħi lagħab ukoll mal-bot tat-Telegram tiegħu u daħħalha fiċ-chat tad-dipartiment tagħna notifiki dwar il-bidu tax-xift tax-xogħol għall-impjegati tad-dipartiment. Il-bot janalizza l-iskeda, jiddetermina l-persuna fuq ix-xogħol sad-data attwali u, skont l-iskeda jew fuq talba, jirrapporta min ikun fuq ix-xogħol illum. Irriżulta kbir u konvenjenti. Veru, ma tantx għoġobni l-format tal-messaġġi. Barra minn hekk, għall-impjegati ta 'dipartiment ieħor (per eżempju, BC "Mediċina"), informazzjoni dwar dawk fuq dmirijiet f'direzzjonijiet oħra mhix verament meħtieġa, iżda trid tkun taf min hu fuq dmirijiet fil-"Mediċina" f'każ ta' problemi. Iddeċidejt li "tissellef" il-funzjonalità, imma nibdel dak li ma għoġobnix. Għamilt format ta’ messaġġ konvenjenti għalija nnifsi u għall-oħrajn, u neħħejt informazzjoni mhux meħtieġa.

/tnls

Wara li ppruvajt l-awtomazzjoni bl-użu ta 'bot Telegram, dehru ħafna ideat differenti, imma ridt nagħmel affarijiet strettament meħtieġa. Iddeċidejt li nmexxi statistika dwar it-talbiet. Biex taċċessa l-proġetti tal-klijenti tagħna, implimentajna l-hekk imsejjaħ "jump server" jew server ta 'trażmissjoni. Konnessjonijiet VPN jitqajmu fuqha, imbagħad portijiet tal-applikazzjoni, databases u twassil awżiljarju ieħor jintbagħtu lin-netwerk lokali tagħna permezz ta 'ssh, għal aċċess faċli għall-proġetti tal-impjegati tagħna, mingħajr problemi b'konnessjonijiet VPN. Kull ma trid tagħmel hu li twaqqaf konnessjoni VPN man-netwerk korporattiv tagħna.

L-istatistika tat-talbiet wriet li ħafna drabi, wara li waħda mill-mini tfalli (fil-każ ta 'problemi tan-netwerk, minħabba timeout, pereżempju), in-nies jikkuntattjawna dwar ir-restawr tal-aċċess għall-proġett. Fil-biċċa l-kbira tal-każijiet, il-bidu mill-ġdid tal-konnessjoni huwa biżżejjed u kollox huwa tajjeb. Ejja tagħmel it yourself. Hawn hu l-kmand:
Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Int "taqa'" fl-oġġett tal-menu mixtieq, tagħżel il-proġett tiegħek, stenna minuta u kulħadd ikun kuntent u sodisfatt...

Malli jirċievi kmand, b'ċaqliq żgħir tal-bytes u l-bits, il-bot jgħaqqad mas-server ta 'trażmissjoni, jaf minn qabel liema trażmissjoni jeħtieġ li jerġa' jinbeda, u jagħmel xogħolha - jerġa 'jġib il-konnessjoni mal-proġett. Jien ktibt struzzjonijiet sabiex tkun tista' ssolvi kwistjonijiet bħal dawn lilek innifsek. U n-nies ikkuntattjawna biss jekk l-għodda pprovduta ma taħdimx...

/ecp_to_pem

Aktar statistika wriet li ħafna drabi huwa meħtieġ li tikkonverti EDS Crypto Pro fil-format pem(Bażi64) għal diversi integrazzjonijiet, u għandna ħafna minnhom. Kompitu: ħu kontenitur, ikkopjah fuq kompjuter Windows bl-utilità P12FromGostCSP installata (imħallsa, bil-mod), ikkonverti f'pfx, u mbagħad ikkonverti pfx billi tuża OpenSSL (b'appoġġ għall-encryption GOST) għal pem. Mhuwiex konvenjenti ħafna, imma tridha f'daqqa ta' subgħajk.

Google reġgħet ġiet għas-salvataġġ. Misjuba utilità ta 'xi persuna tip. I mmuntati kif miktub fil-README - ħadem. Għallimt il-bot biex jaħdem bl-utilità u ltqajna konverżjoni kważi immedjata.
Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Saż-żmien tal-implimentazzjoni finali, inħarġet ordni biex jaqilbu għal format ta 'kriptaġġ ġdid - gost-2012. Safejn niftakar, l-utilità f'dak il-mument ħadmet biss mal-GOST antik (2001), forsi kienet utilità oħra simili minn persuna oħra tajba, ma niftakarx eżattament.
Wara t-tranżizzjoni għall-GOST il-ġdid, il-funzjonalità tal-bot tneħħiet għal raġunijiet ta 'sigurtà. Implimentah f'kontenitur docker.

Dockerfile, f'każ li xi ħadd ikollu bżonnu:

FROM ubuntu:16.04                                                                                                                                                                        
RUN apt update && apt -y install git sudo wget unzip gcc g++ make &&                        
   cd /srv/ && git clone https://github.com/kov-serg/get-cpcert.git &&                     
   cd get-cpcert && chmod +x *.sh && ./prepare.sh && ./build.sh &&                         
   mkdir -p /srv/{in,out} &&                                                               
   echo '#!/bin/bash' > /srv/getpem.sh &&                                                  
   echo 'cd /srv/get-cpcert' >> /srv/getpem.sh &&                                          
   echo './get-cpcert /srv/in/$CONT.000 $PASS > /srv/out/$CONT.pem' >> /srv/getpem.sh &&   
   chmod +x /srv/getpem.sh                                                                  ENTRYPOINT /srv/getpem.sh

Biex tikkonverti, trid tpoġġi l-kontenitur oriġinali (direttorju bħal xxx.000) fid-direttorju /srv/in, u ħu l-pem lest għal /srv/out.

Biex tikkonverti:

 docker run -t -i -e CONT='<имя директории с контейнером(без ".000")>' -e PASS='<пароль для контейнера>' -v /srv/in:/srv/in -v /srv/out:/srv/out --name ecptopem <адрес нашего репозитория>/med/ecptopem:latest 

/emstop u /emstart

Ġurnata waħda, Oracle DBA jibred ħafna, b'ħafna esperjenza fl-amministrazzjoni u l-iżvilupp tad-DBMS, kiseb impjieg fil-kumpanija tagħna. U immedjatament kellu problemi biex jgħaqqad mas-servers DBMS b'ssh: ma jafx fejn jew kif jgħaqqad, l-aċċess mhuwiex deskritt b'mod ċar, jew ma jistax jgħaddi xi ħaġa li jeħtieġ lilu nnifsu. Ukoll, aħna kuntenti li ngħinu, għidnilu kif jgħaqqad, u bgħattlu Enterprise Manager. Iżda l-affarijiet xorta ma ħadmux bl-ssh. Wieħed mill-kollegi tiegħi spjegaha b'mod sempliċi: DBA ta 'razza pura :) Iddeċidejna li jekk ikollna bżonn tweak xi ħaġa fuq is-server, nagħmluh aħna stess.

EM kultant jiġġarrfu taħt tagħbija tqila, u biex terġa 'tibda... għandek bżonn tikkonnettja permezz ta' ssh u terġa 'tibda permezz tat-terminal. "L-amministraturi huma tajbin f'dan," iddeċieda l-kollega l-ġdid tagħna. Tagħbijiet tqal fuq id-DBMS mhumiex komuni għalina, u talbiet biex terġa 'tibda EM huma wkoll komuni. Imbagħad l-istess xenarju: tensjoni, irritazzjoni u tfittxija għal soluzzjoni għall-problema. Allura fl-istess chats tal-grupp dehru l-kmandi li ġejjin: /emstop u /emstart.

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

/joqtol

Jekk ikun hemm kompetizzjoni qawwija fuq id-database, u dan kultant jiġri, huwa meħtieġ li d-database tinħatt malajr. L-iktar mod mgħaġġel huwa li toqtol il-proċess problematiku... Biex tagħmel dan, qabbad permezz ta 'ssh, qatla -9... Il-bot se jgħin!

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Alexey apprezza lit-tim u tah isem affettiv - "Kilyalka" jew pistola.
Ġurnata waħda, wara li rajt kif Alexey pprova u sofra, jidħol / joqtol xxx kull darba għal kull wieħed mill-proċessi, iddeċidejt li nżid "multi-barrel" mal-pistola tagħna:

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Dak aħjar! Kollox għalik, Alexey, xogħol biss, għeżież!

Naturalment, tim importanti bħal dan kien limitat aċċess minn user_id - "foolproof". Meta raw kif Lesha joqtol b'mod deft il-proċessi fuq is-server tad-database, bosta nies ippruvaw jidħlu kmand b'numru ta 'proċess każwali, iżda ma tistax tqarraq bil-bot intelliġenti tiegħi, huwa immedjatament irrifjuta.

/alertlog

Ukoll, fil-każ, għamilt il-kmand:
/alertlog — ikseb in-numru speċifikat ta' linji ta' allertlog
Il-bot jiġbed alertlog u jibgħatha lis-servizz tagħna, bħal pastebin, imsejjaħ pyste, u jibgħat link għall-pejst għaċ-chat tat-talba.

/kontrolli

Wara waslet talba għal monitoraġġ tal-prestazzjoni reali tal-applikazzjoni tagħna. Sa issa, l-appoġġ tekniku tal-proġett ġabar din id-dejta manwalment. Ma jimpurtax! It-testers qalbiena tagħna żviluppaw każijiet tat-test għal dan. Ir-reġistru tat-test li jirriżulta mhuwiex konvenjenti ħafna biex jinqara; utent mingħajr esperjenza jieħu ħafna żmien biex jifhem u mhux ċert li se jenfasizza l-informazzjoni meħtieġa. U ma nħobbux nagħmlu b'idejna dak li ma nistgħux nagħmlu b'idejna... Kompitu ġdid għall-bot!

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Il-kmand /checks juri menu sempliċi u mhux ambigwu; din id-darba l-irġiel tagħna tgħallmu kif jużaw dan il-kmand mingħajr struzzjonijiet!

Meta tagħżel l-oġġett mixtieq, minflok menu, tidher notifika dwar il-bidu tat-test, sabiex utenti bla paċenzja ma jagħmlux it-test tagħna 100500 darba:

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Skont l-oġġett tal-menu magħżul, jiġi mniedi test speċifiku min-netwerk tagħna, jiġifieri mill-magna fejn jgħix il-bot (jmeter huwa kkonfigurat minn qabel hemm, it-testijiet meħtieġa jinsabu...) jew direttament miċ-ċentru tad-dejta (minn magna ppreparata ħdejn l-applikazzjoni), sabiex teskludi konnessjonijiet tan-netwerk meta tittestja dewmien, jew tnaqqashom għall-minimu.

Wara li jlesti t-test u jirċievi r-reġistru, il-bot janalizzah u jipproduċi r-riżultat f'forma "li tinqara mill-bniedem":

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Ġbir tal-metriċi

Il-funzjonalità waslet u l-maniġers tal-proġett interessati rċevew tali funzjoni għar-reġjuni tagħhom. U wieħed mill-Maniġer tal-Proġett ta’ kompassjoni qal: “Irrid ikolli statistika tal-ħin!” Xi ħadd mis-CIT qalilha li jkun konvenjenti li tissorvelja dan kollu f’Żabbix. Zabbix, mela Zabbix...

Ħsibt li kelli bżonn nipprepara għall-ħtieġa li nirreplika s-soluzzjoni... Poġġejt l-idea f'kontenitur docker. Fil-kontenitur, jmeter huwa mniedi fuq skeda (darba kull 10 minuti), ipoġġi l-log f'ċertu post, php jeżaminah u juri d-dejta meħtieġa fil-forma ta 'paġna web. Zabbix, billi juża ċ-ċavetta web.page.get, jirċievi din il-paġna, jagħżel regolarment id-dejta meħtieġa għal ċerti elementi dipendenti u jibni graff.

Aħna niffrankaw ħin, nervi u sigħat ta' bniedem

Naħseb li rriżulta mhux ħażin. Billi nosservaw il-graff, aħna, l-ewwelnett, naraw il-veloċità approssimattiva tal-applikazzjoni, u jekk jinstabu qċaċet fuq il-graff, nafu bejn wieħed u ieħor fejn jinsab il-"plagg". Huwa sempliċi. S'issa rriżulta li kien fid-domanda għal reġjun wieħed biss, iżda lest li nirreplikaha għal dawk interessati.

Żvilupp ta' applikazzjoni

L-istatistika dwar kompiti simili reċentement tat lok għal aktar ideat għas-simplifikazzjoni u l-iffaċilitar tax-xogħol. Fuq xi proġetti, fuq servers ta 'applikazzjoni, hemm bżonn li jiġu installati kontenituri ewlenin Crypto Pro, hemm ħafna minnhom, u l-firma diġitali tiskadi maż-żmien. Kultant jaslu 2 kompiti kuljum. Imma qiest li mhux sikur li nuża bot għal dawn l-iskopijiet u ddeċidejt li noħloq il-funzjonalità direttament fl-applikazzjoni. Naturalment bl-awtorizzazzjoni u l-iċċekkjar tad-drittijiet ta 'aċċess. Jekk għandek il-privileġġi meħtieġa, oġġett tal-menu addizzjonali se jkun disponibbli biex taħdem b'firem diġitali, installazzjoni, tħassir, tara informazzjoni, eċċ. Il-funzjonalità bħalissa qed tiġi żviluppata. Kif irriżulta, dan mhuwiex diffiċli ħafna, għandek bżonn biss taqra l-istruzzjonijiet eżistenti ftit, tħares lejn eżempji ta 'kodiċi, staqsi lill-kollegi b'aktar esperjenza fl-iżvilupp, u mbagħad tagħmel dan. Matul il-proċess ta 'riċerka, ħarġu ideat biex jiżdiedu mal-applikazzjoni. Mhux se nagħmel pjanijiet Napoleoniċi - hemm żvilupp, ħalli kulħadd iżomm f'moħħu n-negozju tiegħu. Imma filwaqt li huwa interessanti, qed nagħmel jien.

Pjanijiet

Kif għedt, twieldu ħafna ideat differenti għall-użu tal-bot tagħna u mhux biss - b'mod ġenerali, ejja ngħidu, ideat għal "punti ta 'awtomatizzazzjoni", ħafna minnhom insew, peress li ma kellix ħin biex niktebhom. Issa nipprova nikteb dak kollu li jiġi f’moħħi, u nirrakkomanda li ħaddieħor jagħmel l-istess.

Imma Alexey ma jinsiex jagħti x-xewqat tiegħu. Mill-aħħar:
/kill_sql SQL_ID — joqtol is-sessjonijiet kollha b'din it-talba SQL_ID
/kill_block - joqtol is-sessjoni tal-imblukkar tal-għeruq
/ juru_em — uri stampa tal-prestazzjoni tal-EM
Huwa raġel sly, irid iħit DBA mit-telefon tiegħu =)

Hekk naħdmu b’risq il-Patrija!

Kif teħles minn ħidmiet ta’ rutina u bla interess?

Nittama li l-qari irriżulta interessanti, u forsi anke utli għal xi ħadd, u ma kellix ħin niddejjaq lill-qarrej... Xorti tajba lilna lkoll.

Sors: www.habr.com

Żid kumment