Как отслеживать

В этом документе описаны методы мониторинга компонентов, поддерживаемых локальным развертыванием Apigee Edge для частного облака.

Обзор

В Edge можно несколькими способами получать информацию о сервисах и проверять их статус. В таблице ниже перечислены типы проверок, которые можно выполнять для каждого подходящего сервиса.

Mgmt API
Компонент Использование памяти [JMX*] Проверка сервиса Статус пользователя/организации/ развертывания axstatus Проверка базы данных Статус apigee-service apigee-monit**
Сервер управления
Message Processor
Маршрутизатор
Qpid
Postgres
Подробнее… Подробнее… Подробнее… Подробнее… Подробнее… Подробнее… Подробнее…

* Чтобы использовать JMX, его нужно включить, как описано в разделе Как включить JMX.

** Сервис apigee-monit проверяет, работает ли компонент, и пытается перезапустить его, если он не работает. Подробнее о самовосстановлении с помощью apigee-monit…

Мониторинг портов и файлов конфигурации

Каждый компонент поддерживает расширения Java для управления (JMX) и вызовы Management API для мониторинга на разных портах. В таблице ниже перечислены порты JMX и Management API для каждого типа сервера, а также указаны расположения файлов конфигурации.

Компонент Порт JMX Порт Management API Местоположение файла конфигурации
Сервер управления 1099 8080 $APIGEE_ROOT/customer/application/management-server.properties
Message Processor 1101 8082 $APIGEE_ROOT/customer/application/message-processor.properties
Маршрутизатор 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

Как использовать JMX для мониторинга компонентов

В следующих разделах рассказывается, как использовать JMX для мониторинга компонентов Edge.

Как включить JMX

Чтобы включить JMX без аутентификации или связи на основе SSL, выполните следующие действия: Примечание. В рабочих системах для обеспечения безопасности должны быть включены как зашифрованная аутентификация, так и SSL.

  1. Измените нужный файл конфигурации (см. Справочник по файлам конфигурации). Создайте файл конфигурации, если его нет.
    conf_system_jmxremote_enable=true
  2. Сохраните файл конфигурации и убедитесь, что его владельцем является пользователь apigee:apigee.
  3. Перезапустите нужный компонент Edge
    apigee-service edge-management-server restart

Чтобы отключить JMX, удалите свойство conf_system_jmxremote_enable или измените его значение на false. Затем перезапустите нужный компонент Edge.

Аутентификация в JMX

Edge для частного облака поддерживает аутентификацию на основе пароля с использованием данных, хранящихся в файлах. Для дополнительной защиты пароли можно хранить в виде хеша.

  1. Чтобы включить аутентификацию JMX в компоненте edge-*, измените соответствующий файл конфигурации (см. Справочник по файлам конфигурации). Создайте файл конфигурации, если его нет:
    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
    Сохраните файл конфигурации и убедитесь, что его владельцем является apigee:apigee.
  2. Создайте хеш SHA256 пароля:
    echo -n '' | openssl dgst -sha256
  3. Создайте файл jmxremote.password с учетными данными пользователя JMX:
    1. Скопируйте следующие файлы из каталога $JAVA_HOME в каталог /opt/apigee/customer/application/<component>/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
    2. Отредактируйте файл и добавьте имя пользователя и пароль JMX, используя следующий синтаксис:
      USERNAME <HASH-PASSWORD>
    3. Убедитесь, что файл принадлежит пользователю apigee и что для него задан режим 400:
      chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password
      chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
  4. Создайте файл jmxremote.access с разрешениями пользователя JMX:
    1. Скопируйте следующие файлы из каталога $JAVA_HOME в каталог /opt/apigee/customer/application/<component>/:
      
      cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
    2. Измените файл и добавьте имя пользователя JMX, а затем разрешение (READONLY/READWRITE).
      USERNAME READONLY
    3. Убедитесь, что файл принадлежит пользователю apigee и что для него задан режим 400:
      chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password
      
      chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
  5. Перезапустите нужный компонент Edge:
    apigee-service edge-management-server restart

Чтобы отключить аутентификацию JMX, удалите свойство conf_system_jmxremote_authenticate или измените его значение на false и перезапустите соответствующий компонент Edge.

