모니터링 방법

Private Cloud용 Edge v. 4.17.01

이 문서에서는 Apigee Edge의 온프레미스 배포에서 지원되는 구성요소의 모니터링 기법을 설명합니다.

JMX 사용 설정

JMX는 Cassandra에 기본적으로 사용 설정되고 다른 모든 Edge 구성요소에 대해서는 기본적으로 사용 중지됩니다. 따라서 각 구성요소에 대해 개별적으로 JMX를 사용 설정해야 합니다.

각 구성요소는 서로 다른 포트에서 JMX를 지원합니다. 다음 표에는 JMX 포트와 이 포트에서 JMX를 사용 설정하기 위해 수정하는 파일이 나와 있습니다.

구성요소 JMX 포트 파일
관리 서버 1099 /opt/apigee/edge-management-server/bin/start
메시지 프로세서 1101 /opt/apigee/edge-mesage-processor/bin/start
QPID 1102 /opt/apigee/edge-qpid-server/bin/start
Postgres 1103 /opt/apigee/edge-postgres-server/bin/start

예를 들어 관리 서버에서 JMX를 사용 설정하려면 편집기에서 /opt/apigee/edge-management-server/bin/start를 엽니다. 관리 서버를 시작하는 데 사용되는 다음 줄이 표시됩니다.

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 $* $debug_options com.apigee.kernel.MicroKernel

이 줄을 수정하여 다음을 추가합니다.

-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 

이 줄은 관리 서버에 대해 JMX 포트 번호를 1099로 지정합니다. 위 표에 정의된 대로 각 구성요소의 포트 번호를 설정합니다. 예를 들면 다음과 같습니다.

exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts 
-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 
-Djava.security.auth.login.config=$conf_path/jaas.config 
-Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel

파일을 저장하고 구성요소를 다시 시작합니다. 예를 들어 관리 서버를 다시 시작하려면 다음 안내를 따르세요.

> /opt/apigee/apigee-service/bin/ apigee-service edge-management-server restart

JMX 인증 사용 설정 및 JMX 비밀번호 설정

관리 서버, 메시지 프로세서, Qpid, Postgres의 모니터링 프로세스는 모두 JMX를 사용합니다. JMX는 기본적으로 사용 설정되며 원격 JMX 액세스에는 비밀번호가 필요하지 않습니다.

JMX 인증을 사용 설정하기 위해 각 구성요소에는 인증을 사용 설정/사용 중지하고 JMX 사용자 인증 정보를 설정하는 데 사용하는 change_jmx_auth 작업이 있습니다.

JMX 인증을 사용 설정하려면 다음 명령어를 사용합니다.

>  /opt/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile

각 항목의 의미는 다음과 같습니다.

  • compedge-management-server, Edge-message-processor, Edge-qpid-server 또는 Edge-postgres-server입니다.
  • 옵션은 다음과 같습니다.
    • -u: 사용자 이름
    • -p: 비밀번호
    • -e: y (사용 설정) 또는 n(설정 가능)
  • 구성 파일에는 다음이 포함됩니다.
    • JMX_USERNAME=사용자 이름
    • JMX_ENABLED=y/n
    • JMX_PASSWORD=password(설정하지 않거나 -p로 전달하지 않으면 메시지가 표시됨)

예를 들어 명령줄에서 옵션을 사용하려면 다음을 실행합니다.

> /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 configFile

여러 노드에서 Edge를 실행하는 경우 동일한 사용자 이름과 비밀번호를 지정하여 모든 노드에서 이 명령어를 실행합니다.

나중에 JMX 인증을 사용 중지하려면 다음 명령어를 사용하세요.

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n

관리 서버

JConsole을 사용하여 시스템 상태 확인 및 프로세스 정보 모니터링

JConsole (JMX 호환 도구)을 사용하여 상태 점검 및 프로세스 통계를 관리하고 모니터링합니다. JConsole을 사용하면 관리 서버 (또는 모든 서버)에서 노출된 JMX 통계를 사용하여 그래픽 인터페이스에 표시할 수 있습니다. JConsole 사용에 관한 자세한 내용은 http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html을 참조하세요.

