Tunaokoa wakati, mishipa na masaa ya mtu

Miradi yetu kwa kawaida huwa ya kikanda, na wateja huwa ni wizara. Lakini, pamoja na sekta ya umma, mashirika ya kibinafsi pia hutumia mifumo yetu. Kwa kweli hakuna shida nao.

Kwa hiyo, miradi kuu ni ya kikanda, na wakati mwingine kuna matatizo nao. Kwa mfano, pamoja na utendakazi, wakati katika maeneo kuna zaidi ya 20k ya watumiaji wetu wa thamani wakati wa kuzindua utendakazi mpya kwenye seva za bidhaa. Ni maumivu…

Jina langu ni Ruslan na ninaunga mkono mifumo ya habari ya BARS Group na kutengeneza kijibu killer kwa DBA za mfululizo za vurugu. Chapisho hili sio la watu waliokata tamaa - kuna herufi nyingi na picha.

Tunaokoa wakati, mishipa na masaa ya mtu

/awr

Baadhi ya programu zetu zinaendeshwa kwenye Oracle DBMS. Pia kuna miradi kwenye PostgreSQL DBMS. Oracle ina jambo la ajabu - kukusanya takwimu juu ya mzigo kwenye DBMS, ambayo inaangazia matatizo yaliyopo na hata kutoa mapendekezo ya kuondolewa - Hifadhi ya Mzigo wa Kazi Otomatiki (AWR). Wakati mmoja (yaani wakati wa maumivu), watengenezaji waliuliza mara kwa mara kukusanya Ripoti za AWR kwa uchanganuzi wa utendaji. Tulikwenda kwa seva ya DBMS kwa uaminifu, tukakusanya ripoti, tukawapeleka kwetu na kuwatuma kwa uzalishaji kwa uchambuzi. Baada ya mara ya 5 ikawa kero... baada ya 10 ikawa inakera...

Mmoja wa wenzangu aliwahi kutoa wazo kwamba kila kitu kinachofanywa zaidi ya mara moja kinapaswa kuwa kiotomatiki. Hadi wakati wa kukasirika, kuwa waaminifu, sikufikiria juu yake na kujaribu kuweka otomatiki kila kitu ambacho kinaweza kuwa kiotomatiki, lakini mara nyingi haikuwa katika mahitaji na ilikuwa zaidi ya utafiti badala ya asili iliyotumika.

Na kisha nikafikiria: "Wasimamizi hawahitajiki kutoa ripoti...". Baada ya yote, kukusanya ripoti kunamaanisha kutekeleza hati ya sql @$ORACLE_HOME/rdbms/admin/awrrpt.sql na kuchukua ripoti kutoka kwa seva hadi mahali pako... Ndiyo, haturuhusu maendeleo kwa ajili ya uzalishaji.

Kisha nikatumia Google habari muhimu, nikaunda kazi kutoka kwa nakala kwenye msingi wa jaribio, nikaendesha maandishi na muujiza - ripoti ilikusanywa na inaweza kuokolewa ndani ya nchi. Iliunda huduma ambapo ripoti za AWR zilihitajika mara nyingi na kuwaambia wasanidi jinsi ya kuzitumia.

Karibu na wakati huu, katika muda wangu wa ziada, baada ya kuzungumza na @BotFather, nilijiundia roboti ya Telegramu, kwa ajili ya kujifurahisha tu. Niliweka utendakazi rahisi hapo - onyesha wakati wa sasa, viwango vya ubadilishaji, hali ya hewa, niliifundisha kutuma pongezi kwa mke wangu (basi rafiki wa kike) kwa ratiba. Pengine, wakati huo, kutuma pongezi ilikuwa kazi maarufu zaidi ya bot yangu, na mke wangu aliithamini.

Hivyo. Waendelezaji wanatuandikia katika Telegram, tunatuma ripoti kwao katika Telegram ... Je, ikiwa hawatatuandikia, lakini kwa bot? Baada ya yote, itakuwa bora kwa kila mtu, ripoti itapokelewa haraka, na muhimu zaidi, kutupita. Hivi ndivyo wazo la utendakazi wa kwanza maarufu kwa bot yangu lilivyozaliwa.

