れノスの最も単玔なモデラヌたたは明るい未来ぞの汚い道

むベントト远跡 モニタリング

緯床モニタヌ -思い出させる、譊告する人から-吊定的な倉化を特定し、それらの陀去たたは緩和のための勧告を行うために、環境の状態の倉化を評䟡および予枬する、芏制された定期的な芳枬の包括的なシステム。



はじめにず䞀般的な蚀葉



この監芖システムは、競合他瀟のほずんどの機胜よりもはるかに優れおいたすが、驚くべきこずに、このハブに関するzenossの蚘事はほずんどありたせん。 システム自䜓の説明は、垞にZenossの公匏Webサむトで芋぀けるこずができたす。



Zenossが競合他瀟よりも優れおいるず思うのはなぜですか 必芁な監芖システム、アラヌト、およびアラヌトぞの応答を簡単に構成および受信できるためです。 Zenossは、柔軟性、機胜、および耇雑さをむンテリゞェントに組み合わせたす。 埌者はニヌズに比䟋しお倧きくなりたす。ハヌドドラむブのスペヌスを远跡するのは光よりも簡単で、独自のメトリックを䜿甚しおハヌドりェアず゜フトりェアシステムを監芖するのははるかに困難です。



ネットワヌクには、システムの初期セットアップに関する倚くのガむドがありたす。 これらのガむドを読んだ埌、䞻芁なパラメヌタヌに埓っおサヌバヌたたは通信機噚の監芖を簡単に開始できたす。

ハヌドりェア䞊のsnmpサヌバヌでzenossを䜿甚するこずを奜みたす。 SNMPサヌバヌ-構成が簡単名前がプロトコル自䜓だけでなくシンプル;信頌性が高く、提䟛された情報および䞀般的な゜フトりェアぞの基本的なアクセス暩をマヌクできたす-䞀般的な゜フトりェア。 さらに、snmpは、䜕らかの圢で、ほずんどのハヌドりェアでサポヌトされおいたす。

゚ヌゞェントを䜿甚したシステムの監芖は、私を少し緊匵させたす。この゚ヌゞェントで䜕が行われおいるか、そしおどれだけうたくやっおいるかはわかりたせん。

必芁なパラメヌタヌ甚の暙準SNMP゚ヌゞェントがない堎合は、net-snmpに組み蟌たれたagentxメカニズムに基づいお独自のSNMP゚ヌゞェントを実装できたす。 Agentx゚ヌゞェントの詳现に぀いおは、ガむドwww.net-snmp.org/tutorial/tutorial-5/toolkitを参照しおください同僚の提案 code.google.com/p/linux-administrator-tools/source/browse/#svn%を参照するこずをお勧めしたす2Fsnmpd-agent2Ftrunk ドキュメントは䞍十分ですが、コヌド党䜓が機胜しおいたす。少しの努力で、システムからステヌタスをプログラムで取埗し、暙準のsnmpサヌバヌを介しおsnmpでこの情報を送信できるすべおを監芖できたす。



したがっお、この゚ントリでは完党ず芋なすこずができたす。 芁玄zenossずsnmpが奜きです。 より密床の高いれノスに移りたしょう。



自分甚にZenosを構成する



最も単玔なzenoss構成パスは、他の監芖システムの構成パスに埓いたす。





むンフラストラクチャずクラス 2぀のスむッチず5぀のサヌバヌがある堎合、これは簡単に䞀床だけ実行されたす。 数十台のサヌバヌがあり、䞀郚が「回転」しおいる堎合たずえば、ネットワヌク䞊に仮想マシンがあり、䞍芁になったらオフにする、デバむスの远加ず削陀ずパラメヌタヌの監芖は倧倉な劎力になりたす。



したがっお、zabbixやzenossなどの最新の監芖システムには、デバむスを自動的に怜出する機胜がありたす。怜玢するIPアドレスの範囲を蚭定し、パラメヌタヌにアクセスし、芋぀かった機噚をシステムに远加したす。 監芖テンプレヌトをハングさせるこずは残っおいたす。

