Saka outsourcing kanggo pangembangan (Bagian 1)

Halo kabeh, jenengku Sergey Emelyanchik. Aku kepala perusahaan Audit-Telecom, pangembang utama lan penulis sistem Veliam. Aku mutusake kanggo nulis artikel babagan carane aku lan kancaku nggawe perusahaan outsourcing, nulis piranti lunak kanggo awake dhewe lan banjur nyebarake menyang kabeh wong liwat sistem SaaS. Babagan carane aku categorically ora pracaya sing iki bisa. Artikel kasebut bakal ngemot ora mung crita, nanging uga rincian teknis babagan carane produk Veliam digawe. Kalebu sawetara potongan kode sumber. Aku bakal pitutur marang kowe apa kesalahane kita digawe lan carane kita mbenerake mau mengko. Ana keraguan manawa bakal nerbitake artikel kasebut. Nanging aku mikir luwih becik nindakake, njaluk umpan balik lan nambah, tinimbang ora nerbitake artikel lan mikir babagan apa sing bakal kedadeyan yen ...

prasejarah

Aku kerja ing salah sawijining perusahaan minangka karyawan IT. Perusahaan iki cukup gedhe kanthi struktur jaringan sing ekstensif. Aku ora bakal mikir babagan tanggung jawab kerja, aku mung bakal ujar manawa dheweke mesthi ora kalebu pangembangan apa-apa.

We wis ngawasi, nanging sejatine sifate metu saka kapentingan akademisi aku wanted kanggo nyoba kanggo nulis siji prasaja dhewe. Ide iki: Aku pengin dadi ing web, supaya aku bisa kanthi gampang mlebu tanpa nginstal klien lan ndeleng apa sing kedadeyan karo jaringan saka piranti apa wae, kalebu piranti seluler liwat Wi-Fi, lan aku uga pancene. pengin cepet ngerti apa Ana peralatan ing kamar sing wis dadi "mopey" amarga ... ana syarat sing ketat banget kanggo wektu nanggepi masalah kasebut. Akibaté, ana rencana kanggo nulis kaca web prasaja sing ana latar mburi jpeg kanthi diagram jaringan, ngethok piranti kasebut kanthi alamat IP ing gambar iki, lan nuduhake konten dinamis ing ndhuwur. gambar ing koordinat sing dibutuhake ing wangun alamat IP abang ijo utawa sumunar. Tugas wis disetel, ayo miwiti.

Sadurunge, aku wis program ing Delphi, PHP, JS lan banget superficially C ++. Aku ngerti banget carane jaringan bisa. VLAN, Routing (OSPF, EIGRP, BGP), NAT. Iki cukup kanggo aku nulis prototipe pemantauan primitif dhewe.

Aku nulis apa aku ngrancang ing PHP. Server Apache lan PHP ana ing Windows amarga ... Linux kanggo kula ing wektu iku ana sing ora bisa dingerteni lan rumit banget, amarga mengko, aku salah banget lan ing pirang-pirang papan Linux luwih gampang tinimbang Windows, nanging iki minangka topik sing kapisah lan kita kabeh ngerti carane akeh holivars ana. topik iki. Windows task scheduler ditarik ing interval cilik (Aku ora ngelingi persis, nanging kaya sapisan saben telung detik) script PHP sing polling kabeh obyek karo ping banal lan disimpen negara kanggo file.

system(“ping -n 3 -w 100 {$ip_address}“); 

Ya, ya, nggarap database nalika iku uga ora dikuasai kanggo aku. Aku ora ngerti manawa proses paralel bisa ditindakake, lan ngliwati kabeh kelenjar jaringan butuh wektu sing suwe, amarga ... iki kedaden ing siji thread. Masalah utamane muncul nalika sawetara simpul ora kasedhiya, amarga saben wong tundha script kanggo 300 ms. Ing sisih klien ana fungsi looping sing prasaja, kanthi interval sawetara detik, ndownload informasi sing dianyari saka server kanthi panjaluk Ajax lan nganyari antarmuka. Inggih, banjur, sawise 3 ping gagal saurutan, yen kaca web karo ngawasi mbukak ing komputer, komposisi ceria diputer.

Nalika kabeh wis rampung, aku banget inspirasi dening asil lan mikir yen aku bisa nambah liyane (amarga kawruh lan kemampuan). Nanging aku tansah ora seneng sistem karo yuta denah, kang aku panginten banjur, lan isih mikir kanggo dina iki, ora perlu ing paling kasus. Aku wanted kanggo sijine ing ana mung apa tenan bakal bantuan kula ing karya. Prinsip iki tetep dadi dhasar kanggo pangembangan Veliam nganti saiki. Salajengipun, aku nyadari yen bakal kelangan banget yen aku ora kudu terus ngawasi lan ngerti babagan masalah, lan nalika kedadeyan kasebut, bukak kaca kasebut lan deleng ing endi simpul jaringan sing ana masalah iki lan apa sing kudu ditindakake sabanjure. . Piye wae aku ora maca email nalika iku, aku mung ora nggunakake. Aku ketemu ing Internet sing ana SMS gateways sing bisa ngirim request GET utawa POST, lan padha bakal ngirim SMS menyang ponsel karo teks sing aku nulis. Aku langsung nyadari yen aku pancene pengin iki. Lan aku wiwit sinau dokumentasi. Sawise sawetara wektu aku sukses, lan saiki aku nampa SMS babagan masalah ing jaringan ing ponsel kanthi jeneng "obyek tiba". Senajan sistem iki primitif, iki ditulis dening kula dhewe, lan bab sing paling penting sing motivasi kula kanggo berkembang iku program aplikasi sing tenan mbantu kula ing karya.

