Kita makadaginot sa panahon, nerbiyos ug man-oras

Ang among mga proyekto kasagarang rehiyonal, ug ang mga kliyente kasagaran mga ministeryo. Apan, dugang sa sektor sa publiko, gigamit usab sa mga pribadong organisasyon ang among mga sistema. Wala’y halos mga problema sa kanila.

Busa, ang mga nag-unang proyekto mao ang rehiyonal, ug usahay adunay mga problema uban kanila. Pananglitan, sa pasundayag, kung sa mga rehiyon adunay labaw pa sa 20k sa among bililhon nga mga tiggamit sa panahon sa paglansad sa bag-ong pagpaandar sa mga server sa produkto. Kini usa ka sakit…

Ang akong ngalan mao si Ruslan ug gisuportahan nako ang mga sistema sa impormasyon sa BARS Group ug paghimo og killer bot para sa bayolenteng serial DBAs. Kini nga post dili para sa mga mahuyang sa kasingkasing - adunay daghang mga sulat ug mga hulagway.

Kita makadaginot sa panahon, nerbiyos ug man-oras

/awr

Ang pipila sa among mga aplikasyon nagdagan sa Oracle DBMS. Adunay usab mga proyekto sa PostgreSQL DBMS. Ang Oracle adunay usa ka talagsaon nga butang - pagkolekta sa mga estadistika sa load sa DBMS, nga nagpasiugda sa kasamtangan nga mga problema ug gani naghimo og mga rekomendasyon alang sa pagwagtang - Automatic Workload Repository (AWR). Sa usa ka punto (nga mao ang panahon sa kasakit), ang mga developers kanunay nga nangutana sa pagkolekta Mga taho sa AWR alang sa pagtuki sa pasundayag. Kami matinud-anon nga miadto sa DBMS server, nangolekta og mga taho, gidala kini kanamo ug gipadala kini sa produksyon alang sa pagtuki. After the 5th time nakalagot... after the 10th nakalagot na...

Usa sa akong mga kauban kas-a nagpahayag sa ideya nga ang tanan nga gibuhat labaw pa sa kausa kinahanglan nga awtomatiko. Hangtud sa panahon sa kalagot, nga matinud-anon, wala ko maghunahuna mahitungod niini ug misulay sa pag-automate sa tanan nga mahimong automated, apan sa kasagaran kini dili sa panginahanglan ug labaw pa sa usa ka research kay sa usa ka gigamit nga kinaiya.

Ug unya naghunahuna ko: "Dili kinahanglan ang mga admin sa paghimo og report...". Human sa tanan, ang pagkolekta sa usa ka report nagpasabot sa pagpatuman sa sql script @$ORACLE_HOME/rdbms/admin/awrrpt.sql ug pagkuha sa report gikan sa server ngadto sa imong lugar... Oh oo, dili namo tugotan ang pag-uswag alang sa produksyon.

Dayon akong gi-Google ang gikinahanglan nga impormasyon, gimugna ang function gikan sa artikulo sa test base, gipadagan ang script ug milagro - ang report gihugpong ug mahimong maluwas sa lokal. Naghimo ug mga gimbuhaton diin ang mga taho sa AWR kanunay nga gikinahanglan ug gisultihan ang mga developer kung giunsa kini gamiton.

Niining panahona, sa akong libre nga oras, pagkahuman nakigsulti sa @BotFather, naghimo ako usa ka Telegram bot para sa akong kaugalingon, para lang sa kalingawan. Nag-screwed ko sa usa ka yano nga pag-andar didto - ipakita ang karon nga oras, mga rate sa pagbinayloay, panahon, gitudloan kini nga magpadala mga pagdayeg sa akong asawa (unya uyab) sa usa ka iskedyul. Tingali, niadtong panahona, ang pagpadala og mga pagdayeg mao ang pinakasikat nga gamit sa akong bot, ug gipabilhan kini sa akong asawa.