SSL в JMX

Чтобы включить JMX на основе SSL в компоненте edge-*, выполните следующие действия:

  1. Измените нужный файл конфигурации (см. справочник по файлам конфигурации). Создайте файл конфигурации, если его нет:
    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>
    Сохраните файл конфигурации и убедитесь, что его владельцем является apigee:apigee.
  2. Подготовьте хранилище ключей с ключом сервера и поместите его по пути, указанному в конфигурации conf_system_javax_net_ssl_keystore выше. Убедитесь, что файл хранилища ключей доступен для чтения apigee:apigee.
  3. Перезапустите нужный компонент Edge:
    apigee-service edge-management-server restart

Чтобы отключить JMX на основе SSL, удалите свойство conf_system_jmxremote_ssl или измените его значение на false. Перезапустите нужный компонент Edge.

Мониторинг с помощью Jconsole

Инструкции по мониторингу с помощью jconsole остались прежними. Они приведены на странице https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole.

Можно добавить строку "Если для JMX включен SSL, jconsole нужно запускать с хранилищем доверенных сертификатов и паролем к нему". Справочная информация: https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html.

Отслеживание с помощью JConsole

Используйте JConsole (инструмент, совместимый с JMX), чтобы управлять проверкой работоспособности и статистикой процессов и отслеживать их. С помощью JConsole можно получать статистику JMX, предоставляемую серверами, и просматривать ее в графическом интерфейсе. Подробнее о том, как использовать JConsole…

Если для JMX включен протокол SSL, вам нужно запустить JConsole с хранилищем доверенных сертификатов и паролем к нему. Подробнее об использовании JConsole…

JConsole использует следующий URL сервиса для мониторинга атрибутов JMX (MBeans), предлагаемых через JMX:

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

Где:

  • IP_address – IP-адрес сервера, который вы хотите отслеживать.
  • port_number – это номер порта JMX сервера, который вы хотите отслеживать.

Например, чтобы отслеживать сервер управления, выполните команду, подобную следующей (предполагается, что IP-адрес сервера – 216.3.128.12):

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

Обратите внимание, что в этом примере указан порт 1099, который является портом JMX сервера управления. Информацию о других портах можно найти в статье Порты мониторинга JMX и Management API.

В таблице ниже приведены общие данные статистики JMX.

Объекты MBean JMX Атрибуты JMX

Память

HeapMemoryUsage

NonHeapMemoryUsage

Использование

Справочник по файлу конфигурации

В следующих разделах описаны изменения, которые могут потребоваться в файлах конфигурации компонентов Edge для конфигураций, связанных с JMX. Подробнее о портах мониторинга и файлах конфигурации…

Конфигурация JMX, которую нужно добавить в файл конфигурации соответствующего компонента.

  • Включите агент JMX в компоненте Edge. По умолчанию имеет значение False.
    conf_system_jmxremote_enable=true

Конфигурации для аутентификации на основе пароля

  • Включите аутентификацию на основе пароля. По умолчанию имеет значение False.
    conf_system_jmxremote_authenticate=true
  • Путь к файлу. Должен принадлежать пользователю Apigee и быть доступен только ему.
    conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
  • Путь к файлу с паролем. Должен принадлежать пользователю Apigee и быть доступен только ему.
    conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
  • Включить хранение пароля в зашифрованном виде. По умолчанию имеет значение False.
    conf_system_jmxremote_encrypted_auth=true

Конфигурации для JMX на основе SSL

  • Включите SSL для обмена данными JMX. По умолчанию имеет значение False.
    conf_system_jmxremote_ssl=true
  • Путь к хранилищу ключей. Должен принадлежать пользователю Apigee и быть доступен только ему.
    conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
  • Пароль хранилища ключей:
    conf_system_javax_net_ssl_keystorepassword=changeme

Необязательные конфигурации JMX

Указаны значения по умолчанию, которые можно изменить.

  • Порт JMX. Значения по умолчанию указаны в таблице ниже.
    conf_system_jmxremote_port=
  • Порт JMX RMI. По умолчанию процесс Java выбирает случайный порт.
    conf_system_jmxremote_rmi_port=
  • Имя хоста для удаленных заглушек. IP-адрес localhost по умолчанию.
    conf_system_java_rmi_server_hostname=
  • Защитите реестр JMX с помощью SSL. Значение по умолчанию – false. Применимо, только если включен SSL.
    conf_system_jmxremote_registry_ssl=false

