Jak monitorować

Edge for Private Cloud wer. 4.16.05

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

Włączanie uwierzytelniania JMX i ustawianie hasła JMX

Proces monitorowania serwera zarządzania, procesora wiadomości, Qpid i Postgres korzysta z JMX. Protokół JMX jest domyślnie włączony, a zdalny dostęp do JMX nie wymaga hasła.

Aby włączyć uwierzytelnianie JMX, każdy komponent ma działanie change_jmx_auth, które służy do włączania/wyłączania uwierzytelniania i ustawiania danych logowania JMX.

Aby włączyć uwierzytelnianie JMX, użyj tego polecenia:

>  /<inst_root>/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile

gdzie:

  • comp to serwer zarządzania Edge, Edge-message-processor, Edge-router, Edge-qpid-server lub Edge-postgres-server.
  • Dostępne opcje:
    • -u: nazwa użytkownika.
    • -p: hasło
    • -e: y (włącz) lub n (dsiable)
  • Plik konfiguracyjny zawiera:
    • JMX_USERNAME=nazwa_użytkownika
    • JMX_ENABLED=y/n
    • JMX_PASSWORD=password (jeśli nie jest ustawione lub nie jest przekazywane przy użyciu -p, pojawi się prośba).

Aby na przykład użyć opcji w wierszu poleceń:

> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y

Jeśli masz plik konfiguracyjny:

> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f configFile

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

Aby później wyłączyć uwierzytelnianie JMX, użyj polecenia:

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

Serwer zarządzania

Używanie JConsole do monitorowania informacji o procesie i kontroli stanu systemu

Używaj JConsole (narzędzia zgodnego z JMX), aby zarządzać kontrolami stanu i przetwarzaniem statystyk oraz je monitorować. Za pomocą JConsole możesz przeglądać statystyki JMX dostępne przez serwer zarządzania (lub dowolny serwer) i wyświetlać je w interfejsie graficznym. Więcej informacji o korzystaniu z JConsole znajdziesz na stronie http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html.

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

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

gdzie <adres IP> to adres IP serwera zarządzania (lub odpowiedniego serwera). Domyślnie jest to 1099 dla serwera zarządzania.

Poniższa tabela zawiera ogólne statystyki JMX:

JMX MBe

Atrybuty JMX

Pamięć

HeapMemoryUsage

NonHeapMemoryUsage

Wykorzystanie

Uwaga: wartości atrybutów będą wyświetlane w 4 wartościach: zatwierdzone, init, maksymalna i używana.

Korzystanie z kontroli interfejsu Edge Application API

Możesz sprawdzić interfejs API na serwerze zarządzania (lub dowolnym serwerze), wywołując to polecenie CURL:

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

Gdzie <host> to adres IP serwera zarządzania.

To wywołanie zwraca wartości „true” (prawda) i „false” (fałsz). Jeśli ma wartość prawda, oznacza to, że węzeł jest uruchomiony, a usługa Java działa.

Jeśli nie otrzymasz odpowiedzi HTTP 200 (OK), Edge nie może odpowiedzieć na żądania portu 8080.

Rozwiązywanie problemów

  1. Zaloguj się na serwer i uruchom to polecenie:
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-management-server status
  2. Jeśli usługa nie jest uruchomiona, uruchom ją:
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-management-server start

Korzystanie z aplikacji Edge – kontrole użytkowników, organizacji i wdrożeń

Serwer zarządzania odgrywa kluczową rolę w łączeniu wszystkich innych działek w każdej instalacji lokalnej. Stan użytkownika, organizacji i wdrożenia możesz sprawdzić na serwerze zarządzania, uruchamiając te polecenia:

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

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

  1. Sprawdź, czy w logach serwera zarządzania (<inst_root>/apigee/var/log/edge-management-server) nie ma błędów.
  2. Wyślij wywołanie do serwera zarządzania, aby sprawdzić, czy działa on prawidłowo.
  3. Usuń serwer z panelu ELB, a następnie ponownie uruchom serwer zarządzania.
    /<inst_root>/apigee/apigee-service/bin/apigee-service ponowne uruchomienie serwera Edge-management-server