Busa. Ang mga developers nagsulat kanamo sa Telegram, nagpadala kami og report ngadto kanila sa Telegram... Unsa kaha kon dili sila magsulat kanamo, kondili sa usa ka bot? Human sa tanan, kini mahimong mas maayo alang sa tanan, ang report madawat nga mas paspas, ug labaw sa tanan, sa pag-bypass kanato. Ingon niini kung giunsa ang ideya sa una nga popular nga pag-andar alang sa akong bot natawo.

Nagsugod ko sa pagpatuman. Gibuhat nako kini, kutob sa akong mahimo, sa PHP (ang among aplikasyon mismo naa sa PHP, mas batid ko niini kaysa sa Python). Dili ko maayo nga coder, mao nga dili nako ipakita kanimo ang akong code :)

Ang bot nagpuyo sa among corporate network ug adunay access sa pipila ka mga proyekto, lakip ang target nga mga database. Aron dili mahasol sa mga parameter sa team o menu, gidugang nako kini nga pag-andar sa chat sa grupo nga adunay mga pahibalo sa pag-monitor. Niining paagiha nahibal-an dayon sa bot kung diin nga database kolektahon ang taho.

Nakadawat ug mando sama sa /awr N, diin ang N mao ang gidaghanon sa tibuok nga mga oras diin gikinahanglan ang usa ka report (sa default - 1 ka oras), bisan sa usa ka semana, kung ang database wala pa ma-restart, ang bot diha-diha dayon magsugod sa pagtrabaho, pagkolekta sa report, pagmantala niini isip usa ka web page ug diha-diha dayon (hapit didto) naghatag ug link sa gikinahanglan kaayong report.

Sunda ang link ug ania kini, ang taho sa AWR:

Kita makadaginot sa panahon, nerbiyos ug man-oras

Sama sa gipaabot, ang mga developers nakasagubang sa maong mga report generation, ug ang uban nagpasalamat pa gani kanamo.

Kay gipabilhan ang kasayon ​​​​sa team, ang mga manedyer sa proyekto gikan sa ubang mga rehiyon gusto usab, tungod kay nakadawat sila og labing daghan gikan sa kustomer ug nabalaka mahitungod sa pasundayag ug pagkaanaa sa mga sistema. Gidugang nako ang bot sa ubang mga chat. Gigamit gihapon nila kini, ug nalipay ako niini.

Sa ulahi, nahibal-an sa mga kauban gikan sa CIT kung giunsa namon pagkolekta ang mga taho ug gusto namon nga buhaton usab kini. Wala nako sila gidugang sa among mga chat, naghimo ako usa ka bulag nga chat sa henerasyon sa mga taho sa usa ka iskedyul ug sa hangyo.

/pgBadger

Aduna usab kami uban nga mga aplikasyon sa PHP inubanan sa PostgreSQL. Gipatuman nako ang koleksyon sa mga taho sa pgBadger para sa nanginahanglan gamit ang parehas nga prinsipyo - sa mga chat sa grupo. Sa sinugdan gigamit nila kini, apan mihunong sila. Ang pag-andar giputol ingon nga wala kinahanglana.

/ katungdanan

