Jak monitorować

Ten dokument opisuje techniki monitorowania komponentów obsługiwanych przez środowisko lokalne wdrożenia Apigee Edge.

Omówienie

Edge obsługuje kilka sposobów uzyskiwania szczegółowych informacji o usługach oraz sprawdzania ich statusy. W tabeli poniżej znajdziesz rodzaje weryfikacji, które możesz przeprowadzić w przypadku każdej kwalifikującej się usługi usługa:

Mgmt API
Usługa Wykorzystanie pamięci [JMX*] Sprawdzenie usługi Stan użytkownika/organizacji/ wdrożenia stan axstatus Sprawdzanie 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

* Jeśli chcesz użyć standardu JMX, musisz go włączyć, opisane w artykule Włączanie JMX.

** Usługa apigee-monit sprawdza, czy komponent jest włączony i podejmuje próbę Jeśli tak nie jest, uruchom ją ponownie. Więcej informacji znajdziesz w artykule Samodzielna terapia 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 poniższej tabeli podano porty JMX i Management API dla poszczególnych typów serwerów:

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

Monitoruj za pomocą JMX

Procesy monitorowania serwera zarządzania, procesora wiadomości, Qpid i Postgres – użyj protokołu JMX. Jednak standard JMX jest domyślnie włączony tylko dla modelu Cassandra i domyślnie wyłączony dla wszystkich z innymi komponentami Edge. Dlatego musisz włączyć JMX oddzielnie dla każdego komponentu przed w celu ich monitorowania.

Uwierzytelnianie JMX nie jest domyślnie włączone. Uwierzytelnianie JMX możesz włączyć dla wszystkich W przypadku modelu Cassandra postępuj zgodnie z instrukcjami podanymi w Włącz uwierzytelnianie JMX dla Cassandra.

Włącz JMX

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

Aby włączyć JMX:

  1. Edytuj plik konfiguracji komponentu. Ten plik znajduje się pod adresem opt/apigee/edge-component_name/bin/start W wersji produkcyjnej środowisk, te pliki konfiguracji znajdują się na różnych komputerach.

    Wybierz jedną z tych 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 ma adres /opt/apigee/edge-management-server/bin/start

  2. Dodaj następujące com.sun.management.jmxremote opcje do: exec wiersza, który rozpoczyna komponent:
    -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 pobrać plik JMX swojej usługi Więcej informacji znajdziesz w artykule na temat portów monitorowania JMX i zarządzania interfejsem API.

    Aby na przykład włączyć JMX na serwerze zarządzania, dodaj poniższy ciąg do sekcji Zarządzanie Plik konfiguracji serwera:

    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ślamy port 1099 dla serwera zarządzania. Jak wspomnieliśmy wcześniej, każdy 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, uruchom to polecenie:

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

Uwierzytelnianie dla JMX nie jest domyślnie włączone. Uwierzytelnianie JMX możesz włączyć dla wszystkich zgodnie z opisem w sekcji Włączanie uwierzytelniania JMX. Aby włączyć JMX do uwierzytelniania Cassandra, zobacz Włącz uwierzytelnianie JMX dla Cassandra.

Włącz uwierzytelnianie JMX

Uwierzytelnianie JMX nie jest domyślnie włączone. Uwierzytelnianie JMX możesz włączyć dla wszystkich W przypadku modelu Cassandra postępuj zgodnie z instrukcjami podanymi w Włącz uwierzytelnianie JMX dla Cassandra

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

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

Gdzie:

  • component jest jedną z tych:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options określa:
    • -u username
    • -p password
    • -e [y|n] (włącz lub wyłącz)
  • config_file określa lokalizację pliku konfiguracji, w której zdefiniujesz następujące:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (jeśli nie jest ustawiony lub nie został przekazany z -p, pojawia się prośba)

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

Poniższy przykład pokazuje włączenie uwierzytelniania JMX na serwerze zarządzania przy użyciu polecenia opcje linii:

/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 używasz Edge na wielu węzłach, uruchom polecenie na wszystkich węzłach, określając nazwa użytkownika i hasło.

Aby wyłączyć uwierzytelnianie JMX w wierszu poleceń, użyj polecenia „-e n” w następujący sposób: przykład pokazuje:

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

Monitorowanie za pomocą JConsole

Używaj JConsole (narzędzia zgodnego z JMX) do zarządzania kontrolami stanu i statystykami procesów oraz ich monitorowanie. JConsole pozwala przeglądać statystyki JMX udostępniane przez Twoje serwery i wyświetlać je graficzny. Więcej informacji: Korzystanie z JConsole.