JConsole 및 다음 서비스 URL을 사용하여 JMX를 통해 제공되는 JMX 속성(MBeans)을 모니터링합니다.

service:jmx:rmi:///jndi/rmi://<ip address>:<port>/jmxrmi

여기서 <ip address>는 관리 서버 (또는 각 서버)의 IP 주소입니다. 관리 서버의 포트는 기본적으로 1099입니다.

다음 표는 일반적인 JMX 통계를 보여줍니다.

JMX MBeans

JMX 속성

메모리

HeapMemoryUsage

NonHeapMemoryUsage

사용

참고: 속성 값은 커밋, init, 최대, 사용됨이라는 네 가지 값으로 표시됩니다.

Edge Application API 검사 사용

다음 CURL 명령어를 호출하여 관리 서버 (또는 모든 서버)에서 API 검사를 수행할 수 있습니다.

curl http://<host>:8080/v1/servers/self/up

여기서 <host>는 관리 서버의 IP 주소입니다.

이 호출은 'true'와 'false'를 반환합니다. true이면 노드가 작동 중이고 자바 서비스가 실행 중인 것입니다.

HTTP 200 (OK) 응답을 받지 못하면 Edge가 포트 8080 요청에 응답할 수 없습니다.

문제 해결

  1. 서버에 로그인하고 다음 명령어를 실행합니다.
    /opt/apigee/apigee-service/bin/apigee-service Edge-management-server status
  2. 서비스가 실행 중이 아닌 경우 서비스를 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service Edge-management-server start

에지 애플리케이션 사용 – 사용자, 조직, 배포 확인

관리 서버는 각 온프레미스 설치 시 다른 모든 파일들을 함께 보관하는 데 중요한 역할을 합니다. 다음 명령어를 실행하여 관리 서버에서 사용자, 조직, 배포 상태를 확인할 수 있습니다.

curl -u userEmail:password http://localhost:8080/v1/users
curl -u userEmail:password http://localhost:8080/v1/organizations
curl -u userEmail:password http://localhost:8080/v1/organizations/orgname/deployments

시스템에서 모든 호출에 '배포됨' 상태를 표시해야 합니다. 실패하면 다음을 실행하세요.

  1. 관리 서버 로그 (opt/apigee/var/log/edge-management-server)에 오류가 있는지 확인하세요.
  2. 관리 서버를 호출하여 제대로 작동하는지 확인합니다.
  3. ELB에서 서버를 삭제한 다음 관리 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service Edge-management-server restart

라우터

다음 CURL 명령어를 호출하여 라우터 (또는 서버)에서 API 검사를 수행할 수 있습니다.

curl http://<host>:8081/v1/servers/self/up

여기서 호스트는 라우터의 IP 주소입니다.

이 호출은 'true'와 'false'를 반환합니다. true이면 노드가 작동 중이고 라우터 서비스가 실행 중임을 의미합니다.

HTTP 200 (OK) 응답을 받지 못하면 Edge가 포트 8081 요청에 응답할 수 없습니다.

문제 해결

  1. 서버에 로그인하고 다음 명령어를 실행합니다.
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router status
  2. 서비스가 실행 중이 아닌 경우 서비스를 시작하세요.
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router start
  3. 다시 시작한 후 작동하는지 확인합니다.
    curl -v http://localhost:port/v1/servers/self/up

    여기서 포트는 8081(라우터)이고 8082(메시지 프로세서)입니다.

메시지 프로세서

JConsole을 사용하여 시스템 상태 확인 및 프로세스 정보 모니터링

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 1101을 사용해야 합니다.

Edge Application API 검사 사용

라우터에 관해 위에 설명한 것과 동일한 단계를 따릅니다.

참고: 포트 – 8082를 사용해야 합니다.