Ang among departamento adunay mga shift sa gabii ug, sumala niana, adunay iskedyul. Anaa kini sa Google Sheets. Dili kanunay sayon ​​​​ang pagpangita alang sa usa ka link, pag-abli sa usa ka tsart, pangitaa ang imong kaugalingon ... Usa sa akong kanhi nga mga kauban nagdula usab sa iyang Telegram bot ug gipaila kini sa chat sa among departamento. mga pahibalo bahin sa pagsugod sa pagbalhin sa katungdanan alang sa mga empleyado sa departamento. Gi-parse sa bot ang iskedyul, gitino ang tawo nga nag-duty sa karon nga petsa ug, sumala sa eskedyul o kung gihangyo, nagtaho kung kinsa ang naa sa katungdanan karon. Kini nahimo nga maayo ug kombenyente. Tinuod, dili kaayo ko ganahan sa format sa mga mensahe. Usab, alang sa mga empleyado sa laing departamento (pananglitan, BC "Medicine"), ang impormasyon mahitungod sa mga nag-duty sa ubang mga direksyon dili kinahanglan, apan kinahanglan nimo nga mahibal-an kung kinsa ang nag-duty sa "Medicine" kung adunay mga problema. Nakahukom ko nga "hulam" ang gamit, apan usba ang dili nako gusto. Naghimo ko og format sa mensahe nga sayon ​​alang sa akong kaugalingon ug sa uban, nga nagtangtang sa wala kinahanglana nga impormasyon.

/tnls

Pagkahuman sa pagsulay sa automation gamit ang Telegram bot, daghang lainlaing mga ideya ang nagpakita, apan gusto nako nga buhaton ang mga kinahanglanon nga butang. Nakahukom ko nga manguna estadistika sa mga hangyo. Aron ma-access ang mga proyekto sa among mga kustomer, nagpatuman kami usa ka gitawag nga "jump server" o forwarding server. Ang mga koneksyon sa VPN gipataas niini, unya ang mga pantalan sa aplikasyon, mga database ug uban pang mga auxiliary nga pagpasa ipasa sa among lokal nga network pinaagi sa ssh, alang sa dali nga pag-access sa mga proyekto sa among mga empleyado, nga wala’y mga problema sa mga koneksyon sa VPN. Ang kinahanglan nimong buhaton mao ang pag-set up og koneksyon sa VPN sa among corporate network.

Ang estadistika sa mga hangyo nagpakita nga kasagaran, human mapakyas ang usa sa mga tunel (sa kaso sa mga problema sa network, tungod sa usa ka timeout, pananglitan), ang mga tawo mokontak kanamo mahitungod sa pagpasig-uli sa pag-access sa proyekto. Sa kadaghanan nga mga kaso, igo na ang pagsugod pag-usab sa koneksyon ug maayo ang tanan. Buhaton nato kini sa imong kaugalingon. Ania ang sugo:
Kita makadaginot sa panahon, nerbiyos ug man-oras

Ikaw "nahulog" sa gitinguha nga butang sa menu, pilia ang imong proyekto, paghulat usa ka minuto ug ang tanan malipayon ug natagbaw ...

Sa pagdawat sa usa ka sugo, nga adunay gamay nga paglihok sa mga byte ug mga bit, ang bot nagkonektar sa forwarding server, nahibal-an daan kung unsang pagpasa ang kinahanglan nga i-restart, ug buhaton ang iyang trabaho - ibalik ang koneksyon sa proyekto. Nagsulat ako mga panudlo aron masulbad nimo ang ingon nga mga isyu sa imong kaugalingon. Ug ang mga tawo mikontak lamang kanamo kung ang gihatag nga himan dili molihok...

/ecp_to_pem

Gipakita sa dugang estadistika nga kasagaran gikinahanglan ang pag-convert EDS Crypto Pro sa pem format(Base64) alang sa lainlaing mga panagsama, ug daghan kami niini. Buluhaton: pagkuha og sudlanan, kopyaha kini sa Windows computer nga adunay P12FromGostCSP utility nga na-install (gibayran, sa paagi), i-convert kini sa pfx, ug dayon i-convert ang pfx gamit ang OpenSSL (uban ang suporta sa GOST encryption) ngadto sa pem. Dili kaayo kombenyente, apan gusto nimo kini sa kalit sa imong mga tudlo.

Ang Google mianhi sa pagluwas pag-usab. Nakaplagan gamit sa usa ka buotan nga tawo. Gitigum ko kini ingon nga nahisulat sa README - kini nagtrabaho. Gitudloan nako ang bot sa pagtrabaho sa utility ug nakakuha og hapit dayon nga pagkakabig.
Kita makadaginot sa panahon, nerbiyos ug man-oras