テンプレヌトを切るこずも悲しいこずです。 ホストをグルヌプたたはクラスにマヌクし、それらにテンプレヌトをハングアップしたす。 その埌、デバむスのクラスを刀断するだけで十分であり、察応する監芖ルヌルがデバむスに適甚されたす。



「ランダムに」ホストにハングする12個のルヌルがある堎合はどうなりたすか そのため、デバむスクラスを明確に構成するこずはできたせん。 さらに進んで、システムに監芖テンプレヌトを割り圓おるためのルヌルを説明できたす。 Zenossでは、監芖構成を決定するプロセスは「 デバむスシミュレヌション 」ず呌ばれたす。zenossはsnmpサヌバヌをポヌリングし、䜿甚可胜なパラメヌタヌを決定し、監芖ルヌルがある堎合はそれらを監芖したす。



監芖ルヌル自䜓はZenPackによっお提䟛されたす。 Zenpackは、暙準機胜のネむティブ拡匵を配垃する方法です。 むベントクラス、監芖テンプレヌト、モデラヌプラグむン、むンタヌフェむスボタンの説明などが含たれたす。



監芖機胜を拡匵する正しい方法は、ホスト䞊の特定のコンポヌネントの存圚を刀断し、それらにスケゞュヌルずむベントむベントをバむンドするこずです。 右のzenpackはそれほど耇雑ではありたせんが、ボリュヌムがありたす。 誰もが長い間䜕かを発明するこずに同意するわけではありたせん。 物事を成し遂げるための「迅速で汚い」方法を瀺したす。



基本コンセプト


モデラヌによる独自のコンポヌネントずプラグむンの䜜成は困難です。 監芖パタヌンをどこでも手でハングアップ-長時間。 これらの2぀のアプロヌチを組み合わせたしょうそれらの短所は利点を提䟛したすモデラヌはシンプルになり、私は圌のコヌドを䞎えたす、そしお䞀床䜜成されたテンプレヌトは自動的にデバむスにハングアップしたす監芖テンプレヌト。



なぜ速いのか 2぀のテンプレヌトず1぀のモデラヌを䜜成し、デバむスの最初のクラスデバむス->サヌバヌのモデラヌプラグむンを構成する必芁がありたす。 高速、シンプル、簡単、ポヌタブルZenPackを䜿甚。

なぜ「汚れおいる」のか LSI RAIDコントロヌラを監芖したす。 最初で唯䞀。 そのようなコントロヌラヌが倚数ある堎合、それらは監芖システムでカバヌされず、別個のテンプレヌトずモデラヌを䜜成する必芁がありたす。 独自のコンポヌネントを䜜成するアプロヌチはより柔軟です。「lsiディスクコントロヌラヌ」コンポヌネントを蚘述し、そのようなコントロヌラヌをすべお怜出しお監芖したす。



実装


SNMPパヌト


そのため、LSI RAIDコントロヌラヌを備えた耇数のLinuxサヌバヌがありたした。 それらの䞀郚はメガレむドドラむバヌに取り組み、䞀郚はmptsasに取り組みたした。 いく぀かの苊劎の埌 、アレむの状態に関する情報を取埗するSNMP゚ヌゞェントを芋぀けたした sas_snmp-3.17-1123.i386.rpmずsas_ir_snmp-3.17-1126.i386.rpm はい、32ビット、他はありたせんでした。 それらをむンストヌルした埌、snmpサヌバヌはツリヌからoidを䞎えるこずができたす

.1.3.6.1.4.1.3582.4および.1.3.6.1.4.1.3582.5それぞれ。

これらのツリヌの䞭には次のものがありたす。

1.3.6.1.4.1.3582.4.1.4.1.2.1.19.0 -megaraidアダプタヌの劣化した論理ボリュヌムの数

.1.3.6.1.4.1.3582.5.1.4.1.1.3.1.20.0 -mptアダプタヌの劣化した論理ボリュヌムの数。



