Automation-ka gaarsiinta socodka gudaha Apache NiFi

Hello qof walba!

Automation-ka gaarsiinta socodka gudaha Apache NiFi

Hawshu waa sida soo socota - waxaa jira qulqulo, oo lagu soo bandhigay sawirka kore, kaas oo u baahan in lagu soo rogo N server-yada Apache NiFi. Tijaabada socodka - fayl ayaa la soo saarayaa oo loo dirayaa tusaale kale oo NiFi ah. Wareejinta xogta waxay ku dhacdaa iyadoo la adeegsanayo Bogga NiFi ee bogga borotokoolka.

Goobta NiFi ee Goobta (S2S) waa hab aamin ah, si fudud loo habayn karo oo lagu kala wareejiyo xogta inta u dhaxaysa tusaalooyinka NiFi. Sida S2S u shaqeeyo, eeg dukumentiyo waxaana muhiim ah in aan la ilaawin in la habeeyo tusaalaha NiFi si loo ogolaado S2S, eeg halkan.

Xaaladaha aan ka hadlayno wareejinta xogta iyadoo la adeegsanayo S2S, hal tusaale waxaa loo yaqaan macmiilka, serverka labaad. Macmiilku wuxuu soo diraa xogta, adeegaha ayaa helaya. Laba siyaabood oo loo habeeyo wareejinta xogta dhexdooda:

  1. murugeeysan. Laga soo bilaabo tusaale ahaan macmiilka, xogta waxaa loo diraa iyadoo la adeegsanayo Kooxda Habka Fog (RPG). Tusaalaha serferka, xogta waxaa lagu helaa iyadoo la isticmaalayo Port-ga-gelinta
  2. jiid. Adeeguhu wuxuu helayaa xogta isagoo isticmaalaya RPG, macmiilku wuxuu soo diraa isagoo isticmaalaya dekedda Output.


Socodka soo bixida waxa lagu kaydiyaa Diiwaanka Apache.

Diiwaanka Apache NiFi waa mashruuc hoose oo Apache NiFi ah oo bixisa aalad kaydinta socodka iyo xakamaynta nooca. Nooc ka mid ah GIT. Macluumaadka ku saabsan rakibidda, habaynta iyo la shaqaynta diiwaanka waxa laga heli karaa gudaha dukumeenti rasmi ah. Socodka kaydinta waxaa lagu daraa koox habraac ah waxaana lagu kaydiyaa foomkan diiwaanka. Waxaan dib ugu soo laaban doonaa maqaalka.

Bilawga, marka N uu yahay tiro yar, socodka ayaa la keenaa oo gacanta lagu cusboonaysiiyaa wakhti la aqbali karo.

Laakiin marka N sii kordho, dhibaatooyinku aad bay u badan yihiin:

  1. waxay qaadataa wakhti dheeraad ah si loo cusbooneysiiyo socodka. Waxaad u baahan tahay inaad gasho dhammaan server-yada
  2. Khaladaadka cusboonaysiinta qaab-dhismeedka ayaa dhaca Halkan way cusbooneysiiyeen, laakiin halkan way illoobeen
  3. khaladaadka aadanaha marka la sameeyo tiro badan oo hawlgallo la mid ah

Waxaas oo dhami waxay noo keenayaan xaqiiqda ah inaan u baahanahay inaan si otomaatig ah u samayno habka. Waxaan isku dayay siyaabaha soo socda si aan u xalliyo dhibaatadan:

  1. Isticmaal MiNiFi bedelkii NiFi
  2. NiFi CLI
  3. NiPyAPI

Isticmaalka MiNiFi

Apache MiNiFy -mashruuca Apache NiFi. MiNiFy waa wakiil is haysta oo adeegsada soo-saareyaal la mid ah kan NiFi, kaasoo kuu oggolaanaya inaad abuurto isla socodka NiFi. Dabeecadda khafiifka ah ee wakiilka ayaa lagu gaaraa, iyo waxyaabo kale, xaqiiqda ah in MiNiFy aysan lahayn isdhexgalka garaafyada qaabeynta socodka. La'aanta interface garaaf ahaan ee MiNiFy waxay la macno tahay inay lagama maarmaan tahay in la xalliyo dhibaatada gaarsiinta socodka minifi. Maadaama MiNiFy si firfircoon loogu isticmaalo IOT, waxaa jira qaybo badan oo habka gaarsiinta socodka dhacdooyinka minifi ee ugu dambeeya wuxuu u baahan yahay in si toos ah loo sameeyo. Hawl la yaqaan, sax?