Sa panahon sa katapusang pagpatuman, usa ka mando ang gi-isyu sa pagbalhin ngadto sa bag-ong encryption format - gost-2012. Sa akong nahinumduman, ang utility niadtong higayona nagtrabaho lamang sa daan nga GOST (2001), tingali kini usa pa ka susama nga gamit gikan sa laing buotan nga tawo, wala ko mahinumdom sa tukma.
Pagkahuman sa pagbalhin sa bag-ong GOST, ang pag-andar sa bot gikuha alang sa mga hinungdan sa seguridad. Gipatuman kini sa usa ka docker container.

Dockerfile, kung adunay nanginahanglan niini:

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

Aron mabag-o, kinahanglan nimo ibutang ang orihinal nga sudlanan (direktoryo sama sa xxx.000) sa direktoryo nga /srv/in, ug dad-a ang nahuman nga pem sa /srv/out.

Sa pag-convert:

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

Usa ka adlaw, usa ka cool kaayo nga Oracle DBA, nga adunay daghang kasinatian sa pagdumala ug pag-uswag sa DBMS, nakakuha usa ka trabaho sa among kompanya. Ug diha-diha dayon siya adunay problema sa pagkonektar sa mga server sa DBMS nga adunay ssh: wala siya mahibal-an kung asa o kung giunsa ang pagkonektar, ang pag-access dili klaro nga gihulagway, o dili niya mapasa ang usa ka butang nga kinahanglan niya sa iyang kaugalingon. Aw, nalipay mi sa pagtabang, gisultihan namo siya unsaon pagkonektar, ug gipasa kaniya ang Enterprise Manager. Apan ang mga butang wala gihapon molihok sa ssh. Usa sa akong mga kaubanan mipasabot niini sa yano: usa ka puro nga DBA :) Nakahukom kami nga kung kinahanglan namon nga mag-tweak sa usa ka butang sa server, buhaton namon kini sa among kaugalingon.

Ang EM usahay mag-crash ubos sa bug-at nga karga, ug aron ma-restart kini ... kinahanglan nimo nga makonektar pinaagi sa ssh ug i-restart pinaagi sa terminal. "Ang mga admin maayo niini," mihukom ang among bag-ong kauban. Ang bug-at nga mga karga sa DBMS dili kasagaran alang kanamo, ug ang mga hangyo nga i-restart ang EM komon usab. Unya ang parehas nga senaryo: tensiyon, kalagot ug pagpangita og solusyon sa problema. Mao nga sa parehas nga mga chat sa grupo ang mosunud nga mga mando nagpakita: /emstop ug /emstart.

Kita makadaginot sa panahon, nerbiyos ug man-oras

/pagpatay

Kung adunay kusog nga kompetisyon sa database, ug kini usahay mahitabo, kinahanglan nga dali nga idiskarga ang database. Ang labing paspas nga paagi mao ang pagpatay sa problema nga proseso... Aron mahimo kini, pagkonektar pinaagi sa ssh, pagpatay -9... Ang bot makatabang!

Kita makadaginot sa panahon, nerbiyos ug man-oras

Gipabilhan ni Alexey ang team ug gihatagan kini usa ka mabination nga ngalan - "Kilyalka" o pusil.
Usa ka adlaw, pagkahuman sa pagtan-aw kung giunsa pagsulay ug pag-antos ni Alexey, pagsulod / pagpatay sa xxx matag higayon alang sa matag proseso, nakahukom ko nga idugang ang "multi-barrel" sa among pusil:

Kita makadaginot sa panahon, nerbiyos ug man-oras

Mas maayo kana! Ang tanan para kanimo, Alexey, trabaho lang, mahal!

