Как контролировать

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

Обзор

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

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

* Прежде чем использовать JMX, его необходимо включить, как описано в разделе Включение JMX .

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

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

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

Компонент JMX-порт Порт API управления Расположение файла конфигурации
Сервер управления 1099 8080 $APIGEE_ROOT/customer/application/management-server.properties
Процессор сообщений 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
Постгрес 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 for Private Cloud поддерживает аутентификацию по паролю, используя данные, хранящиеся в файлах. Для дополнительной безопасности пароли можно хранить в виде хеша.

  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, а затем разрешение (ТОЛЬКО ЧТЕНИЕ/ЧТЕНИЕ/ЗАПИСЬ).
      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.

Можно добавить одну строку: «jconsole необходимо запустить с хранилищем доверенных сертификатов и паролем хранилища доверенных сертификатов, если для JMX включен SSL». Ссылка: 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 и API управления» .

В следующей таблице показана общая статистика JMX:

JMX MBeans Атрибуты 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

Мониторинг с помощью API управления

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

Выполнение сервисных проверок

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

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

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

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

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

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

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

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

  • Свойства конфигурации
  • Время начала и время работы
  • Информация о сборке, RPM и 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 — это порт API управления для сервера, который вы хотите проверить. Для каждого типа компонента это свой порт. Например, порт API управления сервера управления — 8080. Список номеров портов API управления, которые можно использовать, см. в разделе «Порты мониторинга JMX и API управления».

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

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

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

В следующем примере получена информация о процессоре сообщений по адресу 216.3.128.12 (порт 8082):

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

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

Вы можете использовать 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 вы использовали ранее, или API управления, описанный в разделе Мониторинг с помощью API управления .

    Например:

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

    Где port_numberпорт API управления для службы.

    В этом примере предполагается, что вы вошли на сервер и можете использовать имя хоста «localhost». Для удалённой проверки статуса с помощью 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 v7 установите 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

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

Ресурсы Postgres

Дополнительную информацию о мониторинге службы Postgres см. в следующих разделах:

Апачи Кассандра

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

Включить 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. Перезапустить Кассандру:
    /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. Перезапустить Кассандру:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Повторите этот процесс на всех остальных узлах Cassandra.

Включить JMX с SSL для Cassandra

Включение JMX с SSL обеспечивает дополнительную безопасность и шифрование для обмена данными с Cassandra на основе JMX. Чтобы включить 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. Перезапустить Кассандру:
      /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
    ## If you are using a non standard truststore, set below, otherwise skip
    ## Possible values are JKS, PKCS12, BCFKS
    -Djavax.net.ssl.trustStoreType=PKCS12

    Убедитесь, что файл trustore доступен для чтения пользователю 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
    ## If you are using a non standard truststore, set below, otherwise skip
    ## Possible values are JKS, PKCS12, BCFKS
    -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. Перезапустить Кассандру:
    /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.

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

JMX MBeans Атрибуты JMX

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/audit/audits

ColumnFamilies/audit/audits_ref

ОжидаемыеЗадачи

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 см. в разделе Об утилите nodetool .

Ресурс Кассандры

Перейдите по следующему URL-адресу: http://www.datastax.com/docs/1.0/operations/monitoring .

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

Вы можете контролировать работу Qpid Broker-J через консоль управления Qpid. В этом разделе объясняется, как получить доступ к консоли и использовать её для выполнения основных функций мониторинга. Подробнее об использовании консоли управления см. в разделе «Консоль управления Web» в документации 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 для автоматизации задач управления и мониторинга брокера. Подробнее см. в документации по REST API Apache Qpid Broker .

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

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

Включить мониторинг с SSL для Qpid

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

Qpid предоставляет возможность использовать хранилище ключей в формате File, которое поддерживается в 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 ), чтобы получить информацию о кэше.