SNMPを使用してCaché上のシステムを監視するためのカスタムOIDを作成します

すべてのhabrozhitelemに良い日(夜、夜、朝-必要なものに下線を引く)!

この投稿は、 SNMPを使用してCachéインスタンスを監視することに関するものです。 確かに、多くのCachéユーザーはすでにこれをある程度使用しています。 SNMPを介した監視は、標準のCachéインストールで長い間サポートされてきましたが、対象のすべてのパラメーターにボックスからアクセスできるわけではありません。 たとえば、CSPセッションの数の監視、ライセンスの使用に関する詳細情報、オペレーティングシステムのプライベートKPIなどを確認したいと思います。

この記事では、SNMPを使用してCachéを監視するための設定を追加する方法を学習します。



すでに持っているもの

Cachéは、SNMPを使用して監視できます。 既にサポートされているもののリストは、<Install_dir> / SNMPディレクトリーのファイルで見ることができます。 通常、 ISC-CACHE.mibISC-ENSEMBLE.mibの 2つのファイルがあります。 Cachéのファイル-ISC-CACHE.mibに興味があります。 たとえば、ライセンスとセッションに関して何が得られるか興味があります。 次の表に、Intersystems- 1.3.6.1.4.1.16563のルートから階層が取得された場合の対応するOIDを示します

オイド 役職 説明 データ型
.1.1.1.1.10 cacheSysLicenseUsed このCachéインスタンスで使用されている現在のライセンス数 整数
.1.1.1.1.11 cacheSysLicenseHigh このCachéインスタンスで使用されるライセンスの最高水準点 整数
.1.2.16 cacheLicenseExceed ライセンスのリクエストが利用可能なライセンスまたは許可されたライセンスを超えました トラップメッセージ
.1.1.1.1.6 cacheSysCurUser このCachéインスタンスの現在のユーザー数 整数


配信には多くの重要なインジケータ、たとえばCSPセッションの数、ライセンス情報が完全ではない、そしてもちろん、アプリケーション固有のインジケータの監視は含まれていません。

知りたいことの例:



また、パフォーマンスを評価するためのパラメーターをいくつか追加します。 パラメータ自体は供給にありますが、たとえば、1分あたりの成長を知りたいと思います。





独自のパラメーターを追加する方法

SNMPを使用したCachéの監視 」というドキュメントを利用できます

テストインスタンス(TEST)には、 Caché2013.1.3のバージョンがあります 。 オペレーティングシステム-Linux CentOSリリース6.5(最終) 。 Linux OSでのキャッシュのインストールについては、 オタク誌で説明されています InterSystemsのネイティブドキュメントも役立ちます。

短い作業計画は次のとおりです。

  1. メトリックを収集するためのクラスを作成します。
  2. ^%SYSMONMGRを使用して、Cachéで新しいクラスを登録およびアクティブ化します。
  3. MonitorTools.SNMPクラスのメソッドを使用してカスタムMIBを作成します まず、架空のPEN(プライベートエンタープライズ番号)99990を取得します。その後、IANAに登録する必要があります。 この手順は無料で、1〜2週間かかり、「PENが必要な理由」などの簡単な連絡が伴います。
  4. 接続されたサブエージェントCachéで監視サービスを開始します。
  5. snmpwalkで、新しく作成したカスタムOIDが利用可能であることを確認します。
  6. OIDをサードパーティの監視システムに追加します。 たとえば、 Zabbixを使用します。 Zabbixのドキュメントはこちらにあります 。 特にCentOSでのZabbixのインストールと設定については、 こちらをご覧ください 。 監視が機能することを確認します。
  7. システム起動時にTESTエリアにシステムモニターの起動を追加します。


そして今、ポイントの計画を実行します。

1.メトリックを収集するためのクラスを作成します

メトリックコレクションクラスは、 %Monitor.Adaptorを継承します。 スタジオで、%SYSエリアに移動します。 モニターパッケージのエクスポート。 パッケージには、Studioからは見えないプライベートサンプルクラスが含まれていますが、xmlにエクスポートするときに使用できます。

ワークスペースがテスト領域であるとしましょう。 私たちはそれに通過します。 ここでMonitor.Sampleクラスをインポートします。 上記の「既にあるもの」のセクションで示した6つのメトリックの削除の実装を記述するクラスを作成します。

クラスmetrics.snmp.Metrics
クラスmetrics.snmp.Metrics Extends%Monitor.Adaptor