Router

Możesz sprawdzić interfejs API w routerze (lub dowolnym serwerze), wywołując to polecenie CURL:

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

Gdzie host to adres IP routera.

To wywołanie zwraca wartości „true” (prawda) i „false” (fałsz). Jeśli ma wartość prawda, oznacza to, że węzeł jest uruchomiony, a usługa Java działa.

Jeśli nie otrzymasz odpowiedzi HTTP 200 (OK), Edge nie może odpowiedzieć na żądania portu 8081.

Rozwiązywanie problemów

  1. Zaloguj się na serwer i uruchom te polecenia:
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router status
  2. Jeśli usługa nie jest uruchomiona, uruchom usługę
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router start
  3. Jeśli usługa jest uruchomiona, sprawdź, czy działa. Stan klastra możesz sprawdzać, porównując wartość memberCount z wartością reachableCount i ostrzegając wszystkie instancje za pomocą atrybutu „memberCount != reachableCount”
    curl -v -u <adres e-mail użytkownika>:<hasło> http://localhost:port/v1/cluster

    Gdzie port – 8081 dla routera i 8082 w przypadku procesora wiadomości. Dane wyjściowe powyższego polecenia CURL są widoczne poniżej:
    {
    "memberCount" : 12,
    "pod" : "rea1gw001",
    "reachableCount" : 12,
    "region" : "us-east-1",
    "types" : [ "eact-server" ]
    * Connection}

  4. Jeśli tak nie jest, uruchom poniższe polecenie, aby sprawdzić błąd lub znaleźć użytkownika naruszającego zasady.
    curl http://localhost:port/v1/cluster/members

    Gdzie jest port 8081 dla routera i 8082 w przypadku procesora wiadomości. "160" CURL"



































  5. Zwróć uwagę, że adres IP 192.168.5.29 jest rozłączony. Ponownie uruchom serwer
    /<inst_root>/apigee/apigee-service/bin/apigee-service ponowne uruchomienie routera brzegowego

    Uwaga: jeśli router jest w stanie odłączenia, usuń router z ELB, a następnie uruchom go ponownie.
  6. Po ponownym uruchomieniu sprawdź, czy działa.
    curl -v http://localhost:port/v1/cluster

    Gdzie port to 8081 dla routera i 8082 dla procesora wiadomości.

procesor komunikatów

Używanie JConsole do monitorowania informacji o procesie i kontroli stanu systemu

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 1101.

Korzystanie z kontroli interfejsu Edge Application API

Wykonaj opisane powyżej czynności dotyczące routera.

Uwaga: upewnij się, że używasz portu 8082.

Sprawdzanie przepływu wiadomości JMX

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 1101.

Serwer Qpid

Monitorowanie informacji o procesie i kontroli stanu systemu za pomocą JConsole

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 1102.

Korzystanie z kontroli interfejsu Edge Application API

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 8083. To polecenie CURL jest też obsługiwane w przypadku serwera Qpid:

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

Serwer Postgres

Używanie JConsole do monitorowania informacji o procesie i kontroli stanu systemu

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 1103.

Korzystanie z kontroli interfejsu Edge Application API

Wykonaj opisane powyżej czynności dotyczące serwera zarządzania.

Uwaga: upewnij się, że używasz portu 8084. To polecenie CURL jest też obsługiwane w przypadku serwera Postgres:

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

Korzystanie z kontroli organizacji i środowiska aplikacji Edge

Możesz sprawdzić nazwę organizacji i środowiska zarejestrowanych na serwerze Postgres, uruchamiając te polecenia CURL:

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

Uwaga: upewnij się, że używasz portu 8084.

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

Sprawdzanie axstatusu aplikacji Edge

