Jak monitorować

W tym dokumencie opisujemy techniki monitorowania komponentów obsługiwanych przez lokalne wdrożenie Apigee Edge.

Opis

Edge obsługuje kilka sposobów uzyskiwania informacji o usługach, a także sprawdzania ich stanu. W tabeli poniżej znajdziesz typy kontroli, które możesz przeprowadzić w przypadku każdej kwalifikującej się usługi:

Interfejs API Mgmt
Usługa Wykorzystanie pamięci [JMX*] Sprawdzenie usługi Stan wdrożenia użytkownika/organizacji/ wdrożenia axstatus Sprawdzenie bazy danych Stan funkcji apigee-service apigee-monit**
Serwer zarządzania
procesor komunikatów
Postgres
Qpid
Router
Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji

* Aby korzystać z JMX, musisz go włączyć zgodnie z opisem w sekcji Włączanie JMX.

** Usługa apigee-monit sprawdza, czy komponent jest aktywny. Jeśli nie, spróbuje ponownie go uruchomić. Więcej informacji znajdziesz w artykule Samoleczenie za pomocą apigee-monit.

Porty monitorowania JMX i interfejsu Management API

Każdy komponent obsługuje wywołania monitorowania JMX i interfejsu Management API na różnych portach. W tej tabeli znajdziesz listę portów JMX i interfejsu Management API dla poszczególnych typów serwera:

Komponent Port JMX Port interfejsu API zarządzania
Serwer zarządzania 1099 8080
Router 1100 8081
procesor komunikatów 1101 8082
Qpid 1102 8083
Postgres 1103 8084

Używaj JMX do monitorowania

Procesy monitorowania serwera zarządzania, procesora wiadomości, Qpid i Postgres korzystają z JMX. JMX jest jednak domyślnie włączona tylko dla Cassandra i wyłączona domyślnie dla wszystkich innych komponentów Edge. Dlatego musisz je włączyć pojedynczo dla każdego komponentu, aby móc je monitorować.

Uwierzytelnianie JMX nie jest domyślnie włączone. Możesz włączyć uwierzytelnianie JMX dla wszystkich komponentów. W przypadku Cassandra wykonaj instrukcje opisane w artykule Włączanie uwierzytelniania JMX dla Cassandra.

Włącz JMX

JMX jest domyślnie włączona tylko dla Cassandra i domyślnie wyłączona dla wszystkich innych komponentów Edge. W tej sekcji opisaliśmy, jak włączyć JMX dla innych komponentów Edge.

Aby włączyć JMX:

  1. Zmodyfikuj plik konfiguracji komponentu. Znajdziesz go tutaj: opt/apigee/edge-component_name/bin/start. W środowiskach produkcyjnych pliki konfiguracji znajdują się na różnych komputerach.

    Wybierz jedną z następujących lokalizacji plików na każdym serwerze:

    • Serwer zarządzania: /opt/apigee/edge-management-server/bin/start
    • Procesor wiadomości: /opt/apigee/edge-message-processor/bin/start
    • Postgres: /opt/apigee/edge-postgres-server/bin/start
    • Qpid: /opt/apigee/edge-qpid-server/bin/start
    • Router: /opt/apigee/edge-router/bin/start

    Na przykład plik konfiguracji serwera zarządzania znajduje się na jego serwerze pod adresem /opt/apigee/edge-management-server/bin/start.

  2. Do wiersza exec, który uruchamia komponent, dodaj te opcje 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

    Gdzie port_number to port JMX usługi. Aby uzyskać numer portu JMX usługi, przeczytaj artykuł o portach monitorowania JMX i interfejsu Management API.

    Aby na przykład włączyć JMX na serwerze zarządzania, do pliku konfiguracji serwera zarządzania dodaj:

    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

    W tym przykładzie określono port 1099 serwera zarządzania. Jak już wspomnieliśmy, każda usługa ma własny numer portu.

    Zmieniony wiersz w pliku konfiguracji wygląda tak:

    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
  3. Zapisz plik konfiguracji.
  4. Ponownie uruchom komponent za pomocą polecenia restart.

    Aby na przykład ponownie uruchomić serwer zarządzania, wykonaj to polecenie:

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