JConsole używa poniższego 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, z którym chcesz się połączyć monitorowania.

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

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

W tym przykładzie określono port 1099, który jest portem JMX serwera zarządzania. Inne Więcej informacji znajdziesz w artykule na temat portów monitorowania JMX i zarządzania interfejsem API.

Poniższa tabela zawiera ogólne statystyki JMX:

MBeanse JMX Atrybuty JMX

Pamięć

HeapMemoryUsage

NonHeapMemoryUsage

Wykorzystanie

Monitorowanie za pomocą interfejsu Management API

Edge zawiera kilka interfejsów API, których możesz używać do sprawdzania usług na swoich serwerach, a także sprawdzić użytkowników, organizacje i wdrożenia. W tej sekcji opisano te interfejsy API.

Przeprowadzanie kontroli usługi

Interfejs Management API udostępnia kilka punktów końcowych do monitorowania i diagnozowania problemów usług Google. Te punkty końcowe to między innymi:

Punkt końcowy Opis
/servers/self/up

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

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 typu 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 działania
  • Informacje o kompilacji, RPM i UUID
  • Wewnętrzna i zewnętrzna nazwa hosta oraz adres IP
  • Region i pod
  • 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 korzystają z metody ta składnia:

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ć. Po zalogowaniu się serwera, możesz użyć elementu „localhost”, W przeciwnym razie podaj również adres IP serwera w polu nazwy użytkownika i hasła.
  • port_number to port interfejsu API zarządzania dla serwera, który chcesz sprawdzić. To jest inny port dla każdego typu komponentu. Na przykład serwer zarządzania Port interfejsu API zarządzania to port 8080. Listę numerów portów interfejsu Management API, które mają być użyte, znajdziesz w artykule Porty monitorowania JMX i Management API

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

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

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

Poniższy przykład pokazuje informacje o procesorze wiadomości na porcie 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

Za pomocą interfejsu API zarządzania możesz monitorować stan użytkowników, organizacji i wdrożenia swojego serwery proxy na serwerach zarządzania i w procesorach wiadomości, uruchamiając 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 8080 w przypadku serwera zarządzania lub 8082 dla wiadomości Procesor.

To wywołanie wymaga uwierzytelnienia przy użyciu nazwy użytkownika administratora systemu i hasła.

Serwer powinien zwrócić komunikat „deployed” (wdrożony). dla wszystkich połączeń. Jeśli to się nie uda, wykonaj te czynności:

  1. Poszukaj błędów w logach serwera. Dzienniki znajdują się pod adresem:
    • Serwer zarządzania: opt/apigee/var/log/edge-management-server
    • Procesor wiadomości: opt/apigee/var/log/edge-message-processor
  2. Wykonaj wywołanie do serwera, aby sprawdzić, czy działa on prawidłowo.
  3. Usuń serwer z narzędzia 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

Problemy z usługami Edge możesz rozwiązać za pomocą polecenia apigee-service. użytkownik zalogował 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 następujące polecenie:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    Gdzie service_name to jeden 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, korzystając z używane wcześniej polecenie apigee-service status lub przy użyciu interfejsu Management API opisane w artykule Monitorowanie za pomocą interfejsu API zarządzania.

    Na przykład:

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

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

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

Monitorowanie Postgres

Postgres obsługuje kilka narzędzi, których możesz używać do sprawdzania jego stanu. Te narzędzia są opisane w dalszej części tego artykułu.

Sprawdzanie organizacji i środowisk w Postgres

Możesz sprawdzić nazwy organizacji i środowiska 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 statystyk

Możesz sprawdzić stan serwerów analityki Postgres i Qpid, wydając następujące polecenie Polecenie curl:

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

System powinien wyświetlać stan powodzenia wszystkich serwerów analitycznych, jak w przykładzie poniżej programy:

{
  "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 Postgres w bazie danych.

Użyj skryptu check_postgres.pl

Aby monitorować bazę danych PostgreSQL, możesz użyć standardowego skryptu monitorowania, check_postgres.pl Więcej informacji: http://bucardo.org/wiki/Check_postgres.

Przed uruchomieniem skryptu:

  1. Musisz zainstalować skrypt check_postgres.pl w każdym węźle Postgres.
  2. Upewnij się, że masz zainstalowany perl-Time-HiRes.x86_64 – moduł Perl, który uruchamia alarmy o wysokiej rozdzielczości, liczniki czasu uśpienia, gettimeofday i interwałów. Na przykład: w którym można go zainstalować, używając tego polecenia:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: zanim zaczniesz korzystać z pliku check_postgres.pl w CentOS 7, zainstaluj perl-Data-Dumper.x86_64 obr./min.

check_postgres.pl

Domyślnym wynikiem wywołań interfejsu API korzystających z metody check_postgres.pl jest Nagios są zgodne. 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ównuje ją z maksymalną dozwoloną liczbą połączenia:
    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

Uruchamianie kontroli bazy danych

Możesz sprawdzić, czy w bazie danych PostgreSQL utworzono odpowiednie tabele. Zaloguj się w PostgreSQL w bazie danych, korzystając z tego polecenia:

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

Następnie uruchom polecenie:

\d analytics."org.env.fact"

Sprawdzanie stanu procesu postgres

Aby przeprowadzić testy interfejsu API na maszynie Postgres, wywołaj curl polecenie:

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 został uruchomiony. Zwraca stan INACTIVE.

Zasoby Postgres

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

Apache Cassandra,

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

Włącz uwierzytelnianie JMX dla Cassandra

Uwierzytelnianie JMX możesz włączyć dla Cassandra. Następnie konieczne będzie wykonanie tych czynności: przekazać nazwę użytkownika i hasło do wszystkich wywołań narzędzia Nodetool.

Aby włączyć uwierzytelnianie JMX dla systemu 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, zgodnie z poniższym przykładem:
      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. Tworzenie i edytowanie zasady jmx_auth.sh:
    1. Jeśli plik nie istnieje, utwórz go w tej lokalizacji:
      /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 poniższy 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 JMX oraz hasło przy użyciu tej składni:
      JMX_USERNAME JMX_PASSWORD

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

    3. Sprawdź, czy plik należy do „apigee” oraz że tryb pliku to 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. Skopiuj i edytuj plik jmxremote.access:
    1. Skopiuj poniższy 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 „apigee” oraz że tryb pliku to 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. Uruchom configure w systemie 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 hasła 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 obok nazwy użytkownika w jmxremote.password.
  5. Po aktualizacji zmień z powrotem plik cassandra-env.sh na tryb tylko do odczytu.

Włącz JMX z SSL dla Cassandra

Włączenie JMX z SSL zapewnia dodatkowe zabezpieczenia i szyfrowanie komunikacji opartej na JMX z Cassandra. Aby włączyć JMX z SSL, musisz dostarczyć Cassandra klucz i certyfikat akceptuje połączenia JMX oparte na SSL. Konieczne jest również skonfigurowanie narzędzia Nodetool (oraz wszystkich innych narzędzi, komunikacji z Cassandra przez JMX) dla SSL.

Zgodny z protokołem SSL protokół JMX obsługuje zarówno zwykły tekst, jak i zaszyfrowane hasła JMX.

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

  1. Włącz JMX. W razie potrzeby włącz szyfrowanie hasła.
  2. Włącz uwierzytelnianie JMX dla Cassandra. jak opisano powyżej. Sprawdź, czy narzędzie węzłów działa ze skonfigurowanym nazwa użytkownika i hasło.
    /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 i 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 (wartość domyślna podczas generowania klucza za pomocą narzędzia Keytool).

    • Magazyn zaufania powinien zawierać tylko certyfikat i jest używany przez klienty (oparte na usłudze Apigee lub narzędzia nodetool) do łączenia się przez JMX.

    Po sprawdzeniu powyższych wymagań:

    1. Umieść plik magazynu kluczy w obszarze /opt/apigee/data/apigee-cassandra.
    2. Sprawdź, czy plik magazynu kluczy jest czytelny dla użytkownika Apigee, wpisując
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
  4. Aby skonfigurować Cassandra dla JMX z SSL, wykonaj te czynności:
    1. Zatrzymaj węzeł Cassandra, wpisując
      apigee-service apigee-cassandra stop
    2. Włącz protokół SSL w systemie Cassandra przez otwieram plik /opt/apigee/customer/application/cassandra.properties i dodaj następujący 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 w kolejnych wierszach, zmieniając ścieżkę /opt/apigee/data/apigee-cassandra/keystore.node1 i w razie potrzeby hasło do 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 Cassandra apigee-service. Podczas uruchamiania należy ustawić określone zmienne środowiskowe Polecenia apigee-service, w tym te poniżej:
    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 skonfigurowania apigee-service pod kątem uwierzytelniania JMX i SSL. Wybierz opcję na podstawie łatwości obsługi i stosowanych przez Ciebie praktyk dotyczących bezpieczeństwa.

    Opcja 1 (argumenty SSL przechowywane 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 do niego 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 użytkownik Apigee może odczytać pliktrustore.

    Uruchom to polecenie apigee-service. Jeśli uruchomi się 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 uruchomi się bez błędów, konfiguracja jest prawidłowa.

    apigee-service apigee-cassandra ring

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

    Uruchom dowolne polecenie apigee-service podobne do tego poniżej. 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łów. Nodetool wymaga przekazania do niego parametrów JMX. Są 2 sposoby możesz skonfigurować narzędzie nodetool do pracy z komponentem JMX z włączonym protokołem SSL, jak to opisano w opcje konfiguracji poniżej:

    Opcje różnią się sposobem, w jaki konfiguracje związane z SSL są przekazywane do narzędzia węzłów. 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 przez Ciebie praktyk dotyczących bezpieczeństwa.

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

    Opcja konfiguracji 1

    Utwórz plik w katalogu głównym użytkownika, na którym uruchomiono narzędzie 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

    Podana powyżej ścieżka do magazynu zaufania powinna być dostępna dla każdego uruchomionego użytkownika 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 musisz przywrócić konfiguracje SSL opisane w procedurze wykonaj te czynności:

  1. Zatrzymaj apigee-cassandra, wpisując
    apigee-service apigee-cassandra stop
  2. Usuń linię conf_cassandra-env_com.sun.management.jmxremote.ssl=true z plik /opt/apigee/customer/application/cassandra.properties.
  3. Zmień w komentarze te wiersze w dokumencie /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 polecenia oparte na apigee-service, takie jak ring, stop, backup i inni działają.
  8. Przestań używać przełącznika --ssl za pomocą narzędzia węzłów

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. Skonfiguruj uruchomienie 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żywanie JConsole: monitorowanie statystyk zadań

Użyj JConsole i poniższego adresu URL usługi, aby monitorować atrybuty JMX (MBeans) oferowane przez JMX:

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

Gdzie IP_address to adres IP serwera Cassandra.

Statystyki JMX Cassandra

MBeanse JMX 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

Używanie narzędzia nodetool do zarządzania węzłami klastra

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

Poniższe wywołania można wykonywać we wszystkich węzłach klastra Cassandra:

  1. Ogólne informacje o dzwonku (możliwe również dla pojedynczego węzła Cassandra): poszukaj „W górę” i „Normalna” dla wszystkich węzłów.
    nodetool [-u username -pw password] -h localhost ring

    Nazwa użytkownika i hasło musisz podać tylko wtedy, gdy włączono uwierzytelnianie JMX dla Cassandra.

    Dane wyjściowe powyższego 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łania na węzeł)
    nodetool [-u username -pw password]  -h localhost info

    Dane wyjściowe powyższego 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 (interfejs API klienta wyświetlania).
    nodetool [-u username -pw password] -h localhost statusthrift

    Dane wyjściowe powyższego polecenia wyglądają tak:

    running
  4. Stan operacji strumieniowania danych: obserwuj ruch w węzłach Cassandra:
    nodetool [-u username -pw password] -h localhost netstats

    Dane wyjściowe powyższego 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 Nodetool 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ź status ZooKeeper

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

Używaj 4-literowych słów ZooKeeper

ZooKeeper można monitorować za pomocą niewielkiego zestawu poleceń (czteroliterowych słów), które są wysyłane do przez port 2181 przy użyciu 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: wyświetla zwięzłe 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. O pomyślna odpowiedź zwraca „imok”.
    echo ruok | nc host 2181

    Zwraca:

    imok
  2. Uruchom czteroliterowe polecenie stat, aby wyświetlić listę wydajności serwera statystyki klientów:
    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 parametr netcat (nc) jest niedostępny, zamiast niego możesz użyć Pythona. Utwórz plik o nazwie zookeeper.py, która 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 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 zobaczyć, czy konkretne żądania są obsługiwane prawidłowo. W inne słowa, poszukaj konkretnego wyszukiwania, które zwraca właściwy wynik.

  1. Aby wysłać zapytanie do wpisu, użyj reguły ldapsearch (yum install openldap-clients) 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:

    Gdy wpiszesz hasło, zobaczysz odpowiedź w formie formularza:

    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, używając 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, co pomaga ograniczyć liczbę dostępu do dysku a tym samym zwiększyć wydajność systemu. Monitorowanie i dostrajanie rozmiaru pamięci podręcznej w Serwer OpenLDAP może mieć znaczny wpływ na wydajność serwera katalogowego. Możesz wyświetlić dziennik (opt/apigee/var/log) w celu uzyskania informacji o pamięci podręcznej.