Możesz sprawdzić stan serwerów analitycznych, wykonując to polecenie CURL.

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

W przypadku wszystkich serwerów analitycznych system powinien wyświetlić stan SUCCESS (powodzenie). Dane wyjściowe powyższego polecenia CURL są widoczne poniżej:

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

Korzystanie ze skryptu check_postgres.pl

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

Uwaga: w każdym węźle Postgres należy zainstalować skrypt check_postgres.pl.

Zanim uruchomisz skrypt:

  1. Sprawdź, czy masz zainstalowany moduł Perl perl-Time-HiRes.x86_64, który implementuje minutniki o wysokiej rozdzielczości oraz alarmy, sen, gettimeofday i interwały. Możesz go na przykład zainstalować za pomocą tego polecenia:
    yuminstall perl-Time-HiRes.x86_64

Domyślne dane wyjściowe wywołań interfejsu API przy użyciu skryptu (check_postgres.pl) są zgodne z Nagios. Po zainstalowaniu skryptu wykonaj te czynności:

  1. Rozmiar bazy danych – sprawdź rozmiar bazy danych:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action base_size --warning='800 GB' --critical='900 GB'
  2. Połączenie przychodzące z bazą danych – sprawdza liczbę połączeń przychodzących do bazy danych i porównuje ją z maksymalną dozwoloną liczbą połączeń:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backendy
  3. Dostępność i wydajność bazy danych – sprawdza, czy baza danych działa i czy jest dostępna:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Miejsce na dysku – sprawdza 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. Zarejestrowane organizacje/środowiska – sprawdza liczbę organizacji i środowisk w węźle Postgres:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select'select'content'name(*) jako wynik z pgrefactal count(*)

Uwaga: jeśli potrzebujesz pomocy w korzystaniu z powyższych poleceń, odwiedź stronę http://bucardo.org/check_postgres/check_postgres.pl.html.

Testy bazy danych

Możesz sprawdzić, czy w bazie danych PostgreSQL zostały utworzone odpowiednie tabele. Zaloguj się do bazy danych PostgreSQL przy użyciu:

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

a następnie uruchom polecenie:

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

Sprawdź stan procesu postgres

Możesz wykonać test interfejsu API na maszynie postgres, wywołując to polecenie CURL:

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

Uwaga: upewnij się, że używasz portu 8084.

Zwraca stan „AKTYWNY”, gdy proces postgres jest aktywny. Jeśli proces postgres nie jest uruchomiony, zwraca stan „INACTIVE” (NIEAKTYWNY).

Zasoby Postgres

Apache Cassandra

Monitorowanie statystyk zadań przy użyciu JConsole

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

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

gdzie <adres IP> to adres IP serwera Cassandra.

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

Aby włączyć uwierzytelnianie JMX i dodać hasło:

  1. Edytuj plik /<inst_root>/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
  3. Zapisz plik.
  4. Skopiuj te pliki z katalogu $JAVA_DOM do katalogu /<inst_root>/apigee/data/apigee-cassandra/:
    cp ${JAVA_Home}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/JAGAxapige.jm}

  5. Edytuj plik jmxremote.password i dodaj do pliku nazwę użytkownika i hasło:
    cassandra password


    gdzie hasło to hasło JMX.
  6. Edytuj plik jmxremote.access i dodaj tę rolę:
    cassandra readwrite
  7. Sprawdź, czy pliki należą do „apigee” i czy tryb pliku to 400:
    > chown apigee:apigee /<inst_root>/apigee/data/apigee-cassandra/jmxremote.*
    > chmod 400 /<inst_root>/apigee/data/apigee-cassandra/jmxremote.*
  8. Uruchom configure w Cassandra:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  9. Uruchom ponownie Cassandra:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Aby później wyłączyć uwierzytelnianie:

  1. Edytuj plik /<inst_root>/apigee/customer/application/cassandra.properties.
  2. Usuń z pliku ten wiersz:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Uruchom konfigurację w Cassandra:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Uruchom ponownie Cassandra:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Statystyki JMX Cassandra