Banjur ana dina nalika salah sawijining saluran Internet mudhun ing kantor, lan ngawasi aku ora ngerti babagan iki. Wiwit DNS Google isih ping kanthi sampurna. Wektu kanggo mikir babagan carane sampeyan bisa ngawasi manawa saluran komunikasi kasebut urip. Ana macem-macem gagasan babagan carane nindakake iki. Aku ora duwe akses menyang kabeh peralatan. Kita kudu ngerti carane ngerti saluran sing urip, nanging tanpa bisa ndeleng apa wae ing peralatan jaringan kasebut. Banjur kolega teka karo idea sing bisa uga rute nelusuri menyang server umum bisa beda-beda gumantung ing saluran komunikasi sing saiki digunakake kanggo ngakses Internet. Aku mriksa lan ternyata kaya ngono. Ana macem-macem rute nalika nglacak.

system(“tracert -d -w 500 8.8.8.8”);

Dadi, skrip liyane muncul, utawa luwih, amarga sawetara alasan, jejak kasebut ditambahake ing mburi skrip sing padha, sing ping kabeh piranti ing jaringan. Sawise kabeh, iki minangka proses dawa liyane sing ditindakake ing benang sing padha lan nyepetake karya kabeh naskah. Nanging banjur ora dadi ketok. Nanging siji-sijine cara, dheweke nindakake pakaryane, kode kasebut ditetepake kanthi ketat apa jinis pelacakan kanggo saben saluran. Iki carane sistem wiwit bisa, kang wis ngawasi (bareng ngandika, amarga ora ana koleksi sembarang metrik, nanging mung ping) piranti jaringan (router, switch, wi-fi, etc.) lan saluran komunikasi karo donya njaba. . Pesen SMS teka kanthi rutin lan diagram kasebut kanthi jelas nuduhake ing endi masalahe.

Salajengipun, ing karya saben dinten aku kudu nindakake cross-crossing. Lan aku kesel menyang Cisco ngalih saben wektu kanggo ndeleng kang antarmuka nggunakake. Carane kelangan iku bakal klik ing obyek ing ngawasi lan ndeleng dhaptar antarmuka karo gambaran. Iku bakal ngirit wektu. Kajaba iku, ing skema iki ora perlu mbukak Putty utawa SecureCRT kanggo ngetik akun lan printah. Aku mung ngeklik ngawasi, weruh apa sing dibutuhake lan banjur nindakake tugasku. Aku miwiti looking for cara kanggo sesambungan karo ngalih. Aku langsung nemoni 2 pilihan: SNMP utawa mlebu ing saklar liwat SSH, ngetik perintah sing dibutuhake lan ngurai asil. Aku ngilangi SNMP amarga kerumitan implementasine; Aku ora sabar entuk asil. karo SNMP, sampeyan kudu dig menyang MIB kanggo dangu lan, adhedhasar data iki, generate data bab antarmuka. Ana tim apik ing CISCO

show interface status

Iku nuduhake persis apa aku kudu salib-nyebrang. Apa keganggu karo SNMP nalika aku mung pengin ndeleng output saka printah iki, Aku panginten. Sawise sawetara wektu, aku nyadari kesempatan iki. Diklik ing obyek ing kaca web. Acara kasebut dipicu dening klien AJAX ngubungi server, lan banjur disambungake liwat SSH menyang saklar sing dibutuhake (kredensial kasebut hardcoded menyang kode, ora ana kepinginan kanggo nyaring, kanggo nggawe sawetara menu sing kapisah. iku bakal bisa kanggo ngganti akun saka antarmuka , Aku needed asil lan cepet) Aku ngetik printah ndhuwur ana lan dikirim bali menyang browser. Dadi aku wiwit ndeleng informasi babagan antarmuka kanthi siji klik mouse. Iki pancen trep, utamane yen sampeyan kudu ndeleng informasi iki ing saklar sing beda-beda bebarengan.

Pemantauan saluran adhedhasar jejak ora dadi ide sing paling apik, amarga ... kadhangkala karya iki digawa metu ing jaringan, lan nelusuri bisa ngganti lan ngawasi wiwit njerit ing kula sing ana masalah karo saluran. Nanging sawise mbuwang akeh wektu kanggo analisis, aku nyadari yen kabeh saluran bisa digunakake, lan pemantauanku ngapusi aku. Akibaté, aku takon kanca-kancaku sing ngatur saklar pembentuk saluran supaya mung ngirim syslog nalika status visibilitas tanggane diganti. Dadi, luwih gampang, luwih cepet lan luwih akurat tinimbang nglacak. Acara kaya pepadhamu ilang wis teka, lan aku langsung menehi kabar babagan saluran mudhun.

Salajengipun, sawetara printah liyane muncul nalika ngeklik obyek, lan SNMP ditambahake kanggo ngumpulake sawetara metrik, lan iku pancene. Sistem kasebut ora tau dikembangake maneh. Dheweke nindakake kabeh sing dibutuhake, iku alat sing apik. Akeh sing maca mbokmenawa bakal ngandhani yen wis ana akeh piranti lunak ing Internet kanggo ngatasi masalah kasebut. Nanging nyatane, aku ora google produk free kuwi banjur aku pancene wanted kanggo berkembang skills program sandi, lan apa cara sing luwih apik kanggo push kanggo iki saka masalah aplikasi nyata. Ing titik iki, versi pisanan ngawasi wis rampung lan ora diowahi maneh.

Nggawe perusahaan Audit-Telekomunikasi