Nilianza utekelezaji. Nilifanya, kama nilivyoweza, katika PHP (programu yetu yenyewe iko kwenye PHP, ninaijua zaidi kuliko Python). Mimi si msimbo mzuri, kwa hivyo sitakuonyesha nambari yangu :)

Mfumo wa kijibu huishi kwenye mtandao wetu wa shirika na unaweza kufikia miradi fulani, ikijumuisha hifadhidata lengwa. Ili nisijisumbue na vigezo katika timu au menyu, niliongeza utendaji huu kwenye gumzo la kikundi na arifa za ufuatiliaji. Kwa njia hii bot hujua mara moja ni hifadhidata gani ya kukusanya ripoti kutoka.

Baada ya kupokea amri kama /awa N, ambapo N ni idadi ya saa kamili ambayo ripoti inahitajika (kwa chaguo-msingi - saa 1), hata kwa wiki, ikiwa hifadhidata haijaanzishwa tena, bot huanza kufanya kazi mara moja, kukusanya ripoti, kuichapisha kama ukurasa wa wavuti na mara moja (karibu hapo hapo) hutoa kiunga cha ripoti inayohitajika sana.

Fuata kiunga na hii hapa, ripoti ya AWR:

Tunaokoa wakati, mishipa na masaa ya mtu

Kama ilivyotarajiwa, watengenezaji walikabiliana na utoaji wa ripoti kama hizo, na wengine hata walitushukuru.

Baada ya kuthamini urahisi wa timu, wasimamizi wa mradi kutoka mikoa mingine walitaka vivyo hivyo, kwa kuwa wanapokea zaidi kutoka kwa mteja na wana wasiwasi juu ya utendaji na upatikanaji wa mifumo. Niliongeza bot kwenye gumzo zingine. Bado wanaitumia, na ninafurahi kuihusu.

Baadaye, wafanyakazi wenzetu kutoka CIT waligundua kuhusu jinsi tunavyokusanya ripoti na walitaka kufanya hivyo pia. Sikuwaongeza kwenye gumzo zetu, niliunda gumzo tofauti na utoaji wa ripoti kwenye ratiba na kwa ombi.

/pgBadger

Pia tuna programu zingine katika PHP kwa kushirikiana na PostgreSQL. Nilitekeleza mkusanyiko wa ripoti za pgBadger kwa wale wanaohitaji kwa kutumia kanuni sawa - katika gumzo la kikundi. Mara ya kwanza walitumia, lakini kisha wakaacha. Utendaji ulikatwa kama sio lazima.

/wajibu

Idara yetu ina zamu za usiku na, ipasavyo, ina ratiba. Ipo katika Majedwali ya Google. Sio rahisi kila wakati kutafuta kiunga, fungua chati, jitafute ... Mmoja wa wenzangu wa zamani pia alicheza na boti yake ya Telegraph na kuitambulisha kwenye mazungumzo ya idara yetu. arifa kuhusu kuanza kwa zamu ya kazi kwa wafanyikazi wa idara. Boti huchanganua ratiba, huamua mtu aliye zamu kwa tarehe ya sasa na, kulingana na ratiba au kwa ombi, huripoti ni nani yuko zamu leo. Ilibadilika kuwa nzuri na rahisi. Kweli, sikupenda sana umbizo la ujumbe. Pia, kwa wafanyikazi wa idara nyingine (kwa mfano, BC "Dawa"), habari juu ya wale walio zamu katika mwelekeo mwingine haihitajiki sana, lakini unahitaji kujua ni nani anayefanya kazi katika "Dawa" ikiwa kuna shida. Niliamua "kukopa" utendaji, lakini kubadilisha kile ambacho sikupenda. Nilitengeneza umbizo la ujumbe kuwa rahisi kwangu na kwa wengine, nikiondoa maelezo yasiyo ya lazima.

/tnls

Baada ya kujaribu otomatiki kwa kutumia bot ya Telegraph, maoni mengi tofauti yalionekana, lakini nilitaka kufanya vitu muhimu sana. Niliamua kuongoza takwimu za maombi. Ili kufikia miradi ya wateja wetu, tumetekeleza kinachojulikana kama "seva ya kuruka" au seva ya usambazaji. Miunganisho ya VPN inainuliwa juu yake, kisha bandari za programu, hifadhidata na usambazaji mwingine msaidizi hutumwa kwa mtandao wetu wa karibu kupitia ssh, kwa ufikiaji rahisi wa miradi ya wafanyikazi wetu, bila shida na miunganisho ya VPN. Unachohitaji kufanya ni kusanidi muunganisho wa VPN kwenye mtandao wetu wa shirika.