Мониторинг с помощью Management API

Edge включает несколько API, которые можно использовать для проверки сервисов на серверах, а также для проверки пользователей, организаций и развертываний. В этом разделе описаны эти API.

Как проверить работу сервиса

Management API предоставляет несколько конечных точек для мониторинга и диагностики проблем с вашими сервисами. К таким конечным точкам относятся:

Конечная точка Описание
/servers/self/up

Проверяет, запущен ли сервис. Для этого вызова API не требуется аутентификация.

Если сервис запущен, эта конечная точка возвращает следующий ответ:

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

Если служба не запущена, вы получите ответ, похожий на приведенный ниже (в зависимости от службы и способа проверки):

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

Возвращает информацию о сервисе, в том числе:

  • Свойства конфигурации
  • Время начала и время работы
  • Сведения о сборке, доходе на тысячу просмотров и UUID
  • Внутреннее и внешнее имя хоста и IP-адрес
  • Регион и пакет
  • свойство <isUp>, указывающее, работает ли сервис;

Для этого вызова API требуется аутентификация с использованием учетных данных администратора Apigee.

Чтобы использовать эти конечные точки, вызовите утилиту, например curl, с командами, в которых используется следующий синтаксис:

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

Где:

  • host – IP-адрес сервера, который вы хотите проверить. Если вы вошли на сервер, можно использовать значение "localhost". В противном случае укажите IP-адрес сервера, а также имя пользователя и пароль.
  • port_number – порт Management API для сервера, который вы хотите проверить. Для каждого типа компонента используется отдельный порт. Например, порт Management API сервера управления – 8080. Список номеров портов Management API приведен в статье Порты мониторинга JMX и Management API.

Чтобы изменить формат ответа, укажите в заголовке Accept значение application/json или application/xml.

В следующем примере показано, как получить статус маршрутизатора на localhost (порт 8081):

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

В следующем примере показано, как получить информацию о Message Processor по адресу 216.3.128.12 (порт 8082):

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

Как отслеживать статус пользователей, организации и развертывания

Вы можете использовать Management API, чтобы отслеживать статус пользователей, организаций и развертывания прокси-серверов на серверах управления и процессорах сообщений, выполняя следующие команды:

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

где port_number – это 8080 для сервера управления или 8082 для обработчика сообщений.

Для этого звонка вам нужно будет пройти аутентификацию с помощью имени пользователя и пароля системного администратора.

Сервер должен возвращать статус "развернуто" для всех вызовов. Если это не поможет, выполните следующие действия:

  1. Проверьте, зафиксированы ли ошибки в журналах сервера. Журналы находятся по следующему пути:
    • Сервер управления: opt/apigee/var/log/edge-management-server
    • Обработчик сообщений: opt/apigee/var/log/edge-message-processor
  2. Позвоните на сервер, чтобы проверить, работает ли он правильно.
  3. Удалите сервер из ELB и перезапустите его:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    Где находится service_name:

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

Как проверить статус с помощью команды apigee-service

Чтобы устранить неполадки в сервисах Edge, используйте команду apigee-service, когда вы вошли на сервер, на котором запущен сервис.

Чтобы проверить статус сервиса с помощью apigee-service:

  1. Войдите на сервер и выполните следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    где service_name – одно из следующих значений:

    • Сервер управления: edge-management-server
    • Обработчик сообщений: edge-message-processor
    • Postgres: edge-postgres-server
    • Qpid: edge-qpid-server
    • Маршрутизатор: edge-router

    Пример:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. Если сервис не запущен, запустите его:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. После перезапуска сервиса проверьте его работу, используя команду apigee-service status, которую вы использовали ранее, или Management API, описанный в разделе Мониторинг с помощью Management API.

    Пример:

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

    где port_number – порт Management API для сервиса.

    В этом примере предполагается, что вы вошли на сервер и можете использовать "localhost" в качестве имени хоста. Чтобы проверить статус удаленно с помощью Management API, необходимо указать IP-адрес сервера и включить в вызов API имя пользователя и пароль системного администратора.

