ネットワークパフォーマンスの監視を構成するときに使用できるすべてのオプションを調べたい場合は、次のセクションを参照してください。
SNMPベースのYAMLサンプルファイル
SNMP とフロー データ デバイスをポーリングするためにktranslate Docker イメージで使用されるsnmp-base.yaml
ファイルで使用できるさまざまな構成オプションの例を次に示します。GitHub の KTranslate リポジトリで、コメントの多いサンプルを確認することもできます。
devices: # Sample of SNMP v2c device ups_snmpv2c__10.10.0.201: device_name: ups_snmpv2c device_ip: 10.10.0.201 snmp_comm: public oid: .1.3.6.1.4.1.318.1.3.27 description: "APC Web/SNMP Management Card (MB:v4.1.0 PF:v6.2.1 PN:apc_hw05_aos_621.bin AF1:v6.2.1 AN1:apc_hw05_sumx_621.bin MN:AP9537SUM HR:05 SN: ABC123DEF456 MD:05/21/2016) (Embedded PowerNet SNMP Agent SW v2.2 compatible)" last_checked: 2021-11-09T18:14:59.907821489Z mib_profile: apc_ups.yml provider: kentik-ups poll_time_sec: 300 retries: 1 timeout_ms: 5000 user_tags: owning_team: dc_ops discovered_mibs: - PowerNet-MIB_UPS - TCP-MIB - UDP-MIB # Sample of SNMP v3 device router_snmpv3__10.10.0.202: device_name: router_snmpv3 device_ip: 10.10.0.202 snmp_v3: user_name: userNamev3 authentication_protocol: MD5 authentication_passphrase: authPassPrivacy privacy_protocol: AES256 privacy_passphrase: passPrivacy oid: .1.3.6.1.4.1.9.1.544 description: "Cisco IOS Software, 3800 Software (C3845-ADVENTERPRISEK9-M), Version 15.1(3)T4, RELEASE SOFTWARE (fc1)\r\nTechnical Support: http://www.cisco.com/techsupport\r\nCopyright (c) 1986-2012 by Cisco Systems, Inc.\r\nCompiled Thu 24-May-12 04:27 by prod_rel_team" last_checked: 2021-11-09T18:14:59.907821489Z mib_profile: cisco-asr.yml provider: kentik-router user_tags: owning_team: core-networking discovered_mibs: - BGP4-MIB - CISCO-MEMORY-POOL-MIB - CISCO-PROCESS-MIB - IF-MIB - OSPF-MIB engine_id: "80:00:01:01:0a:14:1e:28" match_attributes: if_interface_name: "^Ten.*|^Gig.*" "!if_Alias": "[Uu]plink" # Sample of SNMP v1 device netbotz_snmpv1__10.10.0.203: device_name: netbotz_snmpv1 device_ip: 10.10.0.201 snmp_comm: public use_snmp_v1: true oid: .1.3.6.1.4.1.5528.100.20.10.2013 description: "Linux netbotz930A7A 2.6.12 #307 Wed Dec 29 15:25:32 EST 2010 ppc" last_checked: 2021-11-09T18:14:59.907821489Z mib_profile: apc-netbotz.yml provider: kentik-netbotz user_tags: owning_team: sys_ops discovered_mibs: - IF-MIB - IP-MIB - TCP-MIB - UDP-MIB no_use_bulkwalkall: true # Sample of "flow only" device flow_only__10.10.0.210: device_name: flow_only device_ip: 10.10.0.210 user_tags: owning_team: net_eng flow_only: true # Sample of "ping only" device ping_only__10.10.0.220: device_name: ping_only device_ip: 10.10.0.220 user_tags: owning_team: load_balancing ping_only: true ping_interval_sec: 5 # Sample of Arista eAPI device arista_eapi_10.10.0.230: device_name: arista_eapi device_ip: 10.10.0.230 snmp_comm: public oid: .1.3.6.1.4.1.30065.1.3011.7020.3735.24.2878.2 description: "Arista Networks EOS version 4.22.9M running on an Arista Networks DCS-7020SR-24C2" last_checked: 2021-11-09T18:14:59.907821489Z mib_profile: arista-switch.yml provider: kentik-switch discovered_mibs: - ARISTA-BGP4V2-MIB - ARISTA-QUEUE-MIB - BGP4-MIB - HOST-RESOURCES-MIB - IF-MIB ext: ext_only: false eapi_config: username: usernameAPI password: passwordAPI transport: https port: 443 # Sample of Meraki Dashboard API device meraki_dashboard_api: device_name: meraki_controller device_ip: snmp.meraki.com provider: meraki-cloud-controller ext: ext_only: true meraki_config: api_key: APIKEY123ABC monitor_uplinks: true monitor_devices: true monitor_org_changes: true organizations: - "Top Org.*" networks: - "Production" - "Guest"trap: listen: 0.0.0.0:1620 community: public version: "" transport: "" v3_config: null trap_only: falsediscovery: cidrs: - 10.0.0.0/24 - 10.0.0.202/32 ignore_list: - 10.0.0.98 - 10.0.0.99 debug: false ports: - 161 - 1161 default_communities: - public - public123 - Publ!cABC use_snmp_v1: false default_v3: null add_mibs: true threads: 4 add_devices: true replace_devices: true no_dedup_engine_id: false check_all_ips: falseglobal: poll_time_sec: 60 drop_if_outside_poll: false mib_profile_dir: /etc/ktranslate/profiles mibs_db: /etc/ktranslate/mibs.db mibs_enabled: - ARISTA-BGP4V2-MIB - ARISTA-QUEUE-MIB - BGP4-MIB - CISCO-MEMORY-POOL-MIB - CISCO-PROCESS-MIB - HOST-RESOURCES-MIB - IF-MIB - OSPF-MIB - PowerNet-MIB_UPS timeout_ms: 3000 retries: 0 global_v3: null response_time: false user_tags: environment: production match_attributes: if_Description: ".*WAN.*"
オプションの外部設定ファイル
さまざまな構成と自動化のニーズをサポートするために、Dockerコンテナーにボリュームマウントする外部ファイルを使用して、標準構成ファイルの特定の要素を分離できます。
これらのファイルの構文は、二重引用符を含めて"@fileName.extension"
です。
ディスカバリーCIDR
例:
discovery: cidrs: "@cidrs.yaml"
CIDRファイルは、次のようなYAMLリスト構文を使用する必要があります。
- 10.10.0.0/24- 10.20.0.0/24- 192.168.0.21/32
デバイス
例:
devices: "@neteng-devices.yaml"
デバイスファイルは、メイン構成ファイルの標準devices
セクションと同じ構文を使用する必要がありますが、検出中に生成されるオプションのフィールドは省略されます。
devices: # Sample of SNMP v2c device ups_snmpv2c__10.10.0.201: device_name: ups_snmpv2c device_ip: 10.10.0.201 snmp_comm: public oid: .1.3.6.1.4.1.318.1.3.27 mib_profile: apc_ups.yml provider: kentik-ups poll_time_sec: 300 retries: 1 timeout_ms: 5000 user_tags: owning_team: dc_ops
SNMPv3-AWSシークレット
ktranslateには、SNMPv3設定で使用するためにAWSSecretsManagerからキーを取得するためのサポートが組み込まれています。
この機能を使用するには、次の3つの環境変数を設定し、実行時にそれらをDockerに提供する必要があります。
名前 | 説明 |
---|---|
ユーザーを認証するためのクレデンシャルの一部として使用されるAWSアクセスキーを指定します。 | |
ユーザーを認証するための認証情報の一部として使用されるAWSシークレットキーを指定します。 | |
このプロファイルを使用してリクエストされたコマンドのリクエストを送信するAWSリージョンを指定します。 |
Dockerランタイムの例:
$docker run -d --name ktranslate-snmp --restart unless-stopped --net=host \> -v `pwd`/snmp-base.yaml:/snmp-base.yaml \> -e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \> -e AWS_ACCESS_KEY_ID=$YOUR_AWS_ACCESS_KEY_ID \> -e AWS_SECRET_ACCESS_KEY=$YOUR_AWS_SECRET_ACCESS_KEY \> -e AWS_REGION=$YOUR_AWS_REGION \> kentik/ktranslate:v2 \> -snmp /snmp-base.yaml \> -nr_account_id=$YOUR_NR_ACCOUNT_ID \> -log_level=info \> -metrics=jchf \> -tee_logs=true \> nr1.snmp
関連する構成ファイル( snmp-base.yaml
);次のようにSNMPv3構成スニペットを更新し、シークレット名の前にaws.sm.
を付けます。
default_v3: aws.sm.secret.name
以下の例のように、関連するすべてのキーと値のペアを含む JSON 形式でシークレットを保存する必要があります。
{ "user_name": "YourUserName", "authentication_protocol": "MD5", "authentication_passphrase": "abcd1234", "privacy_protocol": "AES256", "privacy_passphrase": "1234ABCD"}
複数のSNMPv3プロファイルを使用した検出の実行
複数のSNMPv3プロファイルでの検出ジョブの実行をサポートするために、 discovery.default_v3
キーをSNMPv3構成の配列を保持するdiscovery.other_v3s
キーに置き換えることができます。
other_v3s: - user_name: test1 authentication_protocol: MD5 authentication_passphrase: authPass1 privacy_protocol: AES256 privacy_passphrase: privacyPass1 context_engine_id: "" context_name: "" - user_name: test2 authentication_protocol: SHA authentication_passphrase: authPass2 privacy_protocol: DES privacy_passphrase: privacyPass2 context_engine_id: "" context_name: ""
match_attributes属性
可観測性のニーズに見合う価値を生み出さないデータのフィルタリングをサポートするために、 global.match_attributes.{}
またはdevices.<deviceName>.match_attributes.{}
属性マップを設定できます。
これにより、New Relicにデータを送信する前に、 ktranslateレベルでフィルタリングが提供され、インターフェースなどの監視をきめ細かく制御できるようになります。
このマップのデフォルトの動作はOR
条件ですが、これをオーバーライドして、キー名の前に!
を付けることでAND
演算子を強制することができます。これは、一致したアイテムのみを返し、すべてのnull
および""
(空の)結果を省略する場合にも役立ちます。
flow_only属性
パフォーマンス統計にアクセスできない、利用できない、または必要とされないデバイスの監視をサポートするために、 devices.<deviceName>.flow_only
属性をtrue
に設定できます。
これにより、 KFlow
イベント名前空間にのみテレメトリを持つフローデバイスエンティティが生成されます。または、構成ファイルにSNMPデバイスとして含まれているデバイスからフローテレメトリを収集すると、ルーターやファイアウォールなどの既存のエンティティにKFlow
データの装飾が追加されます。
New Relicでは、次のイベントを調査することで、このポーリングの結果を確認できます。
FROM KFlow SELECT count(*) FACET device_name WHERE instrumentation.name = 'netflow-events' TIMESERIES
response_time属性とping_only属性
パフォーマンス統計にアクセスできない、または利用できないデバイスの監視をサポートするため、または基本的なラウンドトリップ時間(RTT)の監視が必要な単純な場合に、 global.response_time
またはdevices.<deviceName>.ping_only
属性をtrue
に設定できます。
この機能は、平均、最小、最大、および stddev ラウンドトリップ時間 (RTT) を収集するために、 go-pingパッケージを使用して ICMP または非特権 UDP パケットをデバイスに送信します。このパッケージは、 ktranslate
からデバイスの IP アドレスに 1 秒あたり 1 パケットを送信することに基づいて、エンドポイントのパケット損失率も示します。これは、 devices.<deviceName>.ping_interval_sec
属性を設定することでオーバーライドできます。Docker ランタイム中にKENTIK_PING_PRIV=false
環境変数を設定することにより、特権 ICMP パケットまたは UDP のデフォルトの使用から切り替えることができます。
global.response_time
属性をtrue
に設定すると、既存のSNMPポーリングに加えてRTT監視が追加されます。RTTのUDP|ICMPパケットのみを使用し、SNMPポーリングを使用しないデバイスを監視するには、 devices.<deviceName>.ping_only: true
を使用します。
New Relicでは、次のメトリックを調査することで、このポーリングの結果を確認できます。
FROM Metric SELECT average(kentik.ping.AvgRttMs) AS 'Average', max(kentik.ping.MaxRttMs) AS 'Max', min(kentik.ping.MinRttMs) AS 'Min', average(kentik.ping.StdDevRtt) AS 'StdDev', latest(kentik.ping.PacketLossPct) AS 'Packet Loss %' FACET device_name
ヒント
フローデバイスからRTTメトリックを収集する場合は、 flow_only
属性の代わりにping_only
属性を使用できます。ping_only
とflow_only
の両方がtrue
の場合、デバイスはflow_only
デバイスとして扱われます。
フローデータアプリケーションマッピング
デフォルトでは、フローテレメトリは、特定のフロー会話で使用されているレイヤー4ポートの評価に基づいて、既知のアプリケーションにマッピングされます。必要に応じて、Dockerの実行時に-application_map
フラグにYAMLファイルを提供することで、デフォルトのマッピングをオーバーライドできます。これにより、識別したポートに基づいてアプリケーション名を指定できます。
構文例:
applications: - ports: [9092, 9093] name: kafka - ports: [80, 8080] name: http - ports: [443, 8443] name: https
フローデータ入力フィルタリング
デフォルトでは、フローデータコンテナは受信したすべてのフローパケットを収集して処理します。必要に応じて、指定したフィルターと一致しないすべてのトラフィックを無視する包含フィルターを-nf.source
フラグに追加できます。
構文: --filters $TYPE,$FIELD,$FUNCTION,$MATCH
引数名 | 必須 | 説明 |
---|---|---|
$ TYPE | ✓✓ | 適用するフィルターのタイプ。可能な値は、 |
$ FIELD | ✓✓ | 一致パターンを評価するフィールドの名前。 |
$ FUNCTION | ✓✓ | 評価中に使用する関数のタイプ。可能な値は |
$ MATCH | ✓✓ | 一致パターンとして使用される値。 |
フィルタの例
10.0.0.0/24
CIDR範囲の送信元アドレスからのみフローデータを収集します
-nf.source sflow --filters addr,src_addr,%,10.10.0.0/24
- 宛先ポートがと等しくないフローデータのみを収集します
8531
-nf.source netflow5 --filters int,l4_dst_port,!=,8531
継承されたAND
演算子を使用して複数のフィルターを追加することもできます
10.0.0.0/24
CIDR範囲内で、宛先ポートがと等しくない送信元アドレスからのみフローデータを収集します8531
--filters addr,src_addr,%,10.0.0.0/24 --filters int,l4_dst_port,!=,8531