Mashruuc kale ayaa kaa caawin doona xallinta dhibaatadan - MiNiFi C2 Server. Alaabtan waxaa loogu talagalay inay noqoto barta dhexe ee qaabaynta qaabaynta qaabeynta. Sida loo habeeyo deegaanka - lagu tilmaamay maqaalkani Waxaa jira macluumaad ku filan HabrΓ© si loo xalliyo dhibaatada. MiNiFi, iyadoo lala kaashanayo server-ka C2, waxay si toos ah u cusbooneysiisaa qaabeynteeda. Ciladda kaliya ee habkan waa inaad ku abuurto qaab-dhismeedka C2 Server; ballan-qaad fudud oo diiwaan-gelinta kuma filna.

Ikhtiyaarka lagu sharraxay maqaalka sare waa mid shaqeynaya oo ma adka in la fuliyo, laakiin waa inaan iloobin kuwan soo socda:

  1. Minifi ma laha dhammaan processor-yaasha nifi
  2. Noocyada processor-ka Minifi ayaa ka dambeeya noocyada processor-ka NiFi.

Waqtiga qorista, nooca ugu dambeeyay ee NiFi waa 1.9.2. Nooca processor-ka ugu dambeeyay ee MiNiFi waa 1.7.0. Processor-yaasha waxaa lagu dari karaa MiNiFi, laakiin farqiga u dhexeeya nooca NiFi iyo MiNiFi awgeed, tani ma shaqaynayso.

NiFi CLI

Ku xukumaya sharaxaad Qalabka ku yaal bogga rasmiga ah, kani waa qalab loogu talagalay isdhexgalka ka dhexeeya NiFI iyo Diiwaanka NiFi ee goobta gudbinta socodka ama maareynta habka. Si aad u bilowdo, waxaad u baahan tahay inaad soo dejiso qalabkan. halkan.

Bilaw utility-ga

./bin/cli.sh
           _     ___  _
 Apache   (_)  .' ..](_)   ,
 _ .--.   __  _| |_  __    )
