Jak monitorować

Ten dokument opisuje techniki monitorowania komponentów obsługiwanych przez wdrożenie lokalne Apigee Edge for Private Cloud.

Omówienie

Edge obsługuje kilka sposobów uzyskiwania informacji o usługach oraz sprawdzania ich stanu. W tabeli poniżej znajdziesz listę typów kontroli, które możesz przeprowadzać w przypadku poszczególnych kwalifikujących się usług:

Mgmt API
Komponent Wykorzystanie pamięci [JMX*] Sprawdzanie usługi Użytkownik/organizacja/ stan wdrożenia axstatus Sprawdzanie bazy danych Stan funkcji apigee-service apigee-monit**
Serwer zarządzania
procesor komunikatów
Router
Qpid
Postgres
Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji Więcej informacji

* Zanim zaczniesz używać JMX, musisz go włączyć, jak opisano w artykule Włączanie JMX.

** Usługa apigee-monit sprawdza, czy komponent działa, a jeśli nie, próbuje go ponownie uruchomić. Więcej informacji znajdziesz w artykule Automatyczne naprawianie błędów za pomocą apigee-monit.

Monitorowanie portów i plików konfiguracji

Każdy komponent obsługuje rozszerzenia do zarządzania w Javie (JMX) i wywołania interfejsu API do zarządzania na różnych portach. W tabeli poniżej znajdziesz porty JMX i Management API dla każdego typu serwera oraz lokalizacje plików konfiguracyjnych:

Komponent Port JMX Port interfejsu API zarządzania Lokalizacja pliku konfiguracji
Serwer zarządzania 1099 8080 $APIGEE_ROOT/customer/application/management-server.properties
procesor komunikatów 1101 8082 $APIGEE_ROOT/customer/application/message-processor.properties
Router 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

Monitorowanie komponentów za pomocą JMX

W sekcjach poniżej dowiesz się, jak używać JMX do monitorowania komponentów Edge.

Włączanie JMX

Aby włączyć JMX bez uwierzytelniania lub komunikacji SSL, wykonaj te czynności. Uwaga: w systemach produkcyjnych należy włączyć zarówno uwierzytelnianie szyfrowane, jak i SSL, aby zapewnić bezpieczeństwo.

  1. Zmodyfikuj odpowiedni plik konfiguracji (patrz Informacje o pliku konfiguracji). Utwórz plik konfiguracji, jeśli go nie ma.
    conf_system_jmxremote_enable=true
  2. Zapisz plik konfiguracji i upewnij się, że jego właścicielem jest apigee:apigee.
  3. Uruchom ponownie odpowiedni komponent Edge.
    apigee-service edge-management-server restart

Aby wyłączyć JMX, usuń właściwość conf_system_jmxremote_enable lub zmień jej wartość na false. Następnie ponownie uruchom odpowiedni komponent Edge.

Uwierzytelnianie w JMX

Edge for Private Cloud obsługuje uwierzytelnianie za pomocą hasła przy użyciu szczegółów przechowywanych w plikach. Aby zwiększyć bezpieczeństwo, możesz przechowywać hasła w postaci haszowanej.

  1. Aby włączyć uwierzytelnianie JMX w komponencie edge-*, zmodyfikuj odpowiedni plik konfiguracji (patrz Informacje o pliku konfiguracji). Utwórz plik konfiguracji, jeśli go nie ma:
    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
    Zapisz plik konfiguracji i upewnij się, że jego właścicielem jest apigee:apigee.
  2. Utwórz identyfikator SHA256 hasła:
    echo -n '' | openssl dgst -sha256
  3. Utwórz plik jmxremote.password z danymi logowania użytkownika JMX:
    1. Skopiuj z katalogu $JAVA_HOME do katalogu /opt/apigee/customer/application/<component>/ te pliki:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
    2. Zmień plik i dodaj nazwę użytkownika i hasło JMX za pomocą tej składni:
      USERNAME <HASH-PASSWORD>
    3. Upewnij się, że plik należy do użytkownika apigee i ma tryb 400:
      chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password
      chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
  4. Utwórz plik jmxremote.access z uprawnieniami użytkownika JMX:
    1. Skopiuj te pliki z katalogu $JAVA_HOME do katalogu /opt/apigee/customer/application/<component>/:
      
      cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
    2. Zmień plik i dodaj nazwę użytkownika JMX, a następnie uprawnienia (READONLY/READWRITE).
      USERNAME READONLY
    3. Upewnij się, że właścicielem pliku jest apigee, a tryb pliku to 400:
      chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password
      
      chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
  5. Uruchom ponownie odpowiedni komponent Edge:
    apigee-service edge-management-server restart

