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

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

Обзор

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

API управления
Компонент Использование памяти [JMX * ] Сервисная проверка Статус пользователя/организации/развертывания статус Проверка базы данных Статус 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 для частного облака поддерживает аутентификацию на основе пароля с использованием данных, хранящихся в файлах. Вы можете хранить пароли в виде хеша для дополнительной безопасности.

  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.50.00/how-monitor#jconsole.

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

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

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

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

JMX-MBean-компоненты Атрибуты JMX

Память

КучаПамятьИспользование

NonHeapMemoryUsage

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

Ссылка на файл конфигурации

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

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

  • Включите агент JMX на пограничном компоненте. Ложь по умолчанию.
    conf_system_jmxremote_enable=true

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

  • Включите аутентификацию на основе пароля. Ложь по умолчанию.
    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
  • Включите хранение пароля в зашифрованном формате. Ложь по умолчанию.
    conf_system_jmxremote_encrypted_auth=true

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

  • Включите SSL для связи JMX. Ложь по умолчанию.
    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-адрес локального хоста по умолчанию.
    conf_system_java_rmi_server_hostname=
  • Защитите реестр JMX с помощью SSL. По умолчанию ложь. Применимо только в том случае, если включен SSL.
    conf_system_jmxremote_registry_ssl=false

Мониторинг с помощью Management 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 — это порт Management API для сервера, который вы хотите проверить. Это отдельный порт для каждого типа компонента. Например, порт Management API сервера управления — 8080. Список номеров портов Management API, которые можно использовать, см. в разделе Порты мониторинга JMX и Management 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"

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

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

    Например:

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

    Где port_number — это порт Management API для службы.

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

Постгрес-мониторинг

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 на Кассандре:
    /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. Запустите настройку на Кассандре:
    /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 обеспечивает дополнительную безопасность и шифрование для связи на основе 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).

    • Хранилище доверенных сертификатов должно содержать только сертификат и используется клиентами (командами на основе службы API или 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. Остановите узел Кассандра, введя
      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
    3. Измените владельца файла на apigee:apigee, как показано в следующем примере:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    4. Запустите настройку на Кассандре:
      /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. Настройте команды apigee-service Cassandra. Вам необходимо установить определенные переменные среды при запуске команд 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

    Убедитесь, что файл доверенного лица доступен для чтения пользователю 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>

    Выполните следующую команду 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> /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

    Указанный выше путь к хранилищу доверенных сертификатов должен быть доступен любому пользователю, запустившему 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 -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. Запустите настройку на Кассандре:
    /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.

Статистика Кассандры JMX

JMX-MBean-компоненты Атрибуты JMX

ColumnFamilies/apprepo/environments

СтолбецСемьи/apprepo/организации

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxyes

ColumnFamilies/аудит/аудит

ColumnFamilies/audit/audits_ref

Ожидающие задачи

MemtableColumnsCount

Мемтабледатасизе

ReadCount

Недавнее чтениеLatencyMicros

TotalReadLatencyMicros

WriteCount

Недавние записиLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

НедавниеBloomFilterFalseRatio

BloomFilterFalseRatio

Используйте nodetool для управления узлами кластера

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

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

  1. Общая информация о кольце (также возможна для одного узла Cassandra): найдите «Вверх» и «Нормальный» для всех узлов.
    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. Статус бережливого сервера (обслуживающий клиентский 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 .

Хранитель зоопарка Апач

Проверьте статус 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

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

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

    Затем вам будет предложено ввести пароль администратора 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"
    }

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