Table of Contents
Для мониторинга платформы ARTA Synergy используется пакет arta-synergy-health-monitoring
, разработанный на
основе pmm-client
, в сочетании с
PMM-Server. arta-synergy-health-monitoring
предназначен для
мониторинга основных сервисов и инструментов, используемых Synergy: MySQL,
JBoss/Wildfly, nginx, Cassandra, Elasticsearch, а также операционной системы
сервера.
Данный пакет содержит набор экспортеров метрик, характеризующих состояние вышеперечисленных сервисов, а также консольный инструмент pmm-admin, позволяющий настроить отправку метрик на сервер мониторинга. Собранные метрики сохраняются в Prometheus, затем при помощи Grafana строятся графики состояний, которые можно просматривать в браузере.
PMM-Server рекомендуется устанавливать на отдельном сервере. Для его работы требуется Docker.
Предварительно следует установить некоторые дополнительные пакеты:
aptitude install apt-transport-https
ca-certificates curl software-properties-common
Далее добавить ключ для хранилища Docker:
wget
https://download.docker.com/linux/debian/gpg
apt-key add gpg
Затем подключить репозиторий Docker:
echo "deb [arch=amd64]
https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo
tee -a /etc/apt/sources.list.d/docker.list
Обновить список пакетов и установить Docker:
aptitude update
aptitude install docker-ce
После установки запустить и включить Docker для запуска при загрузке:
systemctl start docker
systemctl enable docker
Для установки собственно PMM-Server’а нужно получить его образ с Docker Hub:
docker pull percona/pmm-server:latest
Затем создать контейнер для обновляемых данных мониторинга:
docker create \ -v /opt/prometheus/data \ -v /opt/consul-data \ -v /var/lib/mysql \ -v /var/lib/grafana \ --name pmm-data \ percona/pmm-server:latest /bin/true
Данная команда делает следующее:
docker create
создаёт контейнер на основе
указанного образа;
опция -v инициализирует тома для хранения данных в контейнере;
опция --name
задаёт имя для контейнера, в
данном случае pmm-data
;
percona/pmm-server:latest
указывает
название и версию образа, на основе которого создаётся контейнер.
Этот контейнер запускать не нужно, он существует для сохранения данных мониторинга в случае, например, обновления образа PMM-Server. Не удаляйте и не пересоздавайте контейнер, если вы не намереваетесь начать мониторинг сначала, обнулив данные.
Следующая команда создаёт и запускает контейнер PMM-Server:
docker run -d \ -p 8080:80 \ --volumes-from pmm-data \ --name pmm-server \ --restart always \ percona/pmm-server:latest
опция -d запускает контейнер в фоновом режиме;
опция -p определяет порт для доступа к PMM-Server через браузер, в примере это порт 8080;
опция --volumes-from
примонтирует тома из
ранее созданного контейнера pmm-data
;
опция --name
задаёт имя для контейнера, в
данном случае pmm-server
;
опция --restart
определяет политику
перезапуска контейнера; always
означает,
что Docker запустит контейнер при запуске и в случае отключения контейнера.
percona/pmm-server:latest
указывает
название и версию образа, на основе которого создаётся контейнер.
После этого в браузере по адресу http://host:8080
должна быть доступна стартовая
страница Percona Monitoring and Management:
Более подробные инструкции по работе с PMM-Server можно найти на официальном сайте Percona.
В коробочную версию PMM-Server нужно импортировать необходимые дашборды для мониторинга: JBoss, nginx, Cassandra, Elasticsearch.
Для импорта нужно нажать название текущего дашборда в левом верхнем углу и выбрать пункт Import dashboard:
В открывшемся окне нажать Upload .json File, выбрать нужный дашборд и
указать источником данных Prometheus, затем нажать Import
:
Для установки пакета arta-synergy-health-monitoring нужно добавить в
/etc/apt/sources.list
следующую строку:
deb [allow-insecure=yes] http://deb.arta.kz/tengri
shm main contrib non-free
Затем обновить список пакетов и установить нужный пакет:
aptitude update
aptitude install
arta-synergy-health-monitoring
PMM-Server должен быть доступен с сервера Synergy, это можно проверить,
например, командой ping
.
В первую очередь нужно установить соединение между сервером Synergy и PMM-Server. Для этого используется консольная команда:
pmm-admin config --server=server[:port]
Если соединение успешно установилось, в консоли должен появиться подобный вывод:
root@client:~# pmm-admin config --server=192.168.2.234:8080 OK, PMM server is alive. PMM Server | 192.168.2.234:8080 Client Name | client Client Address | 192.168.2.84
После этого можно подключать мониторинг требуемых сервисов.
Cмотреть список и состояние наблюдаемых сервисов можно командой pmm-admin list
.
Для мониторинга операционной системы и MySQL в консоли нужно выполнить команду, используя логин и пароль пользователя для mysql:
pmm-admin add mysql --user root --password
root
Если мониторинг этих сервисов успешно добавился, команда pmm-admin list
должна показать подобный список:
root@client:~# pmm-admin list pmm-admin 1.17.1 PMM Server | 192.168.2.234:8080 Client Name | client Client Address | 192.168.2.84 Service Manager | linux-systemd -------------- ------- ----------- -------- ------------------------------------------- -------------------------------------------------------------------------------------- SERVICE TYPE NAME LOCAL PORT RUNNING DATA SOURCE OPTIONS -------------- ------- ----------- -------- ------------------------------------------- -------------------------------------------------------------------------------------- mysql:queries client - YES root:***@unix(/var/run/mysqld/mysqld.sock) query_source=slowlog, query_examples=true, slow_log_rotation=true, retain_slow_logs=1 linux:metrics client 42000 YES - mysql:metrics client 42002 YES root:***@unix(/var/run/mysqld/mysqld.sock)
Для мониторинга JBoss/Wildfly нужно добавить следующие строки в /opt/synergy/jboss/bin/standalone.conf
:
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/opt/synergy/jboss/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.4.0.Final.jar" JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/opt/synergy/jboss/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.4.Final.jar" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager" JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" JAVA_OPTS="$JAVA_OPTS -javaagent:/opt/synergy/jboss/standalone/lib/ext/jmx_prometheus_javaagent.jar=58080:/opt/synergy/jboss/standalone/configuration/jboss.yaml"
Затем сделать доступной статистику источников данных, добавив statistics-enabled="true"
для SynergyDS
и StorageDS
в /opt/synergy/jboss/standalone/configuration/standalone-onesynergy.xml
:
<xa-datasource jndi-name="java:/SynergyDS" pool-name="synergy_ds" enabled="true" use-ccm="false" statistics-enabled="true"> <xa-datasource-property name="URL"> jdbc:mysql://127.0.0.1:3306/synergy?useUnicode=true&characterEncoding=utf8 . . . . . . </xa-datasource>
…
<xa-datasource jndi-name="java:/StorageDS" pool-name="storage_ds" enabled="true" use-ccm="false" statistics-enabled="true"> <xa-datasource-property name="URL"> jdbc:mysql://127.0.0.1:3306/storage?useUnicode=true&characterEncoding=utf8 . . . . . . </xa-datasource>
После этого нужно перезапустить JBoss/Wildfly.
По умолчанию конфигурационный файл jboss.yaml
и экспортер метрик jmx_prometheus_javaagent.jar
находятся в
вышеуказанном расположении. Если вы перемещаете их, укажите новый путь в
standalone.conf
. Здесь также можно
указать другой порт для передачи метрик.
Собираемые метрики доступны для просмотра в браузере по адресу http://server:58080/metrics
. Если в standalone.conf
используется другой порт, в
адресной строке нужно указывать его.
Далее следует добавить мониторинг JBoss/Wildfly в PMM-Server, в общем случае команда выглядит так:
pmm-admin add external:service --service-port=58080
jboss testserver-jboss
, где
jboss - имя задания для Prometheus;
testserver-jboss - название инстанса. Так как аналогичный экспортер используется и для Cassandra, нужно указать название явно, чтобы метрики JBoss/Wildfly и Cassandra не смешивались на графиках.
Для мониторинга nginx нужно добавить следующие строки в /etc/nginx/nginx.conf
в секцию Logging settings
:
log_format shm '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$request_time $hostname';
Далее в файле /etc/nginx/sites-enabled/synergy-base
в разделе
location /Synergy
добавить в описание
лога synergy.access.log
определённый
шагом ранее формат, в данном случае shm
:
location /Synergy { proxy_pass http://127.0.0.1:8080/Synergy; ... access_log /var/log/nginx/synergy.access.log shm; }
Чтобы изменения вступили в силу, нужно перезапустить nginx:
/etc/init.d/nginx restart
В конфигурационном файле /etc/prometheus-nginxlog-exporter.hcl
нужно
указать параметры app
и instance
, также можно назначить другой порт (по
умолчанию 4040):
listen { port = 4040 address = "0.0.0.0" } namespace "synergy" { format = "$remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\" $request_time $hostname" source_files = [ "/var/log/nginx/synergy.access.log" ] labels { app = "nginx284" instance = "testserver-nginx" } histogram_buckets = [.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10] }
Запустить мониторинг запросов nginx:
systemctl start
prometheus-nginxlog-exporter.service
Собираемые метрики доступны для просмотра в браузере по адресу http://server:4040/metrics
.
Далее следует добавить мониторинг nginx в PMM-Server, в общем случае команда выглядит так:
pmm-admin add external:service --service-port=4040
nginx testserver-nginx --interval 10s
Параметр --interval
указывает интервал
сбора метрик в PMM-Server, для экспортера nginx лучше указать интервал
меньше, чем интервал по умолчанию, который равен 1 минуте.
Для мониторинга Cassandra нужно добавить в /etc/cassandra/cassandra-env.sh
строку:
JVM_OPTS="$JVM_OPTS
-javaagent:/usr/share/cassandra/lib/jmx_prometheus_javaagent.jar=7070:/etc/cassandra.yaml"
Затем закомментировать в /etc/init.d/cassandra
строки:
# Read Cassandra environment file. #. /etc/cassandra/cassandra-env.sh #if [ -z "$JVM_OPTS" ]; then # echo "Initialization failed; \$JVM_OPTS not set!" >&2 # exit 3 #fi
Выполнить обновление конфигов systemd
:
systemctl daemon-reload
Перезапустить Cassandra:
/etc/init.d/cassandra restart
По умолчанию конфигурационный файл cassandra.yaml
и экспортер метрик jmx_prometheus_javaagent.jar
находятся в
вышеуказанном расположении. Если вы перемещаете их, укажите новый путь в
cassandra-env.sh
. Здесь также можно
указать другой порт для мониторинга.
Собираемые метрики доступны для просмотра в браузере по адресу http://server:7070/metrics
. Если в cassandra-env.sh
используется другой порт, в
адресной строке нужно указывать его.
Далее следует добавить мониторинг Cassandra в PMM-Server, в общем случае команда выглядит так:
pmm-admin add external:service --service-port=7070
cassandra testserver-cassandra
Так как аналогичный экспортер используется и для JBoss/Wildfly, нужно указать явно название инстанса (в данном случае testserver-cassandra), чтобы метрики JBoss/Wildfly и Cassandra не смешивались на графиках.