Wektu liwati, aku wiwit kerja paruh wektu ing perusahaan liyane, untung jadwal kerjaku ngidini aku nindakake iki. Yen sampeyan kerja ing macem-macem perusahaan, katrampilan sampeyan ing macem-macem wilayah tuwuh kanthi cepet, lan wawasan sampeyan berkembang kanthi apik. Ana perusahaan sing, kaya sing dikandhakake, sampeyan wong Swedia, tukang panen, lan pemain trompet. Ing tangan siji, angel, ing sisih liya, yen sampeyan ora kesed, sampeyan dadi generalis lan iki ngidini sampeyan ngatasi masalah kanthi luwih cepet lan luwih efisien amarga sampeyan ngerti cara kerja lapangan sing gegandhengan.

Kancaku Pavel (uga spesialis IT) terus-terusan nyengkuyung aku kanggo miwiti bisnis dhewe. Ana akeh gagasan kanthi variasi sing beda-beda saka apa sing ditindakake. Iki wis rembugan kanggo taun. Lan ing pungkasan, mesthine ora ana apa-apa amarga aku mamang, lan Pavel minangka pemimpi. Saben-saben dheweke ngusulake ide, aku mesthi ora percaya lan ora gelem melu. Nanging kita pancene pengin mbukak bisnis kita dhewe.

Pungkasan, kita bisa nemokake pilihan sing cocog karo kita lan nindakake apa sing kita ngerti. Ing 2016, kita mutusake nggawe perusahaan IT sing bakal mbantu bisnis ngatasi masalah IT. Iki minangka panyebaran sistem IT (1C, server terminal, server mail, lan sapiturute), pangopènan, HelpDesk klasik kanggo pangguna lan administrasi jaringan.

Terus terang, nalika nggawe perusahaan, aku ora percaya babagan 99,9%. Nanging piye wae Pavel bisa njaluk kula kanggo nyoba, lan looking ahead, kang ternyata bener. Pavel lan aku chipped ing 300 rubles saben, ndhaptar LLC anyar "Audit-Telecom", nyewa kantor cilik, nggawe kertu bisnis kelangan, uga, ing umum, kaya mbokmenawa paling inexperienced, pengusaha anyar, lan miwiti looking for klien. Nemokake klien minangka crita sing beda. Mbok menawa kita bakal nulis artikel sing kapisah minangka bagéan saka blog perusahaan yen ana sing kasengsem. Telpon kadhemen, flyers, etc. Iki ora menehi asil. Nalika aku maca saiki saka akeh crita babagan bisnis, siji cara utawa liyane, akeh gumantung ing luck. Kita padha begja. lan secara harfiah sawetara minggu sawise nggawe perusahaan, sedulurku Vladimir nyedhaki kita, sing nggawa kita klien pisanan. Aku ora bakal mboseni sampeyan karo rincian nggarap klien, dudu artikel kasebut, mung bakal dakkandhakake yen kita nindakake audit, ngenali wilayah kritis lan wilayah kasebut rusak nalika keputusane ditindakake. kerjo bareng karo kita ing basis aktif minangka outsourcing. Sawise iki, keputusan positif langsung digawe.

Banjur, utamane liwat tutuk liwat kanca, perusahaan layanan liyane wiwit muncul. Helpdesk ana ing siji sistem. Sambungan menyang peralatan jaringan lan server beda, utawa luwih beda. Sawetara wong nyimpen trabasan, liyane nggunakake buku alamat RDP. Ngawasi minangka sistem liyane sing kapisah. Ora trep banget kanggo tim kerja ing sistem sing beda-beda. Informasi penting ilang. Contone, server terminal klien dadi ora kasedhiya. Aplikasi saka pangguna klien iki langsung ditampa. Spesialis dhukungan mbukak panjalukan (ditampa liwat telpon). Yen kedadeyan lan panjaluk didaftar ing siji sistem, spesialis dhukungan bakal langsung ndeleng apa masalah pangguna lan ngandhani babagan iki, nalika nyambungake menyang obyek sing dibutuhake kanggo ngatasi kahanan kasebut. Kabeh wong ngerti kahanan taktik lan kerjane kanthi harmonis. Kita durung nemokake sistem ing ngendi kabeh iki digabungake. Dadi cetha yen wektune nggawe produk kita dhewe.

Terus nggarap sistem pemantauan sampeyan

Cetha manawa sistem sing ditulis sadurunge ora cocog kanggo tugas saiki. Ora saka segi fungsi utawa kualitas. Lan diputusake kanggo nulis sistem kasebut saka awal. Grafis kudu katon beda banget. Iki kudu dadi sistem hirarkis supaya bisa kanthi cepet lan gampang mbukak obyek sing tepat kanggo klien sing tepat. Skema kaya ing versi pisanan pancen ora bisa ditrapake ing kasus saiki, amarga Klien beda-beda lan ora dadi masalah ing papan endi peralatan kasebut. Iki wis ditransfer menyang dokumentasi.

Dadi tugas yaiku:

  1. Struktur hirarkis;
  2. Sawetara jinis bagean server sing bisa diselehake ing papan klien ing wangun mesin virtual kanggo ngumpulake metrik sing kita butuhake lan dikirim menyang server tengah, sing bakal ngringkes kabeh iki lan nuduhake marang kita;
  3. Tandha. Sing ora bisa dilalekake, amarga ... ing wektu iku ora bisa kanggo wong lungguh lan mung katon ing monitor;
  4. Sistem aplikasi. Klien wiwit katon kanggo kang kita layanan ora mung server lan peralatan jaringan, nanging uga workstations;
  5. Kemampuan kanggo nyambung cepet menyang server lan peralatan saka sistem;