これらは、問題が発生した堎合にシステム管理者がサヌバヌに泚意を払うこずを可胜にする優れた「統合」メトリックです。ディスクが流出した-含たれる論理ボリュヌムが劣化し、メトリックをれロから匕き䞊げたす。



パッケヌゞのむンストヌルに぀いおは説明したせん。パッケヌゞの名前ず、sas_snmpずsas_ir_snmpの違いを知っおいれば簡単です。



れノス郚


Zenossでは、megaraidおよびmptドラむバヌ甚の2぀のテンプレヌトを䜜成し、それらに察しお2぀のしきい倀を構成する必芁がありたす。



[詳现]-> [監芖テンプレヌト]に移動し、䞋の[+]ボタンを抌したす。 衚瀺されるりィンドりで、名前「lsiArray」を入力し、パス「Server in Devices」を遞択したす。



その埌、りィンドりは3぀の郚分に分かれお衚瀺されたす。デヌタ゜ヌス、しきい倀、グラフ定矩です。 最初の2぀が必芁です。



これらすべおのアクションの埌、megaraidコントロヌラヌを監芖し、問題が発生した堎合にむベントを生成するテンプレヌトがありたす。

2番目のテンプレヌトの構成は読者の挔習ずしお残しおおきたす。これに぀いお耇雑なこずは䜕もありたせん。

このむベントのメッセヌゞ送信を蚭定できたす。 [詳现蚭定]-> [蚭定]-> [ナヌザヌ]-> [$ナヌザヌ]-> [アラヌトルヌル]に移動し、そこに新しいルヌルを远加したす。 私たちは粟神で䜕かを修正し、取埗したす

アラヌト構成



むベントの「重芁性」の兆候ず、アラヌトが生成されるむベントのクラスチェヌンの始たりに泚意しおください。



この段階で、結果のテンプレヌトを特定のクラスのデバむスにハングアップしお萜ち着かせるこずができたす。 しかし、これは私たちの方法ではありたせん。 さらに、最も興味深いのは、その最も単玔なモデラヌずzenpakです。



モデラヌプラグむンの䜜成。


これが最も興味深いです。 独自のZenpackを䜜成しおください Zenpackは、モデラヌのプラグむンの゜ヌスコヌドを配眮するために必芁なディレクトリ構造を䜜成したす。 さらに、このZenpackの䞀郚ずしおシステムからプラグむンをアンロヌドできたす。

そこで、[詳现蚭定]-> [蚭定]-> [Zenpacks]に移動しお、ギアをクリックしたす。 衚瀺されるメニュヌで、「Zenpackの䜜成」を遞択したす。 りィンドりに名前が衚瀺されたす。 ZenPacks.HW.Store.LSIArrayを遞択したした。 ただし、埌で刀明したように、これはたったく正しい名前ではありたせん。少なくずもHWの前にコミュニティずいう単語を入力する必芁がありたした。



zenpakaを䜜成するず、ネゞに暙準のファむルツリヌが衚瀺されたす。 次の内容でファむル/opt/zenoss/ZenPacks/ZenPacks.HW.Store.LSIArray-*egg/ZenPacks/HW/Store/LSIArray/modeler/plugins/LSIArray.pyを䜜成する必芁がありたす䜜成されたクラスのアスタリスクを修正したす。

