본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 FND(Field Network Director) 구축의 일부로 제공되는 문제 해결 툴을 사용하는 방법에 대해 설명합니다.FND 솔루션은 광범위한 범위를 제공하며 다양한 기술과 전문화를 포괄합니다.이로 인해 특정 상황에서 동작을 확인하거나 복잡한 문제를 진단하는 데 도움이 되는 다양한 스크립트 및 명령줄 도구가 있습니다.
기고자: Cisco TAC 엔지니어 Ryan Bowman
Cisco는 등록된 HER(Head End Router), Field Area Router 및 CGE(Connected Grid Endpoint)를 사용하는 프로덕션 또는 랩 환경을 완벽하게 운영할 것을 권장합니다. getStats.sh를 사용하여 CoAP CSMP(Simple Management Protocol) 통계를 확인하려면 CSMP 트래픽을 생성하는 CGE를 하나 이상 보유해야 합니다.
/opt/cgms-tools/ 디렉토리에 있는 파일을 사용하려면 cgms-tools RPM 패키지가 응용 프로그램 서버에 설치되어 있어야 합니다.
이 문서의 정보는 RHEL 6.5를 실행하는 가상 머신에 설치된 모든 Linux 서버와 함께 FND 버전 3.0.1-36을 사용하여 수집되었습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 섹션에서는 cgms 및 cgms-tools 패키지의 일부로 사용할 수 있는 CLI 유틸리티를 다룹니다. cgms RPM의 기본 설치 경로는 /opt/cgms/이고 cgms-tools의 기본 설치 경로는 /opt/cgms-tools/입니다.
setupCgms.sh(/opt/cgms/bin/setupCgms.sh):
FND를 처음 설치한 후에는 이 스크립트를 실행하여 필요한 애플리케이션 변수를 구성해야 합니다.프로덕션이 시작된 후에도 이 유틸리티를 사용하여 중요한 컨피그레이션 매개변수를 변경할 수 있습니다.이 스크립트를 실행하기 전에 cgms 서비스를 중지하고, /opt/cgms/bin/directory로 이동하여./setupCgms 명령을 실행해야 합니다.
[root@fnd bin]#./setupCgms.sh Are you sure you want to setup IoT-FND (y/n)? n Do you wish to configure another database server for this IoT-FND ? (y/n)? n Do you want to change the database password (y/n)? n Do you want to change the keystore password (y/n)? n Do you want to change the web application 'root' user password (y/n)? n Do you want to change the FTP settings (y/n)? n Do you want to change router CGDM protocol settings (y/n)? n Do you want to change log file settings)? (y/n)? n
getstats.sh(/opt/cgms/bin/getstats.sh):
이 스크립트는 응용 프로그램이 실행 중인 동안 실행되어야 합니다.로드 밸런싱 클러스터 및 액티브/스탠바이 DB 쌍을 사용하여 성능을 분석할 때 매우 유용합니다.각 성능 메트릭은 이 문서의 범위를 벗어납니다. 다음은 스크립트를 실행할 때의 샘플 출력입니다.
클러스터에서 FND 구축을 트러블슈팅할 때 로드 밸런싱이 올바르게 작동하는지 확인하기 위해 각 서버에서 이 스크립트를 실행합니다.앱 서버 중 하나가 다른 서버보다 CSMP 처리 속도가 훨씬 더 높을 경우 로드 밸런싱이 잘못 구성되지 않았을 수 있습니다.또한 이 출력을 분석할 때 대기열 크기가 증가하면 어딘가에 병목 프로세스가 있음을 알 수 있습니다.
[root@fnd bin]# ./getstats.sh Current Time: 2017-03-08 01:06 ============ events statistics ============== ElapsedTimePrepareForRules (ms):...........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Events request rate:.......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeSendToSyslog (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ============================================== ============ metric statistics ============== ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimePersistNetElementMetrics (ms):..................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Incoming message rate to Metric Server:....................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeFindCurrentMetric (ms):.........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimefindCurrentMetricsForNetObject (ms):............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] sendMetricEvents:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimePersistNetElementMetric (ms):...................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeAddMetricWithoutPropagation (ms):...............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Rate of message drop at the metric server:.................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeAddMetricsInBulkWithoutPropagation (ms):........................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ============================================== ============ issues statistics ============== Issues Incoming Rate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] UpdateEventAndIssues (ms):.................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Issues Processing Rate:....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ============================================== ============ label statistics ============== Label drop rate:...........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Label processing rate:.....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Label request rate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ============================================== ============ csmp statistics ============== csmpConNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpNonNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpNonQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpNotificationRate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpDropRate:..............................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpProcessingRate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] csmpConQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ============================================== ============ database connection pool statistics ============== dbConFlushCount:...........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ] ActiveCount:...............................................................[ val: 13 ] InUseCount:................................................................[ val: 7 ] AvailableCount:............................................................[ val: 243 ] CreatedCount:..............................................................[ val: 13 ] DestroyedCount:............................................................[ val: 0 ]
keytool (/opt/cgms/jre/bin/keytool):
FND 설치는 Java와 함께 제공된다는 것을 알아야 합니다.FND와 TPS(Tunnel Provisioning Server)에서 적절하게 구성해야 하는 cgms_keystore를 생성하고 관리하려면 keytool 유틸리티를 사용해야 합니다.
일부 환경에서는 서버에 이미 Java가 설치되어 있으며 $PATH 환경 변수를 사용하여 모든 사용자가 keytool 명령을 사용할 수 있습니다.keytool 명령을 사용하여 이 오류를 찾으면 다른 해결 방법이 있습니다.
[root@fnd]# keytool -bash: keytool: command not found
/opt/cgms/jre/bin/directory로 이동하여 이 디렉토리에서 keytool 유틸리티를 호출할 수 있습니다. 예를 들면 다음과 같습니다.
[root@fnd ~]# keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore -bash: keytool: command not found [root@fnd ~]# cd /opt/cgms/jre/bin/ [root@fnd bin]# ./keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore Enter keystore password:
cgdm-client.sh(/opt/cgms-tools/bin/cgdm-client.sh):
참고:이 스크립트 및 /opt/cgms-tools/ 디렉토리에 있는 다른 스크립트는 cgms-tools RPM 패키지에 번들로 제공됩니다.
FND는 FAR(Field Area Router)에 액세스하고 통신하기 위해 HTTPS를 통해 Netconf를 사용합니다. Netconf는 XML 형식의 메시지를 사용하여 안정적이고 신뢰할 수 있을 뿐만 아니라 쉽게 분류되어 데이터베이스로 전송할 수 있는 서비스를 제공합니다.cgdm 클라이언트라는 CLI 툴이 있습니다. 이 툴은 선택한 영역에 대한 수동 CGDM(Connected Grid Device Manager) 세션을 열고, 원격 명령을 실행하고, FAR에서 수신한 XML을 BASH에서 stout으로 전송합니다.
옵션 없이 스크립트를 실행하면 사용 지침이 표시됩니다.
[root@fnd bin]# ./cgdm-client ERROR: Please specify an IP address and a command usage: cgdm-client <cgr ip address> <cgdm CLI command> -c <arg> Conf and keystore directory path, default = /opt/cgms/server/cgms/conf -v Verbose mode
예를 들어 관리 IP(.csv 파일의 'IP' 값)가 192.0.2.1인 라우터 중 하나에서 시간이 완전히 동기화되었는지 확인하려고 합니다. FND 애플리케이션 서버의 터미널 세션에서 show clock 명령을 사용하여 CGR의 시간을 쿼리할 수 있습니다.
[root@fnd bin]# ./cgdm-client 192.0.2.1 show clock <?xml version="1.0" encoding="ISO-8859-1"?> <nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://www.cisco.com/nxos:1.0" message-id="1"> <nf:data>15:44:58.092 CST Mon Mar 13 2017 </nf:data> </nf:rpc-reply>
선택적으로, 명령에서 'v' 플래그를 사용하여 자세한 출력을 지정할 수 있습니다.자세한 정보 출력은 Java 및 Cisco 소프트웨어 프로세스 및 구문에서 가져옵니다.이 출력에는 추가 네트워크 또는 디바이스 정보가 표시되지 않습니다.
[root@fnd bin]# ./cgdm-client -v 192.0.2.1 show clock < output omitted >
csmp-request.sh(/opt/cgms-tools/bin/csmp-request.sh):
cgdm -client FAR 툴 외에도 csmp-request라는 엔드포인트를 위한 도구가 있습니다. cgdm-client 스크립트와 마찬가지로 이 스크립트를 사용하면 CSMP를 사용하여 CGE에서 정보를 쿼리할 수 있습니다.메시 엔드포인트의 IPv6 주소와 디바이스에서 쿼리하는 TLV(Type Length Value)만 지정하면 됩니다.TLV 코드의 전체 목록은 이 문서에서 범위를 벗어났지만, 아래에 잘 알려진 몇 가지 예가 나와 있습니다.스크립트 구문은 다음과 같습니다.
./smp-request -r [] TLV-값
1. IP 2001:db8::1/32를 사용하여 미터기에서 CGE 펌웨어 버전을 쿼리합니다.
[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 75
2. IP 2001:db8::1/32를 사용하여 미터 단위의 업타임을 쿼리합니다.
[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 22
서명 도구(/opt/cgms-tools/bin/signature-tool):
Signature Tool은 암호화되지 않은 테스트 비밀번호를 암호화하고, 암호화된 비밀번호 또는 문자열을 해독하고, SSM_CSMP 인증서를 일반 텍스트로 인쇄할 수 있는 Java 유틸리티입니다.이 도구를 사용하여 .csv 파일에 대한 암호화된 비밀번호 문자열을 생성하여 일반 텍스트로 관리자 비밀번호를 포함하지 않아야 합니다.
명령 구문을 보려면 옵션 없이 스크립트를 실행합니다.
[root@fnd bin]# ./signature-tool usage: signature-tool print signature-tool export <binary|base64> <filename> signature-tool decrypt <keystore> <filename> signature-tool encrypt <keystore> <filename>
SSM_CSMP 인증서 사용을 인쇄하려면
[root@fnd bin]# ./signature-tool print
일반 텍스트 관리자 비밀번호를 암호화하려면
[root@fnd ~]# cd /opt/cgms-tools/bin [root@fnd bin]# pwd /opt/cgms-tools/bin
일반 텍스트로 관련 문자열/비밀번호만 포함하는 새 텍스트 파일을 만듭니다.
[root@fnd bin]# echo AdminPassword > clear-text-password.txt [root@fnd bin]# cat clear-text-password.txt AdminPassword
[root@fnd bin]# ./signature-tool encrypt /opt/cgms/server/cgms/conf/cgms_keystore clear-text-password.txt Enter alias: cgms Enter password: pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg==
암호화된 문자열을 해독하려면
[root@fnd bin]# echo pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg== > encrypted-password.txt
2.decrypt 옵션을 사용하여 Signature Tool을 실행하고, 암호화된 비밀번호가 저장된 .txt 파일의 이름과 키 저장소 파일의 정확한 경로를 다시 지정합니다.
[root@fnd bin]# ./signature-tool decrypt /opt/cgms/server/cgms/conf/cgms_keystore encrypted-password.txt Enter alias: cgms Enter password: AdminPassword
강력한 명령줄 도구/유틸리티 집합과 마찬가지로 FND에는 데이터베이스의 문제를 분석하고 진단하는 데 도움이 되는 유용한 GUI 기반 도구 모음이 포함되어 있습니다. DB 도구에 액세스하려면 FND 배포의 기본 대시보드에 로그인한 다음 URL의 .com 부분 뒤에 /pages/diag/db.seam을 붙여 넣으십시오.
이 영역에는 세 개의 탭이 있습니다.DB 쿼리, DB 정보 및 로그 뷰어입니다.DB Query(DB 쿼리) 탭에서는 사용자 지정 쿼리를 실행할 수 있으며 Query(쿼리) 버튼 오른쪽에 있는 Show All Tables(모든 테이블 표시)를 클릭하면 모든 테이블 목록이 제공됩니다.예를 들어, 모든 디바이스 인터페이스의 레이어 1 및 레이어 2 상태를 보려면 SQL 쿼리 상자에 SELECT * FROM NET_INTERFACES를 입력하고 Query 버튼을 클릭합니다.모든 HER 및 FAR 인터페이스, 해당 MAC 주소, 각 인터페이스의 관리 레이어 1 상태 및 레이어 2 링크 상태 목록이 제공됩니다.
데이터베이스 연결 설정을 확인하려면 db.seam 페이지의 DB Info 탭을 클릭합니다.여기서는 접속 URL, 데이터베이스 사용자 이름, Oracle 버전, 포트 번호, SID 및 각 테이블의 크기와 같은 다양한 데이터베이스 변수에 대한 읽기 전용 액세스를 제공합니다.FRA에 저장된 각 파일 유형에서 사용하는 공간 및 회수할 수 있는 공간의 양과 같은 FRA(Flash Recovery Area) 정보도 이 페이지에 나열됩니다.