Tugas wis disetel, kita mulai nulis. Sadawane dalan, proses panjalukan saka klien. Ing wektu iku wis ana 4 kita. Kita miwiti nulis loro bagean bebarengan: server tengah lan server kanggo instalasi kanggo klien. Ing wektu iki, Linux ora asing maneh kanggo kita lan diputusake yen mesin virtual sing bakal diduweni klien bakal ana ing Debian. Ora bakal ana installer, kita mung bakal nggawe proyek bagean server ing siji mesin virtual tartamtu, banjur mung bakal tiron menyang klien sing dikarepake. Iki ana kesalahan liyane. Mengko dadi cetha yen ing skema kaya mengkono mekanisme nganyari wis rampung undeveloped. Sing. kita padha nambah sawetara fitur anyar, lan banjur ana kabèh masalah distribusi kanggo kabeh server klien, nanging kita bakal teka maneh mengko, kabeh supaya.

Kita nggawe prototipe pisanan. Dheweke bisa ping piranti jaringan klien lan server sing dibutuhake lan ngirim data iki menyang server pusat. Lan dheweke, ing siji, nganyari data iki akeh ing server tengah. Ing kene aku bakal nulis ora mung crita babagan carane lan apa sing sukses, nanging uga apa kesalahan amatir sing ditindakake lan kepiye mengko aku kudu mbayar kanthi wektu. Dadi, kabeh wit obyek disimpen ing siji file ing wangun obyek serialized. Nalika kita nyambungake sawetara klien menyang sistem, kabeh luwih utawa kurang normal, sanajan kadhangkala ana sawetara artefak sing ora bisa dingerteni. Nanging nalika kita nyambungake puluhan server menyang sistem kasebut, keajaiban wiwit kedadeyan. Kadhangkala, kanggo sawetara alasan sing ora dingerteni, kabeh obyek ing sistem mung ilang. Penting kanggo dicathet yen server sing dikirim klien menyang server pusat saben sawetara detik liwat panyuwunan POST. Pembaca sing ati-ati lan programmer sing berpengalaman wis ngira manawa ana masalah kanggo macem-macem akses menyang file sing obyek serial disimpen saka macem-macem benang ing wektu sing padha. Lan nalika kedadeyan kasebut, keajaiban kedadeyan kanthi ilang obyek. File mung dadi kosong. Nanging kabeh iki ora ditemokake langsung, nanging mung sajrone operasi karo sawetara server. Sajrone wektu kasebut, fungsi pindai port ditambahake (server dikirim menyang pusat ora mung informasi babagan kasedhiyan piranti, nanging uga babagan port sing mbukak). Iki ditindakake kanthi nelpon printah:

$connection = @fsockopen($ip, $port, $errno, $errstr, 0.5);

asil asring salah lan mindai njupuk wektu dawa kanggo rampung. Aku lali bab ping, iku rampung liwat fping:

system("fping -r 3 -t 100 {$this->ip}");

Iki uga ora paralel lan mulane prosese dawa banget. Mengko, kabeh dhaptar alamat IP sing dibutuhake kanggo verifikasi dikirim menyang fping bebarengan, lan bali kita nampa dhaptar siap-siap sing nanggapi. Ora kaya kita, fping bisa nggawe paralel proses.

Tugas rutin liyane yaiku nyetel sawetara layanan liwat WEB. Contone, ECP saka MS Exchange. Sejatine iku mung link. Lan kita mutusake yen kita kudu bisa nambah pranala kasebut langsung menyang sistem, supaya ora kudu katon ing dokumentasi utawa ing papan liya ing tetenger babagan cara ngakses ECP klien tartamtu. Mangkene konsep pranala sumber daya kanggo sistem kasebut, fungsine kasedhiya nganti saiki lan ora owah, meh.

Carane pranala sumber bisa digunakake ing Veliam
Saka outsourcing kanggo pangembangan (Bagian 1)

Sambungan adoh

Iki minangka tumindak ing Veliam versi saiki
Saka outsourcing kanggo pangembangan (Bagian 1)

Salah sawijining tugas yaiku nyambungake kanthi cepet lan gampang menyang server, sing wis ana akeh (luwih saka satus) lan ngurutake jutaan trabasan RDP sing wis disimpen pancen ora trep. Alat dibutuhake. Ana piranti lunak ing Internet sing kaya buku alamat kanggo sambungan RDP kuwi, nanging padha ora Integrasi karo sistem ngawasi, lan akun ora bisa disimpen. Ngetik akun kanggo klien sing beda-beda saben wektu iku neraka murni nalika sampeyan nyambungake kaping pirang-pirang dina menyang server sing beda-beda. Kanthi SSH, kahanan dadi luwih apik; ana akeh piranti lunak sing apik sing ngidini sampeyan ngatur sambungan kasebut menyang folder lan ngelingi akun kasebut. Nanging ana 2 masalah. Kapisan yaiku kita ora nemokake program siji kanggo sambungan RDP lan SSH. Kapindho iku yen ing sawetara titik aku ora ing komputer lan aku kudu cepet nyambung, utawa aku mung reinstalled sistem, Aku kudu pindhah menyang dokumentasi kanggo dipikir akun saka klien iki. Iku ora trep lan mbuwang wektu.

Struktur hirarki sing dibutuhake kanggo server klien wis kasedhiya ing produk internal kita. Aku mung kudu ngerti carane masang sambungan cepet menyang peralatan perlu ana. Kanggo wiwitan, paling ora ing jaringan sampeyan.

Ngelingi kasunyatan manawa klien ing sistem kita minangka browser sing ora duwe akses menyang sumber daya lokal komputer, supaya bisa mbukak aplikasi sing dibutuhake kanthi sawetara prentah, mula diciptakake kanggo nindakake kabeh liwat "Windows". skema url khusus". Iki minangka "plugin" tartamtu sing muncul kanggo sistem kita, sing mung kalebu Putty lan Remote Desktop Plus lan, sajrone instalasi, mung ndhaptar skema URI ing Windows. Saiki, nalika kita pengin nyambung menyang obyek liwat RDP utawa SSH, kita ngeklik tumindak iki ing sistem kita lan Custom URI bisa digunakake. Mstsc.exe standar sing dibangun ing Windows utawa putty, sing minangka bagean saka "plugin," diluncurake. Aku sijine tembung plugin ing kuotasi amarga iki dudu plugin browser ing pangertèn klasik.