Uwierzytelnianie dla JMX jest domyślnie wyłączone. Uwierzytelnianie JMX możesz włączyć dla wszystkich komponentów w sposób opisany w sekcji Włączanie uwierzytelniania JMX. Aby włączyć uwierzytelnianie JMX dla Cassandra, przeczytaj sekcję o włączaniu uwierzytelniania JMX dla Cassandra.

Włącz uwierzytelnianie JMX

Uwierzytelnianie JMX nie jest domyślnie włączone. Możesz włączyć uwierzytelnianie JMX dla wszystkich komponentów. W przypadku Cassandra wykonaj instrukcje podane w artykule Włączanie uwierzytelniania JMX dla Cassandra.

Aby włączyć uwierzytelnianie JMX, wykonaj to działanie change_jmx_auth we wszystkich węzłach:

/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]

Gdzie:

  • component należy do jednej z tych wartości:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options określa te elementy:
    • -u username
    • -p password
    • -e [y|n] (włącz lub wyłącz)
  • config_file określa lokalizację pliku konfiguracji, w której:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (jeśli nie jest ustawiony lub nie został przekazany za pomocą -p, zostanie wyświetlony monit)

Aby określić nazwę użytkownika, hasło oraz stan włączenia/wyłączenia, możesz użyć opcji wiersza poleceń lub pliku konfiguracji. Nie określasz jednocześnie zestawu opcji i pliku konfiguracji.

Poniższy przykład umożliwia włączenie uwierzytelniania JMX na serwerze zarządzania za pomocą opcji wiersza poleceń:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -u foo -p bar -e y

W tym przykładzie użyto pliku konfiguracji, a nie opcji wiersza poleceń:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -f /tmp/my-config-file

Jeśli korzystasz z Edge w wielu węzłach, uruchom polecenie na wszystkich węzłach, podając tę samą nazwę użytkownika i hasło.

Aby wyłączyć uwierzytelnianie JMX w wierszu poleceń, użyj opcji „-e n”, jak w tym przykładzie:

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

Monitoruj za pomocą JConsole

Używaj JConsole (narzędzia zgodnego z JMX), aby zarządzać kontrolami stanu i przetwarzaniem statystyk oraz je monitorować. JConsole pozwala przeglądać statystyki JMX udostępniane przez Twoje serwery i wyświetlać je w interfejsie graficznym. Więcej informacji znajdziesz w artykule o korzystaniu z JConsole.

JConsole monitoruje atrybuty JMX (MB) oferowane przez JMX, korzystając z następującego adresu URL usługi:

service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi

Gdzie:

  • IP_address to adres IP serwera, który chcesz monitorować.
  • port_number to numer portu JMX serwera, który chcesz monitorować.

Aby na przykład monitorować serwer zarządzania, uruchom następujące polecenie (przy założeniu, że adres IP serwera to 216.3.128.12):

service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi

Pamiętaj, że ten przykład określa port 1099, który jest portem JMX serwera zarządzania. W przypadku innych portów przeczytaj artykuł o portach monitorowania JMX i interfejsu Management API.

Poniższa tabela zawiera ogólne statystyki JMX:

JMX MBeany Atrybuty JMX

Pamięć

HeapMemoryUsage

NonHeapMemoryUsage

Wykorzystanie

Monitorowanie za pomocą interfejsu API zarządzania

Edge udostępnia kilka interfejsów API, których możesz używać do sprawdzania usług na serwerach oraz do sprawdzania użytkowników, organizacji i wdrożeń. W tej sekcji opisujemy te interfejsy API.

Sprawdzaj usługę

Interfejs API zarządzania udostępnia kilka punktów końcowych do monitorowania i diagnozowania problemów z usługami. Te punkty końcowe obejmują:

Punkt końcowy Opis
/servers/self/up

Sprawdza, czy usługa jest uruchomiona. To wywołanie interfejsu API nie wymaga uwierzytelniania.

