Rydym yn arbed amser, nerfau ac oriau dyn

Mae ein prosiectau fel arfer yn rhanbarthol, ac mae'r cleientiaid fel arfer yn weinidogaethau. Ond, yn ogystal â'r sector cyhoeddus, mae sefydliadau preifat hefyd yn defnyddio ein systemau. Nid oes bron unrhyw broblemau gyda nhw.

Felly, mae’r prif brosiectau yn rhai rhanbarthol, ac weithiau mae problemau gyda nhw. Er enghraifft, gyda pherfformiad, pan mewn rhanbarthau mae mwy na 20k o'n defnyddwyr gwerthfawr yn ystod y cyfnod o gyflwyno swyddogaethau newydd ar weinyddion cynnyrch. Mae'n boen…

Fy enw i yw Ruslan ac rwy'n cefnogi systemau gwybodaeth BARS Group a datblygu bot llofrudd ar gyfer DBAs cyfresol treisgar. Nid yw'r post hwn ar gyfer y gwan o galon - mae llawer o lythyrau a lluniau.

Rydym yn arbed amser, nerfau ac oriau dyn

/awr

Mae rhai o'n rhaglenni'n rhedeg ar Oracle DBMS. Mae yna hefyd brosiectau ar DBMS PostgreSQL. Mae gan Oracle beth gwych - casglu ystadegau ar y llwyth ar y DBMS, sy'n tynnu sylw at broblemau presennol a hyd yn oed yn gwneud argymhellion ar gyfer dileu - Ystorfa Llwyth Gwaith Awtomatig (AWR). Ar un adeg (sef ar hyn o bryd o boen), gofynnodd y datblygwyr yn gyson i gasglu Adroddiadau AWR ar gyfer dadansoddi perfformiad. Aethom yn onest at y gweinydd DBMS, casglu adroddiadau, mynd â nhw atom a'u hanfon i'w cynhyrchu i'w dadansoddi. Ar ôl y 5ed tro daeth yn flin... ar ôl y 10fed fe aeth yn gythruddo...

Mynegodd un o fy nghydweithwyr y syniad unwaith y dylai popeth a wneir fwy nag unwaith fod yn awtomataidd. Hyd at yr eiliad o lid, a dweud y gwir, wnes i ddim meddwl amdano a cheisio awtomeiddio popeth y gellid ei awtomeiddio, ond yn aml nid oedd galw amdano ac roedd yn fwy o ymchwil yn hytrach na natur gymhwysol.

Ac yna meddyliais: “Nid oes angen gweinyddwyr i gynhyrchu adroddiad...”. Wedi'r cyfan, mae casglu adroddiad yn golygu gweithredu'r sgript sql @$ORACLE_HOME/rdbms/admin/awrrpt.sql a mynd â'r adroddiad o'r gweinydd i'ch lle... O ie, nid ydym yn caniatáu datblygiad ar gyfer cynhyrchu.

Yna fe wnes i Googled y wybodaeth angenrheidiol, creu'r swyddogaeth o'r erthygl ar y sylfaen brawf, rhedeg y sgript a'r wyrth - lluniwyd yr adroddiad a gellir ei gadw'n lleol. Creu swyddogaethau lle roedd angen adroddiadau AWR yn aml a dweud wrth ddatblygwyr sut i'w defnyddio.

Tua'r amser hwn, yn fy amser hamdden, ar ôl siarad â @BotFather, creais bot Telegram i mi fy hun, dim ond am hwyl. Rwy'n sgriwio mewn ymarferoldeb syml yno - yn dangos yr amser presennol, cyfraddau cyfnewid, tywydd, ei ddysgu i anfon canmoliaeth at fy ngwraig (yna gariad) ar amserlen. Efallai, bryd hynny, mai anfon canmoliaeth oedd swyddogaeth fwyaf poblogaidd fy bot, ac roedd fy ngwraig yn ei werthfawrogi.