{

///アプリケーションに名前を付けます。 これにより、異なるグループを作成できます

/// SNMP MIBの同じアプリケーションレベルで一緒にクラス。

///デフォルトはパッケージ名と同じです。

パラメーター APPLICATION = "Monitoring" ;

/// CSPセッション数

プロパティ セッション As%Monitor.Integer ;

///ライセンスユーザーの制限

プロパティ KeyLicenseUnits As%Monitor.Integer ;

///ライセンスキーの有効期限

プロパティ KeyExpirationDate As%Monitor.String ;

///グローバル参照の速度

プロパティ GloRefSpeed As%Monitor.Integer ;

///実行されたコマンドの数

プロパティ ExecutedSpeed As%Monitor.Integer ;

///ルーチンのロード数/保存

プロパティ RoutineLoadSpeed As%Monitor.Integer ;

///メソッドは必須です。 アプリケーションモニターが

///データサンプルを収集するための呼び出し。

/// ^要求時のSNMPサーバープロセス。

メソッド GetSample() As%Status

{

set .. Sessions = .. getSessions ()

set .. KeyLicenseUnits = .. getKeyLicenseUnits ()

set .. KeyExpirationDate = .. getKeyExpirationDate ()



set perfList = .. getPerformance ()

set .. GloRefSpeed = $ listget perfList 、1)

set .. ExecutedSpeed = $ listget perfList 、2)

set .. RoutineLoadSpeed = $ listget perfList 、3)

$$$を終了OK

}

/// CSPセッション数を取得

メソッド getSessions() As%Integer

{

// q $ system.License.CSPUsers()//このメソッドは、WebAddonを使用しない場合にのみ機能します

//これは、WebAddonを使用しても機能します

csp = ""を 設定し ます

{

cn = $ NAMESPACEを 設定し ます

znspace "%SYS"

db = ##クラス SYS.Stats.Dashboard )を設定します。 サンプル ()

csp = dbを 設定し ます CSPSessions

znspace cn

} catch {

csp = "0"を 設定し ます

}

cspを 終了し ます

}

///ライセンスユーザーの権限を取得

メソッド getKeyLicenseUnits() As%Integer

{

$ system .Licenseを終了し ます。 KeyLicenseUnits ()

}

///ライセンスの有効期限を人間が読める形式で取得する

メソッド getKeyExpirationDate() As%String

{

quit $ zdate $ system .License。KeyExpirationDate ()、3)

}

///パフォーマンスメトリックを取得します(グローレフ、ルーチンなど)

メソッド getPerformance( param As%String As%Integer

{

cn = $ NAMESPACEを 設定し ます

znspace "%SYS"

set m = ## class SYS.Monitor.SystemSensors )。 %新規 ()

mを行い ます。 GetSensors ()

znspace cn

quit $ listbuild m。SensorReading "GlobalRefsPerMin" )、

m SensorReading "RoutineCommandsPerMin" )、

m SensorReading "RoutineLoadsPerMin" ))

}

}





必要なデータがアンロードされたGetSample()メソッドによって呼び出されることを確認します。

GetSample()の確認
TEST> sx = ## class(metrics.snmp.Metrics)。%New()



TEST> d x.GetSample()



テスト> zw x

x = <オブジェクト参照> [2@metrics.snmp.Metrics]

+ -----------------一般情報-| oref値:2

| クラス名:metrics.snmp.Metrics

| 参照カウント:2

+ -----------------属性値-| 実行速度= 1155679

| GloRefSpeed = 171316

| KeyExpirationDate = "2014-10-11"

| KeyLicenseUnits = 100

| RoutineLoadSpeed = 186

| セッション= 1



2. ^%SYSMONMGRを使用して、Cachéで新しいクラスを登録およびアクティブ化します

ターミナルを開き、テスト領域に移動します。

システムモニターを接続します
[root @ server〜]#csession test -U test

ノード:サーバー、インスタンス:TEST



テスト> d ^%SYSMONMGR

1. 項目5、[アプリケーションモニターの管理]を選択します。

2. アイテム2、モニタークラスの管理を選択します。

3. 項目3、モニターシステムクラスの登録を選択します。 コンパイルを確認します。



XMLへのエクスポートは2014年8月18日16:00:51に開始されました

エクスポートされたクラス:Monitor.Sample

エクスポートが正常に完了しました。



ダウンロードは2014年8月18日16:00:51に開始しました

ファイル/opt/intersystems/ensemble/mgr/Temp/45DDB3FppRHCuw.streamをxmlとしてダウンロードします

クラスのインポート:Monitor.Sample

クラスのコンパイル:Monitor.Sample

プログラムのコンパイル:: Monitor.Sample.G1.MAC

テーブルのコンパイル:Monitor.Sample

プログラムのコンパイル:Monitor.Sample.1

ダウンロードが正常に完了しました。



4. 項目1を選択し、モニタークラスをアクティブ化/非アクティブ化します

クラス??

Num MetricsClassNameがアクティブ化されました

1)%Monitor.System.AuditCount N