Takwimu za maombi zimeonyesha kwamba mara nyingi, baada ya moja ya vichuguu kushindwa (katika kesi ya matatizo ya mtandao, kutokana na muda, kwa mfano), watu wasiliana nasi kuhusu kurejesha upatikanaji wa mradi huo. Katika hali nyingi, kuanzisha upya tu uhusiano ni wa kutosha na kila kitu ni sawa. Hebu tufanye mwenyewe. Hapa kuna amri:
Tunaokoa wakati, mishipa na masaa ya mtu

"Unaanguka" kwenye kipengee cha menyu unachotaka, chagua mradi wako, subiri kidogo na kila mtu anafurahi na kuridhika ...

Baada ya kupokea amri, kwa harakati kidogo ya byte na bits, bot inaunganisha kwenye seva ya usambazaji, ikijua mapema ambayo usambazaji unahitaji kuanza tena, na hufanya kazi yake - kurejesha uunganisho kwenye mradi huo. Niliandika maagizo ili uweze kutatua maswala kama haya mwenyewe. Na watu waliwasiliana nasi ikiwa tu zana iliyotolewa haikufanya kazi...

/ecp_to_pem

Takwimu zaidi zilionyesha kuwa mara nyingi ni muhimu kubadili EDS Crypto Pro katika umbizo la pem(Msingi64) kwa miunganisho mbalimbali, na tunayo mengi sana. Kazi: chukua kontena, ukinakili kwa kompyuta ya Windows iliyo na matumizi ya P12FromGostCSP iliyosakinishwa (iliyolipwa, kwa njia), ibadilishe kuwa pfx, na kisha ubadilishe pfx kwa kutumia OpenSSL (pamoja na usaidizi wa usimbuaji wa GOST) hadi pem. Sio rahisi sana, lakini unataka kwa snap ya vidole vyako.

Google imekuja kuokoa tena. Imepatikana manufaa ya mtu fulani. Niliikusanya kama ilivyoandikwa kwenye README - ilifanya kazi. Nilifundisha bot kufanya kazi na shirika na nikapata ubadilishaji wa papo hapo.
Tunaokoa wakati, mishipa na masaa ya mtu

Kufikia wakati wa utekelezaji wa mwisho, agizo lilitolewa kubadili muundo mpya wa usimbuaji - gost-2012. Kwa kadiri ninavyokumbuka, matumizi wakati huo ilifanya kazi tu na GOST ya zamani (2001), labda ilikuwa huduma nyingine kama hiyo kutoka kwa mtu mwingine mkarimu, sikumbuki haswa.
Baada ya mpito kwa GOST mpya, utendaji wa bot uliondolewa kwa sababu za usalama. Imetekelezwa kwenye chombo cha docker.

Dockerfile, ikiwa mtu yeyote ataihitaji:

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

Ili kubadilisha, unahitaji kuweka kontena asili (saraka kama xxx.000) kwenye saraka ya /srv/in, na uchukue pem iliyokamilishwa hadi /srv/out.

Ili kubadilisha:

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

Siku moja, Oracle DBA nzuri sana, yenye uzoefu mwingi katika usimamizi na maendeleo ya DBMS, ilipata kazi katika kampuni yetu. Na mara moja alikuwa na shida ya kuunganisha kwenye seva za DBMS na ssh: hajui wapi au jinsi ya kuunganisha, ufikiaji haujaelezewa wazi, au hawezi kusambaza kitu anachohitaji kwake. Kweli, tunafurahi kusaidia, tulimwambia jinsi ya kuunganisha, na tukamtuma Meneja wa Biashara. Lakini mambo bado hayakufanya kazi na ssh. Mmoja wa wenzangu alielezea kwa urahisi: DBA safi :) Tuliamua kwamba ikiwa tunahitaji kurekebisha kitu kwenye seva, tutafanya sisi wenyewe.