JMX 메시지 흐름 검사 사용

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 1101을 사용해야 합니다.

Qpid 서버

JConsole을 사용하여 시스템 상태 확인 및 프로세스 정보 모니터링

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 1102를 사용해야 합니다.

Edge Application API 검사 사용

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 – 8083을 사용해야 합니다. 다음 CURL 명령어도 Qpid 서버에서 지원됩니다.

curl http://<qpid_IP>:8083/v1/servers/self

Postgres 서버

JConsole을 사용하여 시스템 상태 확인 및 프로세스 정보 모니터링

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 1103을 사용해야 합니다.

Edge Application API 검사 사용

관리 서버에 대해 위에 설명된 것과 동일한 단계를 따릅니다.

참고: 포트 – 8084를 사용해야 합니다. 다음 CURL 명령어도 Postgres 서버에서 지원됩니다.

curl http://<postgres_IP>:8084/v1/servers/self

에지 애플리케이션 조직 및 환경 확인 사용

다음 CURL 명령어를 실행하여 Postgres 서버에 온보딩된 조직 및 환경 이름을 확인할 수 있습니다.

curl http:// <postgres_IP>:8084/v1/servers/self/organizations

참고: 포트 – 8084를 사용해야 합니다.

시스템에 조직 및 환경 이름이 표시됩니다.

Edge 애플리케이션 axstatus 확인 사용

다음 CURL 명령어를 실행하여 애널리틱스 서버의 상태를 확인할 수 있습니다.

curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus

시스템에 모든 애널리틱스 서버의 SUCCESS 상태가 표시됩니다. 위의 CURL 명령어의 출력은 아래와 같습니다.

{
  "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 데이터베이스

check_postgres.pl 스크립트 사용

PostgreSQL 데이터베이스를 모니터링하려면 http://bucardo.org/wiki/Check_postgres에서 제공되는 표준 모니터링 스크립트 check_postgres.pl을 사용하면 됩니다.

참고: check_postgres.pl 스크립트를 각 Postgres 노드에 설치해야 합니다.

스크립트를 실행하기 전에 다음을 수행합니다.

  1. 고해상도 알람, 절전 모드, gettimeofday 및 간격 타이머를 구현하는 Perl 모듈인 perl-Time-HiRes.x86_64를 설치했는지 확인합니다. 예를 들어 다음 명령어를 사용하여 설치할 수 있습니다.
    yum install perl-Time-HiRes.x86_64

check_postgres.pl 스크립트를 사용한 API 호출의 기본 출력은 Nagios와 호환됩니다. 스크립트를 설치한 후 다음을 확인하세요.

  1. 데이터베이스 크기 – 데이터베이스 크기를 확인하세요.
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800GB' --Critical='900GB'
  2. 데이터베이스에 대한 수신 연결:데이터베이스에 들어오는 연결 수를 확인하고 허용되는 최대 연결 수를 확인합니다.
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action 백엔드
  3. 데이터베이스 가용성 및 성능 - 데이터베이스가 실행 중이고 사용 가능한지 확인합니다.
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. 디스크 공간 – 디스크 공간을 확인합니다.
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --Critical='90%'
  5. 온보딩된 조직/환경 - Postgres 노드에서 온보딩된 조직 및 환경 수를 확인합니다.
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) -- as result from p='val'tables and schemaname0}"warning'message'error factname0

참고: 위의 명령어를 사용하는 데 도움이 필요한 경우 http://bucardo.org/check_postgres/check_postgres.pl.html을 참고하세요.

DB 검사

PostgreSQL 데이터베이스에 적절한 테이블이 생성되었는지 확인할 수 있습니다. 다음을 사용하여 PostgreSQL 데이터베이스에 로그인합니다.

psql  -h /opt/apigee/var/run/apigee-postgresql/  -U apigee -d apigee

를 클릭한 후 다음을 실행합니다.

\d analytics."<org>.<env>.fact"

Postgres 프로세스의 상태 확인