Siyempre, limitado ang ingon ka hinungdanon nga grupo access pinaagi sa user_id - "walay kapuslanan". Sa pagtan-aw kung giunsa pagpatay ni Lesha ang mga proseso sa database server, daghang mga tawo ang misulay sa pagsulod sa usa ka command nga adunay random nga numero sa proseso, apan dili nimo malimbongan ang akong smart bot, mibalibad dayon siya.

/alertlog

Bueno, kung mahimo, gihimo nako ang mando:
/ alertlog <gidaghanon sa mga linya> - pagkuha sa piho nga gidaghanon sa mga linya sa alertlog
Gikuha sa bot ang usa ka alertlog ug gipadala kini sa among serbisyo, sama sa pastebin, gitawag nga pyste, ug nagpadala usa ka link sa paste sa hangyo nga chat.

/ mga tseke

Sunod miabut ang usa ka hangyo alang sa pagmonitor sa tinuod nga performance sa among aplikasyon. Hangtud karon, ang teknikal nga suporta sa proyekto nagkolekta niini nga datos nga mano-mano. Dili igsapayan! Ang among maisog nga mga tester nakahimo og mga kaso sa pagsulay alang niini. Ang resulta nga log sa pagsulay dili kaayo sayon ​​​​basahon; ang usa ka walay kasinatian nga tiggamit magkinahanglan og taas nga panahon aron masabtan ug dili sigurado nga iyang ipasiugda ang gikinahanglan nga impormasyon. Ug dili kami ganahan nga buhaton sa among mga kamot ang dili namo mahimo sa among mga kamot ... Usa ka bag-ong buluhaton alang sa bot!

Kita makadaginot sa panahon, nerbiyos ug man-oras

Ang command / checks nagpakita sa usa ka yano ug dili klaro nga menu; niining higayona ang among mga lalaki nakakat-on unsaon paggamit niini nga sugo nga walay mga instruksyon!

Kung gipili nimo ang gusto nga butang, imbis nga usa ka menu, usa ka pahibalo bahin sa pagsugod sa pagsulay makita, aron ang mga walay pasensya nga tiggamit dili modagan sa among pagsulay sa 100500 ka beses:

Kita makadaginot sa panahon, nerbiyos ug man-oras

Depende sa pinili nga menu item, usa ka piho nga pagsulay ang gilunsad gikan sa atong network, nga mao ang gikan sa makina diin ang bot nagpuyo (jmeter pre-configure didto, ang gikinahanglan nga mga pagsulay nahimutang...) o direkta gikan sa data center (gikan sa usa ka andam nga makina sunod sa aplikasyon), aron dili iapil ang mga koneksyon sa network kung ang pagsulay sa mga paglangan, o pakunhuran kini sa labing gamay.

Human makompleto ang pagsulay ug madawat ang log, gi-parse kini sa bot ug gipatungha ang resulta sa porma nga "mabasa sa tawo":

Kita makadaginot sa panahon, nerbiyos ug man-oras

Koleksyon sa mga sukatan

Ang pag-andar miabut ug ang mga interesado nga mga manedyer sa proyekto nakadawat sa ingon nga katungdanan alang sa ilang mga rehiyon. Ug ang usa ka maluluy-on nga Project Manager miingon: "Gusto ko adunay mga istatistika sa oras!" Usa ka tawo gikan sa CIT misulti kaniya nga kini mahimong sayon ​​sa pag-monitor sa tanan niini sa Zabbix. Zabbix, mao nga Zabbix...

Naghunahuna ko nga kinahanglan kong mangandam alang sa panginahanglan sa pagsundog sa solusyon... Akong gibutang ang ideya sa usa ka docker container. Sa sudlanan, gilansad ang jmeter sa usa ka iskedyul (kausa sa matag 10 minuto), ibutang ang log sa usa ka lugar, gi-parse kini sa php ug gipakita ang kinahanglan nga datos sa porma sa usa ka web page. Ang Zabbix, gamit ang web.page.get nga yawe, nakadawat niini nga panid, kanunay nga nagpili sa gikinahanglan nga datos alang sa pipila nga nagsalig nga mga elemento ug nagtukod og graph.