JMX MBe

Atrybuty JMX

Rodziny kolumn/aplikacje/środowiska

Rodziny kolumn/aplikacje/organizacje

Rodziny kolumn/apprepo/apiproxy_revisions

Rodziny kolumn/aplikacje/apiproxies

Rodziny kolumn/audyt/audyt

Rodziny kolumn/audyt/ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

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

Narzędzie węzła, które jest interfejsem wiersza poleceń dla systemu Cassandra, służy do zarządzania węzłami klastra. Narzędzie znajdziesz tutaj: <inst_root>/apigee/apigee-cassandra/bin.

Więcej informacji o narzędziu nodetool znajdziesz na stronie http://www.datastax.com/docs/1.0/references/nodetool.

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

  1. Ogólne informacje pierścieniowe (możliwe też w przypadku pojedynczego węzła Cassandra): poszukaj wszystkich węzłów „Góra” i „Normalnie”.
    [host]# nodetool -h localhost 1204,201 404 180, 75 MB 407 180, 764 786 480 184, 401 418 MB18, 1847 MB danych wyjściowych, wygląda tak:
    Adres DC Stan macierzy




  2. Ogólne informacje o węzłach (wywołanie na węzeł)
    nodetool -h localhost info

    Dane wyjściowe tego polecenia wyglądają tak:
    Token : 0
    Gossip Active : true
    Obciążenie: 1,67 MB
    Generacja: 1361968765
    Pamięć 1361968765
    Dostępność (8s) 8 s) 8


  3. Stan serwera Thrift Server (interfejs API klienta obsługującego)
    host]# narzędzie węzła -h localhost statusthrift

    W wyniku wykonania powyższego polecenia stan „uruchomiono”.
  4. Stan operacji strumieniowego przesyłania danych: obserwuj ruch w węzłach Casandra
    nodetool -h localhost netstats 192.168.124.203

    Dane wyjściowe tego polecenia wyglądają tak:
    Tryb: NORMAL
    Oczekiwanie na NORMAL
    Brak przesyłania strumieniowego do /192.168.124.20

    Tryb: NORMAL
    Brak przesyłania strumieniowego do /192.168.124.20

    Tryb: NORMAL
    Brak przesyłania strumieniowego do /192.168.124.20

Cassandra Monitoring (UI)

Skorzystaj z adresu URL centrum operacji Datastax: http://www.datastax.com/products/opscenter.

Zasób Cassandra

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

Apache ZooKeeper

Sprawdzam status ZooKeeper

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

Korzystanie z 4-literowych słów z ZooKeeper

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

Więcej informacji o poleceniach ZooKeeper znajdziesz na stronie: http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands.

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 wysyłać te polecenia:

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

    Zwraca:
    imok
  2. Uruchom czteroliterowe polecenie – statystyka, aby wyświetlić listę wydajności serwera i statystyki połączonych klientów.
    echo stat | nc <host> 2181
    Return18 1x4.reavg0, 180101801801801818.118















  3. Jeśli narzędzie netcat (nc) jest niedostępne, zamiast niego możesz użyć języka Python. Utwórz plik o nazwie zookeeper.py, który zawiera te elementy:
    czas importu, gniazdo,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181)1 1 zooy6doodler.1







OpenLDAP

Test poziomu LDAP

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

  1. Użyj polecenia ldapsearch (yum administrator openldap-clients), aby wysłać zapytanie o wpis 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

    Wyświetli się prośba o podanie hasła administratora LDAP:
    Wpisz hasło administratora LDAP:












  2. Sprawdź, czy serwer zarządzania jest nadal połączony z LDAP:
    curl -u <userEMail>:<hasło> http://localhost:8080/v1/users/<ADMIN>

    Zwraca:
    {
    "emailId" : <ADMIN>,
    "firstName" : "admin",
    "lastName" : "admin"

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