다음 CURL 명령어를 호출하여 postgres 머신에서 API 검사를 수행할 수 있습니다.

http://<postgres_IP>:8084/v1/servers/self/health/

참고: 포트 8084를 사용해야 합니다.

postgres 프로세스가 활성화되면 'ACTIVE' 상태를 반환합니다. postgres 프로세스가 실행 중이 아니면 'INACTIVE' 상태를 반환합니다.

Postgres 리소스

Apache Cassandra

JConsole 사용 – 작업 통계 모니터링

JConsole 및 다음 서비스 URL을 사용하여 JMX를 통해 제공되는 JMX 속성(MBeans)을 모니터링합니다.

service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi

여기서 <ip address>는 Cassandra 서버의 IP입니다.

JMX는 Cassandra에 기본적으로 사용 설정되며 Cassandra에 대한 원격 JMX 액세스에는 비밀번호가 필요하지 않습니다.

JMX 인증을 사용 설정하여 비밀번호를 추가하려면 다음 안내를 따르세요.

  1. /opt/apigee/customer/application/cassandra.properties를 수정합니다. 파일이 없으면 새로 만듭니다.
  2. 파일에 다음을 추가합니다.
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. 파일을 저장합니다.
  4. $JAVA_HOME 디렉터리에서 다음 파일을 복사합니다. /opt/apigee/data/apigee-cassandra/


  5. jmxremote.password를 수정하고 파일에 사용자 이름과 비밀번호를 추가합니다.
    cassandra password

    여기서 password는 JMX 비밀번호입니다.
  6. jmxremote.access를 수정하고 다음 역할을 추가합니다.
    cassandra readwrite
  7. 파일이 'apigee'에서 소유하고 있고 파일 모드가 400인지 확인하세요.
    > chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
    > chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.*
  8. Cassandra에서 configure를 실행합니다.
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configuration
  9. Cassandra를 다시 시작합니다.
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

나중에 인증을 사용 중지하려면 다음 안내를 따르세요.

  1. /opt/apigee/customer/application/cassandra.properties를 수정합니다.
  2. 파일에서 다음 줄을 삭제합니다.
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Cassandra에서 구성을 실행합니다.
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configuration
  4. Cassandra를 다시 시작합니다.
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Cassandra JMX 통계

JMX MBeans

JMX 속성

ColumnFamilies/apprepo/environments

Columnfamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

Columnfamilies/감사/감사

ColumnFamilies/audit/audits_ref'

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

nodetool 유틸리티를 사용하여 클러스터 노드 관리

Cassandra의 명령줄 인터페이스인 nodetool 유틸리티는 클러스터 노드를 관리하는 데 사용됩니다. 이 유틸리티는 opt/apigee/apigee-cassandra/bin에서 찾을 수 있습니다.

nodetool 유틸리티에 관한 자세한 내용은 http://www.datastax.com/docs/1.0/references/nodetool을 참고하세요.

모든 Cassandra 클러스터 노드에서 다음 호출을 수행할 수 있습니다.

  1. 일반 링 정보 (단일 Cassandra 노드에도 가능): 모든 노드의 'Up' 및 'Normal'을 찾습니다.
    [host]# nodetool -h 7dc 4 2 7 localhost 4 2 7 4 8 2 7 4 2 7 4 7 2 8 4 7 2 4 2 8 4 2 7 4 2 8 4 2 7 4 2 8 4 2 7 4 2 7 4 8 2 8 2 4 2 8 1 2 7 4 2 8 1 2 6 1 2 8 1 2 6 1 2 6 1 2 8 1 2 6 1 2 3 1 8 1 3 3 1 6

















  2. Thrift 서버 상태 (제공 클라이언트 API)
    host]# nodetool -h localhost statusthrift

    위 명령어의 출력에는 상태가 '실행 중'으로 표시됩니다.
  3. 데이터 스트리밍 작업 상태: cassandra 노드의 트래픽을 관찰합니다.
    nodetool -h localhost netstats 192.168.124.203

    위 명령어의 출력은 다음과 같이 표시됩니다.
    모드: NORMAL
    /192.168.124.



