पॉवर्सशेल का उपयोग करते हुए बड़ी संख्या में विंडोज-आधारित सर्वर पर ज़ैबिक्स एजेंटों को तैनात करें

शुभ दोपहर
हाल ही में, मुझे विंडोज़ सर्वर पर बड़ी संख्या में ज़ैबिक्स एजेंटों को जल्दी से स्थापित करने के कार्य का सामना करना पड़ा।
मैंने तय किया कि स्क्रिप्ट का उपयोग करके इसे हल किया जा सकता है। एक "भाषा" के रूप में मैंने अपने पसंदीदा पॉवर्सशेल को चुना (और सिर्फ मुझे नहीं!)।
आपको कट के नीचे एक छोटा मैनुअल मिलेगा!

Powershell v2.0 + बहुत सुविधाजनक रिमोट लॉन्च टूल (Powershell Remoting) प्रदान करता है और मैं उनका उपयोग करना पसंद करूंगा, लेकिन मेरे मामले में एक समस्या थी - विंडोज सर्वर 2003 (आवश्यक अपडेट के बिना) सर्वर "पथ" पर आ सकता है, इसलिए मैंने psexec.exe का उपयोग करने का निर्णय लिया

मुझे सबसे स्वचालित समाधान की आवश्यकता थी, इसलिए मैंने एक स्क्रिप्ट लिखी, जिसमें मैं एक फ़ाइल से सर्वर के DNS नामों की सूची लोड करता हूं, और आउटपुट पर मुझे ज़ैबिक्स में आयात के लिए एक एक्सएमएल फ़ाइल मिलती है।

पहली चीज़ जो हमें करने की ज़रूरत है वह है साझा किए गए संसाधन पर फ़ोल्डर ( \\ सर्वर \ share \ DeployZabbix ), जिसमें यह होगा:
1) x86 सिस्टम के लिए एजेंट फ़ाइल (zabbix_agentd86.exe)
2) x64 सिस्टम के लिए एजेंट फ़ाइल (zabbix_agentd64.exe)
3) कॉन्फ़िगरेशन फ़ाइल zabbix_agentd.conf (जिसमें आपको Zabbix सर्वर का कम से कम पता / DNS नाम निर्दिष्ट करने की आवश्यकता है)
4) 2 बैच फाइलें, Install86.bat और Install64.bat निम्न सामग्री के साथ:
Install86.bat:
"C:\Program Files\Zabbix\zabbix_agentd86.exe" --config "C:\Program Files\Zabbix\zabbix_agentd.conf" --install net start "Zabbix Agent" 


Install64.bat:
 "C:\Program Files\Zabbix\zabbix_agentd64.exe" --config "C:\Program Files\Zabbix\zabbix_agentd.conf" --install net start "Zabbix Agent" 


दूसरी चीज़ जो हमें चाहिए वह है फ़ोल्डर जिसमें एजेंट को तैनात करने की स्क्रिप्ट झूठ होगी, और इसके संचालन के लिए आवश्यक सब कुछ:
1) दरअसल, DeployZabbix.ps1 स्क्रिप्ट ही (इसके बारे में नीचे)
2) तीन। Txt फाइलें (Source1.txt, Source2.txt, Source3.txt) .xml फाइल के "टुकड़े" हैं जो आउटपुट होंगे। पाठ में आपको जिस "डिफ़ॉल्ट" समूह की आवश्यकता है उसे बदलना न भूलें!
Source1.txt
 <?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>2012-11-21T09:18:17Z</date> <groups> <group> <name>Default</name> </group> </groups> <hosts> 



Source2.txt
 <proxy/> <status>0</status> <ipmi_authtype>-1</ipmi_authtype> <ipmi_privilege>2</ipmi_privilege> <ipmi_username/> <ipmi_password/> <templates> <template> <name>Template OS Windows</name> </template> </templates> <groups> <group> <name>Default</name> </group> </groups> <interfaces> <interface> <default>1</default> <type>1</type> <useip>0</useip> <ip/> 



Source3.txt
 <port>10050</port> <interface_ref>if1</interface_ref> </interface> </interfaces> <applications/> <items/> <discovery_rules/> <macros/> <inventory/> </host> 


3) वास्तव में, psexec.exe ही (आप इसे यहाँ से ले जा सकते हैं)
4) कंप्यूटर.एससीवी फ़ाइल, जिसमें सर्वर के FQDN नाम प्रत्येक एक नई लाइन से जाते हैं।

खैर, तीसरा , सबसे महत्वपूर्ण, स्क्रिप्ट ही है। स्क्रिप्ट लिखते समय, थोड़ा परीक्षण जोड़ा जाना चाहिए। मैं एक पाठ फ़ाइल में क्रियाओं को लॉग करना पसंद करता हूं, ताकि बाद में, अगर कुछ होता है, तो आप देख सकते हैं कि क्या गलत हुआ।

 Remove-Item .\out.txt #   Remove-Item .\out.xml #   copy .\Source1.txt .\out.txt #   xml    #   Import-CSV ".\computers.csv" -header("ComputerName") | ForEach { $ComputerName = $_.ComputerName #- ,    :) New-Item "\\$ComputerName\c$\Program Files\Zabbix" -Type Directory $path = "\\$ComputerName\c$\Program Files\Zabbix" Copy-Item \\server\share\DeployZabbix\* $path $bit = Get-WmiObject Win32_Processor -computername $ComputerName | where {$_.DeviceID -eq "CPU0"} | Select AddressWidth if ($bit -like '*64*') { .\psexec.exe \\$ComputerName "C:\\Program Files\Zabbix\Install64.bat" -h } else { .\psexec.exe \\$ComputerName "C:\\Program Files\Zabbix\Install86.bat" -h } Add-Content .\out.txt ('<host>') Add-Content .\out.txt ('<host>' + $_.ComputerName + '</host>') Add-Content .\out.txt ('<name>' + $_.ComputerName + '</name>') gc Source2.txt | Out-File .\out.txt -Append -Encoding default Add-Content .\out.txt ('<dns>' + $_.ComputerName + '</dns>') gc Source3.txt | Out-File .\out.txt -Append -Encoding default } Add-Content .\out.txt ('</hosts>') Add-Content .\out.txt ('</zabbix_export>') Rename-Item .\out.txt "out.xml" 


आप लाइनें भी जोड़ सकते हैं ताकि स्क्रिप्ट अनावश्यक फ़ाइलों को हटा दे, लेकिन क्योंकि वे 1MB से कम वजन के हैं, मैंने परेशान नहीं किया।

फिर, परिणामी .xml फ़ाइल (जो स्क्रिप्ट के साथ निर्देशिका में होगी) को Zabbix में होस्ट की सूची में आयात किया जाता है।

वह, वास्तव में, सब है। मुझे उम्मीद है कि यह ट्यूटोरियल किसी के लिए कम से कम उपयोगी होगा।

Source: https://habr.com/ru/post/In168185/


All Articles