Ten dokument opisuje techniki monitorowania komponentów obsługiwanych przez lokalne wdrożenie Apigee Edge dla Private Cloud.
Przegląd
Edge obsługuje kilka sposobów uzyskiwania informacji o usługach, a także sprawdzania ich stanu. W tej tabeli znajdziesz listę typów kontroli, które możesz przeprowadzić w przypadku każdej kwalifikującej się usługi:
Interfejs API Mgmt | |||||||
Komponent | Wykorzystanie pamięci [JMX*] | Kontrola stanu usługi | Stan wdrożenia użytkownika / organizacji | axstatus | Sprawdzenie 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 korzystać z JMX, musisz go włączyć zgodnie z opisem w sekcji Włączanie JMX. ** Usługa |
Porty i pliki konfiguracji monitorowania
Każdy komponent obsługuje na różnych portach wywołania monitorowania interfejsu API zarządzania Javą (JMX) i interfejsu Management API. W tabeli poniżej znajdziesz listę portów JMX i interfejsu Management API dla każdego typu serwera oraz lokalizacji plików konfiguracji:
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 |
Używanie JMX do monitorowania komponentów
W poniższych sekcjach opisano, jak za pomocą JMX monitorować komponenty Edge.
Włącz JMX
Aby włączyć JMX bez uwierzytelniania lub komunikacji opartej na SSL, wykonaj poniższe czynności. Uwaga: ze względów bezpieczeństwa w systemach produkcyjnych zarówno szyfrowane uwierzytelnianie, jak i protokół SSL powinny być włączone.
- Zmodyfikuj odpowiedni plik konfiguracji (patrz
dokumentacja pliku konfiguracji). Utwórz plik konfiguracji, jeśli nie istnieje.
conf_system_jmxremote_enable=true
- Zapisz plik konfiguracji i upewnij się, że należy on do domeny
apigee:apigee
. - Ponownie uruchom 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 na podstawie hasła z wykorzystaniem danych przechowywanych w plikach. Dla większego bezpieczeństwa możesz przechowywać hasła jako hasz.
- Aby włączyć uwierzytelnianie JMX w komponencie Edge-*, edytuj odpowiedni plik konfiguracji (patrz
informacje o pliku konfiguracji). Jeśli plik konfiguracji nie istnieje, utwórz go:
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 sprawdź, czy należy do domenyapigee:apigee
. - Utwórz algorytm SHA256 hasła:
echo -n '
' | openssl dgst -sha256 - Utwórz plik
jmxremote.password
z danymi logowania użytkownika JMX:- Skopiuj te pliki z katalogu
$JAVA_HOME
do katalogu/opt/apigee/customer/application/<component>/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- Edytuj plik i dodaj nazwę użytkownika oraz hasło JMX, używając następującej składni:
USERNAME <HASH-PASSWORD>
- Sprawdź, czy plik należy do domeny
apigee
i czy tryb pliku to 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- Skopiuj te pliki z katalogu
- Utwórz plik
jmxremote.access
z uprawnieniami użytkownika JMX:- Skopiuj następujące 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
- Edytuj plik i dodaj swoją nazwę użytkownika JMX wraz z uprawnieniami (READONLY/READWRITE)
USERNAME READONLY
- Sprawdź, czy plik należy do domeny
apigee
i czy 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
- Skopiuj następujące pliki z katalogu $JAVA_HOME do katalogu
- Ponownie uruchom odpowiedni komponent Edge:
apigee-service edge-management-server restart
Aby wyłączyć uwierzytelnianie JMX, usuń właściwość conf_system_jmxremote_authenticate
lub zmień wartość na false
i uruchom ponownie odpowiedni komponent Edge.
SSL w JMX
Aby włączyć protokół JMX oparty na protokole SSL w komponencie Edge-*:
- Zmień odpowiedni plik konfiguracji (patrz
informacje o pliku konfiguracji). Jeśli nie istnieje, utwórz plik konfiguracji:
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 sprawdź, czy należy do domenyapigee:apigee
. - Przygotuj magazyn kluczy zawierający klucz serwera i umieść go w ścieżce podanej w konfiguracji
conf_system_javax_net_ssl_keystore
powyżej. Zadbaj o to, by plik magazynu kluczy był możliwy do odczytu przezapigee:apigee
. - Ponownie uruchom 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ń wartość na false
. Ponownie uruchom odpowiedni komponent Edge.
Monitorowanie przez konsolę Jconsole
Instrukcje monitorowania przez jconsole pozostają takie same jak opisane na stronie https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole.
Można dodać jeden wiersz: „Jeśli protokół SSL jest włączony dla interfejsu JMX, jconsole musi zostać uruchomiony przy użyciu hasła truststore i Truststore”. Więcej informacji: https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.htmlMonitoruj za pomocą JConsole
Używaj JConsole (narzędzia zgodnego z JMX), aby zarządzać kontrolami stanu i statystykami przetwarzania oraz je monitorować. Dzięki JConsole możesz wykorzystywać statystyki JMX udostępniane przez Twoje serwery i wyświetlać je w interfejsie graficznym. Więcej informacji znajdziesz w artykule o używaniu JConsole.
Jeśli protokół SSL jest włączony dla JMX, musisz uruchomić JConsole od hasła do magazynu zaufania i hasła do tego magazynu. Zapoznaj się z sekcją o używaniu JConsole.
JConsole monitoruje atrybuty JMX (MBeans) oferowane przez JMX przy użyciu tego 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. Informacje o innych portach znajdziesz w artykule na temat portów monitorowania JMX i interfejsu Management API.
Ogólna tabela zawiera ogólne statystyki JMX:
JMX MBean | Atrybuty JMX |
---|---|
Pamięć |
HeapMemoryUsage |
NonHeapMemoryUsage |
|
Wykorzystanie |
|
Dokumentacja pliku konfiguracji
W poniższych sekcjach opisano zmiany, które mogą być konieczne w przypadku plików konfiguracji komponentów Edge w przypadku konfiguracji związanych z JMX. Więcej informacji znajdziesz w artykule o monitorowaniu portów i plików konfiguracji.
Konfiguracja JMX, która należy dodać do pliku konfiguracji odpowiedniego komponentu
- Włącz agenta JMX w komponencie brzegowym. Domyślnie fałsz.
conf_system_jmxremote_enable=true
Konfiguracje uwierzytelniania opartego na haśle
- Włącz uwierzytelnianie oparte na haśle. Domyślnie fałsz.
conf_system_jmxremote_authenticate=true
- Ścieżka dostępu do pliku. Powinna być własnością tylko użytkownika Apigee i może być odczytywana tylko przez użytkownika.
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- Ścieżka do pliku z hasłami. Powinna być własnością tylko użytkownika Apigee i może być odczytywana tylko przez użytkownika.
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- Włącz przechowywanie haseł w formacie zaszyfrowanym. Domyślnie fałsz.
conf_system_jmxremote_encrypted_auth=true
Konfiguracje JMX opartego na protokole SSL
- Włącz SSL w komunikacji JMX. Domyślnie fałsz.
conf_system_jmxremote_ssl=true
- Ścieżka do magazynu kluczy. Powinna być własnością tylko użytkownika Apigee i może być odczytywana tylko przez użytkownika.
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
Podane wartości są wartościami domyślnymi, które można zmieniać.
- Port JMX. Wartości domyślne znajdują się w tabeli poniżej.
conf_system_jmxremote_port=
- Port JMX RMI Domyślnie proces Java wybiera losowy port.
conf_system_jmxremote_rmi_port=
- Nazwa hosta zdalnych odcinków. Domyślny adres IP lokalnego hosta.
conf_system_java_rmi_server_hostname=
- Chroń rejestr JMX za pomocą SSL. Wartość domyślna to fałsz. Ma zastosowanie tylko wtedy, gdy jest włączony protokół SSL.
conf_system_jmxremote_registry_ssl=false
Monitorowanie za pomocą interfejsu Management API
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ługi
Interfejs API zarządzania udostępnia kilka punktów końcowych do monitorowania i diagnozowania problemów z usługami. Są to między innymi:
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:
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ń o następującej 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ć. Po zalogowaniu się na serwerze możesz użyć polecenia „localhost”. W przeciwnym razie podaj adres IP serwera oraz nazwę użytkownika i hasło.
- port_number to port interfejsu API zarządzania dla serwera, który chcesz sprawdzić. Jest to inny port dla każdego typu komponentu. Na przykład port interfejsu API zarządzania serwerem zarządzania to 8080. Listę portów interfejsu API zarządzania, których chcesz używać, znajdziesz w artykule o portach 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 uzyskać 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 w formacie 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 serwerów proxy na serwerach zarządzania i procesorach wiadomości, uruchamiając następujące polecenia:
curl http://host:port_number/v1/users -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
Gdzie port_number to kod 8080 dla serwera zarządzania lub 8082 w przypadku procesora wiadomości.
To wywołanie wymaga uwierzytelnienia przy użyciu nazwy użytkownika i hasła administratora systemu.
Serwer powinien zwracać stan „deployed” (wdrożono) w przypadku wszystkich wywołań. Jeśli to się nie uda, wykonaj te czynności:
- Sprawdź, czy w dziennikach serwera nie ma błędów. Logi znajdują się tutaj:
- Serwer zarządzania:
opt/apigee/var/log/edge-management-server
- Procesor wiadomości:
opt/apigee/var/log/edge-message-processor
- Serwer zarządzania:
- Wyślij wywołanie do serwera, aby sprawdzić, czy działa on prawidłowo.
- Usuń serwer z ELB, a następnie uruchom go ponownie:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
Gdzie service_name jest:
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 za pomocą apigee-service
:
- Zaloguj się na serwerze i uruchom to polecenie:
/opt/apigee/apigee-service/bin/apigee-service service_name status
Gdzie service_name to jedna 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
- Serwer zarządzania:
- Jeśli usługa nie jest uruchomiona, uruchom ją:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- 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 przy użyciu 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 użytkownik jest zalogowany na serwerze i może użyć „localhost” jako nazwy hosta. Aby zdalnie sprawdzić stan za pomocą interfejsu API zarządzania, musisz podać adres IP serwera oraz podać w wywołaniu interfejsu API 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. Te narzędzia zostały opisane 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
Stan serwerów analitycznych Postgres i Qpid możesz sprawdzić, 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 sukcesu 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
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:
- W każdym węźle Postgres musisz zainstalować skrypt check_postgres.pl.
- Zainstaluj
perl-Time-HiRes.x86_64
– moduł Perl, który implementuje minutniki o wysokiej rozdzielczości oraz liczniki czasu na temat snu, pory dnia i interwałów. Możesz na przykład zainstalować ją za pomocą tego polecenia:
yum install perl-Time-HiRes.x86_64
- CentOS 7: zanim zaczniesz używać pliku check_postgres.pl w CentOS w wersji 7, zainstaluj RPM
perl-Data-Dumper.x86_64
.
dane wyjściowe check_postgres.pl
Domyślnym wynikiem wywołań interfejsu API z użyciem check_postgres.pl
jest zgodność z Nagios. Po zainstalowaniu skryptu wykonaj te czynności:
- 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'
- 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
- 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
- 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%'
- 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ę do bazy 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"
Sprawdzanie stanu procesu postgres
Aby przeprowadzić testy interfejsu API na maszynie Postgres, wywołaj 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:
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
Apache Cassandra
Protokół JMX jest domyślnie włączony dla systemu Cassandra, a zdalny dostęp JMX do Cassandra nie wymaga hasła.
Włącz uwierzytelnianie JMX w systemie Cassandra
Możesz włączyć uwierzytelnianie JMX w systemie Cassandra. Gdy to zrobisz, będziesz musiał podawać nazwę użytkownika i hasło w przypadku wszystkich wywołań narzędzia nodetool.
Aby włączyć uwierzytelnianie JMX w systemie Cassandra:
- Utwórz i edytuj plik
cassandra.properties
:- Edytuj plik
/opt/apigee/customer/application/cassandra.properties
. Jeśli plik nie istnieje, utwórz go. - 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
- Zapisz plik
cassandra.properties
. - 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.
- Edytuj plik
- Tworzenie i edytowanie zbioru danych
jmx_auth.sh
:- Jeśli plik nie istnieje, utwórz go w tej lokalizacji:
/opt/apigee/customer/application/jmx_auth.sh
- Dodaj do pliku te właściwości:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- Zapisz plik
jmx_auth.sh
. - Źródło pliku:
source /opt/apigee/customer/application/jmx_auth.sh
- Jeśli plik nie istnieje, utwórz go w tej lokalizacji:
- Skopiuj i zmodyfikuj plik
jmxremote.password
:- Skopiuj ten plik z katalogu
$JAVA_HOME
do folderu/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
- Edytuj plik
jmxremote.password
i dodaj nazwę użytkownika oraz hasło JMX, używając następującej składni:JMX_USERNAME JMX_PASSWORD
Gdzie JMX_USERNAME i JMX_PASSWORD to ustawiona wcześniej nazwa użytkownika i hasło JMX.
- Sprawdź, czy plik należy do „apigee” i że ma ustawiony tryb pliku 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
- Skopiuj ten plik z katalogu
- Skopiuj i zmodyfikuj plik
jmxremote.access
:- Skopiuj ten plik z katalogu
$JAVA_HOME
do folderu/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
- Edytuj plik
jmxremote.access
i dodaj tę rolę:JMX_USERNAME readwrite
- Sprawdź, czy plik należy do „apigee” i że ma ustawiony tryb pliku 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
- Skopiuj ten plik z katalogu
- Uruchomienie polecenia
configure
na urządzeniu Cassandra:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Uruchom ponownie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 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:
- Otwórz plik
source/conf/casssandra-env.sh
. - Utwórz i edytuj plik
cassandra.properties
:- Edytuj plik
/opt/apigee/customer/application/cassandra.properties
. Jeśli plik nie istnieje, utwórz go. - Dodaj do pliku te informacje:
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- Zapisz plik cassandra.properties.
- Zmień właściciela pliku na apigee:apigee, jak pokazano w tym przykładzie:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Edytuj plik
- W wierszu poleceń wygeneruj hasze SHA1 wybranych haseł, wpisując
echo -n 'Secret' | openssl dgst -sha1
- Ustaw hasła na podstawie nazwy użytkownika z organizacji
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(utworzonej w poprzedniej sekcji). - Uruchom konfigurację w systemie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Uruchom ponownie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Powtórz ten proces we wszystkich pozostałych węzłach Cassandra.
Włącz JMX z SSL dla Cassandra
Włączenie protokołu JMX z protokołem SSL zapewnia dodatkowe zabezpieczenia i szyfrowanie podczas komunikacji opartej na JMX z Cassandra. Aby włączyć protokół JMX z protokołem SSL, musisz dostarczyć firmie Cassandra klucz i certyfikat, który umożliwi akceptowanie połączeń JMX opartych na protokole SSL. Musisz też skonfigurować narzędzie nodetool (i inne narzędzia, które komunikują się z Cassandra przez JMX) pod kątem protokołu SSL.
JMX z włączoną obsługą SSL obsługuje zarówno hasła w postaci zwykłego tekstu, jak i zaszyfrowane hasła JMX.
Aby włączyć JMX z SSL dla Cassandra, wykonaj następującą procedurę:
- Włącz JMX. W razie potrzeby włącz szyfrowanie haseł.
- Włącz uwierzytelnianie JMX w systemie Cassandra.
jak opisano powyżej. Sprawdź, czy nodetool działa ze skonfigurowaną nazwą użytkownika i hasłem.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
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 (domyślne podczas generowania klucza za pomocą narzędzia Keytool).
- Magazyn zaufania powinien zawierać tylko certyfikat i jest używany przez klienty (polecenia oparte na usłudze apigee lub narzędzie nodetool) do nawiązywania połączeń przez JMX.
Po sprawdzeniu powyższych wymagań:
- Umieść plik magazynu kluczy w folderze
/opt/apigee/customer/application/apigee-cassandra/
. - Aby upewnić się, że plik magazynu kluczy może być odczytany tylko przez użytkownika Apigee, wpisz
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- Aby skonfigurować Cassandra dla JMX z protokołem SSL, wykonaj te czynności:
- Zatrzymaj węzeł Cassandra, wpisując
apigee-service apigee-cassandra stop
- 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
- Zmień właściciela pliku na apigee:apigee, jak pokazano w tym przykładzie:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Uruchom konfigurację w systemie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Uruchom ponownie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Powtórz ten proces we wszystkich pozostałych węzłach Cassandra.
- Uruchom węzeł Cassandra, wpisując
apigee-service apigee-cassandra start
- Zatrzymaj węzeł Cassandra, wpisując
- Skonfiguruj polecenia
apigee-service
Cassandra. Podczas uruchamiania poleceńapigee-service
, w tym tych poniżej, musisz ustawić określone zmienne środowiskowe: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 przechowywane w pliku)
- Opcja 2 (argumenty SSL przechowywane w zmiennych środowiskowych)
- Opcja 3 (argumenty SSL przekazywane bezpośrednio do
apigee-service
)
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ć plik trustore.
Uruchom to polecenie
apigee-service
. Jeśli wszystko 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 wszystko 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 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
Skonfiguruj narzędzie nodetool. Narzędzie Nodetool wymaga przekazania do niego parametrów JMX. Istnieją 2 sposoby konfigurowania narzędzia nodetool do pracy z JMX z włączonym protokołem SSL zgodnie z opisem w poniższych opcjach konfiguracji:
Opcje różnią się sposobem przekazywania konfiguracji związanych z SSL do narzędzia nodetool. 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 nodetool znajdziesz w dokumentacji DataStax.
Opcja konfiguracji 1
Utwórz plik w katalogu głównym narzędzia 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 magazynu zaufania powinna być dostępna dla każdego użytkownika korzystającego z narzędzia węzła.
Uruchom polecenie
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 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 opisane w powyższej procedurze, wykonaj te czynności:
- Zatrzymaj
apigee-cassandra
, wpisującapigee-service apigee-cassandra stop
- Usuń wiersz
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
z pliku/opt/apigee/customer/application/cassandra.properties
. - Zmień w komentarzach te wiersze w ciągu
/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”
- Rozpocznij
apigee-cassandra
, wpisując - Usuń zmienną środowiskową
CASS_JMX_SSL
, jeśli została ustawiona.unset CASS_JMX_SSL
- Sprawdź, czy działają polecenia oparte na
apigee-service
, takie jakring
,stop
,backup
itp. - Przestań używać przełącznika
--ssl
za pomocą narzędzia nodetool
apigee-service apigee-cassandra start
Wyłącz uwierzytelnianie JMX dla Cassandra
Aby wyłączyć uwierzytelnianie JMX w systemie Cassandra:
- Edytuj stronę
/opt/apigee/customer/application/cassandra.properties
- Usuń z pliku ten wiersz:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- Uruchom konfigurację w systemie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Uruchom ponownie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Powtórz ten proces we wszystkich pozostałych węzłach Cassandra.
Użyj JConsole: monitorowanie statystyk zadań
Użyj JConsole i tego adresu URL usługi do monitorowania atrybutów JMX (MBeans) oferowanych przez JMX:
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
Gdzie IP_address to adres IP serwera Cassandra.
Statystyki Cassandra JMX
JMX MBean | Atrybuty JMX |
---|---|
Rodziny kolumn/apprepo/środowiska Rodziny kolumn/aplikacje/organizacje ColumnFamilies/apprepo/apiproxy_revisions ColumnFamilies/apprepo/apiproxies Rodziny kolumn/audyt/kontroli KolumnyFamilies/audit/audits_ref |
PendingTasks |
MemtableColumnsCount |
|
MemtableDataSize |
|
ReadCount |
|
RecentReadLatencyMicros |
|
TotalReadLatencyMicros |
|
WriteCount |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
TotalDiskSpaceUsed |
|
LiveDiskSpaceUsed |
|
LiveSSTableCount |
|
BloomFilterFalsePositives |
|
RecentBloomFilterFalseRatio |
|
BloomFilterFalseRatio |
Użyj narzędzia nodetool do zarządzania węzłami klastra
Narzędzie nodetool to interfejs wiersza poleceń dla Cassandra, który zarządza węzłami klastra. Narzędzie znajdziesz pod adresem /opt/apigee/apigee-cassandra/bin
.
Poniższe wywołania można wykonywać we wszystkich węzłach klastra Cassandra:
- Ogólne informacje o pierścieniu (możliwe też w przypadku pojedynczego węzła Cassandra): poszukaj dla wszystkich węzłów wartości „góra” i „normalna”.
nodetool [-u username -pw password] -h localhost ring
Nazwę użytkownika i hasło musisz podać tylko wtedy, gdy uwierzytelnianie JMX jest włączone w 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
- 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
- Stan serwera thrift Server (obsługujący interfejs API klienta)
nodetool [-u username -pw password] -h localhost statusthrift
Dane wyjściowe tego polecenia wyglądają tak:
running
- 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 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.
Monitorowanie usługi Apache Qpid Broker-J
Qpid Broker-J możesz monitorować za pomocą konsoli zarządzania Qpid. W tej sekcji dowiesz się, jak uzyskać dostęp do konsoli i używać jej do wykonywania podstawowych funkcji monitorowania. Szczegółowe informacje o korzystaniu z konsoli zarządzania znajdziesz w sekcji dotyczącej konsoli zarządzania siecią w dokumentacji serwera Apache Qpid.
Uzyskiwanie dostępu do konsoli zarządzania
Domyślny port konsoli zarządzania to 8090. Aby uzyskać dostęp do konsoli na tym domyślnym porcie, wpisz w przeglądarce stronę:
http://QPID_NODE_IP:8090
Aby zalogować się w konsoli, użyj domyślnych danych logowania ustawionych przez Apigee lub danych z pliku konfiguracji Edge. Więcej informacji znajdziesz w dokumentacji pliku konfiguracji krawędzi.
Monitorowanie kolejek i wiadomości
W panelu nawigacyjnym po lewej stronie wybierz Java-Broker > virtualhosts >Queues. Wybierz kolejkę, aby wyświetlić jej szczegóły w głównej części interfejsu użytkownika. W widoku szczegółów widoczne są atrybuty i statystyki kolejki, w tym informacje o wiadomościach dostarczonych, oczekujących w kolejce, częstotliwości wiadomości itd.
Wyświetlanie i pobieranie plików dziennika
W panelu nawigacyjnym po lewej stronie kliknij Java-Broker > brokerloggers > plik dziennika. W głównym widoku szczegółów interfejsu możesz wyświetlić szczegóły pliku logu i pobrać pliki dziennika.
Korzystanie z interfejsu Qpid Management API
Interfejs API typu REST Apache Qpid Broker-J pozwala zautomatyzować zadania zarządzania i monitorować brokera. Więcej informacji znajdziesz w dokumentacji interfejsu API typu REST Apache Qpid Broker.
Do monitorowania brokera możesz też użyć narzędzi wiersza poleceń. Na przykład:
curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"
Apache ZooKeeper
Sprawdź stan ZooKeeper
- Sprawdź, czy proces ZooKeeper jest uruchomiony. ZooKeeper zapisuje plik PID w:
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
. - Przetestuj porty ZooKeeper, aby upewnić się, że możesz nawiązać połączenie TCP z portami 2181 i 3888 na każdym serwerze ZooKeeper.
- 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. - Sprawdź stan:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
Użyj 4-literowych słów w ZooKeeper
ZooKeeper można monitorować za pomocą niewielkiego zestawu poleceń (czterech literowych), które są wysyłane do portu 2181 za pomocą netcat (nc) lub Telnet.
Więcej informacji o poleceniach ZooKeeper znajdziesz w dokumentacji polecenia Apache ZooKeeper.
Na przykład:
srvr
: wyświetla pełne informacje o serwerze.stat
: zawiera krótkie informacje o serwerze i połączonych klientach.
Do portu ZooKeeper można wydać te polecenia:
- Uruchom czteroliterowe polecenie ruok, aby sprawdzić, czy serwer działa w stanie innym niż błąd. Pomyślna odpowiedź zwraca „imok”.
echo ruok | nc host 2181
Zwroty:
imok
- Uruchom czteroliterowe polecenie
stat
, aby wyświetlić statystyki wydajności serwera i 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
- Jeśli narzędzie netcat (nc) nie jest dostępne, zamiast niego możesz użyć Pythona. Utwórz plik o nazwie
zookeeper.py
zawierający te elementy: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 następujące 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 konkretne żądania są obsługiwane prawidłowo. Inaczej mówiąc, poszukaj konkretnego wyszukiwania, które zwraca właściwy wynik.
- Użyj operatora
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:
Gdy wpiszesz hasło, 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
- 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 ograniczyć liczbę dostępu do dysku i przez to poprawia wydajność systemu. Monitorowanie, a następnie dostrajanie rozmiaru pamięci podręcznej na serwerze OpenLDAP może znacząco wpłynąć na wydajność serwera katalogowego. Aby uzyskać informacje o pamięci podręcznej, możesz wyświetlić pliki dziennika (opt/apigee/var/log
).