네트워크 성능 모니터링을 구성할 때 사용할 수 있는 모든 옵션을 탐색하려면 다음 섹션을 참조하십시오.
SNMP 기반 YAML 샘플 파일
다음은 ktranslate Docker 이미지가 SNMP 및 흐름 데이터 장치를 폴링하는 데 사용하는 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 구성에 사용할 AWS Secrets Manager 에서 키 검색을 지원하는 기능이 내장되어 있습니다.
이 기능을 사용하려면 다음 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"}
여러 SNMP v3 프로필로 검색 실행
여러 SNMP v3 프로필로 검색 작업 실행을 지원하려면 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
이벤트 네임스페이스에 원격 분석만 있는 Flow Device 항목이 생성됩니다. 또는 구성 파일에 있는 장치에서 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패킷 전송을 기준으로 엔드포인트에 대한 패킷 손실률을 보여줍니다. 이는 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 | ✓ | 적용할 필터의 유형입니다. 가능한 값은 |
$필드 | ✓ | 일치 패턴을 평가할 필드의 이름입니다. |
$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