Felly. Mae datblygwyr yn ysgrifennu atom yn Telegram, rydym yn anfon adroddiad atynt yn Telegram... Beth os ydynt yn ysgrifennu nid atom, ond at bot? Wedi'r cyfan, bydd yn well i bawb, bydd yr adroddiad yn cael ei dderbyn yn gyflymach, ac yn bwysicaf oll, gan osgoi ni. Dyma sut y ganwyd y syniad o'r swyddogaeth boblogaidd gyntaf ar gyfer fy bot.

Dechreuais weithredu. Fe'i gwnes, orau y gallwn, yn PHP (mae ein cais ei hun yn PHP, rwy'n fwy hyddysg ynddo nag yn Python). Dydw i ddim yn godiwr da, felly ni fyddaf yn dangos fy nghod i chi :)

Mae'r bot yn byw ar ein rhwydwaith corfforaethol ac mae ganddo fynediad i brosiectau penodol, gan gynnwys cronfeydd data targed. Er mwyn peidio â thrafferthu gyda pharamedrau yn y tîm neu'r ddewislen, ychwanegais y swyddogaeth hon at y sgwrs grŵp gyda hysbysiadau monitro. Fel hyn mae'r bot yn gwybod ar unwaith o ba gronfa ddata i gasglu'r adroddiad.

Wedi derbyn gorchymyn fel /awr N, lle N yw nifer yr oriau llawn y mae angen adroddiad ar eu cyfer (yn ddiofyn - 1 awr), hyd yn oed am wythnos, os nad yw'r gronfa ddata wedi'i hailddechrau, mae'r bot yn dechrau gweithio ar unwaith, yn casglu'r adroddiad, yn ei gyhoeddi fel tudalen we ac yn syth (bron iawn yno) yn darparu dolen i'r adroddiad y mae mawr ei angen.

Dilynwch y ddolen a dyma hi, adroddiad AWR:

Rydym yn arbed amser, nerfau ac oriau dyn

Yn ôl y disgwyl, fe wnaeth y datblygwyr ymdopi â chynhyrchu adroddiadau o'r fath, a diolchodd rhai i ni hyd yn oed.

Ar ôl gwerthfawrogi cyfleustra'r tîm, roedd rheolwyr prosiect o ranbarthau eraill eisiau'r un peth, gan eu bod yn derbyn y mwyaf gan y cwsmer ac yn poeni am berfformiad ac argaeledd systemau. Ychwanegais y bot at sgyrsiau eraill. Maen nhw'n dal i'w ddefnyddio, ac rwy'n falch amdano.

Yn ddiweddarach, daeth cydweithwyr o CIT i wybod sut rydym yn casglu adroddiadau ac roeddent am wneud hynny hefyd. Wnes i ddim eu hychwanegu at ein sgyrsiau, creais sgwrs ar wahân gyda'r genhedlaeth o adroddiadau ar amserlen ac ar gais.

/pgMoch Daear

Mae gennym ni hefyd gymwysiadau eraill yn PHP ar y cyd â PostgreSQL. Gweithredais y casgliad o adroddiadau pgBadger ar gyfer y rhai mewn angen gan ddefnyddio'r un egwyddor - mewn sgyrsiau grŵp. Ar y dechrau maent yn ei ddefnyddio, ond yna maent yn stopio. Cafodd y swyddogaeth ei dorri allan yn ddiangen.

/dyletswydd