Jeśli usługa jest uruchomiona, ten punkt końcowy zwraca tę odpowiedź:

<ServerField>
  <Up>true</Up>
</ServerField>

Jeśli usługa nie jest uruchomiona, otrzymasz odpowiedź podobną do tej (w zależności od usługi i sposobu jej sprawdzenia):

curl: Failed connect to localhost:port_number; Connection refused
/servers/self

Zwraca informacje o usłudze, w tym:

  • Właściwości konfiguracji
  • Czas rozpoczęcia i czas zakończenia
  • Informacje o kompilacji, RPM i UUID
  • Wewnętrzna i wewnętrzna nazwa hosta oraz adres IP
  • Region i pod
  • <isUp> wskazującą, czy usługa jest uruchomiona.

To wywołanie interfejsu API wymaga uwierzytelnienia za pomocą danych logowania administratora Apigee.

Aby użyć tych punktów końcowych, wywołaj narzędzie, takie jak curl, za pomocą poleceń o takiej składni:

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]"

Gdzie:

  • host to adres IP serwera, który chcesz sprawdzić. Jeśli zalogujesz się na serwerze, możesz użyć „localhost”. W przeciwnym razie podaj adres IP serwera oraz nazwę użytkownika i hasło.
  • port_number to port interfejsu Management API dla serwera, który chcesz sprawdzić. Jest to inny port dla każdego typu komponentu. Na przykład port interfejsu Management API serwera zarządzania to 8080. Listę portów monitorowania interfejsu API zarządzania znajdziesz na stronie Porty monitorowania JMX i interfejsu Management API

Aby zmienić format odpowiedzi, możesz określić nagłówek Accept jako „application/json” lub „application/xml”.

Ten przykład pozwala sprawdzić stan routera na lokalnym hoście (port 8081):

curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"

Ten przykład zawiera informacje o procesorze wiadomości pod numerem 216.3.128.12 (port 8082):

curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password
  -H "Accept: application/xml"

Monitorowanie stanu użytkowników, organizacji i wdrożenia

Interfejs API zarządzania umożliwia monitorowanie użytkowników, organizacji i stanu wdrożenia serwerów proxy na serwerach zarządzania i procesorach wiadomości. W tym celu wykonaj następujące polecenia:

curl http://host:port_number/v1/users -u sysAdminEmail:password
curl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password

Gdzie port_number to kod 8080 dla serwera zarządzania lub 8082 dla procesora wiadomości.

To wywołanie wymaga uwierzytelnienia za pomocą nazwy użytkownika i hasła administratora systemu.

Serwer powinien zwracać stan „Wdrożono” w przypadku wszystkich wywołań. Jeśli to się nie uda, wykonaj te czynności:

  1. Poszukaj błędów w logach serwera. Logi znajdują się w tym miejscu:
    • Serwer zarządzania: opt/apigee/var/log/edge-management-server
    • Procesor wiadomości: opt/apigee/var/log/edge-message-processor
  2. Wyślij wywołanie do serwera, aby sprawdzić, czy działa prawidłowo.
  3. Usuń serwer z panelu ELB, a następnie uruchom go ponownie:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    Gdzie service_name to:

    • edge-management-server
    • edge-message-processor

Sprawdzanie stanu za pomocą polecenia apigee-service

Możesz rozwiązywać problemy z usługami Edge przy użyciu polecenia apigee-service po zalogowaniu się na serwerze, na którym działa usługa.