Ing paling sing ana soko. Buku alamat sing trep. Kajaba iku, ing kasus Putty, kabeh umume apik; bisa diwenehi sambungan IP, login lan sandhi minangka parameter input. Sing. Kita wis nyambung menyang server Linux ing jaringan kanthi siji klik tanpa ngetik sandhi. Nanging karo RDP iku ora sing prasaja. Mstsc standar ora bisa nyedhiyakake kredensial minangka paramèter. Remote Desktop Plus teka kanggo ngluwari. Dheweke ngidini kedadeyan kasebut. Saiki kita bisa nindakake tanpa, nanging wis suwe dadi asisten sing setya ing sistem kita. Kanthi situs HTTP(S) kabeh gampang, obyek kasebut mung dibukak ing browser lan mung. Trep lan praktis. Nanging iki rasa seneng mung ing jaringan internal.

Amarga kita ngrampungake mayoritas masalah saka kantor, sing paling gampang yaiku nyedhiyakake VPN kanggo klien. Banjur bisa nyambung menyang wong-wong mau saka sistem kita. Nanging isih rada ora trep. Kanggo saben klien, perlu kanggo nyimpen akeh sambungan VPN sing dieling-eling ing saben komputer, lan sadurunge nyambung menyang apa wae, kudu ngaktifake VPN sing cocog. Kita nggunakake solusi iki kanggo dangu. Nanging jumlah klien saya tambah, jumlah VPN uga saya tambah, lan kabeh iki wiwit ketegangan lan ana sing kudu ditindakake. Luh utamané teka ing mripat sawise instal maneh sistem, nalika aku kudu ngetik maneh Welasan sambungan VPN ing profil Windows anyar. Mungkasi sijine munggah karo iki, Aku ngandika, lan miwiti mikir bab apa aku bisa nindakake babagan.

Kedaden kabeh klien duwe piranti saka perusahaan kondhang Mikrotik minangka router. Padha banget fungsional lan trep kanggo nindakake meh kabeh tugas. Kekurangane yaiku "dibajak". Kita ngrampungake masalah iki mung kanthi nutup kabeh akses saka njaba. Nanging kudu piye wae duwe akses menyang wong-wong mau tanpa teka ing panggonan klien, amarga ... iku dawa. Kita mung nggawe trowongan kanggo saben Mikrotik kasebut lan misahake menyang kolam sing kapisah. tanpa nuntun, supaya ora ana sambungan jaringan karo jaringan klien lan jaringan karo saben liyane.

Ide kasebut dilahirake kanggo mesthekake yen nalika aku ngeklik obyek sing dibutuhake ing sistem kasebut, server ngawasi pusat, ngerti akun SSH kabeh klien Mikrotik, nyambung menyang sing dikarepake, nggawe aturan nerusake menyang host sing dikarepake kanthi port dibutuhake. Ana sawetara titik ing kene. Solusi kasebut ora universal - mung bisa digunakake kanggo Mikrotik, amarga sintaks perintah beda kanggo kabeh router. Uga, penerusan kasebut banjur kudu dibusak, lan bagean server sistem kita ora bisa nglacak kanthi cara apa wae yen aku wis rampung sesi RDP. Inggih, nerusake kuwi bolongan kanggo klien. Nanging kita ora ngupaya universalitas, amarga ... produk iki digunakake mung ing perusahaan kita lan ora ana pikirane kanggo ngeculake menyang umum.

Saben masalah wis ditanggulangi kanthi cara dhewe. Nalika aturan kasebut digawe, terusake iki mung kasedhiya kanggo siji alamat IP eksternal tartamtu (saka ngendi sambungan kasebut diwiwiti). Dadi bolongan keamanan dihindari. Nanging kanthi saben sambungan kasebut, aturan Mikrotik ditambahake menyang kaca NAT lan ora dibusak. Lan kabeh wong ngerti yen luwih akeh aturan, luwih akeh prosesor router dimuat. Lan umume, aku ora bisa nampa yen sawijining dina aku bakal pindhah menyang sawetara Mikrotik, lan ana atusan aturan mati, ora ana gunane.

Amarga server kita ora bisa nglacak status sambungan, supaya Mikrotik nglacak dhewe. Lan aku nulis script sing terus-terusan ngawasi kabeh aturan nerusake karo gambaran tartamtu lan mriksa apa sambungan TCP wis aturan cocok. Yen wis sawetara wektu ora ana, mula sambungan kasebut mbokmenawa wis rampung lan penerusan iki bisa dibusak. Kabeh wis rampung, skrip bisa uga.

Miturut cara, iki:

global atmonrulecounter {"dontDelete"="dontDelete"}
:foreach i in=[/ip firewall nat find comment~"atmon_script_main"] do={ 
	local dstport [/ip firewall nat get value-name="dst-port" $i]
	local dstaddress [/ip firewall nat get value-name="dst-address" $i]
	local dstaddrport "$dstaddress:$dstport"
	#log warning message=$dstaddrport
	local thereIsCon [/ip firewall connection find dst-address~"$dstaddrport"]
	if ($thereIsCon = "") do={
		set ($atmonrulecounter->$dstport) ($atmonrulecounter->$dstport + 1)
		#:log warning message=($atmonrulecounter->$dstport)
		if (($atmonrulecounter->$dstport) > 5) do={
			#log warning message="Removing nat rules added automaticaly by atmon_script"
			/ip firewall nat remove [/ip firewall nat find comment~"atmon_script_main_$dstport"]
			/ip firewall nat remove [/ip firewall nat find comment~"atmon_script_sub_$dstport"]
			set ($atmonrulecounter->$dstport) 0
		}
	} else {
		set ($atmonrulecounter->$dstport) 0
	}
}

