MÅ«su projekti parasti ir reÄ£ionÄli, un klienti parasti ir ministrijas. TaÄu papildus publiskajam sektoram mÅ«su sistÄmas izmanto arÄ« privÄtÄs organizÄcijas. Ar tiem praktiski nav nekÄdu problÄmu.
TÄtad galvenie projekti ir reÄ£ionÄli, un dažkÄrt ar tiem rodas problÄmas. PiemÄram, ar veiktspÄju, kad reÄ£ionos ir vairÄk nekÄ 20 XNUMX mÅ«su vÄrtÄ«go lietotÄju laikÄ, kad produktu serveros tiek ieviesta jauna funkcionalitÄte. TÄs ir sÄpesā¦
Mani sauc Ruslans un es atbalstu BARS Grupas informÄcijas sistÄmas un slepkavas robota izstrÄde vardarbÄ«giem seriÄlajiem DBA. Å is ieraksts nav paredzÄts vÄjprÄtÄ«gajiem - tajÄ ir daudz vÄstuļu un attÄlu.
/awr
Dažas no mÅ«su lietojumprogrammÄm darbojas Oracle DBVS. Ir arÄ« projekti PostgreSQL DBVS. Oracle ir brÄ«niŔķīga lieta - statistikas apkopoÅ”ana par DBVS slodzi, kas izceļ esoÅ”Äs problÄmas un pat sniedz ieteikumus to novÄrÅ”anai - Automatic Workload Repository (AWR). VienÄ brÄ«dÄ« (proti, sÄpju brÄ«dÄ«) izstrÄdÄtÄji pastÄvÄ«gi lÅ«dza savÄkt AWR pÄrskati veiktspÄjas analÄ«zei. MÄs godÄ«gi devÄmies uz DBVS serveri, savÄcÄm atskaites, aizvedÄm tÄs pie mums un nosÅ«tÄ«jÄm uz ražoÅ”anu analÄ«zei. PÄc 5. reizes kļuva kaitinoÅ”i... pÄc 10. kļuva kaitinoÅ”i...
Viens no maniem kolÄÄ£iem savulaik izteica domu, ka visu, kas tiek darÄ«ts vairÄk nekÄ vienu reizi, vajadzÄtu automatizÄt. LÄ«dz aizkaitinÄjuma brÄ«dim, godÄ«gi sakot, es par to nedomÄju un mÄÄ£inÄju automatizÄt visu, ko varÄja automatizÄt, bet bieži vien tas nebija pieprasÄ«ts un bija vairÄk pÄtniecisks, nevis lietiŔķs raksturs.
Un tad es domÄju: āAtskaites Ä£enerÄÅ”anai nav nepiecieÅ”ami administratori...ā. Galu galÄ atskaites apkopoÅ”ana nozÄ«mÄ sql skripta izpildi @$ORACLE_HOME/rdbms/admin/awrrpt.sql un atskaites nogÄdÄÅ”anu no servera uz savu vietu... Ak, jÄ, mÄs neļaujam izstrÄdi ražoÅ”anai.
Tad pameklÄju googlÄ nepiecieÅ”amo informÄciju, izveidoju funkciju no raksta testu bÄzÄ, paskrÄju skriptu un brÄ«nums - atskaite sastÄdÄ«ta un lokÄli saglabÄjama. Izveidoja funkcijas, kurÄs bieži bija nepiecieÅ”ami AWR ziÅojumi, un stÄstÄ«ja izstrÄdÄtÄjiem, kÄ tÄs izmantot.
Ap Å”o laiku, manÄ brÄ«vajÄ laikÄ, pÄc sarunas ar @BotFather, es savam priekam izveidoju Telegram robotu. Es tur ieskrÅ«vÄju vienkÄrÅ”u funkcionalitÄti - rÄda paÅ”reizÄjo laiku, valÅ«tas kursus, laikapstÄkļus, iemÄcÄ«ju tai pÄc grafika sÅ«tÄ«t komplimentus manai sievai (toreiz draudzenei). IespÄjams, tajÄ laikÄ komplimentu sÅ«tÄ«Å”ana bija vispopulÄrÄkÄ mana robota funkcionalitÄte, un mana sieva to novÄrtÄja.
TÄtad. IzstrÄdÄtÄji raksta mums TelegramÄ, mÄs viÅiem TelegramÄ nosÅ«tÄm atskaiti... Ja viÅi raksta nevis mums, bet botam? Galu galÄ, tÄ bÅ«s visiem labÄk, ziÅojums tiks saÅemts ÄtrÄk, un galvenais, apejot mÅ«s. TÄ radÄs ideja par pirmo populÄro mana robota funkcionalitÄti.
Es sÄku ievieÅ”anu. Es to izdarÄ«ju, cik vien labi varÄju, PHP (pats mÅ«su lietojumprogramma ir PHP, es to pÄrzinu vairÄk nekÄ Python). Es neesmu labs kodÄtÄjs, tÄpÄc savu kodu nerÄdÄ«Å”u :)
Bots darbojas mÅ«su korporatÄ«vajÄ tÄ«klÄ, un tam ir piekļuve noteiktiem projektiem, tostarp mÄrÄ·a datu bÄzÄm. Lai netraucÄtu ar parametriem komandÄ vai ar izvÄlni, es Å”o funkcionalitÄti pievienoju grupas Äatam ar uzraudzÄ«bas paziÅojumiem. TÄdÄ veidÄ robots uzreiz zina, no kuras datu bÄzes vÄkt ziÅojumu.
SaÅÄmusi tÄdu komandu kÄ /awr N, kur N ir pilno stundu skaits, par kurÄm nepiecieÅ”ama atskaite (pÄc noklusÄjuma - 1 stunda), pat uz nedÄļu, ja datu bÄze nav restartÄta, bots nekavÄjoties sÄk strÄdÄt, apkopo atskaiti, publicÄ to kÄ tÄ«mekļa lapu un uzreiz (gandrÄ«z turpat) sniedz saiti uz tik ļoti nepiecieÅ”amo ziÅojumu.
Sekojiet saitei, un Å”eit tas ir, AWR ziÅojums:
KÄ gaidÄ«ts, izstrÄdÄtÄji tika galÄ ar Å”Ädu ziÅojumu Ä£enerÄÅ”anu, un daži pat mums pateicÄs.
NovÄrtÄjot komandas ÄrtÄ«bas, to vÄlÄjÄs arÄ« projektu vadÄ«tÄji no citiem reÄ£ioniem, kas no klienta saÅem visvairÄk un ir nobažījuÅ”ies par sistÄmu veiktspÄju un pieejamÄ«bu. Es pievienoju robotu citÄm tÄrzÄÅ”anas sarunÄm. ViÅi to joprojÄm izmanto, un es par to priecÄjos.
VÄlÄk kolÄÄ£i no CIT uzzinÄja, kÄ mÄs apkopojam atskaites, un arÄ« gribÄja to darÄ«t. Es tos nepievienoju mÅ«su tÄrzÄÅ”anai, es izveidoju atseviŔķu tÄrzÄÅ”anu ar pÄrskatu Ä£enerÄÅ”anu pÄc grafika un pÄc pieprasÄ«juma.
/pgBadger
Mums ir arÄ« citas PHP lietojumprogrammas saistÄ«bÄ ar PostgreSQL. Es ieviesu pgBadger atskaiÅ”u vÄkÅ”anu tiem, kam tas ir nepiecieÅ”ams, izmantojot to paÅ”u principu - grupu Äatos. SÄkumÄ viÅi to izmantoja, bet pÄc tam pÄrtrauca. FunkcionalitÄte tika izgriezta kÄ nevajadzÄ«ga.
/nodoklis
MÅ«su nodaÄ¼Ä ir nakts maiÅas un attiecÄ«gi arÄ« grafiks. Tas ir Google izklÄjlapÄs. Ne vienmÄr ir Ärti meklÄt saiti, atvÄrt diagrammu, meklÄt sevi... Viens no maniem bijuÅ”ajiem kolÄÄ£iem arÄ« spÄlÄjÄs ar savu Telegram botu un ieviesa to mÅ«su nodaļas ÄatÄ paziÅojumi par nodaļas darbinieku dežūru maiÅas sÄkumu. Bots analizÄ grafiku, nosaka dežūrÄju lÄ«dz paÅ”reizÄjam datumam un saskaÅÄ ar grafiku vai pÄc pieprasÄ«juma ziÅo, kurÅ” Å”odien dežurÄ. Tas izrÄdÄ«jÄs lieliski un Ärti. Tiesa, man Ä«sti nepatika ziÅojumu formÄts. ArÄ« citas nodaļas darbiniekiem (piemÄram, BK āMedicÄ«naā) informÄcija par citos virzienos dežurÄjoÅ”ajiem Ä«sti nav nepiecieÅ”ama, taÄu ir jÄzina, kas dežurÄ āMedicÄ«nÄā problÄmu gadÄ«jumÄ. Es nolÄmu āaizÅemtiesā funkcionalitÄti, bet mainÄ«t to, kas man nepatika. Izveidoju sev un citiem Ärtu ziÅas formÄtu, noÅemot nevajadzÄ«gu informÄciju.
/tnls
PÄc automatizÄcijas izmÄÄ£inÄÅ”anas, izmantojot Telegram robotu, radÄs daudz dažÄdu ideju, bet es gribÄju darÄ«t absolÅ«ti nepiecieÅ”amÄs lietas. Es nolÄmu vadÄ«t statistika par pieprasÄ«jumiem. Lai piekļūtu mÅ«su klientu projektiem, esam ieviesuÅ”i tÄ saukto ājump serveriā jeb pÄradresÄcijas serveri. TajÄ tiek izveidoti VPN savienojumi, pÄc tam lietojumprogrammu porti, datu bÄzes un citi papildu pÄrsÅ«tÄ«jumi tiek pÄrsÅ«tÄ«ti uz mÅ«su lokÄlo tÄ«klu caur ssh, lai Ärti piekļūtu mÅ«su darbinieku projektiem, bez problÄmÄm ar VPN savienojumiem. Viss, kas jums jÄdara, ir izveidot VPN savienojumu ar mÅ«su korporatÄ«vo tÄ«klu.
PieprasÄ«jumu statistika liecina, ka bieži vien pÄc kÄda no tuneļiem atteices (tÄ«kla problÄmu gadÄ«jumÄ, piemÄram, taimauta dÄļ), cilvÄki sazinÄs ar mums par piekļuves atjaunoÅ”anu projektam. VairumÄ gadÄ«jumu pietiek tikai ar savienojuma restartÄÅ”anu, un viss ir kÄrtÄ«bÄ. DarÄ«sim to paÅ”i. Å eit ir komanda:
JÅ«s "iekrÄ«tat" vÄlamajÄ izvÄlnes vienÄ«bÄ, atlasÄt savu projektu, pagaidiet minÅ«ti un visi ir laimÄ«gi un apmierinÄti...
SaÅemot komandu, ar nelielu baitu un bitu kustÄ«bu, bots pieslÄdzas pÄradresÄcijas serverim, iepriekÅ” zinot, kura pÄrsÅ«tÄ«Å”ana ir jÄrestartÄ, un veic savu darbu - atjauno savienojumu ar projektu. Es uzrakstÄ«ju norÄdÄ«jumus, lai jÅ«s pats varÄtu atrisinÄt Å”Ädas problÄmas. Un cilvÄki ar mums sazinÄjÄs tikai tad, ja nodroÅ”inÄtais rÄ«ks nedarbojÄs...
/ecp_to_pem
Papildu statistika liecina, ka bieži vien ir nepiecieÅ”ams konvertÄt EDS Crypto Pro PEM formÄtÄ(
Google atkal ir nÄcis palÄ«gÄ. Atrasts
LÄ«dz galÄ«gÄs ievieÅ”anas brÄ«dim tika izdots rÄ«kojums pÄriet uz jaunu Å”ifrÄÅ”anas formÄtu - gost-2012. Cik atceros, utilÄ«ta tajÄ brÄ«dÄ« darbojÄs tikai ar veco GOST (2001), iespÄjams, tÄ bija vÄl viena lÄ«dzÄ«ga utilÄ«ta no cita laipna cilvÄka, precÄ«zi neatceros.
PÄc pÄrejas uz jauno GOST robota funkcionalitÄte droŔības apsvÄrumu dÄļ tika noÅemta. To ieviesa doka konteinerÄ.
Dockerfile, ja kÄdam tas ir nepiecieÅ”ams:
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
Lai konvertÄtu, oriÄ£inÄlais konteiners (piemÄram, xxx.000) ir jÄievieto direktorijÄ /srv/in un gatavÄ PEM ir jÄievieto uz /srv/out.
Lai konvertÄtu:
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 un /emstart
KÄdu dienu mÅ«su uzÅÄmumÄ iekÄrtojÄs darbÄ Ä¼oti forÅ”s Oracle DBA ar lielu pieredzi DBVS administrÄÅ”anÄ un izstrÄdÄ. Un viÅam uzreiz radÄs problÄmas ar ssh savienojumu ar DBMS serveriem: viÅÅ” nezina, kur un kÄ izveidot savienojumu, piekļuve nav skaidri aprakstÄ«ta vai arÄ« viÅÅ” nevar pÄrsÅ«tÄ«t kaut ko sev nepiecieÅ”amo. MÄs esam priecÄ«gi palÄ«dzÄt, mÄs viÅam pastÄstÄ«jÄm, kÄ izveidot savienojumu, un pÄrsÅ«tÄ«jÄm uzÅÄmuma vadÄ«tÄju. Bet lietas joprojÄm neizdevÄs ar ssh. Viens no maniem kolÄÄ£iem to paskaidroja vienkÄrÅ”i: tÄ«rŔķirnes DBA :) NolÄmÄm, ka, ja vajadzÄs kaut ko pielabot serverÄ«, darÄ«sim to paÅ”i.
EM dažreiz avarÄ lielas slodzes laikÄ, un, lai to restartÄtu... ir nepiecieÅ”ams izveidot savienojumu caur ssh un restartÄt caur terminÄli. "Admini ir labi Å”ajÄ jomÄ," nolÄma mÅ«su jaunais kolÄÄ£is. Smagas slodzes uz DBVS mums nav nekas neparasts, un bieži ir arÄ« pieprasÄ«jumi restartÄt EM. Tad tas pats scenÄrijs: spriedze, aizkaitinÄjums un problÄmas risinÄjuma meklÄjumi. TÄtad tajÄ paÅ”Ä grupas tÄrzÄÅ”anÄ parÄdÄ«jÄs Å”Ädas komandas: /emstop un /emstart.
/nogalinÄt
Ja datu bÄzÄ ir spÄcÄ«ga konkurence un tÄ dažreiz notiek, ir nepiecieÅ”ams Ätri izlÄdÄt datu bÄzi. ÄtrÄkais veids ir nogalinÄt problemÄtisko procesu... Lai to izdarÄ«tu, pieslÄdzies caur ssh, nogalina -9... Bots palÄ«dzÄs!
Aleksejs novÄrtÄja komandu un deva tai mīļu vÄrdu - "Kilyalka" vai ieroci.
KÄdu dienu pÄc tam, kad noskatÄ«jos, kÄ Aleksejs mÄÄ£inÄja un cieta, katru reizi ievadot /kill xxx katram procesam, es nolÄmu mÅ«su ierocim pievienot āmulti-barrelā:
TÄ ir labÄk! Viss ir priekÅ” tevis, Aleksej, tikai strÄdÄ, dÄrgais!
Protams, tik svarÄ«ga komanda bija ierobežota piekļuve ar user_id ā ānepÄrspÄjamsā. Redzot, kÄ Lesha veikli nogalina procesus datu bÄzes serverÄ«, vairÄki cilvÄki mÄÄ£inÄja ievadÄ«t komandu ar nejauÅ”u procesa numuru, taÄu jÅ«s nevarat apmÄnÄ«t manu viedo botu, viÅÅ” nekavÄjoties atteicÄs.
/alertlog
Nu, katram gadījumam es izteicu komandu:
/alertlog ā iegÅ«t norÄdÄ«to brÄ«dinÄjumu žurnÄla rindu skaitu
Bots izvelk brÄ«dinÄjumu žurnÄlu un nosÅ«ta to mÅ«su pakalpojumam, piemÄram, pastebin, ko sauc par pyste, un nosÅ«ta saiti uz pastas uz pieprasÄ«juma tÄrzÄÅ”anu.
/pÄrbaudes
TÄlÄk sekoja pieprasÄ«jums uzraudzÄ«t mÅ«su lietojumprogrammas reÄlo veiktspÄju. LÄ«dz Å”im projekta tehniskais atbalsts apkopoja Å”os datus manuÄli. Vienalga! MÅ«su drosmÄ«gie testÄtÄji Å”im nolÅ«kam ir izstrÄdÄjuÅ”i testa piemÄrus. IegÅ«tais testa žurnÄls nav Ä«paÅ”i Ärti lasÄms, nepieredzÄjuÅ”am lietotÄjam bÅ«s nepiecieÅ”ams ilgs laiks, lai to saprastu, un viÅÅ” nav pÄrliecinÄts, ka viÅÅ” izcels nepiecieÅ”amo informÄciju. Un mums nepatÄ«k ar savÄm rokÄm darÄ«t to, ko nevaram ar rokÄm... Jauns uzdevums botam!
Komanda /checks parÄda vienkÄrÅ”u un nepÄrprotamu izvÄlni; Å”oreiz mÅ«su puiÅ”i iemÄcÄ«jÄs izmantot Å”o komandu bez instrukcijÄm!
IzvÄloties vajadzÄ«go vienumu, izvÄlnes vietÄ tiek parÄdÄ«ts paziÅojums par testa sÄkumu, lai nepacietÄ«gie lietotÄji mÅ«su testu neizpildÄ«tu 100500 XNUMX reizes:
AtkarÄ«bÄ no izvÄlÄtÄ izvÄlnes vienuma tiek palaists konkrÄts tests no mÅ«su tÄ«kla, proti, no maŔīnas, kurÄ dzÄ«vo bots (tur ir iepriekÅ” konfigurÄts jmeter, atrodas nepiecieÅ”amie testi...) vai tieÅ”i no datu centra (no a. sagatavotu maŔīnu blakus aplikÄcijai), lai, pÄrbaudot aizkaves, izslÄgtu tÄ«kla savienojumus vai samazinÄtu tos lÄ«dz minimumam.
PÄc testa pabeigÅ”anas un žurnÄla saÅemÅ”anas robots to parsÄ un izveido rezultÄtu ācilvÄkam lasÄmÄā formÄ:
Metrikas kolekcija
FunkcionalitÄte ir ienÄkusi, un ieinteresÄtie projektu vadÄ«tÄji ir saÅÄmuÅ”i Å”Ädu funkciju saviem reÄ£ioniem. Un viens lÄ«dzjÅ«tÄ«gs projektu vadÄ«tÄjs teica: "Es gribu iegÅ«t laika statistiku!" KÄds no CIT viÅai teica, ka to visu bÅ«tu Ärti uzraudzÄ«t Zabbix. Zabbix, tÄtad Zabbix...
IzdomÄju, ka jÄsagatavojas nepiecieÅ”amÄ«bai atkÄrtot risinÄjumu... Ieliku ideju dokera konteinerÄ. KonteinerÄ jmeter tiek palaists pÄc grafika (reizi 10 minÅ«tÄs), ievieto žurnÄlu noteiktÄ vietÄ, php to parsÄ un parÄda nepiecieÅ”amos datus tÄ«mekļa lapas veidÄ. Zabbix, izmantojot atslÄgu web.page.get, saÅem Å”o lapu, regulÄri atlasa nepiecieÅ”amos datus noteiktiem atkarÄ«giem elementiem un izveido grafiku.
Es domÄju, ka tas izrÄdÄ«jÄs ne slikti. VÄrojot grafiku, mÄs, pirmkÄrt, redzam aptuveno lietojumprogrammas Ätrumu, un, ja grafikÄ tiek konstatÄti maksimumi, mÄs aptuveni zinÄm, kur atrodas āspraudnisā. Tas ir vienkÄrÅ”i. PagaidÄm tÄ izrÄdÄ«jusies pieprasÄ«ta tikai vienam reÄ£ionam, taÄu esmu gatavs interesentiem to pavairot.
Lietojumprogrammu izstrÄde
Statistika par lÄ«dzÄ«giem uzdevumiem pÄdÄjÄ laikÄ ir radÄ«jusi vairÄk ideju darba vienkÄrÅ”oÅ”anai un atviegloÅ”anai. Dažos projektos lietojumprogrammu serveros ir jÄinstalÄ galvenie Crypto Pro konteineri, to ir daudz, un laika gaitÄ ciparparaksts beidzas. Dažreiz dienÄ pienÄk 2 uzdevumi. Bet es uzskatÄ«ju, ka Å”iem nolÅ«kiem izmantot botu nav droÅ”i, un nolÄmu, ka es izveidoÅ”u funkcionalitÄti tieÅ”i lietojumprogrammÄ. Protams, ar autorizÄciju un piekļuves tiesÄ«bu pÄrbaudi. Ja jums ir nepiecieÅ”amÄs privilÄÄ£ijas, bÅ«s pieejams papildu izvÄlnes punkts darbam ar ciparparakstiem, instalÄÅ”anai, dzÄÅ”anai, informÄcijas apskatei utt. Å obrÄ«d tiek izstrÄdÄta funkcionalitÄte. KÄ izrÄdÄ«jÄs, tas nav Ä«paÅ”i grÅ«ti, tikai nedaudz jÄizlasa esoÅ”Äs instrukcijas, jÄaplÅ«ko kodu piemÄri, jÄpajautÄ izstrÄdÄ pieredzÄjuÅ”Äkiem kolÄÄ£iem un tad tas jÄdara. PÄtÄ«juma gaitÄ radÄs idejas, ko papildinÄt pieteikumÄ. Es netaisÄ«Å”u Napoleona plÄnus - ir attÄ«stÄ«ba, lai katrs domÄ par savÄm lietÄm. Bet, kamÄr tas ir interesanti, es to daru pats.
PlÄni
KÄ jau teicu, mÅ«su bota izmantoÅ”anai dzima daudz dažÄdu ideju un ne tikai - kopumÄ, teiksim, idejas "automatizÄcijas punktiem", daudzas no tÄm tika aizmirstas, jo man nebija laika tÄs pierakstÄ«t. Tagad mÄÄ£inu pierakstÄ«t visu, kas ienÄk prÄtÄ, un iesaku to darÄ«t arÄ« citiem.
Bet Aleksejs neaizmirst izteikt savas vÄlmes. No jaunÄkajiem:
/kill_sql SQL_ID ā iznÄ«cinÄt visas sesijas ar Å”o SQL_ID pieprasÄ«jumu
/kill_block - nogalinÄt saknes bloÄ·ÄÅ”anas sesiju
/show_em ā parÄdÄ«t EM snieguma attÄlu
ViÅÅ” ir viltÄ«gs puisis, viÅÅ” vÄlas Ŕūt DBA no sava telefona =)
TÄ mÄs strÄdÄjam TÄvzemes labÄ!
KÄ atbrÄ«voties no rutÄ«nas un neinteresantiem uzdevumiem?
Ceru, ka lasÄ«Å”ana izrÄdÄ«jÄs interesanta un varbÅ«t kÄdam pat noderÄ«ga, un man nebija laika lasÄ«tÄju garlaikot... Lai mums visiem veicas.
Avots: www.habr.com