목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

구성

네트워크 다이어그램

설정

1단계. 데이터베이스 준비

2단계. 텔레그래프 준비

3단계. 원하는 메트릭을 포함하는 텔레메트리 서브스크립션 결정

4단계. 컨트롤러에서 NETCONF 활성화

5단계. 컨트롤러에서 텔레메트리 서브스크립션 구성

6단계. Grafana 데이터 원본 구성

7단계. 대시보드 만들기

8단계. 대시보드에 시각화 추가

다음을 확인합니다.

WLC 실행 컨피그레이션

Telegraf 컨피그레이션

IntrusionDB 컨피그레이션

Grafana 컨피그레이션

문제 해결

WLC 원 스톱 샵 리플렉스

네트워크 연결성 확인

로깅 및 디버깅

메트릭이 TIG 스택에 도달하는지 확인

IntrusionDB CLI에서

텔레그라프에서

참조

소개

이 문서에서는 Telegraf, IntrusionDB 및 TIG(Grafana) 스택을 구축하고 Catalyst 9800과 상호 연결하는 방법에 대해 설명합니다.

사전 요구 사항

이 문서에서는 복잡한 통합을 통해 Catalyst 9800의 프로그래밍 인터페이스 용량을 보여 줍니다. 이 문서에서는 이러한 기능을 필요에 따라 완벽하게 사용자 정의할 수 있고 매일 시간을 절약할 수 있는 방법을 보여 줍니다. 여기에 소개된 구축은 gRPC를 기반으로 하며 텔레메트리 컨피그레이션을 통해 Catalyst 9800의 무선 데이터를 모든 Telegraf, IntrusionDB, TIG(Grafana) 관측 가능 스택에서 사용할 수 있도록 합니다.

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Catalyst Wireless 9800 구성 모델.

- 네트워크 프로그래밍 기능 및 데이터 모델.

- TIG 스택 기본 사항.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- Catalyst 9800-CL (v. 17.12.03).

- Ubuntu(버전 22.04.03).

- IntrusionDB(버전 1.06.07).

- Telegraf(버전 1.21.04).

- Grafana (v. 10.02.01).

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

구성

네트워크 다이어그램

설정

이 예에서는 gRPC 다이얼아웃을 사용하여 9800-CL에서 텔레메트리를 구성하여 텔레그래프 애플리케이션에 대한 정보를 IntrusionDB 데이터베이스에 푸시합니다. 여기에서는 두 개의 디바이스가 사용되었고

- 전체 TIG 스택을 호스팅하는 Ubuntu 서버입니다.

- Catalyst 9800-CL

이 컨피그레이션 가이드는 이러한 디바이스의 전체 구축에 초점을 맞추는 것이 아니라 9800 정보를 적절하게 보내고 받고 제공하기 위해 각 애플리케이션에 필요한 컨피그레이션에 중점을 둡니다.

1단계. 데이터베이스 준비

컨피그레이션 부분으로 들어가기 전에 Intrusion 인스턴스가 제대로 실행되고 있는지 확인하십시오. 이 작업은 Linux 배포판을 systemctl status 사용하는 경우 명령을 사용하여 쉽게 수행할 수 있습니다.

admin@tig:~$ systemctl status influxd ● influxdb.service - InfluxDB is an open-source, distributed, time series database Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-06-14 13:06:18 UTC; 2 weeks 5 days ago Docs: https://docs.influxdata.com/influxdb/ Main PID: 733 (influxd) Tasks: 15 (limit: 19180) Memory: 4.2G CPU: 1h 28min 47.366s CGroup: /system.slice/influxdb.service └─733 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

예를 들어, Telegraf는 메트릭을 저장할 데이터베이스뿐만 아니라 이 메트릭에 연결할 사용자도 필요합니다. 이러한 파일은 IntrusionDB CLI에서 다음 명령을 사용하여 쉽게 생성할 수 있습니다.

admin@tig:~$ influx Connected to http://localhost:8086 version 1.8.10 InfluxDB shell version: 1.8.10 > create database TELEGRAF > create user telegraf with password 'YOUR_PASSWORD'