Mesthine bisa digawe luwih ayu, luwih cepet, lan liya-liyane, nanging bisa digunakake, ora mbukak Mikrotik lan nindakake tugas sing apik banget. Kita pungkasane bisa nyambung menyang server lan peralatan jaringan klien kanthi mung siji klik. Tanpa mbukak VPN utawa ngetik sandhi. Sistem wis dadi trep banget kanggo nggarap. Wektu layanan suda, lan kita kabeh ngentekake wektu kerja tinimbang nyambung menyang obyek sing dibutuhake.

Backup Mikrotik

Kita ngatur serep kabeh Mikrotik menyang FTP. Lan sakabèhé kabeh iku apik. Nanging nalika sampeyan kudu nggawe serep, sampeyan kudu mbukak FTP iki lan goleki ing kana. Kita duwe sistem ing ngendi kabeh router disambungake; kita bisa komunikasi karo piranti liwat SSH. Apa kita ora nggawe supaya sistem dhewe njupuk serep saka kabeh Mikrotik saben dina, Aku panginten. Lan dheweke wiwit ngleksanakake. Kita nyambung, nggawe serep lan njupuk menyang panyimpenan.

Kode skrip ing PHP kanggo njupuk serep saka Mikrotik:

<?php

	$IP = '0.0.0.0';
	$LOGIN = 'admin';
	$PASSWORD = '';
	$BACKUP_NAME = 'test';

    $connection = ssh2_connect($IP, 22);

    if (!ssh2_auth_password($connection, $LOGIN, $PASSWORD)) exit;

    ssh2_exec($connection, '/system backup save name="atmon" password="atmon"');
    stream_get_contents($connection);
    ssh2_exec($connection, '/export file="atmon.rsc"');
    stream_get_contents($connection);
    sleep(40); // Waiting bakup makes

    $sftp = ssh2_sftp($connection);

    // Download backup file
    $size = filesize("ssh2.sftp://$sftp/atmon.backup");
    $stream = fopen("ssh2.sftp://$sftp/atmon.backup", 'r');
    $contents = '';
    $read = 0;
    $len = $size;
    while ($read < $len && ($buf = fread($stream, $len - $read))) {
        $read += strlen($buf);
        $contents .= $buf;
    }
    file_put_contents ($BACKUP_NAME . ‘.backup’,$contents);
    @fclose($stream);

    sleep(3);
    // Download RSC file
    $size = filesize("ssh2.sftp://$sftp/atmon.rsc");
    $stream = fopen("ssh2.sftp://$sftp/atmon.rsc", 'r');
    $contents = '';
    $read = 0;
    $len = $size;
    while ($read < $len && ($buf = fread($stream, $len - $read))) {
        $read += strlen($buf);
        $contents .= $buf;
    }
    file_put_contents ($BACKUP_NAME . ‘.rsc’,$contents);
    @fclose($stream);

    ssh2_exec($connection, '/file remove atmon.backup');
    ssh2_exec($connection, '/file remove atmon.rsc');

?>

Serep dijupuk ing rong wujud - binar lan konfigurasi teks. Binar mbantu cepet mulihake konfigurasi sing dibutuhake, lan teks kasebut ngidini sampeyan ngerti apa sing kudu ditindakake yen ana panggantos peralatan sing dipeksa lan binar ora bisa diunggah menyang. Akibaté, kita entuk fungsi trep liyane ing sistem. Kajaba iku, nalika nambah Mikrotik anyar, ora perlu ngatur apa-apa, aku mung nambah obyek kasebut menyang sistem lan nyetel akun liwat SSH. Banjur sistem kasebut dhewe njupuk serep. Versi SaaS Veliam saiki durung duwe fungsi iki, nanging kita bakal cepet porte.

Gambar saka apa sing katon ing sistem internal
Saka outsourcing kanggo pangembangan (Bagian 1)

Transisi menyang panyimpenan database normal

Aku wis nulis ing ndhuwur yen artefak katon. Kadhangkala kabeh dhaptar obyek ing sistem mung ilang, kadhangkala nalika nyunting obyek, informasi kasebut ora disimpen lan obyek kasebut kudu diganti jeneng kaping telu. Iki jengkel kabeh wong banget. Ilang obyek arang banget, lan gampang dibalekake kanthi mulihake file iki, nanging gagal nalika nyunting obyek asring kedadeyan. Mbokmenawa, aku pisanan ora nindakake iki liwat database amarga ora pas ing atine carane iku bisa kanggo nyimpen wit karo kabeh sambungan ing meja warata. Iku warata, nanging wit iku hirarkis. Nanging solusi sing apik kanggo macem-macem akses, lan sabanjure (minangka sistem dadi luwih rumit) transaksional, yaiku DBMS. Aku mbokmenawa ora pisanan nemoni masalah iki. Aku wiwit googling. Ternyata kabeh wis diciptakake sadurunge aku lan ana sawetara algoritma sing mbangun wit saka meja sing rata. Sawise ndeleng siji-sijine, aku ngetrapake salah sawijining. Nanging iki wis dadi versi anyar saka sistem, amarga ... Nyatane, amarga iki, aku kudu nulis ulang cukup akeh. Asil kasebut alamiah, masalah prilaku acak sistem ilang. Sawetara bisa uga ujar manawa kesalahane banget amatir (skrip single-threaded, nyimpen informasi sing diakses kaping pirang-pirang bebarengan saka macem-macem benang ing file, lsp) ing bidang pangembangan piranti lunak. Mungkin iki bener, nanging tugas utamaku yaiku administrasi, lan pemrograman minangka masalah kanggo jiwaku, lan aku mung ora duwe pengalaman kerja ing tim programer, ing ngendi perkara dhasar kasebut bakal langsung disaranake dening seniorku. kanca-kanca. Mulane, aku ngisi kabeh benjolan iki dhewe, nanging aku sinau materi kanthi apik. Lan uga, tugasku kalebu rapat karo klien, tumindak sing tujuane kanggo promosi perusahaan, akeh masalah administratif ing perusahaan, lan liya-liyane. Nanging siji cara utawa liyane, apa wis ana ing dikarepake. Wong lanang lan aku dhewe nggunakake produk kasebut ing karya saben dina. Ana gagasan lan solusi sing ora kasil sing ora bisa ditindakake, nanging pungkasane dadi cetha yen iki dudu alat sing bisa digunakake lan ora ana sing nggunakake lan ora ana ing Veliam.