Aby sprawdzić stan usługi w apigee-service:

  1. Zaloguj się na serwerze i uruchom to polecenie:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    Gdzie service_name jest jednym z tych elementów:

    • Serwer zarządzania: edge-management-server
    • Procesor wiadomości: edge-message-processor
    • Postgres: edge-postgres-server
    • Qpid: edge-qpid-server
    • Router: edge-router

    Na przykład:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. Jeśli usługa nie jest uruchomiona, uruchom ją:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. Po ponownym uruchomieniu usługi sprawdź, czy działa. Możesz to zrobić za pomocą użytego wcześniej polecenia apigee-service status lub interfejsu Management API opisanego w artykule Monitorowanie za pomocą interfejsu Management API.

    Na przykład:

    curl -v http://localhost:port_number/v1/servers/self/up

    Gdzie port_number to port interfejsu API zarządzania dla usługi.

    W tym przykładzie zakładamy, że jesteś zalogowany na serwerze i możesz użyć „localhost” jako nazwy hosta. Aby zdalnie sprawdzić stan za pomocą interfejsu API zarządzania, musisz w wywołaniu interfejsu API podać adres IP serwera oraz podać nazwę użytkownika i hasło administratora systemu.

Monitorowanie Postgres

Postgres obsługuje kilka narzędzi, za pomocą których możesz sprawdzić jego stan. Narzędzia te opisano w kolejnych sekcjach.

Sprawdź organizacje i środowiska w Postgres

Możesz sprawdzić nazwy organizacji i środowisk, które zostały zarejestrowane na serwerze Postgres, uruchamiając to polecenie curl:

curl -v http://postgres_IP:8084/v1/servers/self/organizations

System powinien wyświetlić nazwę organizacji i środowiska.

Sprawdzanie stanu Analytics

Możesz sprawdzić stan serwerów analitycznych Postgres i Qpid, uruchamiając to polecenie curl:

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

System powinien wyświetlić stan powodzenia dla wszystkich serwerów analitycznych, jak pokazano w tym przykładzie:

{
  "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"
}

Baza danych PostgreSQL

W tej sekcji opisujemy techniki, których możesz używać do monitorowania bazy danych Postgres.

Użyj skryptu check_postgres.pl

Do monitorowania bazy danych PostgreSQL możesz użyć standardowego skryptu monitorowania check_postgres.pl. Więcej informacji znajdziesz na stronie http://bucardo.org/wiki/Check_postgres.

Zanim uruchomisz skrypt:

  1. W każdym węźle Postgres musisz zainstalować skrypt check_postgres.pl.
  2. Sprawdź, czy masz zainstalowany perl-Time-HiRes.x86_64 – moduł Perl, który implementuje minutniki o wysokiej rozdzielczości oraz liczniki czasu snu, czasu pozyskania i interwałów. Możesz go na przykład zainstalować za pomocą tego polecenia:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: zanim zaczniesz korzystać z pliku check_postgres.pl w CentOS w wersji 7, zainstaluj RPM perl-Data-Dumper.x86_64.

check_postgres.pl dane wyjściowe

Domyślne dane wyjściowe wywołań interfejsu API korzystające z check_postgres.pl są zgodne z Nagios. Po zainstalowaniu skryptu wykonaj te czynności:

  1. Sprawdź rozmiar bazy danych:
    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'
  2. Sprawdź liczbę połączeń przychodzących do bazy danych i porównaj ją z maksymalną dozwoloną liczbą połączeń:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. Sprawdź, czy baza danych jest uruchomiona i dostępna:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Sprawdź ilość miejsca na dysku:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. Sprawdź liczbę organizacji i środowiska zarejestrowanych w węźle 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

Uruchom sprawdzanie bazy danych

Możesz sprawdzić, czy w bazie danych PostgreSQL zostały utworzone odpowiednie tabele. Zaloguj się w bazie danych PostgreSQL za pomocą tego polecenia:

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

Następnie uruchom polecenie:

\d analytics."org.env.fact"

Sprawdź stan procesu postgres

Możesz sprawdzić interfejs API na maszynie Postgres, wywołując to polecenie curl:

curl -v http://postgres_IP:8084/v1/servers/self/health

To polecenie zwraca stan ACTIVE, gdy proces postgres jest aktywny. Jeśli proces Postgres nie jest uruchomiony, zwraca stan INACTIVE.

Zasoby Postgres

Dodatkowe informacje o monitorowaniu usługi Postgres znajdziesz w tych artykułach:

Apache Cassandra

Protokół JMX jest domyślnie włączony dla systemu Cassandra i zdalny dostęp JMX do Cassandra nie wymaga hasła.