이제 데이터베이스가 생성되면 메트릭을 올바르게 저장하도록 Telegraf를 구성할 수 있습니다.

2단계. 텔레그래프 준비

이 예에서는 두 가지 Telegraf 컨피그레이션만 가능합니다. 이러한 파일은 /etc/telegraf/telegraf.conf 구성 파일에서 만들 수 있습니다(Unix에서 실행 중인 응용 프로그램의 경우 일반적으로 사용).

첫 번째 명령은 Telegraf에서 사용되는 출력을 선언합니다. 앞에서 설명한 대로 InfluenceDB는 여기에서 사용되며 다음과 같이 파일의 출력 telegraf.conf 섹션에서 구성됩니다.

############################################################################### # OUTPUT PLUGINS # ############################################################################### # Output Plugin InfluxDB [[outputs.influxdb]] ## The full HTTP or UDP URL for your InfluxDB instance. # ## # ## Multiple URLs can be specified for a single cluster, only ONE of the # ## urls will be written to each interval. urls = [ "http://127.0.0.1:8086" ] # ## The target database for metrics; will be created as needed. # ## For UDP url endpoint database needs to be configured on server side. database = "TELEGRAF" # ## HTTP Basic Auth username = "telegraf" password = "YOUR_PASSWORD"

이렇게 하면 Telegraf 프로세스가 수신 데이터를 포트 8086의 동일한 호스트에서 실행 중인 IntrusionDB에 저장하고 "TELEGRAF"라는 데이터베이스(및 이 데이터베이스에 액세스하기 위한 자격 증명 telegraf/YOUR_PASSWORD)를 사용하도록 지시합니다.

선언된 첫 번째 것이 출력 형식이었다면 두 번째 것은 물론 입력 형식입니다. Telegraf에서 수신하는 데이터가 텔레메트리를 사용하는 Cisco 디바이스에서 온다는 것을 알려주기 위해 cisco_telemetry_mdt" 입력 모듈을 사용할 수 있습니다. 이 설정을 구성하려면 파일에 다음 행만 추가하면 /etc/telegraf/telegraf.conf 됩니다.

############################################################################### # INPUT PLUGINS # ############################################################################### # # Cisco model-driven telemetry (MDT) input plugin for IOS XR, IOS XE and NX-OS platforms [[inputs.cisco_telemetry_mdt]] # ## Telemetry transport can be "tcp" or "grpc". TLS is only supported when # ## using the grpc transport. transport = "grpc" # # ## Address and port to host telemetry listener service_address = ":57000" # ## Define aliases to map telemetry encoding paths to simple measurement names [inputs.cisco_telemetry_mdt.aliases] ifstats = "ietf-interfaces:interfaces-state/interface/statistics"

이렇게 하면 호스트에서 실행 중인 Telegraf 애플리케이션(기본 포트 57000)이 WLC에서 수신되는 데이터를 디코딩할 수 있습니다.

컨피그레이션이 저장되면 Telegraf를 다시 시작하여 서비스에 적용해야 합니다. 또한 서비스가 올바르게 다시 시작되었는지 확인하십시오.

admin@tig:~$ sudo systemctl restart telegraf admin@tig:~$ systemctl status telegraf.service ● telegraf.service - Telegraf Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-07-03 17:12:49 UTC; 2min 18s ago Docs: https://github.com/influxdata/telegraf Main PID: 110182 (telegraf) Tasks: 10 (limit: 19180) Memory: 47.6M CPU: 614ms CGroup: /system.slice/telegraf.service └─110182 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

3단계. 원하는 메트릭을 포함하는 텔레메트리 서브스크립션 결정

앞서 언급했듯이 다른 많은 Cisco 디바이스에서와 마찬가지로 메트릭은 YANG 모델에 따라 구성됩니다. IOS XE(9800에서 사용)의 각 버전에 대한 특정 Cisco YANG 모델은 여기에서 확인할 수 있습니다. 특히 이 예에서 사용된 IOS XE Dublin 17.12.03에 대한 모델은 여기에 나와 있습니다.