Helpdesk - Helpdesk

Ora bakal salah kanggo sebutno carane HelpDesk dibentuk. Iki crita sing beda banget, amarga ... ing Veliam iki wis 3rd versi rampung anyar, kang beda saka kabeh sadurunge. Saiki iku sistem sing prasaja, intuisi tanpa lonceng lan peluit sing ora perlu, kanthi kemampuan kanggo nggabungake karo domain, uga kemampuan kanggo ngakses profil pangguna sing padha saka ngendi wae nggunakake link saka email. Lan sing paling penting, bisa nyambung menyang pelamar liwat VNC saka ngendi wae (ing omah utawa ing kantor) langsung saka aplikasi tanpa VPN utawa port forwarding. Aku bakal pitutur marang kowe carane kita teka iki, apa kedaden sadurunge lan apa kaputusan elek digawe.

Kita nyambung menyang pangguna liwat TeamViewer sing kondhang. Kabeh komputer sing pangguna sing kita layani wis diinstal TV. Wangsulan: Bab ingkang sapisanan kita nindakake salah, lan salajengipun dibusak, iki ngubungake saben klien HD kanggo hardware. Kepiye pangguna mlebu menyang sistem HD kanggo ninggalake panjaluk? Saliyane TV, saben wong duwe sarana khusus sing diinstal ing komputer, ditulis ing Lazarus (akeh wong ing kene bakal muter mripate, lan bisa uga pindhah menyang Google apa iku, nanging basa kompilasi paling apik sing aku ngerti yaiku Delphi, lan Lazarus meh padha. bab sing padha, mung gratis). Umumé, pangguna ngluncurake file kumpulan khusus sing ngluncurake sarana iki, sing banjur maca HWID sistem kasebut lan sawise browser diluncurake lan otorisasi kedadeyan. Yagene iki ditindakake? Ing sawetara perusahaan, jumlah pangguna sing dilayani diitung kanthi individu, lan rega layanan saben wulan adhedhasar jumlah wong. Iki bisa dingerteni, sampeyan ujar, nanging kenapa diikat karo hardware? Gampang banget, sawetara wong teka ing omah lan njaluk panjaluk saka laptop omah kanthi gaya "gawe kabeh apik kanggo aku ing kene." Saliyane maca sistem HWID, sarana kasebut narik ID Teamviewer saiki saka registri lan uga dikirim menyang kita. Teamviewer duwe API kanggo integrasi. Lan kita nindakake integrasi iki. Nanging ana siji nyekel. Liwat API kasebut, ora bisa nyambung menyang komputer pangguna nalika dheweke ora langsung miwiti sesi iki lan sawise nyoba nyambungake, dheweke uga kudu ngeklik "konfirmasi". Ing wektu iku, katon logis kanggo kita yen ora ana sing kudu nyambung tanpa panjaluk pangguna, lan amarga wong kasebut ana ing komputer, dheweke bakal miwiti sesi kasebut lan nanggapi kanthi affirmatively kanggo panjalukan sambungan remot. Kabeh dadi salah. Pelamar kelalen mencet miwiti sesi, lan kudu marang wong-wong mau ing obrolan telephone. Iki mbuwang wektu lan mumetake ing loro-lorone proses kasebut. Kajaba iku, ora umum nalika ana wong sing njaluk panjaluk, nanging diijini nyambung mung nalika dheweke lunga nedha awan. Amarga masalah kasebut ora kritis lan dheweke ora pengin proses kerjane diganggu. Patut, dheweke ora bakal mencet tombol apa wae kanggo ngidini sambungan. Iki minangka fungsi tambahan nalika mlebu HelpDesk - maca ID Teamviwer. Kita ngerti sandhi permanen sing digunakake nalika nginstal Teamviewer. Luwih tepate, mung sistem sing ngerti, amarga dibangun ing installer lan ing sistem kita. Mulane, ana tombol sambungan saka aplikasi kanthi ngeklik sing ora perlu ngenteni apa-apa, nanging Teamviewer langsung mbukak lan ana sambungan. Akibaté, ana rong jinis sambungan sing bisa ditindakake. Liwat API Teamviewer resmi lan sing digawe dhewe. Aku kaget, dheweke mandheg nggunakake sing pertama meh langsung, sanajan ana instruksi kanggo nggunakake mung ing kasus khusus lan nalika pangguna dhewe menehi go-ahead. Isih, menehi kula keamanan saiki. Nanging ternyata para pelamar ora butuh iki. Padha kabeh pancen nggoleki karo disambungake kanggo wong-wong mau tanpa tombol konfirmasi.

Ngalih menyang multithreading ing Linux