Włącz uwierzytelnianie JMX dla Cassandra

Możesz włączyć uwierzytelnianie JMX w usłudze Cassandra. Po wykonaniu tej czynności konieczne będzie przekazanie nazwy użytkownika i hasła do wszystkich wywołań narzędzia węzła narzędzia.

Aby włączyć uwierzytelnianie JMX dla Cassandra:

  1. Utwórz i edytuj plik cassandra.properties:
    1. Edytuj plik /opt/apigee/customer/application/cassandra.properties. Jeśli plik nie istnieje, utwórz go.
    2. Dodaj do pliku te elementy:
      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
    3. Zapisz plik cassandra.properties.
    4. Zmień właściciela pliku na apigee:apigee, jak pokazano w tym przykładzie:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

    Więcej informacji o używaniu plików właściwości do ustawiania tokenów znajdziesz w artykule o konfigurowaniu Edge.

  2. Tworzenie i edytowanie jmx_auth.sh:
    1. Utwórz plik w tej lokalizacji, jeśli nie istnieje:
      /opt/apigee/customer/application/jmx_auth.sh
    2. Dodaj do pliku te właściwości:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. Zapisz plik jmx_auth.sh.
    4. Źródło pliku:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. Skopiuj i zmodyfikuj plik jmxremote.password:
    1. Skopiuj ten plik z katalogu $JAVA_HOME do /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
    2. Edytuj plik jmxremote.password i dodaj nazwę użytkownika oraz hasło JMX, korzystając z tej składni:
      JMX_USERNAME JMX_PASSWORD

      Gdzie JMX_USERNAME i JMX_PASSWORD to ustawiona wcześniej nazwa użytkownika i hasło JMX.

    3. Sprawdź, czy plik należy do użytkownika „apigee” i czy ma tryb pliku 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. Skopiuj i zmodyfikuj plik jmxremote.access:
    1. Skopiuj ten plik z katalogu $JAVA_HOME do /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
    2. Edytuj plik jmxremote.access i dodaj tę rolę:
      JMX_USERNAME readwrite
    3. Sprawdź, czy plik należy do użytkownika „apigee” i czy ma tryb pliku 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. Uruchom configure na urządzeniu Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Uruchom ponownie Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Powtórz ten proces we wszystkich pozostałych węzłach Cassandra.

Włącz szyfrowanie haseł JMX

Aby włączyć szyfrowanie haseł JMX, wykonaj te czynności:

  1. Otwórz plik source/conf/casssandra-env.sh.
  2. Usuń znacznik komentarza z tych wierszy w pliku:
    • 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"
  3. W wierszu poleceń wygeneruj hasze SHA1 wybranych haseł, wpisując echo -n 'Secret' | openssl dgst -sha1.
  4. Ustaw hasła dla nazw użytkowników z jmxremote.password.
  5. Po zaktualizowaniu pliku cassandra-env.sh przywróć plik tylko do odczytu.

Włącz JMX z SSL dla Cassandra

Włączenie protokołu JMX z protokołem SSL zapewnia dodatkowe bezpieczeństwo i szyfrowanie podczas komunikacji opartej na JMX z Cassandra. Aby włączyć protokół JMX z protokołem SSL, musisz przekazać firmie Cassandra klucz i certyfikat, co pozwoli na akceptowanie połączeń JMX opartych na SSL. Musisz też skonfigurować narzędzie węzła (i inne narzędzia komunikujące się z Cassandra przez JMX), aby obsługiwać protokół SSL.

JMX z obsługą SSL obsługuje zarówno hasła w formacie zwykłego tekstu, jak i zaszyfrowane hasła JMX.