__doc__="""LSIArray LSIArray modeller maps sas and sasir (mptsas) specific templates $Id: LSIArray.py,v 2.00 2012/04/15 16:01 Exp $""" __version__ = '$Revision: 2.15 $' from Products.DataCollector.plugins.CollectorPlugin import SnmpPlugin, GetTableMap, GetMap from Products.DataCollector.plugins.DataMaps import ObjectMap class LSIArray(SnmpPlugin): deviceProperties = SnmpPlugin.deviceProperties + ('zDeviceTemplates',) mibDesc = { '.1.3.6.1.4.1.3582.4.1.4.1.2.1.19.0': 'lsiArray', '.1.3.6.1.4.1.3582.5.1.4.1.1.3.1.20.0': 'lsiirArray', } snmpGetMap = GetMap( mibDesc ) def process(self, device, results, log): """collect snmp information from this device""" log.debug(str(self.deviceProperties)) log.info('processing %s for device %s', self.name(), device.id) getdata, tabledata = results log.debug(str(device.zDeviceTemplates)) newTemplates = [] rmTemplates = [] log.debug('getdata %s mibDesc %s', str(getdata),str(LSIArray.mibDesc)) if len(getdata.keys()) == getdata.values().count(None): log.info('no data') return for each in LSIArray.mibDesc.values(): if getdata.has_key(each) and getdata[each] != None: newTemplates.append(each) log.debug('newTemplates append: %s' % each) else: rmTemplates.append(each) log.debug('rmTemplates append: %s' % each) log.info('Current zDeviceTemplaces: %s' % str(device.zDeviceTemplates)) for each in device.zDeviceTemplates: if each not in newTemplates and each not in rmTemplates: newTemplates.insert(0,each) log.debug('adding to newTemplaces: %s' % str(each)) device.zDeviceTemplates=sorted(newTemplates) log.info('New zDeviceTemplates: %s' % str(device.zDeviceTemplates)) om = self.objectMap({'bindTemplates': newTemplates}) return om
      
      







゜ヌスコヌドでは、すべおが非垞に単玔です。

最初は、クラスが䜕をするかを説明するコメントです。

次に、いく぀かのzenossクラスをむンポヌトしお、デバむスモデルを蚘述したす。

mibDescオブゞェクトが最も興味深いです。 OIDのリストずそれに察応する監芖テンプレヌトが含たれおいたす。 デバむスのポヌリング䞭に正しいOIDが芋぀かった堎合、新しい監芖テンプレヌトがデバむスでハングしたす。

サンプルを自分で線集するずきは、テキスト内のすべおの句読点を芋逃さないようにしおください。

次は、すべおのチェックず比范を実行し、以前のすべおの監芖テンプレヌトを保存しおリストに远加するメ゜ッドです。 このメ゜ッドの結果はオブゞェクトモデルomです。



プラグむンチェック


モデラヌのテキストをコピヌ、修正、保存した埌、zenoss詳现->蚭定->デヌモンのzopectlプロセスを再起動し、LSIArrayず呌ばれるモデラヌプラグむンのリストに新しいデバむスが衚瀺されるこずを確認する必芁がありたすデバむスクラスのモデラヌプラグむンたたは任意のデバむスで。 プラグむンをアクティブなプラグむンに転送しお、デバむスのモデリングを開始する必芁がありたす。

画面に衚瀺されるりィンドりで、モデラヌがデバむスに䜿甚されるリストにあるこずを確認する必芁がありたす。 さらに、LSIArray.pyファむルがハヌドディスク䞊に䜜成され、スクリプトのコンパむルが成功したこずを瀺したす。

スクリプトがコンパむルされおいない堎合は、Pythonコヌドの正確さを確認しおください。

スクリプトがアクティブたたは利甚可胜なモデラヌのリストに衚瀺されない堎合は、zenossを再起動したす。



シミュレヌションプロセスの埌、新しい監芖テンプレヌトをデバむスに远加する必芁がありたす。 これで、テストサヌバヌからハヌドドラむブを取り倖しお取り倖すこずができたす。これにより、アレむの状態が「通垞」から「劣化」に倉換されたす。 もちろん、RAID0がない堎合。 劣化した論理ボリュヌムの数が増え、しきい倀を超え、システムがむベントを生成したす。 アラヌトを蚭定した堎合、アラヌトが送信されたす。



おわりに


䞊蚘の方法により、いく぀かの重芁な結果を埗るこずができたす。





Zenpackずモデラヌを䜜成するための、より完党で「正しい」ガむドがあるこずをよく知っおいたす。 ただし、このテキストが倚くのシステム管理者がシステムでzenossの研究ず䜿甚を開始するきっかけになるこずを願っおいたす。



All Articles