이 문서에서는 Private Cloud용 Apigee Edge의 온프레미스 배포에서 지원되는 구성요소의 모니터링 기법을 설명합니다.
개요
Edge는 서비스에 관한 세부정보를 가져오고 상태를 확인하는 여러 가지 방법을 지원합니다. 다음 표에는 요건을 충족하는 각 서비스에서 실행할 수 있는 검사 유형이 나와 있습니다.
Mgmt API | |||||||
구성요소 | 메모리 사용량[JMX*] | 서비스 확인 | 사용자/조직/ 배포 상태 | axstatus | 데이터베이스 확인 | apigee-service 상태 |
apigee-monit ** |
관리 서버 | |||||||
메시지 프로세서 | |||||||
라우터 | |||||||
Qpid | |||||||
Postgres | |||||||
추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | |
* JMX를 사용하려면 먼저 JMX 사용 설정에 설명된 대로 JMX를 사용 설정해야 합니다. ** |
포트 및 구성 파일 모니터링
각 구성요소는 서로 다른 포트에서 Java 관리 확장 프로그램 (JMX) 및 관리 API 모니터링 호출을 지원합니다. 다음 표에는 각 서버 유형의 JMX 및 관리 API 포트와 구성 파일 위치가 나와 있습니다.
구성요소 | JMX 포트 | Management API 포트 | 구성 파일 위치 |
---|---|---|---|
관리 서버 | 1099 | 8080 | $APIGEE_ROOT/customer/application/management-server.properties |
메시지 프로세서 | 1101 | 8082 | $APIGEE_ROOT/customer/application/message-processor.properties |
라우터 | 1100 | 8081 | $APIGEE_ROOT/customer/application/router.properties |
Qpid | 1102 | 8083 | $APIGEE_ROOT/customer/application/qpid-server.properties |
Postgres | 1103 | 8084 | $APIGEE_ROOT/customer/application/postgres-server.properties |
JMX를 사용하여 구성요소 모니터링
다음 섹션에서는 JMX를 사용하여 Edge 구성요소를 모니터링하는 방법을 설명합니다.
JMX 사용 설정
인증 또는 SSL 기반 통신 없이 JMX를 사용 설정하려면 다음 단계를 따르세요. 참고: 프로덕션 시스템에서는 보안을 위해 암호화된 인증과 SSL을 모두 사용 설정해야 합니다.
- 적절한 구성 파일을 수정합니다 (
구성 파일 참조 참고). 구성 파일이 없으면 만듭니다.
conf_system_jmxremote_enable=true
- 구성 파일을 저장하고
apigee:apigee
가 소유하고 있는지 확인합니다. - 적절한 Edge 구성요소 다시 시작
apigee-service edge-management-server restart
JMX를 사용 중지하려면 conf_system_jmxremote_enable
속성을 삭제하거나 값을 false
로 변경합니다. 그런 다음 적절한 Edge 구성요소를 다시 시작합니다.
JMX의 인증
프라이빗 클라우드용 Edge는 파일에 저장된 세부정보를 사용하는 비밀번호 기반 인증을 지원합니다. 보안을 강화하기 위해 비밀번호를 해시로 저장할 수 있습니다.
- edge-* 구성요소에서 JMX 인증을 사용 설정하려면 적절한 구성 파일을 수정합니다(
구성 파일 참조 참고). 구성 파일이 없는 경우 만듭니다.
conf_system_jmxremote_enable=true conf_system_jmxremote_authenticate=true conf_system_jmxremote_encrypted_auth=true conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
구성 파일을 저장하고apigee:apigee
가 소유하고 있는지 확인합니다. - 비밀번호의 SHA256 해시를 만듭니다.
echo -n '
' | openssl dgst -sha256 - JMX 사용자 인증 정보가 포함된
jmxremote.password
파일을 만듭니다.$JAVA_HOME
디렉터리에서 다음 파일을/opt/apigee/customer/application/<component>/
디렉터리로 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- 파일을 수정하고 다음 문법을 사용하여 JMX 사용자 이름과 비밀번호를 추가합니다.
USERNAME <HASH-PASSWORD>
- 파일 소유자가
apigee
이고 파일 모드가 400인지 확인합니다.chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- JMX 사용자 권한이 있는
jmxremote.access
파일을 만듭니다.- $JAVA_HOME 디렉터리에서 다음 파일을
/opt/apigee/customer/application/<component>/
디렉터리로 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
- 파일을 수정하고 JMX 사용자 이름 뒤에 권한 (READONLY/READWRITE)을 추가합니다.
USERNAME READONLY
- 파일 소유자가
apigee
이고 파일 모드가 400인지 확인합니다.chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- $JAVA_HOME 디렉터리에서 다음 파일을
- 적절한 Edge 구성요소를 다시 시작합니다.
apigee-service edge-management-server restart
JMX 인증을 사용 중지하려면 conf_system_jmxremote_authenticate
속성을 삭제하거나 값을 false
로 변경하고 적절한 Edge 구성요소를 다시 시작합니다.
JMX의 SSL
edge-* 구성요소에서 SSL 기반 JMX를 사용 설정하려면 다음 단계를 따르세요.
- 적절한 구성 파일을 수정합니다(
구성 파일 참조 참고). 구성 파일이 없으면 만듭니다.
conf_system_jmxremote_enable=true conf_system_jmxremote_ssl=true conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore conf_system_javax_net_ssl_keystorepassword=<keystore-password>
구성 파일을 저장하고apigee:apigee
가 소유하고 있는지 확인합니다. - 서버 키가 포함된 키 저장소를 준비하고 위의 구성
conf_system_javax_net_ssl_keystore
에 제공된 경로에 배치합니다.apigee:apigee
에서 키 저장소 파일을 읽을 수 있는지 확인합니다. - 적절한 Edge 구성요소를 다시 시작합니다.
apigee-service edge-management-server restart
SSL 기반 JMX를 사용 중지하려면 conf_system_jmxremote_ssl
속성을 삭제하거나 값을 false
로 변경합니다. 적절한 Edge 구성요소를 다시 시작합니다.
Jconsole을 통한 모니터링
jconsole을 통한 모니터링 안내는 https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole에 설명된 것과 동일합니다.
'JMX에 SSL이 사용 설정된 경우 jconsole을 truststore 및 truststore 비밀번호로 시작해야 합니다.'라는 한 줄을 추가할 수 있습니다. 참조: https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.htmlJConsole로 모니터링
JConsole (JMX 준수 도구)을 사용하여 상태 확인 및 프로세스 통계를 관리하고 모니터링합니다. JConsole을 사용하면 서버에서 노출하는 JMX 통계를 사용하고 그래픽 인터페이스에 표시할 수 있습니다. 자세한 내용은 JConsole 사용을 참고하세요.
JMX에 SSL이 사용 설정된 경우 truststore 및 truststore 비밀번호로 JConsole을 시작해야 합니다. JConsole 사용을 참고하세요.
JConsole은 다음 서비스 URL을 사용하여 JMX를 통해 제공되는 JMX 속성 (MBean)을 모니터링합니다.
service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi
각 항목의 의미는 다음과 같습니다.
- IP_address는 모니터링하려는 서버의 IP 주소입니다.
- port_number는 모니터링하려는 서버의 JMX 포트 번호입니다.
예를 들어 관리 서버를 모니터링하려면 다음과 같은 명령어를 실행합니다 (서버의 IP 주소가 216.3.128.12인 경우).
service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi
이 예에서는 관리 서버 JMX 포트인 포트 1099를 지정합니다. 다른 포트는 JMX 및 Management API 모니터링 포트를 참고하세요.
다음 표는 일반적인 JMX 통계를 보여줍니다.
JMX MBean | JMX 속성 |
---|---|
메모리 |
HeapMemoryUsage |
NonHeapMemoryUsage |
|
사용 |
|
구성 파일 참조
다음 섹션에서는 JMX 관련 구성을 위해 Edge 구성요소 구성 파일에 적용해야 할 수 있는 변경사항을 설명합니다. 자세한 내용은 포트 및 구성 파일 모니터링을 참고하세요.
적절한 구성요소의 구성 파일에 추가할 JMX 구성
- 에지 구성요소에서 JMX 에이전트를 사용 설정합니다. 기본값은 false입니다.
conf_system_jmxremote_enable=true
비밀번호 기반 인증 구성
- 비밀번호 기반 인증을 사용 설정합니다. 기본값은 false입니다.
conf_system_jmxremote_authenticate=true
- 파일에 액세스하는 경로입니다. Apigee 사용자만 소유하고 읽을 수 있어야 합니다.
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- 비밀번호 파일의 경로입니다. Apigee 사용자만 소유하고 읽을 수 있어야 합니다.
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- 비밀번호를 암호화된 형식으로 저장하도록 사용 설정합니다. 기본값은 false입니다.
conf_system_jmxremote_encrypted_auth=true
SSL 기반 JMX의 구성
- JMX 통신에 SSL을 사용 설정합니다. 기본값은 false입니다.
conf_system_jmxremote_ssl=true
- 키 저장소의 경로입니다. Apigee 사용자만 소유하고 읽을 수 있어야 합니다.
conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
- 키 저장소 비밀번호:
conf_system_javax_net_ssl_keystorepassword=changeme
선택적 JMX 구성
표시된 값은 기본값이며 변경할 수 있습니다.
- JMX 포트 기본값은 아래 표에 나와 있습니다.
conf_system_jmxremote_port=
- JMX RMI 포트 기본적으로 Java 프로세스는 임의의 포트를 선택합니다.
conf_system_jmxremote_rmi_port=
- 원격 스텁의 호스트 이름입니다. localhost의 기본 IP 주소입니다.
conf_system_java_rmi_server_hostname=
- SSL로 JMX 레지스트리를 보호합니다. 기본값은 false입니다. SSL이 사용 설정된 경우에만 적용됩니다.
conf_system_jmxremote_registry_ssl=false
Management API로 모니터링
Edge에는 서버에서 서비스 검사를 실행하고 사용자, 조직, 배포를 확인하는 데 사용할 수 있는 여러 API가 포함되어 있습니다. 이 섹션에서는 이러한 API를 설명합니다.
서비스 검사 실행
Management API는 서비스 문제를 모니터링하고 진단하기 위한 여러 엔드포인트를 제공합니다. 이러한 엔드포인트는 다음과 같습니다.
엔드포인트 | 설명 |
---|---|
/servers/self/up |
서비스가 실행 중인지 확인합니다. 이 API 호출에는 인증이 필요하지 않습니다. 서비스가 실행 중인 경우 이 엔드포인트는 다음 응답을 반환합니다. <ServerField> <Up>true</Up> </ServerField> 서비스가 실행되고 있지 않으면 서비스에 따라 그리고 확인 방법에 따라 다음과 유사한 응답이 표시됩니다. curl: Failed connect to localhost:port_number; Connection refused |
/servers/self |
다음을 비롯한 서비스에 대한 정보를 반환합니다.
이 API를 호출하려면 Apigee 관리자 사용자 인증 정보로 인증해야 합니다. |
이러한 엔드포인트를 사용하려면 다음 문법을 사용하는 명령어로 curl
와 같은 유틸리티를 호출합니다.
curl http://host:port_number/v1/servers/self/up -H "Accept: [application/json|application/xml]"
curl http://host:port_number/v1/servers/self -u username:password -H "Accept: [application/json|application/xml]"
각 항목의 의미는 다음과 같습니다.
- host는 확인하려는 서버의 IP 주소입니다. 서버에 로그인되어 있는 경우 'localhost'를 사용할 수 있습니다. 그렇지 않은 경우 사용자 이름과 비밀번호와 함께 서버의 IP 주소를 지정합니다.
- port_number는 확인하려는 서버의 Management API 포트입니다. 이는 구성요소 유형마다 다른 포트입니다. 예를 들어 관리 서버의 Management API 포트는 8080입니다. 사용할 Management API 포트 번호 목록은 JMX 및 Management API 모니터링 포트를 참고하세요.
응답 형식을 변경하려면 Accept
헤더를 'application/json' 또는 'application/xml'로 지정하면 됩니다.
다음 예에서는 localhost (포트 8081)에서 라우터의 상태를 가져옵니다.
curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"
다음 예에서는 216.3.128.12 (포트 8082)의 메시지 프로세서에 관한 정보를 가져옵니다.
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
사용자, 조직, 배포 상태 모니터링
Management API를 사용하여 다음 명령어를 실행하여 관리 서버 및 메시지 프로세서에서 프록시의 사용자, 조직, 배포 상태를 모니터링할 수 있습니다.
curl http://host:port_number/v1/users -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
여기서 port_number는 관리 서버의 경우 8080이고 메시지 프로세서의 경우 8082입니다.
이 호출을 사용하려면 시스템 관리 사용자 이름과 비밀번호로 인증해야 합니다.
서버는 모든 호출에 대해 '배포됨' 상태를 반환해야 합니다. 이 방법이 실패하면 다음을 수행합니다.
- 서버 로그에서 오류가 있는지 확인합니다. 로그는 다음 위치에 있습니다.
- 관리 서버:
opt/apigee/var/log/edge-management-server
- 메시지 프로세서:
opt/apigee/var/log/edge-message-processor
- 관리 서버:
- 서버를 호출하여 서버가 제대로 작동하는지 확인합니다.
- ELB에서 서버를 삭제한 다음 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service service_name restart
여기서 service_name은 다음과 같습니다.
edge-management-server
edge-message-processor
apigee-service
명령어로 상태 확인
서비스를 실행하는 서버에 로그인한 상태에서 apigee-service
명령어를 사용하여 Edge 서비스를 문제 해결할 수 있습니다.
apigee-service
로 서비스 상태를 확인하는 방법:
- 서버에 로그인하고 다음 명령어를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service service_name status
여기서 service_name은 다음 중 하나입니다.
- 관리 서버:
edge-management-server
- 메시지 프로세서:
edge-message-processor
- Postgres:
edge-postgres-server
- Qpid:
edge-qpid-server
- 라우터:
edge-router
예를 들면 다음과 같습니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
- 관리 서버:
- 서비스가 실행되고 있지 않으면 서비스를 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service service_name start
- 서비스를 다시 시작한 후 이전에 사용한
apigee-service status
명령어를 사용하거나 Management API로 모니터링에 설명된 Management API를 사용하여 서비스가 작동하는지 확인합니다.예를 들면 다음과 같습니다.
curl -v http://localhost:port_number/v1/servers/self/up
여기서 port_number는 서비스의 Management API 포트입니다.
이 예에서는 서버에 로그인되어 있고 'localhost'를 호스트 이름으로 사용할 수 있다고 가정합니다. Management API로 원격으로 상태를 확인하려면 서버의 IP 주소를 지정하고 API 호출에 시스템 관리자 사용자 이름과 비밀번호를 포함해야 합니다.
Postgres 모니터링
Postgres는 상태를 확인하는 데 사용할 수 있는 여러 유틸리티를 지원합니다. 이러한 유틸리티는 다음 섹션에서 설명합니다.
Postgres에서 조직 및 환경 확인
다음 curl
명령어를 실행하여 Postgres Server에 온보딩된 조직 및 환경 이름을 확인할 수 있습니다.
curl -v http://postgres_IP:8084/v1/servers/self/organizations
시스템에 조직 및 환경 이름이 표시됩니다.
분석 상태 확인
다음 curl
명령어를 실행하여 Postgres 및 Qpid 분석 서버의 상태를 확인할 수 있습니다.
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
다음 예와 같이 시스템에 모든 분석 서버의 성공 상태가 표시됩니다.
{ "environments" : [ { "components" : [ { "message" : "success at Thu Feb 28 10:27:38 CET 2013", "name" : "pg", "status" : "SUCCESS", "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]" }, { "message" : "success at Thu Feb 28 10:29:03 CET 2013", "name" : "qs", "status" : "SUCCESS", "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]" } ], "message" : "", "name" : "prod" } ], "organization" : "acme", "status" : "SUCCESS" }
PostgreSQL 데이터베이스
이 섹션에서는 특히 Postgres 데이터베이스를 모니터링하는 데 사용할 수 있는 기법을 설명합니다.
check_postgres.pl
스크립트 사용
PostgreSQL 데이터베이스를 모니터링하려면 표준 모니터링 스크립트인 check_postgres.pl
를 사용하면 됩니다. 자세한 내용은 http://bucardo.org/wiki/Check_postgres를 참고하세요.
스크립트를 실행하기 전에
- 각 Postgres 노드에 check_postgres.pl 스크립트를 설치해야 합니다.
- 고해상도 알람, 절전 모드, gettimeofday, 간격 타이머를 구현하는 Perl 모듈인
perl-Time-HiRes.x86_64
를 설치했는지 확인합니다. 예를 들어 다음 명령어를 사용하여 설치할 수 있습니다.
yum install perl-Time-HiRes.x86_64
- CentOS 7: CentOS v7에서 check_postgres.pl을 사용하기 전에
perl-Data-Dumper.x86_64
RPM을 설치합니다.
check_postgres.pl 출력
check_postgres.pl
를 사용하는 API 호출의 기본 출력은 Nagios와 호환됩니다. 스크립트를 설치한 후 다음을 확인합니다.
- 데이터베이스 크기를 확인합니다.
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --critical='900 GB'
- 데이터베이스에 수신되는 연결 수를 확인하고 허용된 최대 연결 수와 비교합니다.
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- 데이터베이스가 실행 중이고 사용 가능한지 확인합니다.
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- 디스크 공간을 확인합니다.
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
- Postgres 노드에 온보딩된 조직 및 환경 수를 확인합니다.
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) as result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer
데이터베이스 검사 실행
PostgreSQL 데이터베이스에 올바른 테이블이 생성되었는지 확인할 수 있습니다. 다음 명령어를 사용하여 PostgreSQL 데이터베이스에 로그인합니다.
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
그런 후 다음을 실행합니다.
\d analytics."org.env.fact"
postgres 프로세스의 상태 확인
다음 curl
명령어를 호출하여 Postgres 머신에서 API 검사를 실행할 수 있습니다.
curl -v http://postgres_IP:8084/v1/servers/self/health
이 명령어는 postgres 프로세스가 활성 상태일 때 ACTIVE
상태를 반환합니다. Postgres 프로세스가 실행되고 있지 않으면 INACTIVE
상태가 반환됩니다.
Postgres 리소스
Postgres 서비스 모니터링에 관한 자세한 내용은 다음을 참고하세요.
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
Apache Cassandra
Cassandra에는 기본적으로 JMX가 사용 설정되어 있으며 Cassandra에 대한 원격 JMX 액세스에는 비밀번호가 필요하지 않습니다.
Cassandra용 JMX 인증 사용 설정
Cassandra에 JMX 인증을 사용 설정할 수 있습니다. 그런 다음 nodetool 유틸리티의 모든 호출에 사용자 이름과 비밀번호를 전달해야 합니다.
Cassandra에 JMX 인증을 사용 설정하려면 다음 단계를 따르세요.
cassandra.properties
파일을 만들고 수정합니다./opt/apigee/customer/application/cassandra.properties
파일을 수정합니다. 파일이 없으면 만듭니다.- 파일에 다음을 추가합니다.
conf_cassandra_env_com.sun.management.jmxremote.authenticate=true conf_cassandra_env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/customer/application/apigee-cassandra/jmxremote.password conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/apigee-cassandra/jmxremote.access
cassandra.properties
파일을 저장합니다.- 다음 예와 같이 파일의 소유자를
apigee:apigee
로 변경합니다.chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
속성 파일을 사용하여 토큰을 설정하는 방법에 관한 자세한 내용은 Edge 구성 방법을 참고하세요.
jmx_auth.sh
만들기 및 수정하기:- 다음 위치에 파일이 없으면 파일을 만듭니다.
/opt/apigee/customer/application/jmx_auth.sh
- 파일에 다음 속성을 추가합니다.
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
jmx_auth.sh
파일을 저장합니다.- 파일 소스:
source /opt/apigee/customer/application/jmx_auth.sh
- 다음 위치에 파일이 없으면 파일을 만듭니다.
jmxremote.password
파일을 복사하여 수정합니다.$JAVA_HOME
디렉터리에서 다음 파일을/opt/apigee/customer/application/apigee-cassandra/
에 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
jmxremote.password
파일을 수정하고 다음 문법을 사용하여 JMX 사용자 이름과 비밀번호를 추가합니다.JMX_USERNAME JMX_PASSWORD
여기서 JMX_USERNAME 및 JMX_PASSWORD는 이전에 설정한 JMX 사용자 이름과 비밀번호입니다.
- 파일의 소유자가 'apigee'이고 파일 모드가 400인지 확인합니다.
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
jmxremote.access
파일을 복사하여 수정합니다.$JAVA_HOME
디렉터리에서 다음 파일을/opt/apigee/customer/application/apigee-cassandra/
에 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.access
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
jmxremote.access
파일을 수정하고 다음 역할을 추가합니다.JMX_USERNAME readwrite
- 파일의 소유자가 'apigee'이고 파일 모드가 400인지 확인합니다.
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
- Cassandra에서
configure
을 실행합니다./opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 다른 모든 Cassandra 노드에서 이 프로세스를 반복합니다.
JMX 비밀번호 암호화 사용 설정
JMX 비밀번호 암호화를 사용 설정하려면 다음 단계를 따르세요.
source/conf/casssandra-env.sh
파일을 엽니다.cassandra.properties
파일을 만들고 수정합니다./opt/apigee/customer/application/cassandra.properties
파일을 수정합니다. 파일이 없으면 만듭니다.- 파일에 다음을 추가합니다.
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- cassandra.properties 파일을 저장합니다.
- 다음 예와 같이 파일의 소유자를 apigee:apigee로 변경합니다.
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 명령줄에서
echo -n 'Secret' | openssl dgst -sha1
를 입력하여 원하는 비밀번호의 SHA1 해시를 생성합니다. $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(이전 섹션에서 만든 사용자 이름)의 사용자 이름에 비밀번호를 설정합니다.- Cassandra에서 configure를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 다른 모든 Cassandra 노드에서 이 프로세스를 반복합니다.
Cassandra용 SSL로 JMX 사용 설정
SSL을 사용하여 JMX를 사용 설정하면 Cassandra와의 JMX 기반 통신에 추가 보안 및 암호화가 제공됩니다. SSL을 사용하여 JMX를 사용 설정하려면 Cassandra에 키와 인증서를 제공하여 SSL 기반 JMX 연결을 허용해야 합니다. 또한 nodetool 및 JMX를 통해 Cassandra와 통신하는 기타 모든 도구를 SSL용으로 구성해야 합니다.
SSL 지원 JMX는 일반 텍스트 및 암호화된 JMX 비밀번호를 모두 지원합니다.
Cassandra에 SSL을 사용하여 JMX를 사용 설정하려면 다음 절차를 따르세요.
- JMX를 사용 설정합니다. 필요한 경우 비밀번호 암호화를 사용 설정합니다.
- Cassandra에 JMX 인증 사용 설정
위에 설명된 대로 nodetool이 구성된 사용자 이름과 비밀번호로 작동하는지 확인합니다.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
키 저장소 및 트러스트 저장소를 준비합니다.
키 저장소는 키와 인증서를 포함해야 하며 Cassandra 서버를 구성하는 데 사용됩니다. 키 저장소에 여러 키 쌍이 포함된 경우 Cassandra는 첫 번째 키 쌍을 사용하여 SSL을 사용 설정합니다.
키 저장소와 키의 비밀번호는 동일해야 합니다(keytool을 사용하여 키를 생성할 때의 기본값).
- 트러스트스토어는 인증서만 포함해야 하며 클라이언트 (apigee-service 기반 명령어 또는 nodetool)가 JMX를 통해 연결하는 데 사용됩니다.
위의 요구사항을 확인한 후 다음 단계를 따르세요.
- 키 저장소 파일을
/opt/apigee/customer/application/apigee-cassandra/
에 배치합니다. -
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
를 입력하여 Apigee 사용자만 키 저장소 파일을 읽을 수 있는지 확인합니다.chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- 다음 단계에 따라 SSL을 사용하여 JMX용 Cassandra를 구성합니다.
-
apigee-service apigee-cassandra stop
를 입력하여 Cassandra 노드를 중지합니다. /opt/apigee/customer/application/cassandra.properties
파일을 열고 다음 줄을 추가하여 Cassandra에서 SSL을 사용 설정합니다.conf_cassandra_env_com.sun.management.jmxremote.ssl=true conf_cassandra_env_javax.net.ssl.keyStore=/opt/apigee/customer/application/apigee-cassandra/keystore.node1 conf_cassandra_env_javax.net.ssl.keyStorePassword=keystore-password
- 다음 예와 같이 파일의 소유자를 apigee:apigee로 변경합니다.
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Cassandra에서 configure를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 다른 모든 Cassandra 노드에서 이 프로세스를 반복합니다.
-
apigee-service apigee-cassandra start
를 입력하여 Cassandra 노드를 시작합니다.
-
apigee-service
Cassandra 명령어를 구성합니다.apigee-service
명령어를 실행하는 동안 아래와 같은 특정 환경 변수를 설정해야 합니다.apigee-service apigee-cassandra stop apigee-service apigee-cassandra wait_for_ready apigee-service apigee-cassandra ring apigee-service apigee-cassandra backup
JMX 인증 및 SSL에
apigee-service
를 구성하는 방법에는 여러 가지가 있습니다. 사용성 및 보안 관행에 따라 옵션을 선택합니다.옵션 1 (파일에 저장된 SSL 인수)
다음 환경 변수를 설정합니다.
export CASS_JMX_USERNAME=ADMIN # Provide encrypted password here if you have setup JMX password encryption export CASS_JMX_PASSWORD=PASSWORD export CASS_JMX_SSL=Y
Apigee 사용자의 홈 디렉터리 (
/opt/apigee
)에 파일을 만듭니다.$HOME/.cassandra/nodetool-ssl.properties
파일을 수정하고 다음 줄을 추가합니다.
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
Apigee 사용자가 trustore 파일을 읽을 수 있는지 확인합니다.
다음
apigee-service
명령어를 실행합니다. 오류 없이 실행되면 구성이 올바른 것입니다.apigee-service apigee-cassandra ring
옵션 2 (환경 변수에 저장된 SSL 인수)
다음 환경 변수를 설정합니다.
export CASS_JMX_USERNAME=ADMIN # Provide encrypted password here if you have setup JMX password encryption export CASS_JMX_PASSWORD=PASSWORD export CASS_JMX_SSL=Y # Ensure the truststore file is accessible by Apigee user. export CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> export CASS_JMX_TRUSTSTORE_PASSWORD=<truststore-password>
다음
apigee-service
명령어를 실행합니다. 오류 없이 실행되면 구성이 올바른 것입니다.apigee-service apigee-cassandra ring
옵션 3 (
apigee-service
에 직접 전달된 SSL 인수)아래와 같은
apigee-service
명령어를 실행합니다. 환경 변수를 구성할 필요가 없습니다.CASS_JMX_USERNAME=ADMIN CASS_JMX_PASSWORD=PASSWORD CASS_JMX_SSL=Y CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> CASS_JMX_TRUSTSTORE_PASSWORD=<trustore-password> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
nodetool을 설정합니다. Nodetool에는 JMX 매개변수가 전달되어야 합니다. 아래 구성 옵션에 설명된 대로 SSL 지원 JMX로 실행되도록 nodetool을 구성하는 방법에는 두 가지가 있습니다.
옵션은 SSL 관련 구성이 nodetool에 전달되는 방식에 따라 다릅니다. 두 경우 모두 nodetool을 실행하는 사용자에게 트러스트스토어 파일에 대한 읽기 권한이 있어야 합니다. 사용성 및 보안 관행에 따라 적절한 옵션을 선택합니다.
nodetool 매개변수에 관한 자세한 내용은 DataStax 문서를 참고하세요.
구성 옵션 1
nodetool을 실행하는 사용자의 홈 디렉터리에 파일을 만듭니다.
$HOME/.cassandra/nodetool-ssl.properties
파일에 다음 행을 추가합니다.
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
위에 지정된 트러스트스토어 경로는 nodetool을 실행하는 모든 사용자가 액세스할 수 있어야 합니다.
--ssl
옵션으로nodetool
를 실행합니다./opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
구성 옵션 2
아래에 나열된 추가 매개변수를 사용하여
nodetool
를 단일 명령어로 실행합니다./opt/apigee/apigee-cassandra/bin/nodetool -Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
SSL 구성 되돌리기
위 절차에 설명된 SSL 구성을 되돌리려면 다음 단계를 따르세요.
-
apigee-service apigee-cassandra stop
를 입력하여apigee-cassandra
중지 /opt/apigee/customer/application/cassandra.properties
파일에서conf_cassandra-env_com.sun.management.jmxremote.ssl=true
줄을 삭제합니다./opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
에서 다음 줄을 주석 처리합니다.# JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node0" # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keypass" # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true”
apigee-cassandra
를 시작하려면CASS_JMX_SSL
환경 변수가 설정된 경우 삭제합니다.unset CASS_JMX_SSL
ring
,stop
,backup
와 같은apigee-service
기반 명령어가 작동하는지 확인합니다.- nodetool에서
--ssl
스위치 사용 중지
apigee-service apigee-cassandra start
Cassandra의 JMX 인증 사용 중지
Cassandra의 JMX 인증을 사용 중지하려면 다음 단계를 따르세요.
/opt/apigee/customer/application/cassandra.properties
를 수정합니다.- 파일에서 다음 줄을 삭제합니다.
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- Cassandra에서 configure를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 다른 모든 Cassandra 노드에서 이 프로세스를 반복합니다.
JConsole 사용: 작업 통계 모니터링
JConsole과 다음 서비스 URL을 사용하여 JMX를 통해 제공되는 JMX 속성 (MBean)을 모니터링합니다.
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
여기서 IP_address는 Cassandra 서버의 IP입니다.
Cassandra JMX 통계
JMX MBean | JMX 속성 |
---|---|
ColumnFamilies/apprepo/environments ColumnFamilies/apprepo/organizations ColumnFamilies/apprepo/apiproxy_revisions ColumnFamilies/apprepo/apiproxies ColumnFamilies/audit/audits ColumnFamilies/audit/audits_ref |
PendingTasks |
MemtableColumnsCount |
|
MemtableDataSize |
|
ReadCount |
|
RecentReadLatencyMicros |
|
TotalReadLatencyMicros |
|
WriteCount |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
TotalDiskSpaceUsed |
|
LiveDiskSpaceUsed |
|
LiveSSTableCount |
|
BloomFilterFalsePositives |
|
RecentBloomFilterFalseRatio |
|
BloomFilterFalseRatio |
nodetool을 사용하여 클러스터 노드 관리
nodetool 유틸리티는 클러스터 노드를 관리하는 Cassandra용 명령줄 인터페이스입니다. 이 유틸리티는 /opt/apigee/apigee-cassandra/bin
에서 찾을 수 있습니다.
모든 Cassandra 클러스터 노드에서 다음을 호출할 수 있습니다.
- 일반 링 정보 (단일 Cassandra 노드에서도 가능): 모든 노드에서 '작동' 및 '정상'을 찾습니다.
nodetool [-u username -pw password] -h localhost ring
Cassandra에 JMX 인증을 사용 설정한 경우에만 사용자 이름과 비밀번호를 전달하면 됩니다.
위 명령어의 출력은 다음과 같이 표시됩니다.
Datacenter: dc-1 ========== Address Rack Status State Load Owns Token 192.168.124.201 ra1 Up Normal 1.67 MB 33,33% 0 192.168.124.202 ra1 Up Normal 1.68 MB 33,33% 5671...5242 192.168.124.203 ra1 Up Normal 1.67 MB 33,33% 1134...0484
- 노드에 관한 일반 정보 (노드당 호출)
nodetool [-u username -pw password] -h localhost info
위 명령어의 출력은 다음과 같습니다.
ID : e2e42793-4242-4e82-bcf0-oicu812 Gossip active : true Thrift active : true Native Transport active: true Load : 273.71 KB Generation No : 1234567890 Uptime (seconds) : 687194 Heap Memory (MB) : 314.62 / 3680.00 Off Heap Memory (MB) : 0.14 Data Center : dc-1 Rack : ra-1 Exceptions : 0 Key Cache : entries 150, size 13.52 KB, capacity 100 MB, 1520781 hits, 1520923 requests, 1.000 recent hit rate, 14400 save period in seconds Row Cache : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds Counter Cache : entries 0, size 0 bytes, capacity 50 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds Token : 0
- thrift 서버 상태 (클라이언트 API 제공)
nodetool [-u username -pw password] -h localhost statusthrift
위 명령어의 출력은 다음과 같습니다.
running
- 데이터 스트리밍 작업 상태: Cassandra 노드의 트래픽을 관찰합니다.
nodetool [-u username -pw password] -h localhost netstats
위 명령어의 출력은 다음과 같습니다.
Mode: NORMAL Not sending any streams. Read Repair Statistics: Attempted: 151612 Mismatch (Blocking): 0 Mismatch (Background): 0 Pool Name Active Pending Completed Dropped Commands n/a 0 0 0 Responses n/a 0 0 n/a
nodetool에 관한 자세한 내용은 nodetool 유틸리티 정보를 참고하세요.
Cassandra 리소스
다음 URL(http://www.datastax.com/docs/1.0/operations/monitoring)을 참고하세요.
Apache Qpid Broker-J 모니터링
Qpid 관리 콘솔에서 Qpid Broker-J를 모니터링할 수 있습니다. 이 섹션에서는 콘솔에 액세스하고 이를 사용하여 기본 모니터링 기능을 실행하는 방법을 설명합니다. 관리 콘솔 사용에 관한 자세한 내용은 Apache Qpid 문서의 웹 관리 콘솔을 참고하세요.
관리 콘솔 액세스
기본 관리 콘솔 포트는 8090입니다. 이 기본 포트에서 콘솔에 액세스하려면 웹브라우저를 다음 주소로 가리킵니다.
http://QPID_NODE_IP:8090
콘솔에 로그인하려면 Apigee에서 설정한 기본 사용자 인증 정보 또는 Edge 구성 파일에 설정된 사용자 인증 정보를 사용합니다. 자세한 내용은 Edge 구성 파일 참조를 참고하세요.
대기열 및 메시지 모니터링
왼쪽 탐색 패널에서 Java-Broker > virtualhosts > queues로 이동합니다. UI의 기본 부분에서 세부정보를 보려는 대기열을 선택합니다. 세부정보 보기에서는 전송된 메일, 대기열에 추가된 메일, 메일 전송 비율 등에 관한 정보를 비롯한 대기열 속성 및 통계를 확인할 수 있습니다.
로그 파일 보기 및 다운로드
왼쪽 탐색 패널에서 Java-Broker > brokerloggers > logfile로 이동합니다. 기본 UI 세부정보 보기에서 로그 파일 세부정보를 확인하고 로그 파일을 다운로드할 수 있습니다.
Qpid 관리 API 사용
Apache Qpid Broker-J REST API를 사용하여 관리 작업을 자동화하고 브로커를 모니터링할 수 있습니다. 자세한 내용은 Apache Qpid Broker REST API 문서를 참고하세요.
명령줄 도구를 사용하여 브로커를 모니터링할 수도 있습니다. 예를 들면 다음과 같습니다.
curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"
Apache ZooKeeper
ZooKeeper 상태 확인
- ZooKeeper 프로세스가 실행 중인지 확인합니다. ZooKeeper는 PID 파일을
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
에 씁니다. - ZooKeeper 포트를 테스트하여 모든 ZooKeeper 서버에서 포트 2181 및 3888에 TCP 연결을 설정할 수 있는지 확인합니다.
- ZooKeeper 데이터베이스에서 값을 읽을 수 있는지 확인합니다. ZooKeeper 클라이언트 라이브러리 (또는
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
)를 사용하여 연결하고 데이터베이스에서 값을 읽습니다. - 상태를 확인합니다.
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
ZooKeeper 4자리 단어 사용
ZooKeeper는 netcat (nc) 또는 telnet을 사용하여 포트 2181로 전송되는 소수의 명령어 (4자리 단어)를 통해 모니터링할 수 있습니다.
ZooKeeper 명령어에 관한 자세한 내용은 Apache ZooKeeper 명령어 참조를 참고하세요.
예를 들면 다음과 같습니다.
srvr
: 서버의 전체 세부정보를 표시합니다.stat
: 서버 및 연결된 클라이언트에 관한 간단한 세부정보를 표시합니다.
ZooKeeper 포트에 다음 명령어를 실행할 수 있습니다.
- 4글자 명령어 ruok를 실행하여 서버가 오류가 없는 상태로 실행 중인지 테스트합니다. 응답에 성공하면 'imok'가 반환됩니다.
echo ruok | nc host 2181
반환:
imok
- 4자리 명령어
stat
를 실행하여 서버 성능 및 연결된 클라이언트 통계를 표시합니다.echo stat | nc host 2181
반환:
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0) /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433) /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347) /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692) Latency min/avg/max: 0/0/128 Received: 26144 Sent: 26160 Connections: 4 Outstanding: 0 Zxid: 0x2000002c2 Mode: follower Node count: 283
- netcat (nc)을 사용할 수 없는 경우 python을 대신 사용할 수 있습니다. 다음이 포함된
zookeeper.py
이라는 파일을 만듭니다.import time, socket, sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) c.connect((sys.argv[1], 2181)) c.send(sys.argv[2]) time.sleep(0.1) print c.recv(512)
이제 다음 Python 줄을 실행합니다.
python zookeeper.py 192.168.124.201 ruok
python zookeeper.py 192.168.124.201 stat
LDAP 수준 테스트
OpenLDAP를 모니터링하여 특정 요청이 제대로 제공되는지 확인할 수 있습니다. 즉, 올바른 결과를 반환하는 특정 검색어를 확인합니다.
ldapsearch
(yum install openldap-clients
)를 사용하여 시스템 관리자의 항목을 쿼리합니다. 이 항목은 모든 API 호출을 인증하는 데 사용됩니다.ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL
그러면 LDAP 관리자 비밀번호를 입력하라는 메시지가 표시됩니다.
Enter LDAP Password:
비밀번호를 입력하면 다음과 같은 형식의 응답이 표시됩니다.
dn: uid=admin,ou=users,ou=global,dc=apigee,dc=com objectClass: organizationalPerson objectClass: person objectClass: inetOrgPerson objectClass: top uid: admin cn: admin sn: admin userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ= = mail: opdk@google.com
- 다음 명령어를 사용하여 관리 서버가 여전히 LDAP에 연결되어 있는지 확인합니다.
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
반환:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
OpenLDAP 캐시를 모니터링하여 디스크 액세스 수를 줄이고 시스템 성능을 개선할 수도 있습니다. OpenLDAP 서버에서 캐시 크기를 모니터링한 후 조정하면 디렉터리 서버의 성능에 큰 영향을 줄 수 있습니다. 로그 파일 (opt/apigee/var/log
)을 확인하여 캐시 정보를 얻을 수 있습니다.