В этом документе описаны методы мониторинга компонентов, поддерживаемых локальным развертыванием Apigee Edge для частного облака.
Обзор
В Edge есть несколько способов получить информацию о сервисах и проверить их статус. В таблице ниже перечислены типы проверок, которые можно выполнять для каждого подходящего сервиса.
| Mgmt API | |||||||
| Компонент | Использование памяти [JMX*] | Проверка сервиса | Статус пользователя, организации или развертывания | axstatus | Проверка базы данных | apigee-service: статус |
apigee-monit** |
| Сервер управления | |||||||
| Message Processor | |||||||
| Маршрутизатор | |||||||
| Qpid | |||||||
| Postgres | |||||||
| Подробнее… | Подробнее… | Подробнее… | Подробнее… | Подробнее… | Подробнее… | Подробнее… | |
|
* Чтобы использовать JMX, необходимо включить эту технологию, как описано в разделе Как включить JMX. ** Сервис |
|||||||
Порты и файлы конфигурации для мониторинга
Каждый компонент поддерживает Java Management Extensions (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.
- Измените нужный файл конфигурации (см.
справку по файлам конфигурации). Если файла конфигурации нет, создайте его.
conf_system_jmxremote_enable=true
- Сохраните файл конфигурации и убедитесь, что его владельцем является
apigee:apigee. - Перезапустите нужный компонент Edge
apigee-service edge-management-server restart
Чтобы отключить JMX, удалите свойство conf_system_jmxremote_enable или измените его значение на false. Затем перезапустите нужный компонент Edge.
Аутентификация в JMX
Edge for Private Cloud поддерживает аутентификацию на основе паролей, используя данные, хранящиеся в файлах. Для дополнительной защиты пароли можно хранить в виде хеша.
- Чтобы включить аутентификацию 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. - Создайте хеш SHA256 пароля:
echo -n '
' | openssl dgst -sha256 - Создайте файл
jmxremote.passwordс учетными данными пользователя JMX:- Скопируйте следующие файлы из каталога
$JAVA_HOMEв каталог/opt/apigee/customer/application/<component>/:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password - Отредактируйте файл и добавьте имя пользователя и пароль JMX, используя следующий синтаксис:
USERNAME <HASH-PASSWORD>
- Убедитесь, что владельцем файла является
apigeeи что для файла задан режим 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- Скопируйте следующие файлы из каталога
- Создайте файл
jmxremote.accessс разрешениями пользователя JMX:- Скопируйте следующие файлы из каталога $JAVA_HOME в каталог
/opt/apigee/customer/application/<component>/:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/customer/application/management-server/jmxremote.access - Отредактируйте файл, добавив имя пользователя JMX и разрешение (READONLY/READWRITE).
USERNAME READONLY
- Убедитесь, что файл принадлежит пользователю
apigeeи что для него задан режим 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.access chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- Скопируйте следующие файлы из каталога $JAVA_HOME в каталог
- Перезапустите нужный компонент Edge:
apigee-service edge-management-server restart
Чтобы отключить аутентификацию JMX, удалите свойство conf_system_jmxremote_authenticate или измените его значение на false и перезапустите соответствующий компонент Edge.
SSL в JMX
Чтобы включить JMX на основе SSL в компоненте edge-*, выполните следующие действия:
- Отредактируйте нужный файл конфигурации (см.
справочную информацию о файлах конфигурации). Если файла конфигурации нет, создайте его:
Сохраните файл конфигурации и убедитесь, что его владельцем является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. - Подготовьте хранилище ключей, содержащее ключ сервера, и поместите его по пути, указанному в конфигурации
conf_system_javax_net_ssl_keystoreвыше. Убедитесь, что файл хранилища ключей доступен для чтенияapigee:apigee. - Перезапустите нужный компонент Edge:
apigee-service edge-management-server restart
Чтобы отключить JMX на основе SSL, удалите свойство conf_system_jmxremote_ssl или измените значение на false. Перезапустите соответствующий компонент Edge.
Мониторинг с помощью 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.
| 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 с помощью 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 |
Возвращает информацию о сервисе, в том числе:
Для этого вызова 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"
В следующем примере запрашивается информация о 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:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
где port_number – это 8080 для Management Server или 8082 для Message Processor.
Для этого звонка вам нужно будет пройти аутентификацию с помощью имени пользователя и пароля системного администратора.
Сервер должен возвращать статус deployed (развернуто) для всех вызовов. Если это не помогло, сделайте следующее:
- Проверьте, зафиксированы ли ошибки в журналах сервера. Журналы находятся по следующему пути:
- Сервер управления:
opt/apigee/var/log/edge-management-server - Message Processor:
opt/apigee/var/log/edge-message-processor
- Сервер управления:
- Выполните вызов сервера, чтобы проверить, правильно ли он работает.
- Удалите сервер из ELB и перезапустите его:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
Где service_name:
edge-management-serveredge-message-processor
Как проверить статус с помощью команды apigee-service
Чтобы устранить неполадки в сервисах Edge, используйте команду apigee-service, когда вы вошли на сервер, на котором запущен сервис.
Чтобы проверить статус сервиса с помощью apigee-service:
- Войдите на сервер и выполните следующую команду:
/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
- Сервер управления:
- Если служба не запущена, запустите ее:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- После перезапуска сервиса проверьте, работает ли он, с помощью команды
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.
Перед запуском скрипта:
- Скрипт check_postgres.pl необходимо установить на каждом узле Postgres.
- Убедитесь, что вы установили
perl-Time-HiRes.x86_64– модуль Perl, который реализует будильник с высоким разрешением, таймеры сна, gettimeofday и интервальные таймеры. Например, вы можете установить его с помощью следующей команды:
yum install perl-Time-HiRes.x86_64
- CentOS 7. Перед использованием check_postgres.pl на CentOS 7 установите RPM-пакет
perl-Data-Dumper.x86_64.
Выходные данные check_postgres.pl
Выходные данные вызовов API, использующих check_postgres.pl, по умолчанию совместимы с Nagios. После установки скрипта выполните следующие проверки:
- Проверьте размер базы данных:
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'
- Проверьте количество входящих подключений к базе данных и сравните его с максимально допустимым:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- Проверьте, запущена ли и доступна ли база данных:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- Проверьте свободное место на диске:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
- Проверьте количество организаций и сред, подключенных к узлу 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 можно найти в следующих источниках:
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
Apache Cassandra
По умолчанию JMX включен для Cassandra, и удаленный доступ JMX к Cassandra не требует пароля.
Как включить аутентификацию JMX для Cassandra
Вы можете включить аутентификацию JMX для Cassandra. После этого вам нужно будет передавать имя пользователя и пароль при каждом вызове утилиты nodetool.
Чтобы включить аутентификацию JMX для Cassandra:
- Создайте и отредактируйте файл
cassandra.properties:- Отредактируйте файл
/opt/apigee/customer/application/cassandra.properties. Если файла нет, создайте его. - Добавьте в файл следующее:
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
- Сохраните файл
cassandra.properties. - Смените владельца файла на
apigee:apigee, как показано в примере ниже.chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
Дополнительную информацию об использовании файлов свойств для настройки токенов можно найти в статье Как настроить Edge.
- Отредактируйте файл
- Создание и редактирование
jmx_auth.sh:- Если файла нет, создайте его в следующем каталоге:
/opt/apigee/customer/application/jmx_auth.sh
- Добавьте в файл следующие свойства:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- Сохраните файл
jmx_auth.sh. - Укажите источник файла:
source /opt/apigee/customer/application/jmx_auth.sh
- Если файла нет, создайте его в следующем каталоге:
- Скопируйте и измените файл
jmxremote.password:- Скопируйте следующий файл из каталога
$JAVA_HOMEв каталог/opt/apigee/customer/application/apigee-cassandra/:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password - Отредактируйте файл
jmxremote.passwordи добавьте имя пользователя и пароль JMX, используя следующий синтаксис:JMX_USERNAME JMX_PASSWORD
где JMX_USERNAME и JMX_PASSWORD – имя пользователя и пароль JMX, заданные ранее.
- Убедитесь, что владельцем файла является apigee и что для файла задан режим 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
- Скопируйте следующий файл из каталога
- Скопируйте и отредактируйте файл
jmxremote.access:- Скопируйте следующий файл из каталога
$JAVA_HOMEв каталог/opt/apigee/customer/application/apigee-cassandra/:cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access - Отредактируйте файл
jmxremote.accessи добавьте следующую роль:JMX_USERNAME readwrite
- Убедитесь, что владельцем файла является apigee и что для файла задан режим 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
- Скопируйте следующий файл из каталога
- Запуск
configureв Cassandra:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Повторите этот процесс на всех остальных узлах Cassandra.
Включить шифрование паролей JMX
Чтобы включить шифрование пароля JMX, выполните следующие действия:
- Откройте файл
source/conf/casssandra-env.sh. - Создайте и отредактируйте файл
cassandra.properties:- Отредактируйте файл
/opt/apigee/customer/application/cassandra.properties. Если файла нет, создайте его. - Добавьте в файл следующее:
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- Сохраните файл cassandra.properties.
- Измените владельца файла на apigee:apigee, как показано в примере ниже.
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Отредактируйте файл
- В командной строке сгенерируйте хеш SHA1 нужных паролей, введя
echo -n 'Secret' | openssl dgst -sha1 - Задайте пароли для имени пользователя в файле
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password(созданном в предыдущем разделе). - Запустите настройку Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Повторите этот процесс на всех остальных узлах Cassandra.
Как включить JMX с SSL для Cassandra
Включение JMX с SSL обеспечивает дополнительную безопасность и шифрование для связи на основе JMX с Cassandra. Чтобы включить JMX с SSL, вам нужно предоставить ключ и сертификат для Cassandra, чтобы принимать подключения JMX на основе SSL. Вам также необходимо настроить nodetool (и любые другие инструменты, которые общаться с Cassandra через JMX) для SSL.
JMX с поддержкой SSL поддерживает как обычные, так и зашифрованные пароли JMX.
Чтобы включить JMX с SSL для Cassandra, выполните следующую процедуру:
- Включите JMX. При необходимости включите шифрование паролей.
- Включите аутентификацию JMX для Cassandra.
как описано выше. Убедитесь, что nodetool работает с настроенными именем пользователя и паролем.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
Подготовьте хранилище ключей и хранилище доверенных сертификатов.
Хранилище ключей должно содержать ключ и сертификат и используется для настройки сервера Cassandra. Если хранилище ключей содержит несколько пар ключей, Cassandra использует первую пару ключей для включения SSL.
Обратите внимание, что пароли для хранилища ключей и ключа должны быть одинаковыми (это значение по умолчанию при создании ключа с помощью keytool).
- Хранилище доверенных сертификатов должно содержать только сертификат и используется клиентами (командами на основе apigee-service или nodetool) для подключения через JMX.
После того как вы убедитесь, что все требования выполнены:
- Поместите файл хранилища ключей в папку
/opt/apigee/customer/application/apigee-cassandra/. - Убедитесь, что файл хранилища ключей доступен для чтения только пользователю Apigee, введя
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- Чтобы настроить Cassandra для JMX с SSL, выполните следующие действия:
- Остановите узел Cassandra, введя команду
apigee-service apigee-cassandra stop
- Включите 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
- Измените владельца файла на apigee:apigee, как показано в примере ниже.
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Выполните настройку Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Повторите этот процесс на всех остальных узлах Cassandra.
- Запустите узел Cassandra, введя
apigee-service apigee-cassandra start
- Остановите узел Cassandra, введя команду
- Настройте команды 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 хранятся в файле)
- Вариант 2 (аргументы SSL хранятся в переменных среды)
- Вариант 3 (аргументы SSL передаются непосредственно в
apigee-service)
Вариант 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
Настройте nodetool. Nodetool требует передачи параметров JMX. Есть два способа настроить nodetool для работы с JMX с поддержкой SSL, как описано в параметрах конфигурации ниже:
Варианты различаются способом передачи конфигураций, связанных с SSL, в nodetool. В обоих случаях у пользователя, запускающего nodetool, должны быть разрешения на чтение файла хранилища доверенных сертификатов. Выберите подходящий вариант в зависимости от удобства использования и ваших методов обеспечения безопасности.
Подробную информацию о параметрах nodetool можно найти в документации по nodetool для Apache Cassandra.
Вариант конфигурации 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, описанные в процедуре выше, выполните следующие действия:
- Остановите
apigee-cassandra, введяapigee-service apigee-cassandra stop
- Удалите строку
conf_cassandra-env_com.sun.management.jmxremote.ssl=trueиз файла/opt/apigee/customer/application/cassandra.properties. - Закомментируйте следующие строки в файле
/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”
- Начните
apigee-cassandra, введя - Удалите переменную среды
CASS_JMX_SSL, если она была задана.unset CASS_JMX_SSL
- Проверьте, работают ли команды на основе
apigee-service, напримерring,stop,backupи т. д. - Прекратите использовать параметр
--sslс nodetool.
apigee-service apigee-cassandra start
Отключить аутентификацию JMX для Cassandra
Чтобы отключить аутентификацию JMX для Cassandra:
- Изменить набор "
/opt/apigee/customer/application/cassandra.properties". - Удалите из файла следующую строку:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- Запустите настройку Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Повторите этот процесс на всех остальных узлах 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 |
PendingTasks |
|
MemtableColumnsCount |
|
|
MemtableDataSize |
|
|
ReadCount |
|
|
RecentReadLatencyMicros |
|
|
TotalReadLatencyMicros |
|
|
WriteCount |
|
|
RecentWriteLatencyMicros |
|
|
TotalWriteLatencyMicros |
|
|
TotalDiskSpaceUsed |
|
|
LiveDiskSpaceUsed |
|
|
LiveSSTableCount |
|
|
BloomFilterFalsePositives |
|
|
RecentBloomFilterFalseRatio |
|
|
BloomFilterFalseRatio |
Как управлять узлами кластера с помощью nodetool
Утилита nodetool – это интерфейс командной строки для Cassandra, который управляет узлами кластера. Утилиту можно найти по адресу /opt/apigee/apigee-cassandra/bin.
На всех узлах кластера Cassandra можно выполнять следующие вызовы:
- Общая информация о кольце (также доступна для одного узла 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
- Общая информация об узлах (вызов для каждого узла)
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
- Статус сервера Thrift (обслуживающего клиентский API).
nodetool [-u username -pw password] -h localhost statusthrift
Выходные данные команды будут выглядеть следующим образом:
running
- Статус операций потоковой передачи данных. Отслеживайте трафик для узлов 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. В этом разделе рассказывается, как получить доступ к консоли и использовать ее для выполнения основных функций мониторинга. Подробную информацию об использовании консоли управления можно найти в разделе Web Management Console (Веб-консоль управления) документации Apache Qpid.
Как получить доступ к консоли управления
Порт консоли управления по умолчанию – 8090. Чтобы получить доступ к консоли через этот порт, введите в адресной строке браузера:
http://QPID_NODE_IP:8090
Чтобы войти в консоль, используйте учетные данные по умолчанию, заданные Apigee, или учетные данные, заданные в файле конфигурации Edge. Подробные сведения приведены в справочнике по файлу конфигурации Edge.
Как отслеживать очереди и сообщения
На панели навигации слева выберите Java-Broker > virtualhosts > queues. Выберите очередь, чтобы посмотреть ее сведения в основной части интерфейса. В подробном представлении можно посмотреть атрибуты и статистику очереди, в том числе информацию о доставленных и поставленных в очередь письмах, скорости обработки писем и т. д.
Как посмотреть и скачать файлы журналов
На панели навигации слева выберите Java-Broker > brokerloggers > logfile. В главном интерфейсе в подробном представлении можно посмотреть сведения о файлах журнала и скачать их.
Использование Qpid Management API
Вы можете использовать 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 предоставляет возможность использовать хранилище ключей File Keystore, которое включено в Apigee. Этот тип поддерживает стандартный формат хранилища ключей JKS, который распознается Java и инструментами Java, например keytool. Также можно использовать хранилище ключей PKCS12, которое можно создать с помощью таких инструментов, как OpenSSL.
Подготовка хранилища ключей
Инструкции по созданию хранилищ ключей можно найти в документации по Java Keytool.
Информацию о создании хранилищ ключей PKCS12 можно найти в документации по OpenSSL.
После проверки требований
- Поместите файл хранилища ключей в папку
/opt/apigee/customer/application/apigee-qpidd. - Убедитесь, что файл хранилища ключей доступен для чтения только пользователю 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
- Смените владельца файла на apigee:apigee:
chown apigee:apigee /opt/apigee/customer/application/qpidd.properties
- Настройте Qpidd:
apigee-service apigee-qpidd configure
- Перезапустите Qpidd:
apigee-service apigee-qpidd restart
- Проверьте статус с помощью 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
- Настройте Qpidd:
apigee-service apigee-qpidd configure
- Перезапустите Qpidd:
apigee-service apigee-qpidd restart
- Проверьте статус с помощью wait_for_ready:
apigee-service apigee-qpidd wait_for_ready
Apache ZooKeeper
Как проверить статус ZooKeeper
- Убедитесь, что процесс ZooKeeper запущен. ZooKeeper записывает файл PID в каталог
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid. - Проверьте порты ZooKeeper, чтобы убедиться, что вы можете установить TCP-подключение к портам 2181 и 3888 на каждом сервере ZooKeeper.
- Убедитесь, что вы можете считывать значения из базы данных ZooKeeper. Подключитесь с помощью клиентской библиотеки ZooKeeper (или
/opt/apigee/apigee-zookeeper/bin/zkCli.sh) и прочитайте значение из базы данных. - Проверьте статус:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
Как использовать четырехбуквенные команды ZooKeeper
Для мониторинга ZooKeeper можно использовать небольшой набор команд (четырехбуквенных слов), которые отправляются на порт 2181 с помощью netcat (nc) или telnet.
Дополнительную информацию о командах ZooKeeper можно найти в справочнике по командам Apache ZooKeeper.
Пример:
srvr: показывает подробные сведения о сервере.stat: содержит краткую информацию о сервере и подключенных клиентах.
В порт ZooKeeper можно отправлять следующие команды:
- Выполните команду ruok, чтобы проверить, работает ли сервер без ошибок. В случае успеха возвращается ответ "imok".
echo ruok | nc host 2181
Возврат:
imok
- Выполните четырехбуквенную команду
stat, чтобы получить список показателей производительности сервера и статистику подключенных клиентов:echo stat | nc host 2181
Возврат:
Zookeeper version: 3.8.5-19f1842d4b6ee1f82cc8b05284959b26c6ae507d, built on 2025-09-18 17:23 UTC 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
- Если утилита 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, чтобы убедиться, что определенные запросы обрабатываются правильно. Другими словами, проверьте, возвращает ли определенный поисковый запрос правильный результат.
- Используйте
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
- Проверьте, подключен ли сервер управления к LDAP, с помощью следующей команды:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
Возврат:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
Вы также можете отслеживать кеши SymasLDAP, которые помогают сократить количество обращений к диску и тем самым повысить производительность системы. Отслеживание и последующая настройка размера кеша на сервере SymasLDAP могут сильно повлиять на производительность сервера каталогов. Информацию о кеше можно найти в файлах журнала (opt/apigee/var/log).