Aby włączyć obsługę JMX z protokołem SSL dla platformy Cassandra, wykonaj następującą procedurę:

  1. Włącz JMX. W razie potrzeby włącz szyfrowanie haseł.
  2. Włącz uwierzytelnianie JMX dla Cassandra. jak opisano powyżej. Sprawdź, czy narzędzie węzła działa ze skonfigurowaną nazwą użytkownika i hasłem.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. Przygotuj magazyn kluczy i magazyn zaufania.

    • Magazyn kluczy powinien zawierać klucz oraz certyfikat i służy do konfigurowania serwera Cassandra. Jeśli magazyn kluczy zawiera wiele par kluczy, Cassandra używa pierwszej pary kluczy, aby włączyć SSL.

      Hasła do magazynu kluczy i klucza powinny być takie same (domyślne podczas generowania klucza za pomocą narzędzia Keytool).

    • Obiekt Truststore powinien zawierać tylko certyfikat i jest używany przez klienty (polecenia oparte na usłudze apigee lub narzędzie węzła) do łączenia się przez JMX.

    Po sprawdzeniu powyższych wymagań:

    1. Umieść plik magazynu kluczy w lokalizacji /opt/apigee/data/apigee-cassandra.
    2. Aby upewnić się, że plik magazynu kluczy może być możliwy do odczytu tylko przez użytkownika Apigee, wpisz
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
  4. Skonfiguruj serwer Cassandra dla JMX z protokołem SSL, wykonując te czynności:
    1. Zatrzymaj węzeł Cassandra, wpisując
      apigee-service apigee-cassandra stop
    2. Włącz SSL w Cassandra, otwierając plik /opt/apigee/customer/application/cassandra.properties i dodając ten wiersz:
      conf_cassandra-env_com.sun.management.jmxremote.ssl=true

      Plik powinien należeć do domeny apigee:apigee.

    3. Włącz konfigurację związaną z SSL w Cassandra w następujący sposób. Otwórz plik /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh i usuń znacznik komentarza z tych wierszy, zmieniając w razie potrzeby ścieżkę /opt/apigee/data/apigee-cassandra/keystore.node1 oraz hasło magazynu kluczy.
      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"
      Upewnij się, że plik należy do domeny apigee:apigee.
    4. Uruchom węzeł Cassandra, wpisując
      apigee-service apigee-cassandra start
  5. Skonfiguruj polecenia apigee-service Cassandra. Podczas uruchamiania poleceń apigee-service musisz ustawić określone zmienne środowiskowe, między innymi:
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    Istnieje kilka opcji konfigurowania apigee-service pod kątem uwierzytelniania JMX i SSL. Wybierz opcję na podstawie łatwości obsługi i stosowanych metod bezpieczeństwa.

    Opcja 1 (argumenty SSL zapisane w pliku)

    Ustaw te zmienne środowiskowe:

    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

    Utwórz plik w katalogu głównym użytkownika Apigee (/opt/apigee).

    $HOME/.cassandra/nodetool-ssl.properties

    Edytuj plik i dodaj w nim te wiersze:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Upewnij się, że plik trustore jest zrozumiały dla użytkownika Apigee.

    Uruchom to polecenie apigee-service. Jeśli kod działa bez błędów, konfiguracja jest prawidłowa.

    apigee-service apigee-cassandra ring

    Opcja 2 (argumenty SSL przechowywane w zmiennych środowiskowych)

    Ustaw te zmienne środowiskowe:

    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>

    Uruchom to polecenie apigee-service. Jeśli kod działa bez błędów, konfiguracja jest prawidłowa.

    apigee-service apigee-cassandra ring

    Opcja 3 (argumenty SSL przekazywane bezpośrednio do apigee-service)

    Uruchom dowolne polecenie apigee-service takie jak to. Nie musisz konfigurować żadnych zmiennych środowiskowych.

    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
  6. Skonfiguruj narzędzie węzła. Narzędzie Nodetool wymaga przekazania do niego parametrów JMX. Istnieją 2 sposoby konfigurowania narzędzia węzła pod kątem uruchamiania z użyciem pliku JMX z obsługą SSL. Odpowiednie instrukcje znajdują się w opcjach konfiguracji poniżej:

    Opcje różnią się sposobem, w jaki konfiguracje związane z SSL są przekazywane do narzędzia węzła. W obu przypadkach użytkownik korzystający z narzędzia nodetool powinien mieć uprawnienia do ODCZYTU pliku zaufania. Wybierz odpowiednią opcję na podstawie łatwości obsługi i stosowanych metod bezpieczeństwa.

    Więcej informacji o parametrach narzędzia węzła znajdziesz w dokumentacji DataStax.

    Opcja konfiguracji 1

    Utwórz plik w katalogu głównym narzędzia węzła uruchomionego przez użytkownika.

    $HOME/.cassandra/nodetool-ssl.properties

    Dodaj do tego pliku te wiersze:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Podana powyżej ścieżka magazynu zaufania powinna być dostępna dla każdego użytkownika korzystającego z narzędzia węzła.

    Uruchom polecenie nodetool, używając opcji --ssl.

    /opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

    Opcja konfiguracji 2

    Uruchom nodetool jako jedno polecenie z dodatkowymi parametrami wymienionymi poniżej.

    /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

