Edge for Private Cloud v4.18.01
В этом документе описываются методы мониторинга компонентов, поддерживаемые локальным развертыванием Apigee Edge.
Как включить JMX
JMX включен по умолчанию для Cassandra и отключен по умолчанию для всех остальных компонентов Edge. Поэтому JMX необходимо включить для каждого компонента отдельно.
Каждый компонент поддерживает JMX на отдельном порту. В таблице ниже перечислены порты JMX и файлы, которые нужно изменить, чтобы включить JMX на этих портах.
| Компонент | Порт JMX | Файл |
|---|---|---|
| Сервер управления | 1099 | /opt/apigee/edge-management-server/bin/start |
| Маршрутизатор | 1100 | /opt/apigee/edge-router/bin/start |
| Message Processor | 1101 | /opt/apigee/edge-message-processor/bin/start |
| Qpid | 1102 | /opt/apigee/edge-qpid-server/bin/start |
| Postgres | 1103 | /opt/apigee/edge-postgres-server/bin/start |
Например, чтобы включить JMX на сервере управления, откройте в редакторе файл /opt/apigee/edge-management-server/bin/start. Вы должны увидеть следующую строку, которая используется для запуска сервера управления:
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel
Измените эту строку, добавив следующее:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Обратите внимание, что в этой строке указан номер порта JMX 1099 для сервера управления. Укажите номер порта для каждого компонента, как определено в таблице выше. Пример:
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel
Сохраните файл и перезапустите компонент. Например, чтобы перезапустить сервер управления, выполните следующую команду:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
Включение аутентификации JMX и настройка пароля JMX
Для мониторинга Management Server, Message Processor, Qpid и Postgres используется JMX. JMX включен по умолчанию, и для удаленного доступа JMX не требуется пароль.
Чтобы включить аутентификацию JMX, у каждого компонента есть действие change_jmx_auth, которое используется для включения/отключения аутентификации и установки учетных данных JMX.
Чтобы включить аутентификацию JMX, используйте следующую команду:
> /opt/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile
где:
- comp – это edge-management-server, edge-message-processor, edge-qpid-server или edge-postgres-server.
- Возможны следующие варианты:
- -u: имя пользователя;
- -p: пароль.
- -e: y (включить) или n (отключить).
- Файл конфигурации содержит:
- JMX_USERNAME=username
- JMX_ENABLED=y/n
- JMX_PASSWORD=password (если не задано или не передано с помощью -p, вам будет предложено ввести пароль)
Например, чтобы использовать параметры в командной строке:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
Если у вас есть файл конфигурации:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f configFile
Если вы используете Edge на нескольких узлах, выполните эту команду на всех узлах, указав одно и то же имя пользователя и пароль.
Чтобы отключить аутентификацию JMX, используйте следующую команду:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
Сервер управления
Как использовать JConsole для мониторинга состояния системы и обработки информации
Для управления и мониторинга проверки работоспособности и статистики процессов используйте JConsole (инструмент, совместимый с JMX). С помощью JConsole вы можете получать статистику JMX, предоставляемую сервером управления (или любым другим сервером), и просматривать ее в графическом интерфейсе. Дополнительную информацию об использовании JConsole можно найти на странице http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html.
Чтобы отслеживать атрибуты JMX (MBeans), предлагаемые через JMX, используйте JConsole и следующий URL сервиса:
service:jmx:rmi:///jndi/rmi://<ip address>:<port>/jmxrmi
где <ip address> – IP-адрес сервера управления (или соответствующего сервера). По умолчанию для сервера управления используется порт 1099.
В таблице ниже приведены общие статистические данные JMX.
|
JMX MBeans |
Атрибуты JMX |
|---|---|
|
Память |
HeapMemoryUsage |
|
NonHeapMemoryUsage |
|
|
Использование |
|
|
Примечание. Значения атрибутов будут показаны в четырех значениях: committed, init, max и used. |
|
Использование проверок Edge Application API
Вы можете выполнить проверку API на сервере управления (или любом другом сервере), вызвав следующую команду CURL:
curl http://<host>:8080/v1/servers/self/up -H "Accept: application/json"
где <host> – это IP-адрес сервера управления. В качестве типа Accept можно указать application/json или application/xml.
Этот вызов возвращает значения "true" и "false". Если указано значение true, значит узел работает и сервис Java запущен.
Если вы не получили ответ HTTP 200 (OK), значит Edge не может отвечать на запросы через порт 8080.
Устранение неполадок
- Войдите на сервер и выполните следующую команду:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server status - Если служба не запущена, запустите ее:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server start
Использование Edge Приложение – пользователи, организация и проверки развертывания
Сервер управления играет важную роль в объединении всех остальных пакетов в каждой локальной установке. Чтобы проверить статус пользователя, организации и развертывания на сервере управления, выполните следующие команды:
curl -u userEmail:password http://localhost:8080/v1/users curl -u userEmail:password http://localhost:8080/v1/organizations curl -u userEmail:password http://localhost:8080/v1/organizations/orgname/deployments
Для всех вызовов должен отображаться статус "Развернуто". Если это не помогло, выполните следующие действия:
- Проверьте журналы сервера управления (в opt/apigee/var/log/edge-management-server) на наличие ошибок.
- Выполните вызов к серверу управления, чтобы проверить, правильно ли он работает.
- Удалите сервер из ELB, а затем перезапустите сервер управления.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
Маршрутизатор
Вы можете выполнить проверку API на маршрутизаторе (или любом сервере), вызвав следующую команду CURL:
curl http://<host>:8081/v1/servers/self/up
где host – это IP-адрес маршрутизатора.
Этот вызов возвращает значения "true" и "false". Если указано значение true, значит узел работает и сервис Router запущен.
Если вы не получили ответ HTTP 200 (OK), значит Edge не может отвечать на запросы через порт 8081.
Устранение неполадок
- Войдите на сервер и выполните следующие команды:
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-router status - Если сервис не запущен, запустите его:
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-router start - После перезапуска проверьте, работает ли он:
curl -v http://localhost:port/v1/servers/self/up
где port – это 8081 для Router и 8082 для Message Processor.
Как использовать JConsole для мониторинга состояния системы и обработки информации
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 1100.
Message Processor
Как использовать JConsole для мониторинга состояния системы и обработки информации
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 1101.
Использование проверок Edge Application API
Выполните те же действия, что и для маршрутизатора.
Примечание. Убедитесь, что вы используете порт 8082.
Использование проверок потока сообщений JMX
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 1101.
Сервер Qpid
Как использовать JConsole для мониторинга состояния системы и обработки информации
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 1102.
Проверки с помощью Edge Application API
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 8083. Для сервера Qpid также поддерживается следующая команда CURL:
curl http://<qpid_IP>:8083/v1/servers/self
Сервер Postgres
Как использовать JConsole для мониторинга состояния системы и обработки информации
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 1103.
Проверки с помощью Edge Application API
Выполните те же действия, что и для сервера управления.
Примечание. Убедитесь, что вы используете порт 8084. Для сервера Postgres также поддерживается следующая команда CURL:
curl http://<postgres_IP>:8084/v1/servers/self
Использование Edge Проверка организации и среды приложения
Чтобы проверить название организации и среды, которые подключены к серверу Postgres, выполните следующие команды CURL:
curl http:// <postgres_IP>:8084/v1/servers/self/organizations
Примечание. Убедитесь, что вы используете порт 8084.
В системе должны отображаться название организации и среда.
Проверка axstatus приложения Edge Application
Чтобы проверить статус серверов аналитики, выполните следующую команду CURL:
curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus
Для всех серверов аналитики должен отображаться статус SUCCESS (Успешно). Выходные данные команды CURL показаны ниже:
{
"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
Использование скрипта check_postgres.pl
Для мониторинга базы данных PostgreSQL можно использовать стандартный скрипт check_postgres.pl, доступный на странице http://bucardo.org/wiki/Check_postgres.
Примечание. Скрипт check_postgres.pl должен быть установлен на каждом узле Postgres.
Перед запуском скрипта:
- Убедитесь, что у вас установлен модуль Perl perl-Time-HiRes.x86_64, который реализует будильник с высоким разрешением, спящий режим, функцию gettimeofday и интервальные таймеры. Например, вы можете установить его с помощью следующей команды:
yum install perl-Time-HiRes.x86_64
Выходные данные вызовов 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
Примечание. Если вам нужна помощь по использованию указанных выше команд, посетите страницу http://bucardo.org/check_postgres/check_postgres.pl.html.
Проверки базы данных
Вы можете проверить, созданы ли нужные таблицы в базе данных PostgreSQL. Войдите в базу данных PostgreSQL, используя:
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
а затем выполните следующую команду:
\d analytics."<org>.<env>.fact"
Проверьте состояние процесса postgres.
Вы можете выполнить проверку API на компьютере с Postgres, вызвав следующую команду CURL:
http://<postgres_IP>:8084/v1/servers/self/health/
Примечание. Убедитесь, что вы используете порт 8084.
Если процесс postgres активен, возвращается статус ACTIVE. Если процесс postgres не запущен, возвращается статус INACTIVE.
Ресурсы 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
Как использовать JConsole для отслеживания статистики задач
Чтобы отслеживать атрибуты JMX (MBeans), предлагаемые через JMX, используйте JConsole и следующий URL сервиса:
service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi
где <ip address> – IP-адрес сервера Cassandra.
По умолчанию JMX включен для Cassandra, и удаленный доступ JMX к Cassandra не требует пароля.
Чтобы включить аутентификацию JMX и добавить пароль:
- Измените файл /opt/apigee/customer/application/cassandra.properties. Если файла нет, создайте его.
- Добавьте в файл следующую строку:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true - Сохраните файл.
- Скопируйте следующий файл из каталога $JAVA_HOME в /opt/apigee/data/apigee-cassandra/:
cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password - Отредактируйте файл jmxremote.password, добавив в него имя пользователя и пароль:
cassandra password
где password – пароль JMX. - Отредактируйте файл ${JAVA_HOME}/lib/management/jmxremote.access и добавьте следующую роль:
cassandra readwrite - Убедитесь, что владельцем файлов является apigee и что для них задан режим 400:
> chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
> chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.* - Создайте файл в следующем расположении, если он не существует:
/opt/apigee/customer/application/jmx_auth.sh
- Добавьте в созданный файл
jmx_auth.shследующие строки:export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- Выполните следующую команду:
source /opt/apigee/customer/application/jmx_auth.sh
- Запустите configure в Cassandra:
> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure - Перезапустите Cassandra:
> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart - Повторите этот процесс на всех остальных узлах 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.
Статистика 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.
Дополнительную информацию об утилите nodetool можно найти на странице http://www.datastax.com/docs/1.0/references/nodetool.
На всех узлах кластера Cassandra можно выполнять следующие вызовы:
- Общая информация о кольце (также доступна для одного узла Cassandra). Найдите значения Up и Normal для всех узлов.
[host]# nodetool -u username -p password -h localhost ring
Выходные данные команды будут выглядеть следующим образом:
Address DC Rack Status State Load Owns Token
192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33,33% 0
192.168.124.202 dc1 ra1 Up Normal 1.68 MB 33,33% 56713727820156410577229101238628035242
192.168.124.203 dc1 ra1 Up Normal 1.67 MB 33,33% 113427455640312821154458202477256070484 - Общая информация об узлах (вызов для каждого узла)
nodetool -u username -p password -h localhost info
Выходные данные команды выше выглядят следующим образом:
Token : 0
Gossip active : true
Load : 1.67 MB
Generation No : 1361968765
Uptime (seconds) : 78108
Heap Memory (MB) : 46,80 / 772,00
Data Center : dc1
Rack : ra1
Exceptions : 0 - Статус сервера Thrift (обслуживающего клиентский API)
host]# nodetool -u username -p password -h localhost statusthrift
В выходных данных команды выше будет указан статус "Выполняется". - Статус операций потоковой передачи данных. Наблюдайте за трафиком узлов Cassandra.
nodetool -u username -p password -h localhost netstats 192.168.124.203
Выходные данные команды выше выглядят следующим образом:
Mode: NORMAL
Nothing streaming to /192.168.124.203
Nothing streaming from /192.168.124.203
Pool Name Active Pending Completed
Commands n/a 0 1688
Responses n/a 0 292277
Мониторинг Cassandra (пользовательский интерфейс)
Дополнительную информацию можно найти на сайте Datastax OpsCenter: http://www.datastax.com/products/opscenter.
Ресурс Cassandra
Дополнительную информацию можно найти на странице http://www.datastax.com/docs/1.0/operations/monitoring.
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 можно найти на странице http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands.
Пример:
- 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
Примечание. Иногда важно знать, в каком режиме работает ZooKeeper: leader, follower или observer. - Если утилита 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
OpenLDAP
Тест уровня 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).