Mae gan ein hadran sifftiau nos ac, yn unol â hynny, mae ganddi amserlen. Mae yn Google Sheets. Nid yw bob amser yn gyfleus chwilio am ddolen, agor siart, chwilio amdanoch chi'ch hun ... Chwaraeodd un o fy nghyn-gydweithwyr hefyd gyda'i bot Telegram a'i gyflwyno i sgwrs ein hadran hysbysiadau am gychwyn y sifft ddyletswydd ar gyfer gweithwyr yr adran. Mae'r bot yn dosrannu'r amserlen, yn pennu'r person sydd ar ddyletswydd erbyn y dyddiad cyfredol ac, yn unol â'r amserlen neu ar gais, yn adrodd pwy sydd ar ddyletswydd heddiw. Trodd allan yn wych a chyfleus. Gwir, doeddwn i ddim yn hoff iawn o fformat y negeseuon. Hefyd, ar gyfer gweithwyr adran arall (er enghraifft, BC "Meddygaeth"), nid oes gwir angen gwybodaeth am y rhai sydd ar ddyletswydd i gyfeiriadau eraill, ond mae angen i chi wybod pwy sydd ar ddyletswydd yn "Meddygaeth" rhag ofn y bydd problemau. Penderfynais “fenthyg” y swyddogaeth, ond newid yr hyn nad oeddwn yn ei hoffi. Gwneuthum fformat neges yn gyfleus i mi fy hun ac eraill, gan ddileu gwybodaeth ddiangen.

/tnls

Ar ôl rhoi cynnig ar awtomeiddio gan ddefnyddio bot Telegram, ymddangosodd llawer o wahanol syniadau, ond roeddwn i eisiau gwneud pethau hollol angenrheidiol. Penderfynais arwain ystadegau ar geisiadau. I gael mynediad at brosiectau ein cwsmeriaid, rydym wedi gweithredu “gweinydd neidio” neu weinydd anfon ymlaen fel y'i gelwir. Mae cysylltiadau VPN yn cael eu codi arno, yna mae porthladdoedd cais, cronfeydd data ac anfoniadau ategol eraill yn cael eu hanfon ymlaen at ein rhwydwaith lleol trwy ssh, er mwyn cael mynediad hawdd i brosiectau ein gweithwyr, heb broblemau gyda chysylltiadau VPN. Y cyfan sydd angen i chi ei wneud yw sefydlu cysylltiad VPN â'n rhwydwaith corfforaethol.

Mae ystadegau ceisiadau wedi dangos, yn aml, ar ôl i un o'r twneli fethu (yn achos problemau rhwydwaith, oherwydd terfyn amser, er enghraifft), bod pobl yn cysylltu â ni ynglŷn ag adfer mynediad i'r prosiect. Yn y rhan fwyaf o achosion, dim ond ailgychwyn y cysylltiad yn ddigon ac mae popeth yn iawn. Gadewch i ni ei wneud eich hun. Dyma'r gorchymyn:
Rydym yn arbed amser, nerfau ac oriau dyn

Rydych chi'n "syrthio" i'r eitem ddewislen a ddymunir, yn dewis eich prosiect, yn aros am funud ac mae pawb yn hapus ac yn fodlon ...

Ar ôl derbyn gorchymyn, gyda symudiad bach o'r bytes a'r darnau, mae'r bot yn cysylltu â'r gweinydd anfon ymlaen, gan wybod ymlaen llaw pa anfon ymlaen sydd angen ei ailgychwyn, ac yn gwneud ei waith - yn adfer y cysylltiad â'r prosiect. Ysgrifennais gyfarwyddiadau fel y gallwch chi ddatrys materion o'r fath eich hun. A dim ond os nad oedd yr offeryn a ddarparwyd yn gweithio y cysylltodd pobl â ni ...

/ecp_i_pem

