問題
ktranslate
ネットワーク モニタリング エージェントによって計算されたさまざまな結果について質問があります。
背景
ktranslate
は、ほぼすべてのインスタンスで SNMP ポーリングによって収集された生データを返しますが、次の注意事項があります。
- CPU使用率%
- メモリ使用率 %
- インターフェース使用率 %
- インターフェースエラー%
- 構成に
enum
またはconversion
関数が適用されたさまざまな指標
解決
Metric Name: kentik.snmp.CPU
CPU は通常、使用率を表す整数または浮動小数点値を提供する直接 OID で返されます。まれに、CPU アイドルの結果のみが表示されます。これは、次の式を使用してCPU に変換されます。
CPU = 100 - CPU Idle
Metric Name: kentik.snmp.MemoryUtilization
CPU とは異なり、メモリ使用率が直接 OID 値として表示されることはほとんどありません。使用率を計算するために、 ktranslate は次のロジックを使用します。
If Memory Used and Memory Free are available: Memory Utilization = ( Memory Used / (Memory Free + Memory Used) ) * 100
If Memory Total and Memory Free are available: Memory Utilization = ( (Memory Total - Memory Free) / Memory Total ) * 100
If Memory Total and Memory Used are available: Memory Utilization = ( Memory Used / Memory Total ) * 100
If Memory Total, Memory Buffer, and Memory Cache are available: Memory Utilization = ( ( Memory Total - (Memory Buffer + Memory Cache ) ) / Memory Total ) * 100
Metric Name: kentik.snmp.IfInUtilization
| kentik.snmp.IfOutUtilization
インターフェイスの使用率は、デルタをビット単位で計算し、インターフェイスの設定された速度と最後の収集が行われてからの時間デルタの積で割るという業界標準のアプローチに従います。
たとえば、1 が前のデータ ポイント、2 が最新のデータ ポイントであると仮定します。
( ( ifHCInOctets_2 - ifHCInOctets_1 ) * 8 * 100 ) / ( (sysUptime_2 - sysUptime_1) * ifSpeed )
換算された計算
分子の場合:
最新のオクテット数を取得し、前のサンプルの値を減算してデルタを取得します。
結果を 8 で乗算して、オクテットをビットに変換します。
ビットに 100 を掛けて、パーセント計算を設定します。
分母の場合:
sysUptime
の最新の値を取得し、前のサンプルの値を減算して、ポーリング間隔を示すデルタを取得します。間隔に設定された
ifSpeed
(ビット単位で報告される) を掛けます。ついに:
分子を分母で割ると、使用率が求められます。
ソースデータ
KTranslate は、 ifHCInOctets (受信) またはifHCOutOctets (送信) のいずれかの値を使用します。必要に応じて、分母の
ifSpeed
ifHighSpeedの値に置き換えます。ヒント
不正確なインターフェイス使用率が表示される一般的な理由は、デバイスに設定されているインターフェイス速度が実際のインターフェイス速度を反映していないことです。たとえば、10 GB インターフェイス上の 1 GB MPLS 回線では、実際の使用率のわずか 10% の割合が表示されます。これを解決するには、インターフェイス帯域幅の設定に関するベンダーのドキュメントを参照してください。
Metric Name: kentik.snmp.ifHCInOctets
| kentik.snmp.ifHCOutOctets
インターフェイスのスループットは、 ifHCInOctets (受信) またはifHCOutOctets (送信) の値を使用します。
スループットをクエリするときに、何を探しているのかを正確に把握することが重要です。
1オクテット = 1バイト
1オクテット = 8ビット
SNMP での生の測定はオクテットをカウントしますが、このコンテキストではバイトと同義になります。 変換を必要とせずに、報告されたメトリックを通じてバイトを直接簡単に計算できます。
1 秒あたりのビット数 (bps) を求める場合は、オクテットを乗算し、最終的な数値を「1 秒あたり」のレートに変換する必要があります。
例
FROM Metric SELECTmax(kentik.snmp.ifHCInOctets) AS 'total_received_bytes',max(kentik.snmp.ifHCOutOctets) AS 'total_sent_bytes',rate(average(kentik.snmp.ifHCInOctets)*8, 1 SECOND) AS 'average_received_bps',rate(average(kentik.snmp.ifHCOutOctets)*8, 1 SECOND) AS 'average_sent_bps'FACET entity.name, if_interface_nameSINCE 1 WEEK AGOTIMESERIES
Metric Name: kentik.snmp.ifInErrorPercent
| kentik.snmp.ifOutErrorPercent
インターフェイス エラーの割合には、 ifInErrors (受信) またはifOutErrors (送信) の値を、 ifHCInUcastPkts (受信) またはifHCOutUcastPkts (送信) で割った値が使用されます。ktranslate では、式は次のようになります。
( ifInErrors / ifHCInUcastPkts ) * 100or( ifOutErrors / ifHCOutUcastPkts ) * 100
Metric Name: 様々な
他の SNMP メトリクスは、それぞれのSNMP プロファイル内のenum
関数とconversion
関数の存在に基づいて変換されます。
プロファイル設定 | 使用方法 |
---|---|
|
|
| ディメンション メトリックの整数値を、(同じメトリック名のサフィックスを使用して) ディメンション メトリックで装飾された属性の列挙値に変換する SNMP 列挙を処理するために使用されます。一般的な例は、 kentik.snmp.if_AdminStatusを、 if_AdminStatusの列挙値 ( |
| 16 進数値を整数形式に変換するために使用されます。 currentのオプション: |
| 16 進値を 4 オクテットの IPv4 文字列に変換するために使用されます。 |
| 16 進値を MAC アドレス文字列に変換するために使用されます。 |
|
|
| OID 出力に正規表現一致を配置して部分文字列をキャプチャします。引用符で囲み、バックスラッシュをエスケープする必要があります。 |
| 列挙オプションのない非数値スカラー OID をポーリングするために、値が |