이 예에서는 사용된 9800-CL 인스턴스에서 CPU 사용률 메트릭을 수집하는 데 중점을 둡니다. Cisco IOS XE Dublin 17.12.03용 YANG 모델을 검사하여 어떤 모듈에 컨트롤러의 CPU 사용률이 포함되어 있는지, 특히 최근 5초 동안 확인할 수 있습니다. 이는 Cisco-IOS-XE-process-cpu-oper 모듈의 일부로서 cpu-utilization 그룹화(리프 5초) 아래에 있습니다.

4단계. 컨트롤러에서 NETCONF 활성화

gRPC 다이얼아웃 프레임워크는 NETCONF를 사용하여 동일하게 작동합니다. 따라서 9800에서 이 기능을 활성화해야 하며, 이 작업은 다음 명령을 실행하여 수행됩니다.

WLC(config)#netconf ssh WLC(config)#netconf-yang

5단계. 컨트롤러에서 텔레메트리 서브스크립션 구성

YANG 모델에서 결정된 메트릭의 XPaths(즉, XML Paths Language)가 되면 9800 CLI에서 텔레메트리 서브스크립션을 쉽게 구성하여 2단계에서 구성한 텔레그라프 인스턴스로 스트리밍을 시작할 수 있습니다. 이 작업은 다음 명령을 실행하여 수행합니다.

WLC(config)#telemetry ietf subscription 101 WLC(config-mdt-subs)#encoding encode-kvgpb WLC(config-mdt-subs)#filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization/five-seconds WLC(config-mdt-subs)#source-address 10.48.39.130 WLC(config-mdt-subs)#stream yang-push WLC(config-mdt-subs)#update-policy periodic 100 WLC(config-mdt-subs)#receiver ip address 10.48.39.98 57000 protocol grpc-tcp

이 코드 블록에서, 먼저 식별자 101을 갖는 텔레메트리 서브스크립션이 정의된다. 구독 식별자는 다른 구독과 겹치지 않는 한 <0-2147483647> 사이의 숫자일 수 있습니다. 이 서브스크립션은 다음 순서로 구성됩니다.

- 사용된 인코딩 방법. gRPC 전송 프로토콜과 작업할 때 kvGPB여야 합니다.

/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization/five-seconds

- 서브스크립션에서 보낸 메트릭에 대한 필터로, XPath는 관심 있는 메트릭을 정의합니다(알아야 함).

- 컨트롤러가 메트릭을 전송하는 데 사용하는 소스 IP 주소입니다.

- 메트릭을 통신하는 데 사용되는 스트림 유형입니다(이 경우 YANG Push IETF 표준).

- 컨트롤러가 100초 내에 데이터를 가입자에게 보내는 데 사용되는 빈도입니다. 이 경우 1초마다 주기적으로 업데이트를 전송하도록 구성되었습니다.

- 컨트롤러와 가입자 간의 통신에 사용되는 프로토콜 및 수신기 IP 주소와 포트 번호입니다. 이 예에서 gRPC-TCP는 포트 57000의 호스트 10.48.39.98에 메트릭을 전송하는 데 사용됩니다.

6단계. Grafana 데이터 원본 구성

이제 컨트롤러가 Telegraf에 데이터를 전송하기 시작하고 이러한 데이터가 TELEGRAF IntrusionDB 데이터베이스에 저장되므로 Grafana에서 이러한 메트릭을 찾아보도록 구성해야 합니다.

Grafana GUI에서 Home(홈) > Connections(연결) > Connect data(데이터 연결)로 이동하고 검색 막대를 사용하여 IntrusionDB 데이터 소스를 찾습니다.

이 데이터 소스 유형을 선택하고 "IntrusionDB 데이터 소스 생성" 단추를 사용하여 1단계에서 생성한 TELEGRAPH 데이터베이스와 Grafana를 연결합니다.

화면에 나타나는 양식을 작성하며, 특히 다음을 제공합니다.

- 데이터 소스의 이름입니다.

- 사용된 IntrusionDB 인스턴스의 URL입니다.

- 사용되는 데이터베이스 이름입니다(이 예에서는 "TELEGRAF").