Pitakonan nyepetake dalan scanner jaringan kanggo mbukak dhaptar port sing wis ditemtokake lan ping prasaja obyek jaringan wis suwe wiwit muncul. Ing kene, mesthine, solusi pisanan sing dipikirake yaiku multithreading. Wiwit wektu utama kanggo ping ngenteni paket bali, lan ping sabanjure ora bisa diwiwiti nganti paket sadurunge bali, ing perusahaan sing malah duwe 20+ server lan peralatan jaringan, iki wis cukup alon. Intine, siji paket bisa ilang, nanging aja langsung ngabari administrator sistem babagan iki. Dheweke mung bakal mandheg nampa spam kasebut kanthi cepet. Iki tegese sampeyan kudu ping saben obyek luwih saka sepisan sadurunge nggawe kesimpulan babagan ora bisa diakses. Tanpa rinci banget, perlu kanggo paralel amarga yen iki ora rampung, mesthine administrator sistem bakal sinau babagan masalah saka klien, lan ora saka sistem ngawasi.

PHP dhewe ora ndhukung multithreading metu saka kothak. Bisa multiprocessing, sampeyan bisa garpu. Nanging, nyatane, aku wis duwe mekanisme polling sing ditulis lan aku pengin nggawe supaya aku bakal ngetung kabeh simpul sing dibutuhake saka database, ping kabeh bebarengan, ngenteni respon saka saben lan mung sawise iku langsung nulis data kasebut. Iki ngirit jumlah panjalukan sing diwaca. Multithreading pas karo ide iki. Kanggo PHP ana modul PThreads sing ngijini sampeyan kanggo nindakake multithreading nyata, senajan njupuk cukup tinkering kanggo nyetel iki ing PHP 7.2, nanging wis rampung. Pindai port lan ping saiki cepet. Lan tinimbang, contone, 15 detik saben puteran sadurungé, proses iki wiwit njupuk 2 detik. Iku asil apik.

Audit cepet perusahaan anyar

Kepiye fungsi kanggo ngumpulake macem-macem metrik lan karakteristik hardware? Iku prasaja. Kadhangkala kita mung didhawuhi mriksa infrastruktur IT saiki. Inggih, bab sing padha perlu kanggo nyepetake audit klien anyar. We needed soko sing bakal ngidini kita teka menyang perusahaan medium utawa gedhe lan cepet ngerti apa padha duwe. Ing mratelakake panemume, ping ing jaringan internal diblokir mung dening wong-wong sing pengin complicate urip dhewe, lan ing pengalaman kita ana sawetara. Nanging uga ana wong sing kaya ngono. Mulane, sampeyan bisa cepet mindhai jaringan kanggo ngarsane piranti kanthi ping prasaja. Banjur kita bisa nambah lan mindai port mbukak sing menarik kanggo kita. Nyatane, fungsi iki wis ana, mung perlu nambah prentah saka server pusat menyang budak supaya bisa mindhai jaringan sing ditemtokake lan nambahake kabeh sing ditemokake ing dhaptar. Aku kelalen kanggo sebutno, iku wis dianggep sing kita wis duwe gambar siap-digawe karo sistem diatur (server monitoring budak) sing kita mung bisa muter metu saka klien sak audit lan nyambung menyang maya kita.

Nanging asil audit biasane kalebu akeh informasi sing beda-beda, lan salah sijine yaiku piranti apa sing ana ing jaringan. Kaping pisanan, kita kasengsem ing server Windows lan workstation Windows minangka bagéan saka domain. Wiwit ing perusahaan medium lan gedhe, lack of domain mbokmenawa pangecualian kanggo aturan. Kanggo nganggo basa siji, rata-rata, miturut pendapatku, 100+ wong. Sampeyan kudu nggawe cara kanggo ngumpulake data saka kabeh mesin lan server Windows, ngerti IP lan akun administrator domain, nanging tanpa nginstal piranti lunak ing saben wong. Antarmuka WMI teka kanggo ngluwari. Windows Management Instrumentation (WMI) secara harfiah tegese alat manajemen Windows. WMI minangka salah sawijining teknologi dhasar kanggo manajemen terpusat lan ngawasi operasi saka macem-macem bagean infrastruktur komputer sing nganggo platform Windows. Dijupuk saka wiki. Sabanjure, aku kudu tinker maneh kanggo ngumpulake wmic (iki klien WMI) kanggo Debian. Sawise kabeh wis siyap, sing isih ana yaiku mung polling node sing dibutuhake liwat wmic kanggo informasi sing dibutuhake. Liwat WMI sampeyan bisa njaluk meh kabeh informasi saka komputer Windows, lan liyane, sampeyan uga bisa ngontrol komputer liwat, contone, ngirim kanggo urip maneh. Mangkene carane koleksi informasi babagan stasiun lan server Windows ing sistem kita katon. Kajaba iku, ana informasi saiki babagan indikator beban sistem saiki. We njaluk wong luwih kerep, lan informasi ing hardware kurang asring. Sawise iki, audit dadi luwih nyenengake.

Keputusan distribusi piranti lunak

Kita dhewe nggunakake sistem saben dina, lan tansah mbukak kanggo saben karyawan technical. Lan kita mikir sing bisa nuduhake karo wong liya apa sing wis kita duwe. Sistem kasebut durung siap disebarake. Akeh sing kudu digarap maneh supaya versi lokal dadi SaaS. Iki kalebu owah-owahan ing macem-macem aspèk technical saka sistem (sambungan remot, layanan support), analisis modul kanggo lisensi, sharding database customer, scaling saben layanan, lan pangembangan sistem nganyari otomatis kanggo kabeh bagean. Nanging iki bakal dadi bagean kapindho artikel kasebut.

Nganyari

Bagéan kapindho

Source: www.habr.com

Add a comment