Przywróć konfiguracje SSL

Jeśli chcesz przywrócić konfiguracje SSL omówione w powyższej procedurze, wykonaj te czynności:

  1. Zatrzymaj apigee-cassandra, wpisując
    apigee-service apigee-cassandra stop
  2. Usuń wiersz conf_cassandra-env_com.sun.management.jmxremote.ssl=true z pliku /opt/apigee/customer/application/cassandra.properties.
  3. Skomentuj następujące wiersze w języku: /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”
  4. Rozpocznij apigee-cassandra, wpisując
  5. apigee-service apigee-cassandra start
  6. Usuń zmienną środowiskową CASS_JMX_SSL, jeśli została ustawiona.

    unset CASS_JMX_SSL
  7. Sprawdź, czy działają polecenia oparte na apigee-service, takie jak ring, stop czy backup.
  8. Przestań używać przełącznika --ssl za pomocą narzędzia węzła

Wyłącz uwierzytelnianie JMX dla Cassandra

Aby wyłączyć uwierzytelnianie JMX dla Cassandra:

  1. Edytuj stronę /opt/apigee/customer/application/cassandra.properties
  2. Usuń z pliku ten wiersz:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Uruchom konfigurację w systemie Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Uruchom ponownie Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Powtórz ten proces we wszystkich pozostałych węzłach Cassandra.

Użyj JConsole: monitorowanie statystyk zadań

Aby monitorować atrybuty JMX (MB) oferowane przez JMX, użyj JConsole i tego adresu URL usługi:

service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi

Gdzie IP_address to adres IP serwera Cassandra.

Statystyki JMX Cassandra

JMX MBeany Atrybuty JMX

Rodziny kolumn/aplikacje/środowiska

Rodziny kolumn/aplikacje/organizacje

Rodziny kolumn/apprepo/apiproxy_revisions

Rodziny kolumn/aplikacje/apiproxies

Rodziny kolumn/audyt/audyt

Rodziny kolumn/audyt/ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

Zarządzanie węzłami klastra za pomocą narzędzia węzła

Narzędzie nodetool to interfejs wiersza poleceń dla Cassandra, który zarządza węzłami klastra. Narzędzie jest dostępne pod adresem /opt/apigee/apigee-cassandra/bin.

We wszystkich węzłach klastra Cassandra można wykonywać te wywołania:

  1. Ogólne informacje pierścieniowe (możliwe też w przypadku pojedynczego węzła Cassandra): poszukaj wszystkich węzłów „Góra” i „Normalnie”.
    nodetool [-u username -pw password] -h localhost ring

    Nazwę użytkownika i hasło musisz podać tylko wtedy, gdy masz włączone uwierzytelnianie JMX w systemie Cassandra.

    Dane wyjściowe tego polecenia wyglądają tak:

    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

  2. Ogólne informacje o węzłach (wywołanie na węzeł)
    nodetool [-u username -pw password]  -h localhost info

    Dane wyjściowe tego polecenia wyglądają tak:

    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
  3. Stan serwera thrift Server (interfejs API klienta obsługującego wyświetlanie)
    nodetool [-u username -pw password] -h localhost statusthrift

    Dane wyjściowe tego polecenia wyglądają tak:

    running

  4. Stan operacji strumieniowego przesyłania danych: obserwuj ruch w węzłach Casandra:
    nodetool [-u username -pw password] -h localhost netstats

    Dane wyjściowe tego polecenia wyglądają tak:

    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