- 액세스하기 위해 정의된 사용자의 자격 증명(이 예에서는 telegraf/YOUR_PASSWORD).

7단계. 대시보드 만들기

Grafana 시각화는 대시보드로 구성됩니다. Catalyst 9800 메트릭스 시각화가 포함된 대시보드를 생성하려면 Home(홈) > Dashboards(대시보드)로 이동하여 "New dashboard(새 대시보드)" 버튼을 사용합니다

그러면 생성된 새 대시보드가 열립니다. 기어 아이콘을 클릭하여 대시보드 매개변수에 액세스하고 이름을 변경합니다. 이 예에서는 "Catalyst 9800 Telemetry"가 사용됩니다. 이 작업을 수행한 후에는 "Save dashboard(대시보드 저장)" 버튼을 사용하여 대시보드를 저장합니다.

8단계. 대시보드에 시각화 추가

이제 데이터가 제대로 전송, 수신 및 저장되었고 Grafana가 이 저장 위치에 액세스할 수 있게 되었으므로 데이터를 시각화할 차례입니다.

Grafana 대시보드에서 "Add(추가)" 버튼을 사용하고 표시되는 메뉴에서 "Visualization(시각화)"을 선택하여 메트릭의 시각화를 생성합니다.

이렇게 하면 생성된 시각 형상의 [편집] 패널이 열립니다.

이 패널에서

- 6단계, 이 예에서는 TELEGRAF에서 생성한 데이터 소스의 이름입니다.

- 이 예에서 시각화할 데이터, "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization"이 포함된 측정(스키마)

- 이 예에서 시각화할 메트릭을 나타내는 데이터베이스의 필드, "five_seconds"입니다.

- 이 예에서 시각화의 제목, "CPU Utilization 9800-CL"입니다.

이전 그림의 "Save/Apply(저장/적용)" 버튼을 누르면 시간 경과에 따른 Catalyst 9800 컨트롤러의 CPU 사용량을 보여주는 시각화가 대시보드에 추가됩니다. 대시보드의 변경 사항은 플로피 디스크 아이콘 버튼을 사용하여 저장할 수 있습니다.

다음을 확인합니다.

WLC 실행 컨피그레이션

Building configuration... Current configuration : 112215 bytes ! ! Last configuration change at 14:28:36 UTC Thu May 23 2024 by admin ! NVRAM config last updated at 14:28:23 UTC Thu May 23 2024 by admin ! version 17.12 [...] aaa new-model ! ! aaa authentication login default local aaa authentication login local-auth local aaa authentication dot1x default group radius aaa authorization exec default local aaa authorization network default group radius [...] vlan internal allocation policy ascending ! vlan 39 ! vlan 1413 name VLAN_1413 ! ! interface GigabitEthernet1 switchport access vlan 1413 negotiation auto no mop enabled no mop sysid ! interface GigabitEthernet2 switchport trunk allowed vlan 39,1413 switchport mode trunk negotiation auto no mop enabled no mop sysid ! interface Vlan1 no ip address no ip proxy-arp no mop enabled no mop sysid ! interface Vlan39 ip address 10.48.39.130 255.255.255.0 no ip proxy-arp no mop enabled no mop sysid [...] telemetry ietf subscription 101 encoding encode-kvgpb filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization source-address 10.48.39.130 stream yang-push update-policy periodic 1000 receiver ip address 10.48.39.98 57000 protocol grpc-tcp [...] netconf-yang

Telegraf 컨피그레이션

# Configuration for telegraf agent [agent] metric_buffer_limit = 10000 collection_jitter = "0s" debug = true quiet = false flush_jitter = "0s" hostname = "" omit_hostname = false ############################################################################### # OUTPUT PLUGINS # ############################################################################### # Configuration for sending metrics to InfluxDB [[outputs.influxdb]] urls = ["http://127.0.0.1:8086"] database = "TELEGRAF" username = "telegraf" password = "Wireless123#" ############################################################################### # INPUT PLUGINS # ############################################################################### ############################################################################### # SERVICE INPUT PLUGINS # ############################################################################### # # Cisco model-driven telemetry (MDT) input plugin for IOS XR, IOS XE and NX-OS platforms [[inputs.cisco_telemetry_mdt]] transport = "grpc" service_address = "10.48.39.98:57000" [inputs.cisco_telemetry_mdt.aliases] ifstats = "ietf-interfaces:interfaces-state/interface/statistics"