Cassandra 모니터링 (UI)

datastax opscenter URL(http://www.datastax.com/products/opscenter)을 참고하세요.

Cassandra 리소스

다음 URL을 참고하세요.http://www.datastax.com/docs/1.0/operations/monitoring

Apache ZooKeeper

주Keeper 상태 확인 중

  1. JoKeeper 프로세스가 실행 중인지 확인합니다. 주Keeper는 PID 파일을 opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid에 씁니다.
  2. 모든 주Keeper 서버에서 포트 2181 및 3888에 TCP 연결을 설정할 수 있는지 확인하기 위해 주Keeper 포트를 테스트합니다.
  3. JoKeeper 데이터베이스에서 값을 읽을 수 있는지 확인합니다. JoKeeper 클라이언트 라이브러리 (또는 /opt/apigee/apigee-zookeeper/bin/zkCli.sh)를 사용하여 연결하고 데이터베이스에서 값을 읽습니다.
  4. 상태를 확인합니다.
    > /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

JoKeeper 네 글자 단어 사용

netcat (nc) 또는 telnet을 사용하여 포트 2181로 전송되는 소규모 명령어 (4자리 단어)를 통해 JoKeeper를 모니터링할 수 있습니다.

주Keeper 명령어에 대한 자세한 내용은 http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands를 참조하세요.

예를 들면 다음과 같습니다.

  • srvr: 서버의 전체 세부정보를 나열합니다.
  • stat: 서버 및 연결된 클라이언트의 간략한 세부정보를 나열합니다.

다음과 같은 명령어가 JoKeeper 포트에서 실행될 수 있습니다.

  1. 4자리 명령어 ruok을 실행하여 서버가 오류가 아닌 상태에서 실행 중인지 테스트합니다. 성공적인 응답은 'imok'를 반환합니다.
    echo ruok | nc <host> 2181

    반환:
    imok
  2. 4자리 명령어인 stat을 실행하여 서버 성능 및 연결된 클라이언트 통계를 나열합니다.
    echo stat | nc <host> 2181

    반환:
    Zookeeper 버전: 3.4.5-1392090, 09/30/2012 17:52 GMT Clients:
    /0:0:0:0:0:0:1:
    /0:0:0:0:0:0:1:











  3. netcat (nc)을 사용할 수 없으면 Python을 대신 사용할 수 있습니다. 다음 내용을 포함하는 zookeeper.py.zookeeper.py1 python.20.html 1 AdMob 10.00.011,GBA 있고 185GB의 파일 1개 만들기
    import time, socket,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181))
    c.send(sys.argv[2])
    c.send(sys.argv[2])
    c.send(sys.argv[2])
    c.send(sys.argv[2])
    c.send(sys.argv[2])
    time.

OpenLDAP

LDAP 수준 테스트

OpenLDAP를 모니터링하여 특정 요청이 제대로 처리되는지 확인할 수 있습니다. 즉, 올바른 결과를 반환하는 특정 검색이 있는지 확인합니다.

  1. 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 관리자 비밀번호를 입력하면 됩니다.
    다음을 입력합니다.












  2. 관리 서버가 여전히 LDAP에 연결되어 있는지 확인합니다.
    curl -u <userEMail>:<password> http://localhost:8080/v1/users/<ADMIN>

    반환:
    {
    "emailId" : <ADMIN>,
    "firstName" : "admin",
    "lastName"
    }

또한 디스크 액세스 수를 줄여 시스템 성능을 개선하는 데 도움이 되는 OpenLDAP 캐시를 모니터링할 수도 있습니다. OpenLDAP 서버에서 캐시 크기를 모니터링한 후 조정하면 디렉터리 서버의 성능에 큰 영향을 미칠 수 있습니다. 로그 파일 (opt/apigee/var/log)을 보면 캐시에 대한 정보를 얻을 수 있습니다.