నా పనిలో, ఇన్ఫ్రాస్ట్రక్చర్ గురించి సమాచారం లేకపోవడం గురించి నేను తరచుగా అబ్సెషన్లను అనుభవిస్తాను మరియు సర్వర్ల సంఖ్య పెరగడంతో, ఇది నిజమైన హింసగా మారుతుంది. నేను చిన్న సంస్థల్లో అడ్మినిస్ట్రేటర్గా ఉన్నప్పుడు కూడా, ఏది ఎక్కడ ఉంది, ఎక్కడ ప్లగిన్ చేయబడింది, ఏ హార్డ్వేర్ లేదా సేవకు ఏ వ్యక్తులు బాధ్యత వహిస్తారు మరియు ముఖ్యంగా వీటన్నింటిలో మార్పులను రికార్డ్ చేయడానికి నేను ఎల్లప్పుడూ తెలుసుకోవాలనుకుంటున్నాను. మీరు కొత్త ప్రదేశానికి వచ్చినప్పుడు మరియు ఏదైనా సంఘటనను ఎదుర్కొన్నప్పుడు, ఈ సమాచారం కోసం చాలా సమయం వెచ్చిస్తారు. తరువాత, నేను RuVDSలో ఏమి ఎదుర్కోవాల్సి వచ్చిందో మరియు టైటిల్లో సూచించిన సమస్యను నేను ఎలా పరిష్కరించాను అని మీకు చెప్తాను.
పూర్వచరిత్ర
ఎంటర్ప్రైజ్ అడ్మిన్గా, నాకు డేటా సెంటర్లో పనిచేసిన అనుభవం తక్కువ, కానీ నేను RackTables యొక్క సంగ్రహావలోకనం పొందాను. ఇది అన్ని సర్వర్లు, UPS, స్విచ్లు మరియు వాటి మధ్య ఉన్న అన్ని కనెక్షన్లతో కూడిన రాక్ను స్పష్టంగా చూపించింది. RuVDS అటువంటి వ్యవస్థను కలిగి లేదు, కానీ సర్వర్లు, వాటి కొన్ని భాగాలు, ర్యాక్ నంబర్లు మొదలైన వాటి గురించి సమాచారం ఉన్న Excel/పేపర్ ఫైల్లు మాత్రమే. ఈ విధానంతో, చిన్న భాగాలలో మార్పులను ట్రాక్ చేయడం చాలా కష్టం. కానీ సర్వర్ల కోసం అత్యంత ముఖ్యమైన మరియు తరచుగా భర్తీ చేయబడిన వినియోగ వస్తువులు డిస్క్లు. డిస్క్ల స్థితి మరియు వాటి వ్యూహాత్మక నిల్వపై తాజా సమాచారాన్ని నిర్వహించడం చాలా ముఖ్యం. RAID శ్రేణి నుండి డ్రైవ్ విఫలమైతే మరియు త్వరగా భర్తీ చేయకపోతే, ఇది చివరికి ప్రాణాంతక పరిణామాలకు దారి తీస్తుంది. అందువల్ల, మనం ఏమి కోల్పోయామో మరియు ఏ మోడల్లను కొనుగోలు చేయాలో అర్థం చేసుకోవడానికి డిస్క్ల స్థానాన్ని మరియు వాటి పరిస్థితిని ట్రాక్ చేసే సిస్టమ్ మాకు నిజంగా అవసరం.
IT విభాగాల పనితీరును మెరుగుపరచడానికి మరియు వాటిని ITIL ఆదర్శాలకు తీసుకురావడానికి రూపొందించబడిన ఓపెన్ సోర్స్ ఉత్పత్తి అయిన GLPI రక్షించబడింది. పరికరాల జాబితా మరియు ర్యాక్ నిర్వహణతో పాటు, ఇది నాలెడ్జ్ బేస్, సర్వీస్ డెస్క్, డాక్యుమెంట్ మేనేజ్మెంట్ మరియు మరిన్నింటిని కలిగి ఉంది. GLPI FusionInventory మరియు OCS ఇన్వెంటరీతో సహా అనేక ప్లగిన్లను కలిగి ఉంది, ఇది ఏజెంట్ ఇన్స్టాలేషన్ మరియు SNMP ద్వారా కంప్యూటర్లు మరియు ఇతర పరికరాల గురించి సమాచారాన్ని స్వయంచాలకంగా సేకరించడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు ఇతర కథనాలలో GLPI మరియు ప్లగిన్లను ఇన్స్టాల్ చేయడం గురించి మరింత చదవవచ్చు, అన్నింటికన్నా ఉత్తమమైనది - అధికారిక డాక్యుమెంటేషన్. మీరు దీన్ని మా హోస్టింగ్లో రెడీమేడ్ టెంప్లేట్లో ఇన్స్టాల్ చేయవచ్చు LAMP.
అయినప్పటికీ, ఏజెంట్ను అమలు చేసిన తర్వాత, మేము GLPIలో కంప్యూటర్ భాగాలను తెరుస్తాము మరియు దీన్ని చూస్తాము:
సమస్య ఏమిటంటే, LSI RAID శ్రేణులలోని ఫిజికల్ డిస్క్ల గురించిన సమాచారాన్ని ప్లగిన్లు ఏవీ చూడలేవు. పవర్షెల్ స్క్రిప్ట్ని ఉపయోగించి Zabbixలో పర్యవేక్షించడం కోసం ఈ సమస్య ఎలా పరిష్కరించబడుతుందో చూసిన తర్వాత lsi-raid.ps1 GLPIకి సమాచారాన్ని బదిలీ చేయడానికి నేను ఇలాంటిదే రాయాలని నిర్ణయించుకున్నాను.
శ్రేణిలోని డిస్క్ల గురించిన డేటాను కంట్రోలర్ తయారీదారు నుండి యుటిలిటీలను ఉపయోగించి పొందవచ్చు; LSI విషయంలో, ఇది StorCLI. దాని నుండి మీరు JSON ఆకృతిలో డేటాను పొందవచ్చు, దానిని అన్వయించవచ్చు మరియు దానిని GLPI APIకి పంపవచ్చు. FusionInventory ఇప్పటికే సృష్టించిన కంప్యూటర్లకు మేము డిస్క్లను లింక్ చేస్తాము. మళ్లీ అమలు చేసినప్పుడు, స్క్రిప్ట్ డిస్క్లలోని డేటాను అప్డేట్ చేస్తుంది మరియు కొత్త వాటిని జోడిస్తుంది. స్క్రిప్ట్ కూడా Send-RAIDtoGLPI.ps1 ఇక్కడ GitHub లో. దీన్ని ఎలా ఉపయోగించాలో తరువాత నేను మీకు చెప్తాను.
UserToken మరియు AppToken ద్వారా రూపొందించబడిన API ద్వారా అధికారం కోసం అడ్మిన్ ప్రొఫైల్తో GLPIలో ఖాతా
ముఖ్యమైన పాయింట్. కొన్ని కారణాల వలన, GLPI డిస్క్ మోడల్ కోసం 2 వేర్వేరు ఎంటిటీలను కలిగి ఉంది, కానీ "మీడియా రకం" లక్షణం లేదు. అందువల్ల, HDD మరియు SSD లక్షణాలను రికార్డ్ చేయడానికి, నేను "హార్డ్ డ్రైవ్ మోడల్స్" డ్రాప్-డౌన్ జాబితాను ఉపయోగించాలని నిర్ణయించుకున్నాను (front/devicemodel.php?itemtype=DeviceHardDriveModel). స్క్రిప్ట్ తప్పనిసరిగా GLPI డేటాబేస్లో ఈ విలువలను కలిగి ఉండాలి, లేకుంటే అది డిస్క్ మోడల్ గురించి డేటాను వ్రాయలేరు. కాబట్టి, మీరు ఈ ఖాళీ జాబితాకు ముందుగా HDDని జోడించాలి, ఆపై SSDని జోడించాలి, తద్వారా డేటాబేస్లోని ఈ మూలకాల యొక్క IDలు 1 మరియు 2గా ఉంటాయి. ఇతరాలు ఉంటే, Send-RAIDtoGLPI.ps1 స్క్రిప్ట్లోని ఈ లైన్లో భర్తీ చేయండి HDD మరియు SSD 1 మరియు 2కి బదులుగా వాటి సంబంధిత IDలు:
మీరు దీనితో బాధపడకూడదనుకుంటే లేదా మీరు ఈ డ్రాప్-డౌన్ జాబితాను భిన్నంగా ఉపయోగించినట్లయితే, మీరు స్క్రిప్ట్ నుండి ఈ లైన్ను తీసివేయవచ్చు.
మీరు "ఎలిమెంట్ స్టేటస్" (/front/state.php)లో డిస్క్ల కోసం స్టేటస్లను కూడా జోడించాలి. నేను "మీడియా ఎర్రర్" (కనీసం ఒక డిస్క్ యాక్సెస్ ఎర్రర్ ఉంది) మరియు "సరే" అనే స్టేటస్లను జోడించాను, స్క్రిప్ట్లో వారి IDలు ప్రసారం చేయబడిన పంక్తి, "OK" కోసం "2" మరియు "MediaError" కోసం "1":
సౌలభ్యం కోసం ఈ స్థితిగతులు అవసరం; మీకు ఈ లక్షణాలు అవసరం లేకపోతే, మీరు ఈ లైన్ను కూడా పూర్తిగా తొలగించవచ్చు.
స్క్రిప్ట్లోనే, వేరియబుల్స్ని మీది సూచించడం మర్చిపోవద్దు. $GlpiCreds తప్పనిసరిగా GLPI API సర్వర్, UserToken మరియు AppTokenకి URLని కలిగి ఉండాలి.
స్క్రిప్ట్లో ఏముంది
గజిబిజిగా ఉన్న JSON పార్సింగ్ మరియు ఖాళీ ifs కారణంగా, స్క్రిప్ట్ చదవడం కష్టం, కాబట్టి నేను దాని లాజిక్ను ఇక్కడ వివరిస్తాను.
హోస్ట్లో మొదట ప్రారంభించినప్పుడు, స్క్రిప్ట్ అన్ని కంట్రోలర్ల ద్వారా వెళ్లి GLPI డేటాబేస్లోని డిస్క్ల కోసం సీరియల్ నంబర్ల ద్వారా శోధిస్తుంది; అది కనుగొనబడకపోతే, అది మోడల్ కోసం వెతుకుతుంది. అది మోడల్ను కనుగొనకపోతే, అది జతచేస్తుంది GLPIకి కొత్త డిస్క్ యొక్క నమూనా మరియు ఈ డిస్క్ని డేటాబేస్లోకి ప్రవేశిస్తుంది.
ప్రతి కొత్త పాస్ స్క్రిప్ట్ కొత్త డిస్క్లను గుర్తించడానికి ప్రయత్నిస్తుంది, కానీ తప్పిపోయిన వాటిని ఎలా తొలగించాలో దానికి తెలియదు, కాబట్టి మీరు దీన్ని మాన్యువల్గా చేయాల్సి ఉంటుంది.
విస్తరణ ఉదాహరణ
స్క్రిప్ట్ రిపోజిటరీ Deploy-Send-RAIDtoGLPI.ps1 స్క్రిప్ట్ను కలిగి ఉంది, ఇది మా GLPI సర్వర్ నుండి అవసరమైన ఫైల్లతో కూడిన జిప్ ఆర్కైవ్ను డౌన్లోడ్ చేస్తుంది మరియు వాటిని ప్రతి హోస్ట్కు అమలు చేస్తుంది.
ఫైల్లను కాపీ చేసిన తర్వాత, స్క్రిప్ట్ రోజువారీ పనిగా అమలు చేయడానికి FusionInventory ఏజెంట్ని ఇన్స్టాల్ చేస్తుంది మరియు మా స్క్రిప్ట్ కోసం అదే పనిని సృష్టిస్తుంది. విజయవంతంగా అమలు చేసిన తర్వాత, మేము చివరకు GLPIలో కంప్యూటర్లోని భాగాల విభాగంలో డ్రైవ్లను చూడగలుగుతాము.
ఫలితంగా
ఇప్పుడు, “సెట్టింగ్లు” -> “కాంపోనెంట్స్” -> “హార్డ్ డ్రైవ్లు” మెనులో GLPIకి వెళ్లడం ద్వారా, మనం డ్రైవ్ మోడల్లపై క్లిక్ చేసి, వాటి పరిమాణాన్ని చూసి మనం ఏమి కొనుగోలు చేయాలో అర్థం చేసుకోవచ్చు.