IntrusionDB 컨피그레이션

### Welcome to the InfluxDB configuration file. reporting-enabled = false [meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" wal-dir = "/var/lib/influxdb/wal" [retention] enabled = true check-interval = "30m"

Grafana 컨피그레이션

#################################### Server #################################### [server] http_addr = 10.48.39.98 domain = 10.48.39.98

문제 해결

WLC 원 스톱 샵 리플렉스

WLC 측에서 가장 먼저 확인해야 할 것은 프로그래밍 인터페이스와 관련된 프로세스가 실행 중이라는 것입니다.

#show platform software yang-management process confd : Running nesd : Running syncfd : Running ncsshd : Running <-- NETCONF / gRPC Dial-Out dmiauthd : Running <-- For all of them, Device Managment Interface needs to be up. nginx : Running <-- RESTCONF ndbmand : Running pubd : Running gnmib : Running <-- gNMI

NETCONF(gRPC 다이얼아웃에서 사용)의 경우 이 명령은 프로세스의 상태를 확인하는 데에도 도움이 됩니다.

WLC#show netconf-yang status netconf-yang: enabled netconf-yang candidate-datastore: disabled netconf-yang side-effect-sync: enabled netconf-yang ssh port: 830 netconf-yang turbocli: disabled netconf-yang ssh hostkey algorithms: rsa-sha2-256,rsa-sha2-512,ssh-rsa netconf-yang ssh encryption algorithms: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes256-cbc netconf-yang ssh MAC algorithms: hmac-sha2-256,hmac-sha2-512,hmac-sha1 netconf-yang ssh KEX algorithms: diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group16-sha512

프로세스 상태를 확인했으면 또 다른 중요한 확인은 Catalyst 9800과 Telegraf 수신기 간의 텔레메트리 연결 상태입니다. "show telemetry connection all" 명령을 사용하여 볼 수 있습니다.

WLC#show telemetry connection all Telemetry connections Index Peer Address Port VRF Source Address State State Description ----- -------------------------- ----- --- -------------------------- ---------- -------------------- 28851 10.48.39.98 57000 0 10.48.39.130 Active Connection up

WLC와 수신기 간에 텔레메트리 연결이 설정된 경우 명령을 사용하여 구성된 서브스크립션이 유효한지 확인할 수도 show telemetry ietf subscription all brief 있습니다.

WLC#show telemetry ietf subscription all brief ID Type State State Description 101 Configured Valid Subscription validated

이 명령의 세부 버전에서는 서브스크립션에 show telemetry ietf subscription all detail대한 자세한 정보를 제공하며 컨피그레이션에서 문제를 지적하는 데 도움이 될 수 있습니다.

WLC#show telemetry ietf subscription all detail Telemetry subscription detail: Subscription ID: 101 Type: Configured State: Valid Stream: yang-push Filter: Filter type: xpath XPath: /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization Update policy: Update Trigger: periodic Period: 1000 Encoding: encode-kvgpb Source VRF: Source Address: 10.48.39.130 Notes: Subscription validated Named Receivers: Name Last State Change State Explanation ------------------------------------------------------------------------------------------------------------------------------------------------------- grpc-tcp://10.48.39.98:57000 05/23/24 08:00:25 Connected

네트워크 연결성 확인

Catalyst 9800 컨트롤러는 각 텔레메트리 서브스크립션에 대해 구성된 수신기 포트로 gRPC 데이터를 전송합니다.

WLC#show run | include receiver ip address receiver ip address 10.48.39.98 57000 protocol grpc-tcp

이 구성된 포트에서 WLC와 수신기 간의 네트워크 연결을 확인하기 위해 몇 가지 도구를 사용할 수 있습니다.