Dangosodd ystadegau pellach fod angen trosi yn aml EDS Crypto Pro mewn fformat pem(Basexnumx) ar gyfer integreiddiadau amrywiol, ac mae gennym lawer iawn ohonynt. Tasg: cymerwch gynhwysydd, copïwch ef i gyfrifiadur Windows gyda'r cyfleustodau P12FromGostCSP wedi'i osod (wedi'i dalu, gyda llaw), ei drosi i pfx, ac yna trosi pfx gan ddefnyddio OpenSSL (gyda chefnogaeth am amgryptio GOST) i pem. Nid yw'n gyfleus iawn, ond rydych chi ei eisiau ar snap eich bysedd.

Mae Google wedi dod i'r adwy eto. Wedi dod o hyd defnyddioldeb rhyw berson caredig. Fe'i cydosodais fel y'i hysgrifennwyd yn y README - fe weithiodd. Dysgais y bot i weithio gyda'r cyfleustodau a chefais dröedigaeth bron ar unwaith.
Rydym yn arbed amser, nerfau ac oriau dyn

Erbyn yr amser gweithredu terfynol, cyhoeddwyd gorchymyn i newid i fformat amgryptio newydd - gost-2012. Hyd y cofiaf, dim ond gyda'r hen GOST (2001) yr oedd y cyfleustodau ar y foment honno'n gweithio, efallai ei fod yn ddefnyddioldeb tebyg arall gan berson caredig arall, nid wyf yn cofio'n union.
Ar ôl y newid i'r GOST newydd, dilëwyd ymarferoldeb y bot am resymau diogelwch. Ei roi ar waith mewn cynhwysydd docwr.

Dockerfile, rhag ofn y bydd ei angen ar unrhyw un:

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

I drosi, mae angen i chi osod y cynhwysydd gwreiddiol (cyfeiriadur fel xxx.000) yn y cyfeiriadur / srv/in, a mynd â'r pem gorffenedig i /srv/out.

I drosi:

 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 a /emstart

Un diwrnod, cafodd Oracle DBA cŵl iawn, gyda llawer o brofiad mewn gweinyddu a datblygu DBMS, swydd yn ein cwmni. Ac fe gafodd drafferth ar unwaith i gysylltu â gweinyddwyr DBMS gyda ssh: nid yw'n gwybod ble na sut i gysylltu, nid yw'r mynediad wedi'i ddisgrifio'n glir, neu ni all anfon rhywbeth sydd ei angen arno ato'i hun. Wel, rydym yn hapus i helpu, dywedasom wrtho sut i gysylltu, ac anfonwyd Rheolwr Menter ato. Ond doedd pethau dal ddim yn gweithio allan gyda ssh. Esboniodd un o fy nghydweithwyr y peth yn syml: DBA pur :) Fe wnaethom benderfynu, os oes angen i ni newid rhywbeth ar y gweinydd, y byddwn yn ei wneud ein hunain.

Mae EM weithiau'n damwain o dan lwyth trwm, ac i'w ailgychwyn ... mae angen i chi gysylltu trwy ssh ac ailgychwyn trwy'r derfynell. “Mae gweinyddwyr yn dda am wneud hyn,” penderfynodd ein cydweithiwr newydd. Nid yw llwythi trwm ar y DBMS yn anghyffredin i ni, ac mae ceisiadau i ailgychwyn EM hefyd yn gyffredin. Yna yr un senario: tensiwn, cosi a chwilio am ateb i'r broblem. Felly yn yr un sgyrsiau grŵp ymddangosodd y gorchmynion canlynol: /emstop a /emstart.

Rydym yn arbed amser, nerfau ac oriau dyn

/ lladd

Os oes cystadleuaeth gref ar y gronfa ddata, a bod hyn yn digwydd weithiau, mae angen dadlwytho'r gronfa ddata yn gyflym. Y ffordd gyflymaf yw lladd y broses broblemus... I wneud hyn, cysylltwch trwy ssh, lladd -9... Bydd y bot yn helpu!

Rydym yn arbed amser, nerfau ac oriau dyn

Gwerthfawrogodd Alexey y tîm a rhoddodd enw annwyl iddo - "Kilyalka" neu gwn.
Un diwrnod, ar ôl gwylio sut roedd Alexey yn ceisio ac yn dioddef, yn mynd i mewn / lladd xxx bob tro ar gyfer pob un o'r prosesau, penderfynais ychwanegu “aml-gasgen” i'n gwn:

Rydym yn arbed amser, nerfau ac oriau dyn

Mae hynny'n well! Mae popeth i chi, Alexey, dim ond gwaith, annwyl!

Yn naturiol, roedd tîm mor bwysig yn gyfyngedig mynediad gan user_id - “foolproof”. Wrth weld sut mae Lesha yn lladd prosesau yn ddeheuig ar weinydd y gronfa ddata, ceisiodd nifer o bobl nodi gorchymyn gyda rhif proses ar hap, ond ni allwch dwyllo fy bot smart, gwrthododd ar unwaith.

/log rhybudd

Wel, rhag ofn, fe wnes i'r gorchymyn:
/alertlog <nifer y llinellau> — cael y nifer penodedig o linellau rhybudd
Mae'r bot yn tynnu cofnod rhybuddio ac yn ei anfon i'n gwasanaeth, fel pastebin, o'r enw pyste, ac yn anfon dolen i'r past i'r sgwrs cais.

/ sieciau

Nesaf daeth cais am monitro perfformiad gwirioneddol ein cais. Hyd yn hyn, roedd cymorth technegol y prosiect yn casglu'r data hwn â llaw. Dim ots! Mae ein profwyr dewr wedi datblygu achosion prawf ar gyfer hyn. Nid yw'r cofnod prawf canlyniadol yn gyfleus iawn i'w ddarllen; bydd defnyddiwr dibrofiad yn cymryd amser hir i'w ddeall ac nid yw'n siŵr a fydd yn tynnu sylw at y wybodaeth angenrheidiol. Ac nid ydym yn hoffi gwneud gyda'n dwylo yr hyn na allwn ei wneud â'n dwylo... Tasg newydd i'r bot!

Rydym yn arbed amser, nerfau ac oriau dyn

Mae'r gorchymyn / gwiriadau yn dangos bwydlen syml a diamwys; y tro hwn dysgodd ein bechgyn sut i ddefnyddio'r gorchymyn hwn heb gyfarwyddiadau!

Pan fyddwch chi'n dewis yr eitem a ddymunir, yn lle dewislen, mae hysbysiad am ddechrau'r prawf yn ymddangos, fel nad yw defnyddwyr diamynedd yn rhedeg ein prawf 100500 o weithiau:

Rydym yn arbed amser, nerfau ac oriau dyn

Yn dibynnu ar yr eitem ddewislen a ddewiswyd, mae prawf penodol yn cael ei lansio o'n rhwydwaith, sef o'r peiriant lle mae'r bot yn byw (mae jmeter wedi'i ffurfweddu ymlaen llaw yno, mae'r profion angenrheidiol wedi'u lleoli ...) neu'n uniongyrchol o'r ganolfan ddata (o a peiriant parod wrth ymyl y cais), er mwyn eithrio cysylltiadau rhwydwaith wrth brofi oedi, neu eu lleihau i'r lleiafswm.