...

15)metrics.snmp.Metrics N



クラス? 15 metrics.snmp.Metrics

クラスをアクティブにしますか? はい=>はい



5. アイテム6、終了を選択します

6.もう一度、 アイテム6、終了を選択します

7. アイテム1、システムモニターの開始/停止を選択します

8. アイテム2、システムモニターの停止を選択します

システムモニターを停止しています...システムモニターが実行されていません!



9. アイテム1、システムモニターの起動を選択します

システムモニターを起動しています...システムモニターが起動しました

10. アイテム3、終了を選択します

11. アイテム4、システムモニター状態の表示を選択します

コンポーネントの状態

システムモニターOK

%SYS.Monitor.AppMonSensor



3. カスタムMIBを作成します

MonitorTools.SNMPクラスのメソッドを使用して、カスタムMIBが作成されます。 たとえば、PEN(企業番号)を取り、架空の99990を取り、次にPENをIANAに登録する必要があります。 すでに登録されている番号はこちらでご覧ください 。 たとえば、PEN InterSystemsの番号は16563です。

16563

システム間

ロバート・デイビス

rdavis&intersystems.com

MIBファイルを作成するには、 MonitorTools.SNMPクラス、特にCreateMIB()メソッドを使用します。 このメソッドは、入力として10個の引数を取ります。

引数の名前とタイプ 説明 私たちは何を代用しますか
AppName As String アプリケーション名 metrics.snmp.MetricsクラスのAPPLICATIONパラメーター値-モニター
%Stringとしての名前空間 私たちの地域 テスト
EntID As %Integer ペン会社 99990(フィクション)
IDとしてのAppID 社内のOIDアプリケーション 42
As String 会社名(首都) 小説
%文字列としてのプレフィックス 作成するすべてのSNMPオブジェクトのプレフィックス 小説
CompanyShort As %String 会社の短いプレフィックス(大文字) フィクト
MIB名としての%文字列 MIBファイル名 ISC-TEST
%文字列として連絡 連絡先情報(特に住所) デフォルト値のままにします:Earth、Russia、Somewhere in the forest、Subject:ISC-TEST.mib
%ブール値としてリスト アナログ冗長。 MIBファイルを作成するタスクの進行状況を表示します 1


実際には、MIBファイルを作成します。

CreateMIB()
%SYS> d ##クラス(MonitorTools.SNMP).CreateMIB( "Monitoring"、 "TEST"、99990.42、 "fiction"、 "fict"、 "fiction"、 "ISC-TEST" ,, 1)

アプリケーション用のSNMP構造の作成-監視

グループ-指標

ExecutedSpeed =整数

GloRefSpeed =整数

KeyExpirationDate = String

KeyLicenseUnits =整数

RoutineLoadSpeed =整数

セッション=整数



監視用のMIBファイルを作成する

テーブルメトリックを生成する

オブジェクトExecutedSpeedを追加、タイプ=整数

オブジェクトGloRefSpeedを追加、タイプ=整数

オブジェクトKeyExpirationDateを追加、タイプ=文字列

オブジェクトKeyLicenseUnitsを追加、タイプ=整数

オブジェクトRoutineLoadSpeedを追加、タイプ=整数

オブジェクトセッションの追加、タイプ=整数

MIBが完了しました。



新しいMIB ISC-TEST.mibが<Install_dir> / mgr / TESTディレクトリに現れました。



4. 接続されたサブエージェントCachéで監視サービスを開始します

コントロールパネルの[ システム管理]-> [セキュリティ]-> [サービス]->%Service_Monitor(クリック)-> [サービス有効](チェック)を開きます





また、Cachéの起動時にSNMPサブエージェントを起動することを示します([監視設定の構成]をクリック)。



Linux CentOSでは、SNMP監視にnet-snmpパッケージを使用します。 サブエージェントを使用するように設定し、マスターエージェントとサブエージェントの通信がこのために標準ポート705を介するようにします。



[root @ server〜]#grep -i agentx / etc / services

agentx 705 / tcp#AgentX

agentx 705 / udp#AgentX



snmpd.conf構成ファイルに関する小さな記事は、 マナに加えて cybercitiで見ることができます。 最終的なセットアップは次のとおりです。

snmpd.conf
[root @ server〜]#yum install net-snmp

[root @ server〜]#grep '^ [^#]' /etc/snmp/snmpd.conf

マスターagentx

agentXSocket TCP:localhost:705

com2sec local localhost public

グループMyRWGroup v1ローカル

グループMyRWGroup v2cローカル

グループMyRWGroup usm local

含まれているすべてを表示.1 80

含まれるビューシステム.iso.org.dod

MyROGroup ""にアクセスするnoauth exact all none none