Мониторинг Postgres

Postgres поддерживает несколько утилит, с помощью которых можно проверить его статус. Эти утилиты описаны в следующих разделах.

Как проверить организации и среды в Postgres

Чтобы проверить, какие организации и среды подключены к серверу Postgres, выполните следующую команду curl:

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

В системе должны быть указаны название организации и среды.

Как проверить статус аналитики

Чтобы проверить статус серверов аналитики Postgres и Qpid, выполните следующую команду: curl

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

Система должна показать статус "Успешно" для всех серверов аналитики, как показано в следующем примере:

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

База данных PostgreSQL

В этом разделе описаны методы, которые можно использовать для мониторинга базы данных Postgres.

Как использовать скрипт check_postgres.pl

Чтобы отслеживать базу данных PostgreSQL, можно использовать стандартный скрипт мониторинга, check_postgres.pl. Дополнительную информацию можно найти на странице http://bucardo.org/wiki/Check_postgres.

Перед запуском скрипта:

  1. Скрипт check_postgres.pl необходимо установить на каждом узле Postgres.
  2. Убедитесь, что вы установили perl-Time-HiRes.x86_64 – модуль Perl, который реализует будильник с высоким разрешением, таймеры сна, gettimeofday и интервальные таймеры. Например, вы можете установить его с помощью следующей команды:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7. Перед использованием check_postgres.pl на CentOS 7 установите RPM-пакет perl-Data-Dumper.x86_64.

Выходные данные check_postgres.pl

Выходные данные вызовов API, использующих check_postgres.pl, по умолчанию совместимы с Nagios. После установки скрипта выполните следующие проверки:

  1. Проверьте размер базы данных:
    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. Проверьте количество входящих подключений к базе данных и сравните его с максимально допустимым количеством подключений:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. Проверьте, запущена ли база данных и доступна ли она:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Проверьте свободное место на диске:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. Чтобы проверить количество организаций и сред, зарегистрированных в узле 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

Как запустить проверку базы данных

Вы можете проверить, созданы ли нужные таблицы в базе данных PostgreSQL. Войдите в базу данных PostgreSQL, используя следующую команду:

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

Затем выполните следующую команду:

\d analytics."org.env.fact"

Как проверить состояние процесса postgres

Вы можете выполнить проверку API на компьютере Postgres, вызвав следующую команду curl:

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

Если процесс postgres активен, эта команда возвращает статус ACTIVE. Если процесс Postgres не запущен, возвращается статус INACTIVE.

Ресурсы Postgres

Дополнительную информацию о мониторинге сервиса Postgres можно найти в следующих источниках:

Apache Cassandra

JMX включен по умолчанию для Cassandra, и для удаленного доступа к Cassandra через JMX не требуется пароль.

Как включить аутентификацию JMX для Cassandra

Вы можете включить аутентификацию JMX для Cassandra. После этого вам нужно будет передавать имя пользователя и пароль во всех вызовах утилиты nodetool.

Чтобы включить аутентификацию JMX для Cassandra:

  1. Создайте и отредактируйте файл cassandra.properties:
    1. Отредактируйте файл /opt/apigee/customer/application/cassandra.properties. Если файла нет, создайте его.
    2. Добавьте в файл следующие строки:
      conf_cassandra_env_com.sun.management.jmxremote.authenticate=true
      conf_cassandra_env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/customer/application/apigee-cassandra/jmxremote.password
      conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/apigee-cassandra/jmxremote.access
    3. Сохраните файл cassandra.properties.
    4. Измените владельца файла на apigee:apigee, как показано в следующем примере:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

    Подробнее о том, как настроить Edge…

  2. Создание и редактирование jmx_auth.sh:
    1. Создайте файл в следующем расположении, если его ещё нет:
      /opt/apigee/customer/application/jmx_auth.sh
    2. Добавьте в файл следующие свойства:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. Сохраните файл jmx_auth.sh.
    4. Укажите источник файла:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. Скопируйте и измените файл jmxremote.password:
    1. Скопируйте следующий файл из каталога $JAVA_HOME в каталог /opt/apigee/customer/application/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
    2. Отредактируйте файл jmxremote.password и добавьте имя пользователя и пароль JMX, используя следующий синтаксис:
      JMX_USERNAME JMX_PASSWORD

      где JMX_USERNAME и JMX_PASSWORD – это имя пользователя и пароль JMX, заданные ранее.

    3. Убедитесь, что владельцем файла является пользователь apigee и что режим файла – 400:
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
  4. Скопируйте и измените файл jmxremote.access:
    1. Скопируйте следующий файл из каталога $JAVA_HOME в каталог /opt/apigee/customer/application/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access
      $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
    2. Отредактируйте файл jmxremote.access и добавьте следующую роль:
      JMX_USERNAME readwrite
    3. Убедитесь, что владельцем файла является пользователь apigee и что режим файла – 400:
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
  5. Запуск configure в Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Перезапустите Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Повторите эти действия на всех остальных узлах Cassandra.