WLC에서 구성된 수신기 IP/포트(여기서는 10.48.39.98:57000)에서 텔넷을 사용하여 이 디바이스가 열려 있고 컨트롤러 자체에서 연결 가능한지 확인할 수 있습니다. 트래픽이 차단되고 있지 않으면 포트가 출력에 open으로 표시되어야 합니다.

WLC#telnet 10.48.39.98 57000 Trying 10.48.39.98, 57000 ... Open <-------

또는 모든 호스트에서 Nmap을 사용하여 수신기가 구성된 포트에서 올바르게 표시되도록 할 수 있습니다.

$ sudo nmap -sU -p 57000 10.48.39.98 Starting Nmap 7.95 ( https://nmap.org ) at 2024-05-17 13:12 CEST Nmap scan report for air-1852e-i-1.cisco.com (10.48.39.98) Host is up (0.020s latency). PORT STATE SERVICE 57000/udp open|filtered unknown Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

로깅 및 디버깅

2024/05/23 14:40:36.566486156 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): **** Event Entry: Configured legacy receiver creation/modification of subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' 2024/05/23 14:40:36.566598609 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): Use count for named receiver 'grpc-tcp://10.48.39.98:57000' set to 46. 2024/05/23 14:40:36.566600301 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='configuration created'} received for subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' [...] 2024/05/23 14:40:36.572402901 {pubd_R0-0}{2}: [pubd] [30214]: (info): Collated data collector filters for subscription 101. 2024/05/23 14:40:36.572405081 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating periodic sensor for subscription 101. 2024/05/23 14:40:36.572670046 {pubd_R0-0}{2}: [pubd] [30214]: (info): Creating data collector type 'ei_do periodic' for subscription 101 using filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572670761 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating crimson data collector for filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization' (1 subfilters) with cap 0x0001. 2024/05/23 14:40:36.572671763 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Need new data collector instance 0 for subfilter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572675434 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating CRIMSON periodic data collector for filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572688399 {pubd_R0-0}{2}: [pubd] [30214]: (debug): tree rooted at cpu-usage 2024/05/23 14:40:36.572715384 {pubd_R0-0}{2}: [pubd] [30214]: (debug): last container/list node 0 2024/05/23 14:40:36.572740734 {pubd_R0-0}{2}: [pubd] [30214]: (debug): 1 non leaf children to render from cpu-usage down 2024/05/23 14:40:36.573135594 {pubd_R0-0}{2}: [pubd] [30214]: (debug): URI:/cpu_usage;singleton_id=0 SINGLETON 2024/05/23 14:40:36.573147953 {pubd_R0-0}{2}: [pubd] [30214]: (debug): 0 non leaf children to render from cpu-utilization down 2024/05/23 14:40:36.573159482 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Timer created for subscription 101, sensor 0x62551136f0e8 2024/05/23 14:40:36.573166451 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='receiver connected'} received with peer (10.48.39.98:57000) for subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' 2024/05/23 14:40:36.573197750 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Starting batch from periodic collector 'ei_do periodic'. 2024/05/23 14:40:36.573198408 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Building from the template 2024/05/23 14:40:36.575467870 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Created dbal batch:133, for crimson subscription 2024/05/23 14:40:36.575470867 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Done building from the template 2024/05/23 14:40:36.575481078 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Executing batch:133 for periodic subscription 2024/05/23 14:40:36.575539723 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription id=101 receiver name='grpc-tcp://10.48.39.98:57000', state='connecting'} handling 'receiver connected' event with result 'e_mdt_rc_ok' 2024/05/23 14:40:36.575558274 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='receiver connected'} subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' changed 2024/05/23 14:40:36.577274757 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (info): get__next_table reached the end of table for /services;serviceName=ewlc_oper/capwap_data@23 2024/05/23 14:40:36.577279206 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (debug): Cleanup table for /services;serviceName=ewlc_oper/capwap_data cursor=0x57672da538b0 2024/05/23 14:40:36.577314397 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (info): get__next_object cp=ewlc-oper-db exit return CONFD_OK 2024/05/23 14:40:36.577326609 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (debug): yield ewlc-oper-db 2024/05/23 14:40:36.579099782 {iosrp_R0-0}{1}: [parser_cmd] [26295]: (note): id= A.B.C.D@vty0:user= cmd: 'receiver ip address 10.48.39.98 57000 protocol grpc-tcp' SUCCESS 2024/05/23 14:40:36.578 UTC 2024/05/23 14:40:36.580979429 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Batch response received for crimson sensor, batch:133 2024/05/23 14:40:36.580988867 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Green response: Result rc 0, Length: 360, num_records 1 2024/05/23 14:40:36.581175013 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Green Resp cursor len 63 2024/05/23 14:40:36.581176173 {pubd_R0-0}{2}: [pubd] [30214]: (debug): There is no more data left to be retrieved from batch 133. 2024/05/23 14:40:36.581504331 {iosrp_R0-0}{2}: [parser_cmd] [24367]: (note): id= 10.227.65.133@vty1:user=admin cmd: 'receiver ip address 10.48.39.98 57000 protocol grpc-tcp' SUCCESS 2024/05/23 14:40:36.553 UTC [...] 2024/05/23 14:40:37.173223406 {pubd_R0-0}{2}: [pubd] [30214]: (info): Added queue (wq: tc_inst 60293411, 101) to be monitored (mqid: 470) 2024/05/23 14:40:37.173226005 {pubd_R0-0}{2}: [pubd] [30214]: (debug): New subscription (subscription 101) monitoring object stored at id 19 2024/05/23 14:40:37.173226315 {pubd_R0-0}{2}: [pubd] [30214]: (note): Added subscription for monitoring (subscription 101, msid 19) 2024/05/23 14:40:37.173230769 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Stats updated for Q (wq: tc_inst 60293411, 101), total_enqueue: 1 2024/05/23 14:40:37.173235969 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173241290 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector update data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173257944 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Encoding path is Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization 2024/05/23 14:40:37.173289128 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating kvgpb encoder 2024/05/23 14:40:37.173307771 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating combined parser 2024/05/23 14:40:37.173310050 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Beginning MDT yang container walk for record 0 2024/05/23 14:40:37.173329761 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new container [data_node: name=Cisco-IOS-XE-process-cpu-oper:cpu-usage, type=container, parent=n/a, key=false] 2024/05/23 14:40:37.173334681 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Container 'Cisco-IOS-XE-process-cpu-oper:cpu-usage' started successfully 2024/05/23 14:40:37.173340313 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress 2024/05/23 14:40:37.173343079 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector continue data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173345689 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173350431 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new container [data_node: name=cpu-utilization, type=container, parent=Cisco-IOS-XE-process-cpu-oper:cpu-usage, key=false] 2024/05/23 14:40:37.173353194 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Deferred container cpu-utilization 2024/05/23 14:40:37.173355275 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Container 'cpu-utilization' started successfully 2024/05/23 14:40:37.173380121 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new leaf [name=five-seconds, value=3, parent=cpu-utilization, key=false] 2024/05/23 14:40:37.173390655 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Leaf 'five-seconds' added successfully 2024/05/23 14:40:37.173393529 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress 2024/05/23 14:40:37.173395693 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector continue data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173397974 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173406311 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new leaf [name=five-seconds-intr, value=0, parent=cpu-utilization, key=false] 2024/05/23 14:40:37.173408937 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Leaf 'five-seconds-intr' added successfully 2024/05/23 14:40:37.173411575 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress [...]