Więcej informacji o narzędziu węzła znajdziesz w artykule Informacje o narzędziu nodetool.

Zasób Cassandra

Skorzystaj z tego adresu URL: http://www.datastax.com/docs/1.0/operations/monitoring.

Apache ZooKeeper

Sprawdź stan ZooKeeper

  1. Sprawdź, czy proces ZooKeeper jest uruchomiony. ZooKeeper zapisuje plik PID do opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Przetestuj porty ZooKeeper, aby upewnić się, że możesz nawiązać połączenie TCP z portami 2181 i 3888 na każdym serwerze ZooKeeper.
  3. Sprawdź, czy możesz odczytywać wartości z bazy danych ZooKeeper. Połącz się za pomocą biblioteki klienta ZooKeeper (lub /opt/apigee/apigee-zookeeper/bin/zkCli.sh) i odczytaj wartość z bazy danych.
  4. Sprawdź stan:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

Użyj 4-literowych słów z ZooKeeper

ZooKeeper można monitorować za pomocą małego zestawu poleceń (czteroliterowych słów) wysyłanych do portu 2181 za pomocą narzędzia netcat (nc) lub telnet.

Więcej informacji o poleceniach ZooKeeper znajdziesz w dokumentacji poleceń Apache ZooKeeper.

Na przykład:

  • srvr: zawiera pełne informacje o serwerze.
  • stat: zawiera krótkie informacje o serwerze i połączonych klientach.

Do portu ZooKeeper można wysyłać te polecenia:

  1. Uruchom czteroliterowe polecenie ruok, aby sprawdzić, czy serwer działa w stanie innym niż błąd. Pomyślna odpowiedź zwraca wartość „imok”.
    echo ruok | nc host 2181

    Zwroty:

    imok
  2. Uruchom czteroliterowe polecenie stat, aby wyświetlić listę wydajności serwera i statystyki połączonych klientów:
    echo stat | nc host 2181

    Zwroty:

    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
  3. Jeśli narzędzie netcat (nc) jest niedostępne, zamiast niego możesz użyć języka Python. Utwórz plik o nazwie zookeeper.py z następującą zawartością:
    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)

    Teraz uruchom te wiersze Pythona:

    python zookeeper.py 192.168.124.201 ruok
    python zookeeper.py 192.168.124.201 stat

Test na poziomie LDAP

Możesz monitorować OpenLDAP, aby sprawdzić, czy określone żądania są obsługiwane prawidłowo. Inaczej mówiąc, wyszukaj określone wyszukiwanie, które zwraca właściwy wynik.

  1. Użyj kodu ldapsearch (yum install openldap-clients), aby wysłać zapytanie do wpisu administratora systemu. Ten wpis służy do uwierzytelniania wszystkich wywołań interfejsu 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

    Pojawi się prośba o podanie hasła administratora LDAP:

    Enter LDAP Password:

    Po wpisaniu hasła zobaczysz odpowiedź w formularzu:

    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
  2. Sprawdź, czy serwer zarządzania jest nadal połączony z LDAP za pomocą tego polecenia:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Zwroty:

    {
      "emailId" : ADMIN,
      "firstName" : "admin",
      "lastName" : "admin"
    }

Możesz też monitorować pamięci podręczne OpenLDAP, co pomaga ograniczać liczbę przypadków uzyskania dostępu do dysku, a tym samym poprawia wydajność systemu. Monitorowanie, a następnie dostrajanie rozmiaru pamięci podręcznej na serwerze OpenLDAP, może znacznie wpłynąć na wydajność serwera katalogowego. Aby uzyskać informacje o pamięci podręcznej, możesz wyświetlić pliki dziennika (opt/apigee/var/log).