В этом документе описаны методы мониторинга компонентов, поддерживаемых локальным развертыванием Apigee Edge для частного облака.
Обзор
Edge поддерживает несколько способов получения подробной информации об услугах, а также проверки их статуса. В следующей таблице перечислены типы проверок, которые вы можете выполнить для каждой подходящей службы:
API управления | |||||||
Компонент | Использование памяти [JMX * ] | Сервисная проверка | Статус пользователя/организации/развертывания | статус | Проверка базы данных | Статус apigee-service | apigee-monit ** |
Сервер управления | |||||||
Процессор сообщений | |||||||
Маршрутизатор | |||||||
Qpid | |||||||
Постгрес | |||||||
Дополнительная информация | Дополнительная информация | Дополнительная информация | Дополнительная информация | Дополнительная информация | Дополнительная информация | Дополнительная информация | |
* Прежде чем вы сможете использовать JMX, вы должны включить его, как описано в разделе «Включение JMX» . ** Служба |
Мониторинг портов и файлов конфигурации
Каждый компонент поддерживает вызовы мониторинга 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.
- Отредактируйте соответствующий файл конфигурации (см. Справочник по файлам конфигурации ). Создайте файл конфигурации, если он не существует.
conf_system_jmxremote_enable=true
- Сохраните файл конфигурации и убедитесь, что он принадлежит
apigee:apigee
. - Перезапустите соответствующий компонент Edge.
apigee-service edge-management-server restart
Чтобы отключить JMX, либо удалите свойство conf_system_jmxremote_enable
, либо измените его значение на false
. Затем перезапустите соответствующий компонент Edge.
Аутентификация в JMX
Edge для частного облака поддерживает аутентификацию на основе пароля с использованием данных, хранящихся в файлах. Вы можете хранить пароли в виде хеша для дополнительной безопасности.
- Чтобы включить аутентификацию 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.password/jmxremote.access
- Отредактируйте файл и добавьте свое имя пользователя JMX, а затем разрешение (READONLY/READWRITE).
USERNAME READONLY
- Убедитесь, что файл принадлежит
apigee
и что файловый режим равен 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password 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 остаются такими же, как описано в 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 | Возвращает информацию о сервисе, в том числе:
Этот вызов 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:passwordcurl 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 для процессора сообщений.
Для этого вызова вам потребуется пройти аутентификацию с использованием имени пользователя и пароля системного администратора.
Сервер должен возвращать статус «развернуто» для всех вызовов. Если это не помогло, сделайте следующее:
- Проверьте журналы сервера на наличие ошибок. Журналы находятся по адресу:
- Сервер управления:
opt/apigee/var/log/edge-management-server
- Процессор сообщений:
opt/apigee/var/log/edge-message-processor
- Сервер управления:
- Вызовите сервер, чтобы проверить, правильно ли он работает.
- Удалите сервер из 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
:
- Войдите на сервер и выполните следующую команду:
/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
, которую вы использовали ранее, либо с помощью 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 .
Прежде чем запустить скрипт:
- Вы должны установить сценарий check_postgres.pl на каждом узле Postgres.
- Убедитесь, что вы установили
perl-Time-HiRes.x86_64
, модуль Perl, который реализует таймеры сигнализации высокого разрешения, сна, gettimeofday и интервалов. Например, вы можете установить его с помощью следующей команды:yum install perl-Time-HiRes.x86_64
- CentOS 7: перед использованием check_postgres.pl в CentOS v7 установите 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
Апач Кассандра
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
на Кассандре:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Кассандру:
/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
(созданном в предыдущем разделе). - Запустите настройку на Кассандре:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Кассандру:
/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).
- Хранилище доверенных сертификатов должно содержать только сертификат и используется клиентами (командами на основе службы API или 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, выполнив следующие шаги:
- Остановите узел Кассандра, введя
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
- Запустите настройку на Кассандре:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Кассандру:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Повторите этот процесс на всех остальных узлах Cassandra.
- Запустите узел Cassandra, введя
apigee-service apigee-cassandra start
- Остановите узел Кассандра, введя
- Настройте команды
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 хранятся в файле)
- Вариант 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
Убедитесь, что файл доверенного лица доступен для чтения пользователю 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
Настройте 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, описанные в процедуре выше, выполните следующие действия:
- Остановите
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
- Запустите настройку на Кассандре:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Перезапустите Кассандру:
/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.
Статистика Кассандры 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:
- Общая информация о кольце (также возможна для одного узла 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
- Общая информация об узлах (вызов на узел)
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
- Статус бережливого сервера (обслуживающий клиентский 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 см. в разделе Об утилите nodetool .
Ресурс Кассандра
См. следующий URL-адрес: http://www.datastax.com/docs/1.0/operations/monitoring .
Хранитель зоопарка Апач
Проверьте статус 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.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
- Если 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, чтобы увидеть, правильно ли обслуживаются конкретные запросы. Другими словами, проверьте конкретный поиск, который возвращает правильный результат.
- Используйте
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
- Проверьте, подключен ли сервер управления к LDAP, с помощью следующей команды:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
Возврат:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
Вы также можете отслеживать кэши OpenLDAP, что помогает уменьшить количество обращений к диску и, следовательно, повысить производительность системы. Мониторинг и последующая настройка размера кэша на сервере OpenLDAP могут сильно повлиять на производительность сервера каталогов. Вы можете просмотреть файлы журналов ( opt/apigee/var/log
), чтобы получить информацию о кеше.