MyRWGroup ""にアクセスします。

syslocationサーバー(/etc/snmp/snmpd.confを編集)

syscontact Root <root @ localhost>(/etc/snmp/snmp.local.confを設定)

dontLogTCPWrappersConnectsはい



Linuxでsnmpdおよびsnmptrapdデーモンを再起動します。 ^ SNMPサービスを開始して、CachéSNMPサブエージェントとの連携を開始します。

%SYS> d start ^ SNMP



5. 新しく作成されたカスタムOIDが使用可能であることを確認します

これはsnmpwalkを使用して行うことができます-CSPセッションの数を表示するOIDを表示しましょう:



[root @ server mgr]#snmpwalk -On -v 2c -c public localhost 1.3.6.1.4.1.99990

.1.3.6.1.4.1.99990.42.1.1.1.1.4.84.69.83.84 = INTEGER:448035

.1.3.6.1.4.1.99990.42.1.1.1.2.4.84.69.83.84 =整数:64190

.1.3.6.1.4.1.99990.42.1.1.1.3.4.84.69.83.84 = STRING: "2014-10-11"

.1.3.6.1.4.1.99990.42.1.1.1.4.4.84.69.83.84 = INTEGER:200

.1.3.6.1.4.1.99990.42.1.1.1.5.4.84.69.83.84 = INTEGER:93

.1.3.6.1.4.1.99990.42.1.1.1.6.4.84.69.83.84 = INTEGER:1



OIDのシーケンスは、ISC-TEST.mibファイルに示されています。



FictMetricsR :: =

シーケンス{

fictExecutedSpeed Integer32、

fictGloRefSpeed Integer32、

fictKeyExpirationDate DisplayString、

fictKeyLicenseUnits Integer32、

fictRoutineLoadSpeed Integer32、

fictSessions Integer32

}



したがって、たとえば、セッション数は最後のOID 1.3.6.1.4.1.99990.42.1.1.1.6です。 SMPダッシュボードに表示されるセッションの数と比較できます。





6. OIDをサードパーティの監視システムに追加します。

たとえば、 Zabbixを使用します。 Zabbixのドキュメントはこちらにあります 。 特にCentOSでのZabbixのインストールと設定については、 こちらをご覧ください 。 Zabbixは、グラフの描画だけでなく、プレーンテキストの監視も可能にするシステムとして選択されました(この場合、これはライセンス有効期間とユーザーライセンス容量です)。 6つのメトリックをローカルホストのアイテムに追加し、4つのグラフと2つのPlainTextパラメーターを( 画面要素として)作成すると、次の図が表示されます(小さな「ライブ」システムの例が示されています)。



上記は、ライセンスの有効期限とライセンススロットの数に関する情報です。 グラフはそれ自体を物語っています。



7. システムの起動時にテスト領域にシステムモニターの開始を追加します

Cachéの起動と停止で機能するカスタムルーチンの使用に関する優れたドキュメントがあります。 それぞれ、%ZSTARTおよび%ZSTOPと呼ばれます。

これらすべてに関心があるのは、起動時にTESTのユーザー領域でシステムモニター(^%SYSMONMGR)を上げることです。 デフォルトでは、このモニターは%SYS領域でのみ開始されます。 したがって、^%ZSTARTプログラムのみを考慮します。 Source%ZSTART.mac(%SYS領域に作成して保存します)。

自動スタート
%ZSTART ユーザー起動ルーチン。

システム

; キャッシュ開始

do $ zu (9、 "" "^%ZSTART ... BeginによるTEST名前空間でのシステムモニターの開始"

znspace "TEST"

sc = ##クラス %SYS.Monitor )を設定します。 開始 ()

$ system .OBJを実行し ます。 DisplayError sc

if sc = 1) {

do $ zutil (9、 "" "^%ZSTART ... OKによるTEST名前空間でのシステムモニターの開始"

} else {

do $ zutil (9、 "" "^%ZSTART ... ERRORによるTEST名前空間でのシステムモニターの開始"

}

; SNMPの開始

znspace "%SYS"

開始 ^ SNMP

やめる

ログイン

; ユーザーがキャッシュにログインする(ユーザーアカウントまたはtelnet)

やめる

JOB ;

; Job'dプロセスが始まります

やめる

CALLIN ;

; CALLINインターフェイスを介してプロセスに入ります

やめる





(可能であれば)Cachéを再起動して、Cachéの再起動後もSNMP統計の収集が継続されるようにします。

以上です。 監視パラメータまたはコードの選択について誰かがコメントするかもしれませんが、タスクは原則としてそのような監視の可能性を示すことであり、必要なパラメータをいつでも追加したり、将来コードをリファクタリングすることができます。

ご清聴ありがとうございました!



All Articles