EM wakati mwingine huanguka chini ya mzigo mzito, na kuianzisha tena ... unahitaji kuunganisha kupitia ssh na kuanzisha upya kupitia terminal. "Wasimamizi ni wazuri katika hili," mwenzetu mpya aliamua. Mizigo mizito kwenye DBMS si ya kawaida kwetu, na maombi ya kuanzisha upya EM pia ni ya kawaida. Kisha hali sawa: mvutano, hasira na kutafuta suluhisho la tatizo. Kwa hivyo katika mazungumzo ya kikundi hicho amri zifuatazo zilionekana: /emstop na /emstart.

Tunaokoa wakati, mishipa na masaa ya mtu

/kuua

Ikiwa kuna ushindani mkubwa kwenye hifadhidata, na hii wakati mwingine hutokea, ni muhimu kupakua haraka database. Njia ya haraka ni kuua mchakato wa shida ... Ili kufanya hivyo, unganisha kupitia ssh, kill -9... Bot itasaidia!

Tunaokoa wakati, mishipa na masaa ya mtu

Alexey aliithamini timu hiyo na kuipa jina la kupenda - "Kilyalka" au bunduki.
Siku moja, baada ya kutazama jinsi Alexey alijaribu na kuteseka, akiingia / kuua xxx kila wakati kwa kila moja ya michakato, niliamua kuongeza "pipa nyingi" kwenye bunduki yetu:

Tunaokoa wakati, mishipa na masaa ya mtu

Hiyo ni bora! Kila kitu ni kwa ajili yako, Alexey, kazi tu, mpenzi!

Kwa kawaida, timu muhimu kama hiyo ilikuwa na kikomo ufikiaji kwa user_id - "foolproof". Kuona jinsi Lesha anavyoua michakato kwenye seva ya hifadhidata, watu kadhaa walijaribu kuingiza amri na nambari ya mchakato bila mpangilio, lakini huwezi kudanganya bot yangu smart, alikataa mara moja.

/alertlog

Kweli, ikiwa tu, nilitoa amri:
/alertlog <idadi ya mistari> - pata nambari maalum ya mistari ya tahadhari
Boti huchota arifa na kuituma kwa huduma yetu, kama vile pastebin, iitwayo pyste, na kutuma kiungo cha kubandika kwa gumzo la ombi.

/ hundi

Ifuatayo ilikuja ombi la kufuatilia utendaji halisi wa programu yetu. Hadi sasa, usaidizi wa kiufundi wa mradi ulikusanya data hii kwa mikono. Haijalishi! Wajaribu wetu hodari wameunda kesi za majaribio kwa hili. Rekodi ya jaribio inayotokana sio rahisi sana kusoma; mtumiaji asiye na uzoefu atachukua muda mrefu kuelewa na hana uhakika kwamba ataangazia habari muhimu. Na hatupendi kufanya kwa mikono yetu kile ambacho hatuwezi kufanya kwa mikono yetu ... Kazi mpya kwa bot!

Tunaokoa wakati, mishipa na masaa ya mtu

Amri ya / cheki inaonyesha menyu rahisi na isiyo na utata; wakati huu watu wetu walijifunza jinsi ya kutumia amri hii bila maagizo!

Unapochagua kipengee unachotaka, badala ya menyu, arifa kuhusu kuanza kwa jaribio inaonekana, ili watumiaji wasio na subira wasifanye jaribio letu mara 100500:

Tunaokoa wakati, mishipa na masaa ya mtu

Kulingana na kipengee cha menyu kilichochaguliwa, mtihani maalum unazinduliwa kutoka kwa mtandao wetu, yaani kutoka kwa mashine ambayo bot inaishi (jmeter imeundwa hapo awali, vipimo muhimu viko ...) au moja kwa moja kutoka kwa kituo cha data (kutoka kwa mashine iliyoandaliwa karibu na programu), ili kuwatenga miunganisho ya mtandao wakati wa kupima ucheleweshaji, au kupunguza kwa kiwango cha chini.

Baada ya kukamilisha jaribio na kupokea logi, bot huichanganua na kutoa matokeo katika fomu "inayoweza kusomeka na binadamu":

Tunaokoa wakati, mishipa na masaa ya mtu