Как включить шифрование пароля JMX

Чтобы включить шифрование пароля JMX, выполните следующие действия:

  1. Откройте файл source/conf/casssandra-env.sh.
  2. Создайте и отредактируйте файл cassandra.properties:
    1. Отредактируйте файл /opt/apigee/customer/application/cassandra.properties. Если файла нет, создайте его.
    2. Добавьте в файл следующие строки:
      conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
    3. Сохраните файл cassandra.properties.
    4. Измените владельца файла на apigee:apigee, как показано в следующем примере:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  3. В командной строке сгенерируйте хеш SHA1 нужных паролей, введя echo -n 'Secret' | openssl dgst -sha1
  4. Установите пароли для имени пользователя в файле $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password (созданном в предыдущем разделе).
  5. Выполните настройку Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Перезапустите Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Повторите эти действия на всех остальных узлах Cassandra.

Как включить JMX с SSL для Cassandra

Включение JMX с SSL обеспечивает дополнительную безопасность и шифрование для связи на основе JMX с Cassandra. Чтобы включить JMX с SSL, вам нужно предоставить Cassandra ключ и сертификат для приема JMX-подключений на основе SSL. Вам также необходимо настроить nodetool (и любые другие инструменты, которые взаимодействуют с Cassandra через JMX) для использования SSL.

JMX с поддержкой SSL поддерживает как обычные, так и зашифрованные пароли JMX.