Aby wyłączyć uwierzytelnianie JMX, usuń właściwość conf_system_jmxremote_authenticate lub zmień jej wartość na false i ponownie uruchom odpowiedni komponent Edge.

SSL w JMX

Aby włączyć JMX z SSL w komponencie edge-*, wykonaj te czynności:

  1. Zmodyfikuj odpowiedni plik konfiguracji (patrz Informacje o pliku konfiguracji). Utwórz plik konfiguracji, jeśli go nie ma:
    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>
    Zapisz plik konfiguracji i upewnij się, że jest on własnością użytkownika apigee:apigee.
  2. Przygotuj magazyn kluczy zawierający klucz serwera i umieść go w ścieżce podanej w konfiguracji conf_system_javax_net_ssl_keystore powyżej. Upewnij się, że plik keystore jest czytelny dla apigee:apigee.
  3. Uruchom ponownie odpowiedni komponent Edge:
    apigee-service edge-management-server restart

Aby wyłączyć JMX oparty na protokole SSL, usuń właściwość conf_system_jmxremote_ssl lub zmień jej wartość na false. Zrestartuj odpowiedni komponent Edge.

Monitorowanie za pomocą Jconsole

Instrukcje monitorowania za pomocą jconsole są takie same jak opisane na stronie https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole.

Można dodać jeden wiersz, który mówi, że „jconsole musi być uruchamiany z hasłem zaufanej pamięci i zaufanej pamięci, jeśli SSL jest włączony dla JMX”. Informacje referencyjne: https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html

Monitorowanie za pomocą JConsole

Do zarządzania i monitorowania stanu oraz statystyk przetwarzania używaj narzędzia JConsole (kompatybilnego z JMX). Za pomocą JConsole możesz korzystać ze statystyk JMX udostępnianych przez serwery i wyświetlać je w interfejsie graficznym. Więcej informacji znajdziesz w artykule Korzystanie z JConsole.

Jeśli protokół SSL jest włączony w JMX, musisz uruchomić JConsole z hasłem do repozytorium zaufania. Zobacz korzystanie z JConsole.

JConsole używa tego adresu URL usługi do monitorowania atrybutów JMX (MBeans) oferowanych przez JMX:

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 polecenie podobne do tego (zakładając, że adres IP serwera to 216.3.128.12):

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

Zwróć uwagę, że w tym przykładzie podano port 1099, który jest portem JMX serwera zarządzania. Informacje o innych portach znajdziesz w artykule Porty monitorowania interfejsu JMX i interfejsu Management API.

Tabela poniżej zawiera ogólne statystyki JMX:

JMX MBeans Atrybuty JMX

Pamięć

HeapMemoryUsage

NonHeapMemoryUsage

Wykorzystanie

Odwołania do pliku konfiguracji

W poniższych sekcjach opisujemy zmiany, które mogą być konieczne w plikach konfiguracji komponentu Edge w przypadku konfiguracji związanych z JMX. Więcej informacji znajdziesz w artykule Porty monitorowania i pliki konfiguracji.

Konfiguracja JMX do dodania do odpowiedniego pliku konfiguracji komponentu

  • Włącz agenta JMX w komponencie Edge. Domyślnie ma wartość fałsz.
    conf_system_jmxremote_enable=true