Kita makadaginot sa panahon, nerbiyos ug man-oras

Sa akong hunahuna kini nahimo nga dili daotan. Pinaagi sa pag-obserbar sa graph, kita, una, tan-awa ang gibanabana nga katulin sa aplikasyon, ug kung ang mga taluktok makita sa graph, nahibal-an namon kung asa ang "plug". Yano ra. Sa pagkakaron kini nahimo nga gipangayo alang lamang sa usa ka rehiyon, apan andam ko nga kopyahon kini alang sa mga interesado.

Pag-uswag sa aplikasyon

Ang mga estadistika sa susamang mga buluhaton bag-o lang nagpatunghag dugang mga ideya alang sa pagpayano ug pagpadali sa trabaho. Sa pipila ka mga proyekto, sa mga server sa aplikasyon, kinahanglan nga i-install ang yawe nga mga sulud sa Crypto Pro, adunay daghan niini, ug ang digital nga pirma matapos sa paglabay sa panahon. Usahay 2 ka buluhaton moabot sa usa ka adlaw. Apan giisip nako nga dili luwas ang paggamit sa usa ka bot alang sa kini nga mga katuyoan ug nakahukom nga ako mismo ang maghimo sa pagpaandar sa aplikasyon. Natural nga adunay pagtugot ug pagsusi sa mga katungod sa pag-access. Kung naa kay kinahanglan nga mga pribilihiyo, usa ka dugang nga item sa menu ang magamit alang sa pagtrabaho sa mga digital nga pirma, pag-install, pagtangtang, pagtan-aw sa kasayuran, ug uban pa. Ingon nga kini nahimo, kini dili kaayo lisud, kinahanglan nimo nga basahon ang kasamtangan nga mga panudlo sa gamay, tan-awa ang mga pananglitan sa code, pangutan-a ang mga kauban nga mas eksperyensiyado sa pag-uswag, ug dayon buhata kini. Atol sa proseso sa panukiduki, mitumaw ang mga ideya aron idugang sa aplikasyon. Dili ko maghimo mga plano sa Napoleon - adunay pag-uswag, tugoti ang tanan nga maghunahuna sa ilang kaugalingon nga negosyo. Apan samtang kini makapaikag, ako mismo ang nagbuhat niini.

Mga plano

Sama sa akong giingon, daghang lainlaing mga ideya ang natawo alang sa paggamit sa among bot ug dili lamang - sa kinatibuk-an, ingnon ta, mga ideya alang sa "mga punto sa awtomatiko", daghan kanila ang nakalimtan, tungod kay wala ako'y oras sa pagsulat niini. Karon gisulayan nako nga isulat ang tanan nga naa sa akong hunahuna, ug girekomenda ko nga buhaton usab kini sa uban.

Apan si Alexey wala makalimot sa paghatag sa iyang mga pangandoy. Gikan sa pinakabag-o:
/kill_sql SQL_ID - patya ang tanan nga mga sesyon sa kini nga hangyo sa SQL_ID
/kill_block - patya ang root blocking session
/show_em β€” magpakita ug hulagway sa EM performance
Ligo siya, gusto niya manahi ug DBA sa iyang phone =)

Ingon niini ang among pagtrabaho alang sa kaayohan sa Inahan!

Giunsa nimo pagtangtang ang imong kaugalingon sa naandan ug dili makapaikag nga mga buluhaton?

Nanghinaut ko nga ang pagbasa nahimong makapaikag, ug tingali mapuslanon sa usa ka tawo, ug wala ako'y panahon sa pagsamok sa magbabasa ... Good luck kanatong tanan.

Source: www.habr.com

Idugang sa usa ka comment