Чтобы включить JMX с SSL для Cassandra, выполните следующие действия:

  1. Включите JMX. При необходимости включите шифрование паролей.
  2. Включите аутентификацию JMX для Cassandra. как описано выше. Убедитесь, что nodetool работает с настроенными именем пользователя и паролем.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. Подготовьте хранилище ключей и хранилище доверенных сертификатов.

    • Хранилище ключей должно содержать ключ и сертификат и используется для настройки сервера Cassandra. Если в хранилище ключей содержится несколько пар ключей, Cassandra использует первую пару ключей для включения SSL.

      Обратите внимание, что пароли для хранилища ключей и ключа должны быть одинаковыми (это значение по умолчанию при создании ключа с помощью keytool).

    • Хранилище доверенных сертификатов должно содержать только сертификат и используется клиентами (командами на основе apigee-service или nodetool) для подключения через JMX.

    После того как вы убедитесь, что все требования выполнены:

    1. Поместите файл хранилища ключей в папку /opt/apigee/customer/application/apigee-cassandra/.
    2. Убедитесь, что файл хранилища ключей доступен для чтения только пользователю Apigee, введя
      chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
  4. Чтобы настроить Cassandra для JMX с SSL, выполните следующие действия:
    1. Остановите узел Cassandra, введя следующую команду:
      apigee-service apigee-cassandra stop
    2. Включите SSL в Cassandra, открыв файл /opt/apigee/customer/application/cassandra.properties и добавив следующие строки:
      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
      ## On FIPS enabled systems, when you are using non standard keystore, set the following:
      ## These can be skipped otherwise
      ## Possible values are JKS, PKCS12, BCFKS
      conf_cassandra_env_javax.net.ssl.keyStoreType=PKCS12
      conf_cassandra_env_javax.net.ssl.keyStoreAlias=cassjmx-tls-alias
    3. Измените владельца файла на apigee:apigee, как показано в следующем примере:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    4. Выполните настройку Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    5. Перезапустите Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    6. Повторите эти действия на всех остальных узлах Cassandra.
    7. Запустите узел Cassandra, введя
      apigee-service apigee-cassandra start
  5. Настройте команды Cassandra apigee-service. При выполнении команд apigee-service необходимо задать определенные переменные среды, в том числе перечисленные ниже.
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    Существует несколько способов настроить apigee-service для аутентификации JMX и SSL. Выберите вариант, который вам удобнее и который соответствует вашим требованиям безопасности.

    Вариант 1 (аргументы SSL хранятся в файле)

    Задайте следующие переменные среды:

    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

    Создайте файл в домашнем каталоге пользователя Apigee (/opt/apigee).

    $HOME/.cassandra/nodetool-ssl.properties

    Отредактируйте файл и добавьте следующие строки:

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

    Убедитесь, что файл хранилища доверенных сертификатов доступен для чтения пользователю Apigee.

    Выполните следующую команду apigee-service. Если при выполнении команды не возникнет ошибок, значит конфигурация правильная.

    apigee-service apigee-cassandra ring

    Вариант 2 (аргументы SSL хранятся в переменных среды)

    Задайте следующие переменные среды:

    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>
    # If you are using a non standard truststore type, export truststore type as well
    # Possible values are JKS, PKCS12, BCFKS
    export CASS_JMX_TRUSTSTORE_TYPE=PKCS12

    Выполните следующую команду apigee-service. Если при выполнении команды не возникнет ошибок, значит конфигурация правильная.

    apigee-service apigee-cassandra ring

    Вариант 3 (аргументы SSL передаются непосредственно в apigee-service)

    Выполните любую команду apigee-service, например указанную ниже. Настраивать переменные среды не нужно.

    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> CASS_JMX_TRUSTSTORE_TYPE=PKCS12 /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
  6. Настройте nodetool. Для работы Nodetool требуются параметры JMX. Настроить nodetool для работы с JMX, поддерживающим SSL, можно двумя способами, описанными в приведенных ниже вариантах конфигурации.

    Варианты различаются способом передачи конфигураций, связанных с SSL, в nodetool. В обоих случаях у пользователя, запускающего nodetool, должны быть разрешения на чтение файла хранилища доверенных сертификатов. Выберите подходящий вариант с учетом удобства и требований безопасности.

    Подробнее о параметрах nodetool можно узнать из документации DataStax.

    Вариант конфигурации 1

    Создайте файл в домашнем каталоге пользователя, запустившего nodetool.

    $HOME/.cassandra/nodetool-ssl.properties

    Добавьте в файл следующие строки:

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

    Путь к хранилищу доверенных сертификатов, указанный выше, должен быть доступен любому пользователю, запускающему nodetool.

    Запустите nodetool с параметром --ssl.

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

    Вариант конфигурации 2

    Выполните команду nodetool с дополнительными параметрами, перечисленными ниже.

    /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 -Djavax.net.ssl.trustStoreType=PKCS12 -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

Как отменить конфигурации SSL

Если вам нужно отменить настройки SSL, описанные в процедуре выше, выполните следующие действия:

  1. Чтобы остановить приложение "apigee-cassandra", введите
    apigee-service apigee-cassandra stop
  2. Удалить строку conf_cassandra-env_com.sun.management.jmxremote.ssl=true из файла /opt/apigee/customer/application/cassandra.properties.
  3. Закомментируйте следующие строки в файле /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. Начните apigee-cassandra, введя
  5. apigee-service apigee-cassandra start
  6. Удалите переменную среды CASS_JMX_SSL, если она была задана.

    unset CASS_JMX_SSL
  7. Проверьте, работают ли команды на основе apigee-service, например ring, stop, backup и т. д.
  8. Как перестать использовать переключатель --ssl с nodetool

Как отключить аутентификацию JMX для Cassandra

Чтобы отключить аутентификацию JMX для Cassandra:

  1. Изменить набор "/opt/apigee/customer/application/cassandra.properties".
  2. Удалите из файла следующую строку:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Выполните настройку Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Перезапустите Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Повторите эти действия на всех остальных узлах Cassandra.

Используйте JConsole: отслеживайте статистику задач

Используйте JConsole и следующий URL сервиса, чтобы отслеживать атрибуты JMX (MBeans), предлагаемые через JMX:

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