[ `.-. | [  |'-| |-'[  |  /  
|  | | |  | |  | |   | | '    '
[___||__][___][___] [___]',  ,'
                           `'
          CLI v1.9.2

Type 'help' to see a list of available commands, use tab to auto-complete.

Si aan uga soo rarno qulqulka loo baahan yahay ee diiwaanka, waxaan u baahanahay inaan ogaano aqoonsiga baaldiga (calaamadaha baaldiga) iyo socodka laftiisa ( aqoonsiga socodka). Xogtan waxaa laga heli karaa iyada oo loo marayo cli ama interface webka diiwaanka NiFi. Interface-ka mareegaha waxa uu u egyahay sidan:

Automation-ka gaarsiinta socodka gudaha Apache NiFi

Isticmaalka CLI tan ayaa la sameeyaa:

#> registry list-buckets -u http://nifi-registry:18080

#   Name             Id                                     Description
-   --------------   ------------------------------------   -----------
1   test_bucket   709d387a-9ce9-4535-8546-3621efe38e96   (empty)

#> registry list-flows -b 709d387a-9ce9-4535-8546-3621efe38e96 -u http://nifi-registry:18080

#   Name           Id                                     Description
-   ------------   ------------------------------------   -----------
1   test_flow   d27af00a-5b47-4910-89cd-9c664cd91e85

Waxaan bilaabeynaa ka soo dejinta kooxda nidaamka diiwaanka:

#> nifi pg-import -b 709d387a-9ce9-4535-8546-3621efe38e96 -f d27af00a-5b47-4910-89cd-9c664cd91e85 -fv 1 -u http://nifi:8080

7f522a13-016e-1000-e504-d5b15587f2f3

Qodob muhiim ah ayaa ah in tusaale kasta oo nifi ah lagu tilmaami karo martigeliyaha kaas oo aan u galeyno kooxda habsocodka.

Kooxda habsocodka lagu daray soo-saareyaal la joojiyay, waxay u baahan yihiin in la bilaabo

#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080

Way fiicantahay, processor-yadu way bilaabeen. Si kastaba ha noqotee, marka loo eego shuruudaha hawsha, waxaan u baahanahay tusaalooyin NiFi si aan xogta ugu dirno xaaladaha kale. Aynu ka soo qaadno inaad dooratay habka riixida si aad xogta ugu wareejiso server-ka. Si loo habeeyo wareejinta xogta, waxaad u baahan tahay inaad awood u yeelatid wareejinta xogta kooxda Habka Fog ee lagu daray (RPG), kaas oo horay ugu jiray socodkayaga.

Automation-ka gaarsiinta socodka gudaha Apache NiFi

Dukumeentiyada ku jira CLI iyo ilo kale, ma helin hab aan awood ugu yeesho wareejinta xogta. Haddii aad taqaan sida tan loo sameeyo, fadlan ku qor faallooyinka.

Mar haddii aan haysano bash oo aan diyaar u nahay inaan aadno dhamaadka, waxaan heli doonaa waddo ka baxsan! Waxaad isticmaali kartaa NiFi API si aad u xalliso dhibaatadan. Aynu isticmaalno habkan soo socda, ka soo qaad aqoonsiga tusaalooyinka sare (xaaladkeena waa 7f522a13-016e-1000-e504-d5b15587f2f3). Sharaxaada hababka NiFi API halkan.

Automation-ka gaarsiinta socodka gudaha Apache NiFi
Jirka dhexdiisa waxaad u baahan tahay inaad ka gudubto JSON, sida tan:

{
    "revision": {
	    "clientId": "value",
	    "version": 0,
	    "lastModifier": "value"
	},
    "state": "value",
    "disconnectedNodeAcknowledged": true
}

Halbeegyada loo baahan yahay in la buuxiyo si ay u shaqeyso:
gobolka - heerka wareejinta xogta. La heli karo: Gudbinta si loo suurtageliyo wareejinta xogta, JOOJIYAY si loo joojiyo
version - nooca processor-ka

nooca wuxuu noqon doonaa 0 marka la abuuro, laakiin xuduudahaan waxaa lagu heli karaa iyadoo la adeegsanayo habka

Automation-ka gaarsiinta socodka gudaha Apache NiFi

Taageerayaasha qoraallada bash, habkani wuxuu u ekaan karaa mid ku habboon, laakiin way igu adag tahay aniga - qoraallada bash-ka maaha kuwa aan jeclahay. Habka soo socda ayaa aad u xiiso badan oo ku habboon fikradayda.

NiPyAPI

NiPyAPI waa maktabad Python ah oo loogu talagalay la falgalka xaaladaha NiFi. Bogga dukumentiga waxaa ku jira macluumaadka lagama maarmaanka u ah la shaqaynta maktabadda. Bilawga degdega ah ayaa lagu tilmaamay mashruuc github.

Qoraalkeena ku saabsan soo dejinta qaabeynta waa barnaamij ku jira Python. Aan u gudubno codaynta.
Waxaan u samaynay habayn shaqo dheeraad ah. Waxaan u baahan doonaa xuduudaha soo socda:

nipyapi.config.nifi_config.host = 'http://nifi:8080/nifi-api' #ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ nifi-api инстанса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ process group
nipyapi.config.registry_config.host = 'http://nifi-registry:18080/nifi-registry-api' #ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ nifi-registry-api registry
nipyapi.config.registry_name = 'MyBeutifulRegistry' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ registry, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² инстансС nifi
nipyapi.config.bucket_name = 'BucketName' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ bucket, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ подтягиваСм flow
nipyapi.config.flow_name = 'FlowName' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ flow, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ подтягиваСм

Marka xigta waxaan gelin doonaa magacyada hababka maktabaddan, kuwaas oo lagu tilmaamay halkan.

Ku xidh diiwaanka tusaalaha nifi adigoo isticmaalaya

nipyapi.versioning.create_registry_client

Tallaabadan, waxaad sidoo kale ku dari kartaa jeeg in diiwaanka mar hore lagu daray tusaale ahaan; tan waxaad isticmaali kartaa habka

nipyapi.versioning.list_registry_clients

Waxaan u helnaa baaldi si loo raadiyo qulqulka qulqulka ee dambiisha

nipyapi.versioning.get_registry_bucket

Isticmaalka baaldiga la helay, waxaan raadineynaa socodka

nipyapi.versioning.get_flow_in_bucket

Marka xigta, waa muhiim in la fahmo in kooxdan habsocodka mar hore lagu daray. Kooxda habsocodka waxa loo dhigaa si waafaqsan iskudubarid xaaladuna way iman kartaa marka qayb labaad la dul saaro. Waan hubiyay, tani way dhici kartaa :) Si aan u helno dhammaan kooxaha habka lagu daray waxaan isticmaalnaa habka