Konfiguracje uwierzytelniania opartego na hasłach

  • Włącz uwierzytelnianie z użyciem hasła. Domyślnie ma wartość fałsz.
    conf_system_jmxremote_authenticate=true
  • Ścieżka do pliku. Powinny być własnością i dostępne do odczytu tylko dla użytkownika Apigee.
    conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
  • Ścieżka do pliku z hasłem. Powinny być własnością i dostępne do odczytu tylko dla użytkownika Apigee.
    conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
  • Włącz przechowywanie hasła w formacie zaszyfrowanym. Domyślnie ma wartość fałsz.
    conf_system_jmxremote_encrypted_auth=true

Konfiguracje JMX oparte na protokole SSL

  • Włącz SSL w przypadku komunikacji JMX. Domyślnie ma wartość fałsz.
    conf_system_jmxremote_ssl=true
  • Ścieżka do magazynu kluczy. Powinny być własnością i dostępne do odczytu tylko dla użytkownika Apigee.
    conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
  • Hasło magazynu kluczy:
    conf_system_javax_net_ssl_keystorepassword=changeme

Opcjonalne konfiguracje JMX

Wymienione wartości są wartościami domyślnymi i można je zmieniać.

  • Port JMX. Wartości domyślne znajdziesz w tabeli poniżej.
    conf_system_jmxremote_port=
  • Port JMX RMI. Domyślnie proces Java wybierze losowy port.
    conf_system_jmxremote_rmi_port=
  • Nazwa hosta dla stubów zdalnych. Domyślny adres IP localhost.
    conf_system_java_rmi_server_hostname=
  • Chroń rejestr JMX za pomocą protokołu SSL. Wartość domyślna to fałsz. Dotyczy tylko wtedy, gdy protokół SSL jest włączony.
    conf_system_jmxremote_registry_ssl=false

Monitorowanie za pomocą interfejsu Management API

Edge zawiera 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 opisaliśmy te interfejsy API.

Wykonywanie sprawdzania usługi

Interfejs Management API 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 działa. Ten 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 działa, otrzymasz odpowiedź podobną do tej: (w zależności od usługi i sposobu jej sprawdzania):

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 zakończenia
  • informacje o kompilacji, RPM i UUID;
  • Wewnętrzny i zewnętrzny adres IP oraz nazwa hosta
  • Region i podregion
  • Właściwość <isUp>, która wskazuje, czy usługa jest uruchomiona

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

Aby używać tych punktów końcowych, wywołaj narzędzie takie jak curl za pomocą poleceń, które używają tej 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 jesteś zalogowany na serwerze, możesz użyć „localhost”; w przeciwnym razie określ adres IP serwera, a także nazwę użytkownika i hasło.
  • port_number to port interfejsu Management API na serwerze, 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ę numerów portów interfejsu Management API, których możesz używać, znajdziesz w artykule Porty monitorowania JMX i Management API.

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

W tym przykładzie uzyskujemy stan routera na localhost (port 8081):

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

W tym przykładzie uzyskujemy informacje o procesorze wiadomości o adresie 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żytkownika, organizacji i wdrożenia

Za pomocą interfejsu Management API możesz monitorować użytkowników, organizacje i stan wdrożenia proxy na serwerach zarządzających oraz procesorach wiadomości. Aby to zrobić, wykonaj te 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 8080 w przypadku serwera zarządzania lub 8082 w przypadku procesora wiadomości.

Ta operacja wymaga uwierzytelnienia za pomocą nazwy użytkownika i hasła administratora systemu.

Serwer powinien zwracać stan „deployed” (wdrożono) w przypadku wszystkich wywołań. Jeśli te metody zawiodą, wykonaj te czynności:

  1. Sprawdź dzienniki serwera pod kątem błędów. Dzienniki znajdują się tutaj:
    • Serwer zarządzania: opt/apigee/var/log/edge-management-server
    • Procesor wiadomości: opt/apigee/var/log/edge-message-processor
  2. Aby sprawdzić, czy serwer działa prawidłowo, wyślij do niego żądanie.
  3. Usuń serwer z ELB, a następnie go uruchom 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