Mkusanyiko wa vipimo

Utendaji umefika na wasimamizi wanaovutiwa wa mradi wamepokea kazi kama hiyo kwa mikoa yao. Na Meneja Mradi mmoja mwenye huruma alisema: "Nataka kuwa na takwimu za wakati!" Mtu kutoka CIT alimwambia kuwa itakuwa rahisi kufuatilia haya yote katika Zabbix. Zabbix, kwa hivyo Zabbix...

Nilidhani kwamba nilihitaji kujiandaa kwa hitaji la kuiga suluhisho ... Niliweka wazo kwenye chombo cha docker. Katika chombo, jmeter imezinduliwa kwa ratiba (mara moja kila baada ya dakika 10), huweka logi mahali fulani, php huiweka na kuonyesha data muhimu kwa namna ya ukurasa wa wavuti. Zabbix, kwa kutumia ufunguo wa web.page.get, hupokea ukurasa huu, mara kwa mara huchagua data muhimu kwa vipengele fulani tegemezi na hujenga grafu.

Tunaokoa wakati, mishipa na masaa ya mtu

Nadhani iligeuka sio mbaya. Kwa kutazama grafu, sisi, kwanza, tunaona kasi ya takriban ya programu, na ikiwa kilele kitagunduliwa kwenye grafu, tunajua takriban mahali "kuziba" iko. Ni rahisi. Kufikia sasa imekuwa ikihitajika kwa mkoa mmoja tu, lakini niko tayari kuiga kwa wale wanaopenda.

Maendeleo ya maombi

Takwimu za kazi zinazofanana hivi karibuni zimetoa mawazo zaidi ya kurahisisha na kuwezesha kazi. Katika baadhi ya miradi, kwenye seva za maombi, kuna haja ya kufunga vyombo muhimu vya Crypto Pro, kuna mengi yao, na saini ya digital inaisha kwa muda. Wakati mwingine kazi 2 hufika kwa siku. Lakini niliona kuwa si salama kutumia roboti kwa madhumuni haya na niliamua kwamba nitaunda utendakazi moja kwa moja kwenye programu. Kwa kawaida kwa idhini na kuangalia haki za ufikiaji. Ikiwa una haki zinazohitajika, kipengee cha ziada cha menyu kitapatikana kwa kufanya kazi na saini za dijiti, usakinishaji, ufutaji, maelezo ya kutazama, n.k. Utendaji unaendelezwa kwa sasa. Kama ilivyotokea, hii sio ngumu sana, unahitaji tu kusoma maagizo yaliyopo kidogo, angalia mifano ya nambari, waulize wenzako wenye uzoefu zaidi katika maendeleo, kisha uifanye. Wakati wa mchakato wa utafiti, mawazo yalijitokeza ili kuongeza maombi. Sitafanya mipango ya Napoleon - kuna maendeleo, wacha kila mtu azingatie biashara yake mwenyewe. Lakini ingawa inavutia, ninaifanya mwenyewe.

Mipango

Kama nilivyosema, maoni mengi tofauti yalizaliwa kwa kutumia bot yetu na sio tu - kwa ujumla, wacha tuseme, maoni ya "pointi za otomatiki", nyingi zilisahaulika, kwani sikuwa na wakati wa kuziandika. Sasa ninajaribu kuandika kila kitu kinachokuja akilini, na ninapendekeza kwamba wengine wafanye vivyo hivyo.

Lakini Alexey hasahau kutoa matakwa yake. Kutoka hivi karibuni:
/kill_sql SQL_ID - kuua vipindi vyote na ombi hili la SQL_ID
/kill_block - kuua kikao cha kuzuia mizizi
/onyesha_em - onyesha picha ya utendaji wa EM
Yeye ni mtu mjanja, anataka kushona DBA kutoka kwa simu yake =)

Hivi ndivyo tunavyofanya kazi kwa faida ya Nchi ya Mama!

Je, unajiondoa vipi kutoka kwa kazi za kawaida na zisizovutia?

Natumaini usomaji uligeuka kuwa wa kuvutia, na labda hata muhimu kwa mtu, na sikuwa na muda wa kuchoka msomaji ... Bahati nzuri kwa sisi sote.

Chanzo: mapenzi.com

Kuongeza maoni