Ar ôl cwblhau'r prawf a derbyn y log, mae'r bot yn ei ddosrannu ac yn cynhyrchu'r canlyniad mewn ffurflen “ddarllenadwy gan ddyn”:

Rydym yn arbed amser, nerfau ac oriau dyn

Casgliad o fetrigau

Mae'r swyddogaeth wedi cyrraedd ac mae rheolwyr prosiect â diddordeb wedi derbyn swyddogaeth o'r fath ar gyfer eu rhanbarthau. A dywedodd un Rheolwr Prosiect tosturiol: “Rydw i eisiau cael ystadegau amser!” Dywedodd rhywun o CIT wrthi y byddai'n gyfleus monitro hyn i gyd yn Zabbix. Zabbix, felly Zabbix...

Roeddwn i'n meddwl bod angen i mi baratoi ar gyfer yr angen i ddyblygu'r ateb... Rhoddais y syniad mewn cynhwysydd docwr. Yn y cynhwysydd, mae jmeter yn cael ei lansio ar amserlen (unwaith bob 10 munud), yn rhoi'r log mewn man penodol, mae php yn ei ddosrannu ac yn arddangos y data angenrheidiol ar ffurf tudalen we. Mae Zabbix, gan ddefnyddio'r allwedd web.page.get, yn derbyn y dudalen hon, yn dewis y data angenrheidiol yn rheolaidd ar gyfer rhai elfennau dibynnol ac yn adeiladu graff.