Gdy zalogujesz się na serwerze, na którym działa usługa, możesz rozwiązać problemy z usługami Edge, używając polecenia apigee-service.

Aby sprawdzić stan usługi za pomocą 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 jedną z tych wartości:

    • 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 działa, uruchom ją:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. Po ponownym uruchomieniu usługi sprawdź, czy działa ona prawidłowo, używając polecenia apigee-service status, którego używałeś(-aś) wcześniej, lub interfejsu Management API zgodnie z opisem 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 Management API usługi.

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

Monitorowanie Postgres

Postgres obsługuje kilka narzędzi, za pomocą których możesz sprawdzić stan bazy danych. Te narzędzia są opisane w dalszych sekcjach.

Sprawdzanie organizacji i środowisk w Postgres

Aby sprawdzić nazwy organizacji i środowiska, które są używane na serwerze Postgres, uruchom to polecenie curl:

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

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

Sprawdzanie stanu funkcji analitycznych

Stan serwerów analitycznych Postgres i Qpid możesz sprawdzić, wykonując to polecenie:curl

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

System powinien wyświetlić stan „Sukces” dla wszystkich serwerów Analytics, 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 opisaliśmy techniki, których możesz używać do monitorowania bazy danych Postgres.

Użyj skryptu check_postgres.pl

Aby monitorować bazę 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. Na każdym węźle Postgres musisz zainstalować skrypt check_postgres.pl.
  2. Upewnij się, że masz zainstalowany perl-Time-HiRes.x86_64, który jest modułem Perl implementującym interwałowy zegar, funkcję sleep, funkcję gettimeofday i funkcję gettimeofday. Możesz na przykład zainstalować je za pomocą tego polecenia:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: zanim użyjesz polecenia check_postgres.pl w CentOS 7, zainstaluj pakiet RPMperl-Data-Dumper.x86_64.

Wynik polecenia check_postgres.pl

Domyślne dane wyjściowe wywołań interfejsu API za pomocą funkcji 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. Sprawdzanie liczby przychodzących połączeń z bazą danych i porównywanie jej 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 działa i jest dostępna:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Sprawdź miejsce 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 środowisk zainstalowanych 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

Sprawdzanie bazy danych

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

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

Następnie uruchom:

\d analytics."org.env.fact"

Sprawdzanie stanu procesu postgres

Aby wykonać sprawdzanie interfejsu API na maszynie Postgres, uruchom 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 działa, zwraca stan INACTIVE.

Zasoby Postgres

Więcej informacji o monitorowaniu usługi Postgres znajdziesz w tych dokumentach:

Apache Cassandra

JMX jest domyślnie włączony w Cassandra, a zdalny dostęp JMX do Cassandra nie wymaga hasła.

Włączanie uwierzytelniania JMX w Cassandra

Możesz włączyć uwierzytelnianie JMX dla systemu Cassandra. Następnie musisz przekazać nazwę użytkownika i hasło do wszystkich wywołań narzędzia nodetool.