где IP_address – IP-адрес сервера Cassandra.

Статистика JMX Cassandra

Объекты MBean JMX Атрибуты 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

Как управлять узлами кластера с помощью nodetool

Утилита nodetool – это интерфейс командной строки для Cassandra, который управляет узлами кластера. Утилиту можно найти на странице /opt/apigee/apigee-cassandra/bin.

На всех узлах кластера Cassandra можно выполнять следующие вызовы:

  1. Общая информация о кольце (также можно использовать для одного узла Cassandra): убедитесь, что для всех узлов указаны значения "Up" (Включено) и "Normal" (Нормально).
    nodetool [-u username -pw password] -h localhost ring

    Имя пользователя и пароль нужно передавать, только если вы включили аутентификацию JMX для Cassandra.

    Результат выполнения команды будет выглядеть следующим образом:

    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. Общая информация об узлах (звонок на узел)
    nodetool [-u username -pw password]  -h localhost info

    Выходные данные указанной выше команды выглядят следующим образом:

    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. Статус сервера Thrift (обслуживающего клиентский API).
    nodetool [-u username -pw password] -h localhost statusthrift

    Выходные данные указанной выше команды выглядят следующим образом:

    running
  4. Статус операций потоковой передачи данных. Отслеживайте трафик для узлов Cassandra:
    nodetool [-u username -pw password] -h localhost netstats

    Выходные данные указанной выше команды выглядят следующим образом:

    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

Подробнее о том, как использовать утилиту nodetool…

Ресурс Cassandra

Дополнительную информацию можно найти на странице Мониторинг Cassandra.

Мониторинг Apache Qpid Broker-J

Вы можете отслеживать Qpid Broker-J из консоли управления Qpid. В этом разделе рассказывается, как открыть консоль и использовать ее для выполнения основных функций мониторинга. Более подробную информацию об использовании консоли управления можно найти в разделе Консоль управления документации Apache Qpid.

Как получить доступ к консоли управления

По умолчанию используется порт 8090. Чтобы получить доступ к консоли через этот порт по умолчанию, введите в браузере:

http://QPID_NODE_IP:8090

Чтобы войти в консоль, используйте учетные данные по умолчанию, заданные Apigee, или учетные данные, заданные в файле конфигурации Edge. Подробнее о файле конфигурации Edge…

Как отслеживать очереди и сообщения

На панели навигации слева выберите Java-Broker > virtualhosts > queues. Выберите очередь, чтобы посмотреть ее сведения в основной части интерфейса. В подробном представлении можно посмотреть атрибуты и статистику очереди, в том числе информацию о доставленных и поставленных в очередь письмах, скорости обработки писем и т. д.

Как посмотреть и скачать файлы журналов

На панели навигации слева выберите Java-Broker > brokerloggers > logfile. В главном интерфейсе в подробном представлении можно посмотреть сведения о файлах журнала и скачать их.

Использование API управления Qpid

Вы можете использовать REST API Apache Qpid Broker-J, чтобы автоматизировать задачи управления и отслеживать брокера. Подробнее о Apache Qpid Broker REST API…

Для мониторинга брокера также можно использовать инструменты командной строки. Пример:

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

Как включить мониторинг с помощью SSL для Qpid

Чтобы повысить безопасность мониторинга и управления, включите SSL на портале управления Qpid и в API управления Qpid. Чтобы предоставить ключ и сертификат, следуйте инструкциям ниже.

Qpid предоставляет возможность использовать хранилище ключей в файле, которое включено в Apigee. Этот тип поддерживает стандартный формат хранилища ключей JKS, который распознается Java и инструментами Java, например keytool. Также можно использовать хранилище ключей PKCS12, которое можно создать с помощью таких инструментов, как OpenSSL.

Подготовка хранилища ключей

Информацию о том, как создавать хранилища ключей, можно найти в документации по Java Keytool.

Информацию о создании хранилищ ключей PKCS12 можно найти в документации по OpenSSL.

После проверки требований

  1. Поместите файл хранилища ключей в папку /opt/apigee/customer/application/apigee-qpidd.
  2. Убедитесь, что файл хранилища ключей доступен для чтения только пользователю Apigee:
    chown apigee:apigee /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore
      chmod 400 /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore

Как включить SSL в Qpid

Выполните следующие действия на каждом узле Qpid по очереди:

Откройте файл /opt/apigee/customer/application/qpidd.properties и добавьте следующие строки:

conf_qpidd_qpid_management.https.enabled=true
conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/qpidd.keystore
conf_qpidd_qpid.keystore.password=keystore-password
conf_qpidd_qpid.keystore.certificateAlias=certificate-alias
## If you are using a PKCS12 keystore, specify the keystore type
conf_qpidd_qpid.keystore.keyStoreType=PKCS12
  1. Измените владельца файла на apigee:apigee:
    chown apigee:apigee /opt/apigee/customer/application/qpidd.properties
  2. Настройте Qpidd:
    apigee-service apigee-qpidd configure
  3. Перезапустите Qpidd:
    apigee-service apigee-qpidd restart
  4. Проверьте статус с помощью wait_for_ready:
    apigee-service apigee-qpidd wait_for_ready

Как отменить конфигурацию SSL

Удалите или закомментируйте свойства в файле /opt/apigee/customer/application/qpidd.properties:

conf_qpidd_qpid_management.https.enabled=true
conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/keystore
  1. Настройте Qpidd:
    apigee-service apigee-qpidd configure
  2. Перезапустите Qpidd:
    apigee-service apigee-qpidd restart
  3. Проверьте статус с помощью wait_for_ready:
    apigee-service apigee-qpidd wait_for_ready

Apache ZooKeeper

Как проверить статус ZooKeeper

  1. Убедитесь, что процесс ZooKeeper запущен. ZooKeeper записывает файл PID в каталог opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Проверьте порты ZooKeeper, чтобы убедиться, что вы можете установить TCP-подключение к портам 2181 и 3888 на каждом сервере ZooKeeper.
  3. Убедитесь, что вы можете считывать значения из базы данных ZooKeeper. Подключитесь с помощью клиентской библиотеки ZooKeeper (или /opt/apigee/apigee-zookeeper/bin/zkCli.sh) и прочитайте значение из базы данных.
  4. Проверьте статус:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

Как использовать четырехбуквенные команды ZooKeeper

ZooKeeper можно отслеживать с помощью небольшого набора команд (четырехбуквенных слов), которые отправляются на порт 2181 с помощью netcat (nc) или telnet.

Дополнительную информацию о командах ZooKeeper можно найти в справочнике по командам Apache ZooKeeper.

Пример:

  • srvr: показывает подробную информацию о сервере.
  • stat: содержит краткую информацию о сервере и подключенных клиентах.

На порт ZooKeeper можно отправлять следующие команды:

  1. Выполните команду ruok из четырех букв, чтобы проверить, работает ли сервер без ошибок. При успешном выполнении запроса возвращается значение "imok".
    echo ruok | nc host 2181

    Возврат:

    imok
  2. Чтобы посмотреть статистику производительности сервера и подключенных клиентов, выполните четырехбуквенную команду stat:
    echo stat | nc host 2181

    Возврат:

    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. Если у вас нет netcat (nc), вы можете использовать Python. Создайте файл zookeeper.py со следующим содержимым:
    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)

    Теперь выполните следующие строки кода Python:

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

Тест уровня LDAP

Вы можете отслеживать SymasLDAP, чтобы убедиться, что определенные запросы обрабатываются правильно. Другими словами, проверьте, возвращает ли определенный запрос правильный результат.

  1. Используйте ldapsearch (yum install symasldap-clients), чтобы запросить запись системного администратора. Эта запись используется для аутентификации всех вызовов API.
    /opt/symas/bin/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

    Затем вам будет предложено ввести пароль администратора LDAP:

    Enter LDAP Password:

    После ввода пароля вы увидите ответ в следующем формате:

    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. Проверьте, подключен ли сервер управления к LDAP, с помощью следующей команды:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Возврат:

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

Вы также можете отслеживать кеши SymasLDAP, которые помогают уменьшить количество обращений к диску и тем самым повысить производительность системы. Мониторинг и настройка размера кеша на сервере SymasLDAP могут значительно повлиять на производительность сервера каталогов. Чтобы получить информацию о кеше, можно посмотреть файлы журналов (opt/apigee/var/log).