nipyapi.canvas.list_all_process_groups

Waxaan sii raadin karnaa, tusaale ahaan, magac ahaan.

Ma qeexi doono habka loo cusbooneysiiyo template, kaliya waxaan dhihi doonaa haddii processor-yada lagu daro nooca cusub ee template, markaa ma jiraan wax dhibaato ah oo ku saabsan joogitaanka fariimaha ee safafka. Laakiin haddii processor-rada la saaro, markaa dhibaatooyin ayaa soo bixi kara (nifi kuma oggola inaad ka saarto processor-ka haddii safka farriinta uu ku ururay hortiisa). Hadii aad xiisaynayso sidaan u xaliyay dhibaatadan, fadlan ii soo qor annaguna waan ka wada hadli doonaa qodobkan. Xiriirada dhamaadka maqaalka. Aan u gudubno tallabada ku darida kooxda habsocodka.

Markii aan saxayay qoraalka, waxaan la kulmay sifo gaar ah oo ah in nooca ugu dambeeya ee socodka aan had iyo jeer la soo jiidin, marka waxaan ku talinayaa in marka hore la eego noocaan:

nipyapi.versioning.get_latest_flow_ver

Geli kooxda habsocodka:

nipyapi.versioning.deploy_flow_version

Waxaan bilownaa processor-rada:

nipyapi.canvas.schedule_process_group

Qeybta ku saabsan CLI waxaa lagu qoray in wareejinta xogta aan si toos ah loogu shaqeyn kooxda nidaamka fog? Markii aan fulinayo qoraalka, waxaan la kulmay dhibaatadan sidoo kale. Waqtigaas, ma awoodin in aan bilaabo wareejinta xogta aniga oo isticmaalaya API waxaanan go'aansaday in aan u qoro horumariyaha maktabadda NiPyAPI oo aan weydiiyo talo/caawin. Horumariyuhu wuu ii jawaabay, waanu ka wada hadalnay dhibaatada wuxuuna qoray inuu u baahan yahay wakhti uu "wax ku hubiyo". Kadibna, dhowr maalmood ka dib, waxaa timid warqad ay ku qoran tahay shaqo Python ah oo xallinaysa dhibka aan bilaabay !!! Waqtigaas, nooca NiPyAPI wuxuu ahaa 0.13.3, dabcan, ma jirin wax la mid ah. Laakiin nooca 0.14.0, ee la sii daayay dhawaanahan, shaqadan ayaa mar hore lagu soo daray maktabadda. La kulan,

nipyapi.canvas.set_remote_process_group_transmission

Markaa, annagoo adeegsanayna maktabadda NiPyAPI, waxaan isku xirnay diiwaanka, soo galnay socodka, oo xitaa waxaan bilownay soo-saareyaasha iyo wareejinta xogta. Markaa waxaad shanlayn kartaa koodka, ku dar dhammaan noocyada jeegaga, gelista, waana intaas oo dhan. Laakiin taasi waa sheeko gebi ahaanba ka duwan.

Ikhtiyaarada otomaatiga ah ee aan tixgeliyey, kan ugu dambeeya ayaa ii muuqday midka ugu waxtarka badan. Marka hore, kani wali waa koodka python, kaas oo aad ku dhejin karto koodka barnaamijka caawimada oo aad ka faa'iidaysan karto dhammaan faa'iidooyinka luqadda barnaamijka. Marka labaad, mashruuca NiPyAPI si firfircoon ayuu u horumarayaa oo haddii ay dhibaato dhacdo waxaad u qori kartaa horumariyaha. Marka saddexaad, NiPyAPI wali waa qalab aad u dabacsan oo lagula macaamilayo NiFi si loo xalliyo dhibaatooyinka adag. Tusaale ahaan, marka la go'aaminayo in safafka farriinta ay hadda madhan yihiin socodka iyo in kooxda habsocodka la cusboonaysiin karo.

Waa intaas. Waxaan sharaxay 3 habab oo otomaatig ah gaarsiinta qulqulka ee NiFi, godad uu horumariye la kulmi karo, oo aan bixiyay koodka shaqada si otomaatig ah gaarsiinta. Haddii aad u xiisaynayso mawduucan sidaan anigu ahay - qor!

Source: www.habr.com

Add a comment