Rydym yn arbed amser, nerfau ac oriau dyn

Rwy'n credu nad oedd yn ddrwg. Wrth arsylwi ar y graff, rydyn ni, yn gyntaf, yn gweld cyflymder bras y cymhwysiad, ac os yw brigau'n cael eu canfod ar y graff, rydyn ni'n gwybod yn fras ble mae'r “plwg”. Mae'n syml. Hyd yn hyn, dim ond ar gyfer un rhanbarth y bu galw amdano, ond rwy'n barod i'w ailadrodd ar gyfer y rhai sydd â diddordeb.

Datblygu cais

Mae ystadegau ar dasgau tebyg wedi arwain yn ddiweddar at fwy o syniadau ar gyfer symleiddio a hwyluso gwaith. Ar rai prosiectau, ar weinyddion cais, mae angen gosod cynwysyddion Crypto Pro allweddol, mae yna lawer ohonynt, ac mae'r llofnod digidol yn dod i ben dros amser. Weithiau mae 2 dasg yn cyrraedd y dydd. Ond roeddwn yn ei ystyried yn anniogel i ddefnyddio bot at y dibenion hyn a phenderfynais y byddwn yn creu'r swyddogaeth yn uniongyrchol yn y cais. Yn naturiol gydag awdurdodiad a gwirio hawliau mynediad. Os oes gennych y breintiau angenrheidiol, bydd eitem ddewislen ychwanegol ar gael ar gyfer gweithio gyda llofnodion digidol, gosod, dileu, gwylio gwybodaeth, ac ati. Mae'r swyddogaeth yn cael ei datblygu ar hyn o bryd. Fel y digwyddodd, nid yw hyn yn anodd iawn, does ond angen i chi ddarllen y cyfarwyddiadau presennol ychydig, edrych ar enghreifftiau cod, gofyn i gydweithwyr mwy profiadol mewn datblygiad, ac yna ei wneud. Yn ystod y broses ymchwil, daeth syniadau i'r amlwg i'w hychwanegu at y cais. Ni fyddaf yn gwneud cynlluniau Napoleonaidd - mae yna ddatblygiad, gadewch i bawb feddwl am eu busnes eu hunain. Ond er ei fod yn ddiddorol, rwy'n ei wneud fy hun.

Cynlluniau

Fel y dywedais, ganwyd llawer o wahanol syniadau ar gyfer defnyddio ein bot ac nid yn unig - yn gyffredinol, gadewch i ni ddweud, syniadau ar gyfer "pwyntiau awtomeiddio", anghofiwyd llawer ohonynt, gan nad oedd gennyf amser i'w hysgrifennu. Nawr rwy'n ceisio ysgrifennu popeth sy'n dod i'r meddwl, ac rwy'n argymell bod eraill yn gwneud yr un peth.

Ond nid yw Alexey yn anghofio rhoi ei ddymuniadau. O'r diweddaraf:
/kill_sql SQL_ID — lladd pob sesiwn gyda'r cais SQL_ID hwn
/lladd_bloc - lladd y sesiwn blocio gwreiddiau
/dangos_em — dangos llun o berfformiad EM
Mae'n foi slei, mae eisiau gwnio DBA o'i ffôn =)

Dyma sut rydyn ni'n gweithio er budd y Famwlad!

Sut ydych chi'n cael gwared ar dasgau arferol ac anniddorol?

Rwy'n gobeithio bod y darlleniad wedi troi allan i fod yn ddiddorol, ac efallai hyd yn oed yn ddefnyddiol i rywun, a doedd gen i ddim amser i ddiflasu'r darllenydd... Pob lwc i bob un ohonom.

Ffynhonnell: hab.com

Ychwanegu sylw