AOSOM 스트리밍 가이드
AOSOM-Streaming 개요
AOSOM 스트리밍은 프로덕션 환경을 위한 것이 아닌 데모 소프트웨어입니다.
카운터 데이터(perfmon), 경고 및 이벤트에 대한 Google 프로토콜 버퍼(protobuf) 스트림을 생성하도록 Apstra를 구성할 수 있습니다. 각 데이터 형식은 자체 TCP 소켓을 통해 스트리밍 수신기로 전송됩니다. 동일한 스트리밍 수신기에 대해 세 가지 데이터 유형이 모두 구성되더라도 Apstra 서버와 스트리밍 수신기 간에 세 가지 연결이 생성됩니다. 이를 통해 세 가지 유형을 모두 세 가지 다른 스트리밍 수신기로 보낼 수 있습니다. 많은 오픈 소스 프로젝트 중에서 선택하거나 자체 솔루션을 개발하여 protobuf 데이터를 캡처, 저장 및 검사할 수 있습니다. Apstra는 여러 오픈 소스 구성 요소를 사용하여 이를 달성하는 방법을 보여주기 위해 GitHub에서 사용할 수 있는 AOSOM-Streaming 이라는 프로젝트를 개발했습니다. AOSOM-Streaming 프로젝트는 AOS protobuf 스트림을 사용하는 방법을 이해하는 데 도움을 주기 위한 것입니다. Apstra Telegraf 입력 플러그인을 제외하고는 데모용으로만 사용됩니다. Apstra 소프트웨어는 스트리밍 텔레메트리 솔루션의 일부로 사용할 수 있도록 이 플러그인을 완벽하게 지원합니다.
Aosom Streaming 프로젝트는 Apstra 서버에서 수신되는 텔레메트리 스트리밍 정보를 수집하고 시각화하는 패키지 솔루션을 제공합니다. 이는 경고, 카운터 및 Apstra 이벤트를 처리하기 위한 웹 인터페이스 경험과 예제 쿼리를 제공합니다. 이 오픈 소스 프로젝트는 공식적으로 https://github.com/Apstra/aosom-streaming 의 Github에 있습니다.
패키지 솔루션에는 다음이 포함됩니다.
- Grafana(포트 3000) 기반 그래픽 인터페이스
- 카운터 및 경고용 Prometheus(포트 9090)
- Influxdb for Events(포트 8086)
- 2개의 수집기, Telegraf를 기반으로 하는 각 데이터베이스에 대해 하나씩.
그라파나
웹 브라우저에서 URL http://<aosom-streaming>:3000 을 입력하고 사용자 이름 admin (기본값) 및 암호 admin (기본값)을 입력합니다.
grafana GUI에는 두 개의 주요 섹션(왼쪽 상단)이 포함되어 있습니다. Apstra AOS Blueprint 는 전체 텔레메트리 경고 및 트래픽 처리량과 인터페이스 텔레메트리를 위한 개별 디바이스를 설명합니다. 청사진은 Apstra 'telegraf' Docker 컨테이너를 사용하여 자동으로 학습됩니다. 추가 구성은 필요하지 않습니다.
위의 스크린샷에서는 데모 Apstra 환경의 트래픽을 관찰하고 CPU, 트래픽 및 오류를 집계할 수 있습니다.
특정 디바이스와 개별 디바이스를 기반으로 텔레메트리 이벤트를 필터링하려면 상단의 대시보드를 Apstra AOS 디바이스로 변경하십시오. 여기서는 청사진에 2개의 활성 경로 이상이 있으며, Apstra가 2개의 리프 스위치에 대한 텔레메트리를 수신했음을 확인할 수 있습니다.
아래로 스크롤하여 CPU 및 메모리와 같은 장치 통계를 봅니다.
프로 메 테우 스
Prometheus는 Aosom-streaming 어플라이언스의 경고 및 디바이스 텔레메트리 카운터 스토리지에 사용됩니다. 웹 브라우저에서 URL http://<aosom-streaming>:9090 을 입력하여 Prometheus GUI에 액세스합니다.
수신 이벤트가 나타나면 Apstra는 각 쿼리를 동적으로 구축합니다. 예제 쿼리 이름을 보려면 'execute' 아래에 입력을 시작합니다. '경고'로 시작하여 prometheus가 Apstra에서 수신한 사용 가능한 경고를 탭 완성합니다.
다음은 오프라인 상태인 BGP 인접 라우터의 예입니다.
InfluxDB (인플럭스DB)
InfluxDB는 텔레메트리 스트리밍의 Apstra 이벤트를 저장하는 데 사용됩니다. 웹 브라우저에서 URL http://<aosom-streaming>:8083 을 입력하여 InfluxDB에 액세스합니다.
show field keys 또는 show measurements와 같은 쿼리를 사용하여 사용 가능한 influxdb 키를 표시할 수 있습니다.
측정값을 알면 select * from <measurement> 를 사용하여 데이터와 키를 볼 수 있습니다. -- 이 경우 LAG 인터페이스 상태를 캡처합니다.
influx-db 애플리케이션 개발은 이 설명서의 범위를 벗어납니다.
Aosom-Streaming 구성
이 프로젝트의 일부로 원격 분석 스트리밍을 구성하려면 파일을 편집variables.env
하고, 파일을 실행 make start
하고, 컨테이너를 다시 시작합니다. Apstra 서버 구성은 필요하지 않습니다. 데이터 시작, 중지 및 지우기에 대한 설명서는 https://github.com/Apstra/aosom-streaming 에서 확인할 수 있습니다.
telegraf 프로젝트는 Apstra API에 연결하고 Apstra가 실시간 텔레메트리 데이터를 다시 스트리밍하는 데 사용하는 IP:Port를 게시합니다.
Apstra 서버 업그레이드 후 Aosom-streaming 재구성
Aosom-Streaming VM 빌드(선택 사항)
Docker 컨테이너인 고유한 Aosom 스트리밍 VM을 빌드할 수 있습니다. 이 단계에서는 기본 Docker 서버를 설정하는 방법을 보여 줍니다.
Ubuntu 16.04.2 설치
Ubuntu 16.04.2 ISO를 다운로드하고 새 VM을 프로비전합니다. 기본 사용자 이름은 aosom 이고 비밀번호는 admin입니다.
더 큰 청사진의 경우 RAM을 8GB 이상으로, CPU를 2 vCPU 이상으로 변경하는 것이 좋습니다. 더 많은 디스크 공간이 필요할 수도 있습니다.
리소스 | 수량 |
---|---|
Ram | 8gb |
Cpu | vCPU 2개 |
네트워크 | vNIC 1개 |
패키지 설치
Ubuntu 16.04.2에 따라 필요한 패키지를 설치합니다.
apt-get update
시스템을 업데이트하여 모든 패키지가 최신 상태인지 확인합니다.
apt-get install docker docker-compose git make curl openssh-server
aosom@ubuntu:~$ sudo apt-get install docker docker-compose git make curl openssh-server [sudo] password for aosom: Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker.io git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils Suggested packages: mountall aufs-tools btrfs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make python-doc python-tk python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc python-mock-doc python-openssl-doc python-openssl-dbg python-setuptools doc-base python-ntlm python2.7-doc binutils binfmt-support make The following NEW packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker docker-compose docker.io git git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils make 0 upgraded, 54 newly installed, 0 to remove and 3 not upgraded. Need to get 32.4 MB of archives. After this operation, 174 MB of additional disk space will be used. Do you want to continue? [Y/n] y
aosom 사용자를 Docker 그룹에 추가합니다. 이를 통해 'aosom'은 sudo로 에스컬레이션하지 않고도 Docker 구성을 변경할 수 있습니다.
aosom@ubuntu:~/aosom-streaming$ sudo usermod -aG docker aosom Log out and log back in again for ‘aosom’ user to be properly added to the group.
'git clone'을 사용하여 Aosom-streaming Docker 컨테이너를 복사합니다.
aosom@ubuntu:~$ git clone https://github.com/Apstra/aosom-streaming.git Cloning into 'aosom-streaming'... remote: Counting objects: 303, done. remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303 Receiving objects: 100% (303/303), 64.10 KiB | 0 bytes/s, done. Resolving deltas: 100% (176/176), done. Checking connectivity... done. aosom@ubuntu:~$
컨테이너 재시작 정책 설정
AOSOM-Streaming 패키지는 Docker 재시작 정책을 설정하지 않습니다. 이는 오케스트레이션 도구 체인에 달려 있습니다. aosom-streaming/docker-compose.yml 열고 각 서비스 지시문에 추가합니다 restart: always
. 이렇게 하면 서비스를 다시 부팅한 후 Docker 컨테이너가 온라인 상태가 됩니다.
git diff docker-compose.yml
aosom@ubuntu:~/aosom-streaming$ git diff docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml index 799d4c5..0d0fcc2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,7 @@ services: - prometheus ports: - "3000:3000" + restart: always # ------------------------------------------------------------------------- # Prometheus - @@ -30,6 +31,7 @@ services: - '-config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' + restart: always # ------------------------------------------------------------------------- # influxdb @@ -43,6 +45,7 @@ services: ports: - "8083:8083" - "8086:8086" + restart: always # ------------------------------------------------------------------------- # Telegraf - Prom @@ -57,6 +60,7 @@ services: - /etc/localtime:/etc/localtime ports: - '6666:6666' + restart: always # ------------------------------------------------------------------------- # Telegraf - Influx @@ -71,3 +75,4 @@ services: - /etc/localtime:/etc/localtime ports: - '4444:4444' + restart: always
variables.env
Aosom-Streaming 애플리케이션 설정 섹션에 따라 컨테이너를 설정하고 시작합니다.
시스템 호스트 이름 변경
aosom으로 수정 /etc/hostname
하고 루프백 IP /etc/hosts
를 우분투에서 aosom으로 변경합니다.
문제 해결
대부분의 문제 해결 정보는 https://github.com/Apstra/aosom-streaming 의 Github 기본 페이지에 포함되어 있지만 몇 가지 간단한 명령을 실행하여 환경이 정상인지 확인할 수 있습니다.
Apstra에서 Aosom-streaming으로의 로그 확인
Docker 로그 실행 aosomstreaming_telegraf-influx_1
AOS에서 텔레메트리 이벤트가 발생할 때 블루프린트 ID와 일부 influxdb 'write' 이벤트(BGP, 활동성, 구성 편차 등)가 표시되어야 합니다.
GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:13Z D! Finished to Refresh Data, will sleep for 20 sec 2017-07-31T23:59:15Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:15Z D! Output [influxdb] wrote batch of 11 metrics in 5.612057ms 2017-07-31T23:59:20Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:20Z D! Output [influxdb] wrote batch of 4 metrics in 5.349171ms 2017-07-31T23:59:25Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:25Z D! Output [influxdb] wrote batch of 11 metrics in 4.68295ms 2017-07-31T23:59:30Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:30Z D! Output [influxdb] wrote batch of 4 metrics in 5.007029ms GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:33Z D! Finished to Refresh Data, will sleep for 20 sec
컨테이너가 실행 중인지 확인
예상되는 모든 컨테이너가 실행 중인지 확인하고 확인하려면 다음을 실행합니다.docker ps
aosom@ubuntu:~/aosom-streaming$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e03d003a2ef9 grafana/grafana:4.1.2 "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3000->3000/tcp aosomstreaming_grafana_1 3042d45f1107 prom/prometheus:v1.5.2 "/bin/prometheus -con" 3 minutes ago Up 3 minutes 0.0.0.0:9090->9090/tcp aosomstreaming_prometheus_1 429328fbb5ac apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:6666->6666/tcp aosomstreaming_telegraf-prom_1 0a84241e1366 apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:4444->4444/tcp aosomstreaming_telegraf-influx_1 f4d2deb0e428 influxdb:1.1.1-alpine "/entrypoint.sh influ" 3 minutes ago Up 3 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp aosomstreaming_influxdb_1