Aby włączyć uwierzytelnianie JMX w usłudze 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 informacje:
      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
    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 Jak skonfigurować Edge.

  2. tworzyć i edytować jmx_auth.sh:
    1. Jeśli plik nie istnieje, utwórz go w tym miejscu:
      /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 edytuj plik jmxremote.password:
    1. Skopiuj ten plik z katalogu $JAVA_HOME do /opt/apigee/customer/application/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
    2. Zmień plik jmxremote.password i dodaj nazwę użytkownika oraz hasło JMX, używając tej składni:
      JMX_USERNAME JMX_PASSWORD

      Gdzie JMX_USERNAMEJMX_PASSWORD to odpowiednio nazwa użytkownika i hasło JMX ustawione wcześniej.

    3. Upewnij się, że właścicielem pliku jest „apigee” i że tryb pliku to 400:
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
  4. Skopiuj i edytuj plik jmxremote.access:
    1. Skopiuj ten plik z katalogu $JAVA_HOME do /opt/apigee/customer/application/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access
      $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
    2. Edytuj plik jmxremote.access i dodaj tę rolę:
      JMX_USERNAME readwrite
    3. Upewnij się, że właścicielem pliku jest „apigee” i że tryb pliku to 400:
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
  5. Uruchom configure w 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 tę procedurę na wszystkich pozostałych węzłach Cassandra.

Włączanie szyfrowania haseł JMX

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

  1. Otwórz plik source/conf/casssandra-env.sh.
  2. 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 informacje:
      conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
    3. Zapisz plik cassandra.properties.
    4. Zmień właściciela pliku na apigee:apigee, jak w tym przykładzie:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  3. W wierszu poleceń wygeneruj hashe SHA1 wybranych haseł, wpisując:echo -n 'Secret' | openssl dgst -sha1
  4. Ustaw hasła dla nazwy użytkownika w $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password (utworzoną w poprzedniej sekcji).
  5. Uruchom konfigurowanie w 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 tę procedurę na wszystkich pozostałych węzłach Cassandra.

Włączanie JMX z SSL w przypadku Cassandra

Włączenie JMX z SSL zapewnia dodatkową ochronę i szyfrowanie komunikacji z Cassandra opartej na JMX. Aby włączyć JMX z SSL, musisz podać klucz i certyfikat do Cassandra, aby zaakceptować połączenia JMX z SSL. Musisz też skonfigurować nodetool (i inne narzędzia, które komunikują się z Cassandra za pomocą JMX) do obsługi SSL.

JMX z włączonym SSL obsługuje hasła JMX w postaci zwykłego tekstu i zaszyfrowane.

Aby włączyć JMX z SSL w Cassandra, wykonaj te czynności:

  1. Włącz JMX. W razie potrzeby włącz szyfrowanie hasła.
  2. Włącz uwierzytelnianie JMX dla Cassandra. zgodnie z opisem powyżej. Upewnij się, że nodetool działa z za pomocą skonfigurowanej nazwy użytkownika i hasła.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. Przygotuj magazyn kluczy i magazyn zaufania.

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

      Pamiętaj, że hasła do magazynu i klucza powinny być takie same (domyślne, gdy wygenerujesz klucz za pomocą polecenia keytool).

    • Sklep z zaufanymi certyfikatami powinien zawierać tylko certyfikat i jest używany przez klientów (polecenia oparte na usłudze apigee-service lub nodetool) do nawiązywania połączeń przez JMX.

    Po potwierdzeniu spełnienia powyższych wymagań:

    1. Umieść plik klucza w folderze /opt/apigee/customer/application/apigee-cassandra/.
    2. Upewnij się, że plik Keystore jest czytelny tylko dla użytkownika Apigee. Aby to zrobić, wpisz:
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
  4. Aby skonfigurować Cassandra na potrzeby JMX z SSL, wykonaj 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 te wiersze:
      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
    3. Zmień właściciela pliku na apigee:apigee, jak w tym przykładzie:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    4. Uruchom konfigurowanie w Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    5. Uruchom ponownie Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    6. Powtórz tę procedurę na wszystkich pozostałych węzłach Cassandra.
    7. Uruchom węzeł Cassandra, wpisując:
      apigee-service apigee-cassandra start
  5. Skonfiguruj polecenia apigee-service Cassandra. Podczas wykonywania poleceń apigee-service musisz ustawić określone zmienne środowiskowe, w tym:
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    Konfigurację apigee-service na potrzeby uwierzytelniania JMX i SSL można przeprowadzić na kilka sposobów. Wybierz opcję na podstawie użyteczności i stosowanych metod zabezpieczeń.

    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

    Dodaj do pliku 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 czytelny dla użytkownika Apigee.

    Uruchom to polecenie apigee-service. Jeśli działa bez błędów, oznacza to, że 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 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, np. 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. Konfigurowanie nodetool Narzędzie nodetool wymaga przekazania parametrów JMX. Istnieją 2 sposoby konfigurowania nodetool do działania z JMX z włączonym SSL, jak opisano w opcjach konfiguracji poniżej:

    Różnica między opcjami polega na sposobie przekazywania do nodetool konfiguracji związanych z protokołem SSL. W obu przypadkach użytkownik uruchamiający nodetool powinien mieć uprawnienia do odczytu pliku truststore. Wybierz odpowiednią opcję na podstawie użyteczności i stosowanych metod zabezpieczania.

    Więcej informacji o parametrach nodetool znajdziesz w dokumentacji DataStax.

    Opcja konfiguracji 1

    Utwórz plik w katalogu domowym użytkownika, który uruchomił nodetool.

    $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

    Ścieżka do zaufanego magazynu kluczy podana powyżej powinna być dostępna dla każdego użytkownika korzystającego z nodetool.

    Uruchom nodetool z opcją --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 pojedyncze 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