메트릭이 TIG 스택에 도달하는지 확인

IntrusionDB CLI에서

다른 데이터베이스 시스템과 마찬가지로 IntrusionDB에는 Telegraf에서 올바르게 수신한 메트릭을 확인하고 정의된 데이터베이스에 저장하는 데 사용할 수 있는 CLI가 포함되어 있습니다. IntrusionDB는 점이라고 하는 메트릭을 시리즈로 구성된 측정 단위로 구성합니다. 여기에 나와 있는 몇 가지 기본 명령을 사용하여 IntrusionDB 측의 데이터 체계를 확인하고 데이터가 이 애플리케이션에 도착하는지 확인할 수 있습니다.

먼저 계열, 측정 및 그 구조(키)가 제대로 생성되었는지 확인할 수 있다. 이는 사용된 RPC의 구조를 기반으로 Telegraf 및 IntrusionDB에 의해 자동으로 생성됩니다.

참고: 물론 이 구조는 Telegraf 및 IntrusionDB 구성에서 완벽하게 사용자 정의할 수 있습니다. 그러나 이는 이 컨피그레이션 가이드의 범위를 벗어나는 것입니다.

$ influx Connected to http://localhost:8086 version 1.6.7~rc0 InfluxDB shell version: 1.6.7~rc0 > USE TELEGRAF Using database TELEGRAF > SHOW SERIES key --- Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization,host=ubuntu-virtual-machine,path=Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization,source=WLC,subscription=101 > SHOW MEASUREMENTS name: measurements name ---- Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization > SHOW FIELD KEYS FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization fieldKey fieldType -------- --------- cpu_usage_processes/cpu_usage_process/avg_run_time integer cpu_usage_processes/cpu_usage_process/five_minutes float cpu_usage_processes/cpu_usage_process/five_seconds float cpu_usage_processes/cpu_usage_process/invocation_count integer cpu_usage_processes/cpu_usage_process/name string cpu_usage_processes/cpu_usage_process/one_minute float cpu_usage_processes/cpu_usage_process/pid integer cpu_usage_processes/cpu_usage_process/total_run_time integer cpu_usage_processes/cpu_usage_process/tty integer five_minutes integer five_seconds integer five_seconds_intr integer one_minute integer

