이 문서에서는 Apigee Edge의 온프레미스 배포에서 지원되는 구성요소의 모니터링 기법을 설명합니다.
개요
Edge는 서비스에 관한 세부정보를 가져오고 상태를 확인하는 여러 가지 방법을 지원합니다. 다음 표에는 요건을 충족하는 각 서비스에서 수행할 수 있는 검사 유형이 나와 있습니다.
Mgmt API | |||||||
서비스 | 메모리 사용량[JMX*] | 서비스 확인 | 사용자/조직/ 배포 상태 | axstatus | 데이터베이스 확인 | apigee-service 상태 |
apigee-monit ** |
관리 서버 | |||||||
메시지 프로세서 | |||||||
Postgres | |||||||
Qpid | |||||||
라우터 | |||||||
추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | 추가 정보 | |
* JMX를 사용하려면 먼저 JMX 사용 설정에 설명된 대로 JMX를 사용 설정해야 합니다. ** |
JMX 및 관리 API 모니터링 포트
각 구성요소는 서로 다른 포트에서 JMX 및 Management API 모니터링 호출을 지원합니다. 다음 표에는 각 서버 유형의 JMX 및 Management API 포트가 나와 있습니다.
구성요소 | JMX 포트 | Management API 포트 |
---|---|---|
관리 서버 | 1099 | 8080 |
라우터 | 1100 | 8081 |
메시지 프로세서 | 1101 | 8082 |
Qpid | 1102 | 8083 |
Postgres | 1103 | 8084 |
JMX를 사용하여 모니터링
관리 서버, 메시지 프로세서, Qpid, Postgres의 모니터링 프로세스는 모두 JMX를 사용합니다. 하지만 JMX는 Cassandra에만 기본적으로 사용 설정되고 다른 모든 Edge 구성요소에는 기본적으로 사용 중지됩니다. 따라서 각 구성요소에 대해 JMX를 개별적으로 사용 설정해야 구성요소를 모니터링할 수 있습니다.
JMX 인증은 기본적으로 사용 설정되어 있지 않습니다. 모든 구성요소에 JMX 인증을 사용 설정할 수 있습니다. Cassandra의 경우 Cassandra에 JMX 인증 사용 설정의 안내를 따르세요.
JMX 사용 설정
JMX는 Cassandra에만 기본적으로 사용 설정되고 다른 모든 Edge 구성요소에는 기본적으로 사용 중지되어 있습니다. 이 섹션에서는 다른 Edge 구성요소에 JMX를 사용 설정하는 방법을 설명합니다.
JMX를 사용 설정하려면 다음 단계를 따르세요.
- 구성요소의 구성 파일을 수정합니다. 이 파일은
opt/apigee/edge-component_name/bin/start
에 있습니다. 프로덕션 환경에서는 이러한 구성 파일이 다른 머신에 있습니다.각 서버에서 다음 파일 위치 중에서 선택합니다.
- 관리 서버:
/opt/apigee/edge-management-server/bin/start
- 메시지 프로세서:
/opt/apigee/edge-message-processor/bin/start
- Postgres:
/opt/apigee/edge-postgres-server/bin/start
- Qpid:
/opt/apigee/edge-qpid-server/bin/start
- 라우터:
/opt/apigee/edge-router/bin/start
예를 들어 서버의 관리 서버 구성 파일은
/opt/apigee/edge-management-server/bin/start
에 있습니다. - 관리 서버:
- 구성요소를 시작하는
exec
줄에 다음com.sun.management.jmxremote
옵션을 추가합니다.-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=port_number \ -Dcom.sun.management.jmxremote.local.only=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false
여기서 port_number는 서비스의 JMX 포트입니다. 서비스의 JMX 포트 번호를 가져오려면 JMX 및 Management API 모니터링 포트를 참고하세요.
예를 들어 관리 서버에서 JMX를 사용 설정하려면 관리 서버의 구성 파일에 다음을 추가합니다.
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts \ -Djava.security.auth.login.config=$conf_path/jaas.config \ -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path \ -Ddata.dir=$data_dir \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.local.only=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ $* $debug_options com.apigee.kernel.MicroKernel
이 예에서는 관리 서버의 포트 1099를 지정합니다. 앞서 언급했듯이 각 서비스에는 자체 포트 번호가 있습니다.
구성 파일에서 수정된 행은 다음과 같습니다.
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false $* $debug_options com.apigee.kernel.MicroKernel
- 구성 파일을 저장합니다.
restart
명령어로 구성요소를 다시 시작합니다.예를 들어 관리 서버를 다시 시작하려면 다음 명령어를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
JMX 인증은 기본적으로 사용 설정되지 않습니다. JMX 인증 사용 설정에 설명된 대로 모든 구성요소에 JMX 인증을 사용 설정할 수 있습니다. Cassandra에 JMX 인증을 사용 설정하려면 Cassandra에 JMX 인증 사용 설정을 참고하세요.
JMX 인증 사용 설정
JMX 인증은 기본적으로 사용 설정되어 있지 않습니다. 모든 구성요소에 JMX 인증을 사용 설정할 수 있습니다. Cassandra의 경우 Cassandra에 JMX 인증 사용 설정의 안내를 따르세요.
JMX 인증을 사용 설정하려면 모든 노드에서 다음 change_jmx_auth
작업을 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]
각 항목의 의미는 다음과 같습니다.
- component은 다음 중 하나입니다.
edge-management-server
edge-message-processor
edge-postgres-server
edge-qpid-server
edge-router
- options는 다음을 지정합니다.
-u username
-p password
-e [y|n]
(사용 설정 또는 중지)
- config_file는 다음을 정의하는 구성 파일의 위치를 지정합니다.
JMX_USERNAME=username
JMX_ENABLED=y|n
JMX_PASSWORD=password
(설정하지 않거나-p
로 전달되지 않은 경우 메시지가 표시됨)
명령줄 옵션 또는 구성 파일을 사용하여 사용자 이름, 비밀번호, 사용 설정/사용 중지 상태를 정의할 수 있습니다. 옵션 세트와 구성 파일을 모두 지정하지 않습니다.
다음 예에서는 명령줄 옵션을 사용하여 관리 서버에 JMX 인증을 사용 설정합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
다음 예에서는 명령줄 옵션이 아닌 구성 파일을 사용합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f /tmp/my-config-file
여러 노드에서 Edge를 실행하는 경우 모든 노드에서 명령어를 실행하고 동일한 사용자 이름과 비밀번호를 지정합니다.
명령줄에서 JMX 인증을 사용 중지하려면 다음 예와 같이 '-e n' 옵션을 사용합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
JConsole로 모니터링
JConsole (JMX 준수 도구)을 사용하여 상태 확인 및 프로세스 통계를 관리하고 모니터링합니다. JConsole을 사용하면 서버에서 노출하는 JMX 통계를 사용하고 그래픽 인터페이스에 표시할 수 있습니다. 자세한 내용은 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 |
|
사용 |
|
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 서버에 온보딩된 조직 및 환경 이름을 확인할 수 있습니다.
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}/data/apigee-cassandra/jmxremote.password conf_cassandra-env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/data/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/data/apigee-cassandra/
에 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
jmxremote.password
파일을 수정하고 다음 구문을 사용하여 JMX 사용자 이름과 비밀번호를 추가합니다.JMX_USERNAME JMX_PASSWORD
여기서 JMX_USERNAME 및 JMX_PASSWORD는 이전에 설정한 JMX 사용자 이름과 비밀번호입니다.
- 파일의 소유자가 'apigee'이고 파일 모드가 400인지 확인합니다.
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
jmxremote.access
파일을 복사하여 수정합니다.- 다음 파일을
$JAVA_HOME
디렉터리에서/opt/apigee/data/apigee-cassandra/
로 복사합니다.cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- jmxremote.access 파일을 수정하고 다음 역할을 추가합니다.
JMX_USERNAME readwrite
- 파일의 소유자가 'apigee'이고 파일 모드가 400인지 확인합니다.
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/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
파일을 엽니다.- 파일에서 다음 줄의 주석 처리를 삭제합니다.
-
JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config={T}conf_cassandra-env_java.security.auth.login.config{/T}"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.login.config=ApigeeSecureFileLoginModule"
-
- 명령줄에서
echo -n 'Secret' | openssl dgst -sha1
를 입력하여 원하는 비밀번호의 SHA1 해시를 생성합니다. jmxremote.password
에서 사용자 이름에 대한 비밀번호를 설정합니다.- 업데이트 후
cassandra-env.sh
파일을 다시 읽기 전용으로 변경합니다.
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
keystore와 truststore를 준비합니다.
키 저장소는 키와 인증서를 포함해야 하며 Cassandra 서버를 구성하는 데 사용됩니다. 키 저장소에 여러 키 쌍이 포함된 경우 Cassandra는 첫 번째 키 쌍을 사용하여 SSL을 사용 설정합니다.
키 저장소와 키의 비밀번호는 동일해야 합니다(keytool을 사용하여 키를 생성할 때의 기본값).
- 트러스트 저장소는 인증서만 포함해야 하며 클라이언트 (Apigee-서비스 기반 명령어 또는 Nodetool)가 JMX를 통해 연결하는 데 사용됩니다.
위의 요구사항을 확인한 후 다음 단계를 따르세요.
- 키 저장소 파일을
/opt/apigee/data/apigee-cassandra
에 배치합니다. -
chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1 chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
를 입력하여 Apigee 사용자만 키 저장소 파일을 읽을 수 있는지 확인합니다.
- 다음 단계에 따라 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
파일 소유자는
apigee:apigee
여야 합니다.- 다음과 같이 Cassandra에서 SSL 관련 구성을 사용 설정합니다.
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
파일을 열고 필요에 따라/opt/apigee/data/apigee-cassandra/keystore.node1
경로와 키 저장소 비밀번호를 변경하여 다음 줄의 주석 처리를 삭제합니다.JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node1" JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keystore-password" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
apigee:apigee
가 파일의 소유자인지 확인합니다. -
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 매개변수가 전달되어야 합니다. 아래 구성 옵션에 설명된 대로 Nodetool이 SSL 지원 JMX와 함께 실행되도록 구성할 수 있는 두 가지 방법이 있습니다.
옵션은 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 Column family/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 ZooKeeper
ZooKeeper 상태 확인
- ZaKeeper 프로세스가 실행 중인지 확인합니다. 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 ZaKeeper 명령어 참조를 확인하세요.
예를 들면 다음과 같습니다.
srvr
: 서버의 전체 세부정보를 표시합니다.stat
: 서버 및 연결된 클라이언트에 관한 간단한 세부정보를 표시합니다.
다음 명령어를 주키퍼 포트로 실행할 수 있습니다.
- 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
)을 확인하여 캐시 정보를 얻을 수 있습니다.