Przywracanie konfiguracji SSL

Jeśli chcesz przywrócić konfiguracje SSL opisane w powyżej opisanej 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. Zmień w komentarzu te wiersze w pliku /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. Aby rozpocząć apigee-cassandra, wpisz
  5. apigee-service apigee-cassandra start
  6. Usuń zmienną środowiskową CASS_JMX_SSL, jeśli była ustawiona.

    unset CASS_JMX_SSL
  7. Sprawdź, czy polecenia oparte na apigee-service, takie jak ring, stop, backup itp., działają prawidłowo.
  8. Przestań używać przełącznika --ssl w nodetool

Wyłączanie uwierzytelniania JMX w Cassandra

Aby wyłączyć uwierzytelnianie JMX w 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 konfigurowanie w 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 tę procedurę na wszystkich pozostałych węzłach Cassandra.

Korzystanie z JConsole: sprawdzanie statystyk zadań

Aby monitorować atrybuty JMX (MBeans) 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 MBeans Atrybuty 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

Zarządzanie węzłami klastra za pomocą polecenia nodetool

Narzędzie nodetool to interfejs wiersza poleceń Cassandra, który zarządza węzłami klastra. Narzędzie znajdziesz na stronie /opt/apigee/apigee-cassandra/bin.

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

  1. Ogólne informacje o pierścieniu (możliwe również w przypadku pojedynczego węzła Cassandra): sprawdź, czy dla wszystkich węzłów są widoczne stany „Up” (Włączony) i „Normal” (Normalny).
    nodetool [-u username -pw password] -h localhost ring

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

    Wynik tego polecenia wygląda 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

    Wynik tego polecenia wygląda 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 (obsługa klienta API)
    nodetool [-u username -pw password] -h localhost statusthrift

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

    running

  4. Stan operacji przesyłania strumieniowego danych: obserwuj ruch na węzłach Cassandra:
    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 nodetool znajdziesz w artykule Informacje o narzędziu nodetool.

Zasób Cassandra

Zapoznaj się z tą stroną: http://www.datastax.com/docs/1.0/operations/monitoring.

Monitorowanie Apache Qpid Broker-J

Qpid Broker-J możesz monitorować w konsoli zarządzania Qpid. W tej sekcji dowiesz się, jak uzyskać dostęp do konsoli i korzystać z podstawowych funkcji monitorowania. Więcej informacji o korzystaniu z konsoli zarządzania znajdziesz w dokumentacji Apache Qpid w sekcji konsoli zarządzania w przeglądarce.

Otwieranie konsoli zarządzania

Domyślny port konsoli zarządzania to 8090. Aby uzyskać dostęp do konsoli na tym domyślnym porcie, w przeglądarce przejdź do:

http://QPID_NODE_IP:8090

Aby zalogować się w konsoli, użyj domyślnych danych logowania ustawionych przez Apigee lub tych ustawionych w pliku konfiguracji Edge. Szczegółowe informacje znajdziesz w dokumentacji pliku konfiguracyjnego Edge.

Monitorowanie kolejek i wiadomości

W panelu nawigacyjnym po lewej stronie kliknij Java-Broker > virtualhosts > queues (Java-Broker > virtualhosts > kolejki). Wybierz kolejkę, aby wyświetlić jej szczegóły w głównej części interfejsu. W widoku szczegółów możesz zobaczyć atrybuty kolejki i statystyki, w tym informacje o wiadomościach dostarczonych, oczekujących w kolejce, szybkości dostarczania wiadomości itp.

Wyświetlanie i pobieranie plików dziennika

W panelu nawigacyjnym po lewej stronie kliknij Java-Broker > brokerloggers > logfile. W widoku szczegółów w głównym interfejsie możesz wyświetlać szczegóły plików dziennika i pobierać pliki dziennika.

Korzystanie z interfejsu API do zarządzania Qpid

Interfejs Apache Qpid Broker-J REST API umożliwia automatyzację zadań związanych z zarządzaniem i monitorowanie brokera. Szczegółowe informacje znajdziesz w dokumentacji interfejsu Apache Qpid Broker REST API.

Do monitorowania brokera możesz też używać narzędzi wiersza poleceń. Na przykład:

curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"

Apache ZooKeeper

Sprawdzanie stanu usługi ZooKeeper

  1. Upewnij się, że proces ZooKeeper jest uruchomiony. ZooKeeper zapisuje plik PID do opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Sprawdź porty ZooKeeper, aby upewnić się, że możesz nawiązać połączenie TCP z portami 2181 i 3888 na każdym serwerze ZooKeeper.
  3. Upewnij się, że możesz odczytać 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żywanie 4-literowych słów ZooKeeper

Serwer ZooKeeper można monitorować za pomocą niewielkiego zestawu poleceń (czteroliterowych słów), które są wysyłane na port 2181 za pomocą netcat (nc) lub telnetu.

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 polecenie ruok, aby sprawdzić, czy serwer działa bezbłędnie. Odpowiedź świadcząca o pomyślnym zakończeniu operacji zwraca „imok”.
    echo ruok | nc host 2181

    Zwraca:

    imok
  2. Aby wyświetlić statystyki wydajności serwera i połączonych klientów, uruchom polecenie składające się z 4 liter: stat:
    echo stat | nc host 2181

    Zwraca:

    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 netcat (nc) jest niedostępny, możesz użyć pythona jako alternatywy. Utwórz plik o nazwie zookeeper.py, który zawiera:
    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 kodu Pythona:

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

Test poziomu LDAP

Możesz monitorować OpenLDAP, aby sprawdzić, czy określone żądania są prawidłowo wyświetlane. Innymi słowy, sprawdź, czy konkretne wyszukiwanie zwraca właściwy wynik.

  1. Użyj identyfikatora ldapsearch (yum install openldap-clients), aby zapytać o dane 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

    Następnie pojawi się prośba o podanie hasła administratora LDAP:

    Enter LDAP Password:

    Po wpisaniu hasła zobaczysz odpowiedź w formie:

    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ądzający jest nadal połączony z LDAP za pomocą tego polecenia:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Zwraca:

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

Możesz też monitorować pamięci podręczne OpenLDAP, które pomagają zmniejszyć liczbę dostępów do dysku, a tym samym poprawić wydajność systemu. Monitorowanie i dostosowywanie rozmiaru pamięci podręcznej na serwerze OpenLDAP może mieć duży wpływ na wydajność serwera katalogów. Aby uzyskać informacje o pamięci podręcznej, możesz wyświetlić pliki dziennika (opt/apigee/var/log).