데이터 구조가 명확해지면(정수, 문자열, 부울, ...), 특정 필드에 따라 이러한 측정값에 저장되는 데이터 포인트의 수를 가져올 수 있습니다.

# Get the number of points from "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" for the field "five_seconds". > SELECT COUNT(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time count ---- ----- 0 1170 > SELECT COUNT(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time count ---- ----- 0 1171 # Fix timestamp display > precision rfc3339 # Get the last point stored in "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" for the field "five_seconds". > SELECT LAST(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time last ---- ---- 2024-05-23T13:18:53.51Z 0 > SELECT LAST(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time last ---- ---- 2024-05-23T13:19:03.589Z 2

특정 필드의 포인트 수와 마지막 발생의 타임스탬프가 증가하면 TIG 스택이 WLC에서 전송한 데이터를 올바르게 수신하여 저장하는 것이 좋습니다.

텔레그라프에서

Telegraf 수신기가 실제로 컨트롤러에서 일부 메트릭을 가져오고 해당 형식을 확인하는지 확인하기 위해 Telegraf 메트릭을 호스트의 출력 파일로 리디렉션할 수 있습니다. 이는 장치 상호 연결 문제 해결에 있어 매우 편리할 수 있습니다. 이를 실현하려면 Telegraf에서 구성 가능한 "file" 출력 플러그인을 사용하면 됩니다 /etc/telegraf/telegraf.conf.

# Send telegraf metrics to file(s) [[outputs.file]] # ## Files to write to, "stdout" is a specially handled file. files = ["stdout", "/tmp/metrics.out", "other/path/to/the/file"] # # ## Use batch serialization format instead of line based delimiting. The # ## batch format allows for the production of non line based output formats and # ## may more efficiently encode metric groups. # # use_batch_format = false # # ## The file will be rotated after the time interval specified. When set # ## to 0 no time based rotation is performed. # # rotation_interval = "0d" # # ## The logfile will be rotated when it becomes larger than the specified # ## size. When set to 0 no size based rotation is performed. # # rotation_max_size = "0MB" # # ## Maximum number of rotated archives to keep, any older logs are deleted. # ## If set to -1, no archives are removed. # # rotation_max_archives = 5 # # ## Data format to output. # ## Each data format has its own unique set of configuration options, read # ## more about them here: # ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md data_format = "influx"

참조

하드웨어 크기 조정 지침

Grafana 요구 사항