Управление сервисами
Для управления сервисами Памир используется утилита командной строки (CLI) —
pamirctl. Утилита автоматически устанавливается в PATH пользователя в ходе
установки приложения; привилегии суперпользователя для этого не требуются.
При необходимости утилиту можно вызвать напрямую по пути $HOME/.pamir/pamirctl.
Утилита принимает следующие команды:
start— запуск сервисов приложения. Перед запуском автоматически выполняется проверка целостности образов контейнеров и конфигурационных файлов.stop— остановка сервисов и удаление контейнеров. Тома хранения данных сохраняются.restart— последовательная остановка и запуск сервисов. Также выполняет проверку целостности перед запуском.status— просмотр текущего состояния всех сервисов.sums— вывод эталонных контрольных сумм, встроенных в бинарник при сборке.--daemon— режим демона: непрерывный периодический контроль целостности работающих контейнеров с автоматической остановкой нарушителей. Устанавливается и запускается инсталлятором автоматически как пользовательский сервис systemd.
Утилита применяется для управления как сервисами Памир, так и сервисами пробы.
Для этого используется файл конфигурации, по умолчанию располагающийся по пути
$HOME/.pamirctl.yml, и может быть переопределён опциональным аргументом
--config /path/to/config.yml.
Пример файла конфигурации для управления сервером Памир:
---
app_type: pamir
app_path: /home/user/.pamir
app_profiles:
- app
Изменение набора запускаемых сервисов
Набор запускаемых сервисов (приложение, СУБД, экспортеры и дополнительные компоненты) может быть
переопределен в файле конфигурации pamirctl. По-умолчанию приложение запускается со следующим
набором компонентов:
- app
- tsdb
- exporters
- ldap
- ca
- opensearch
Под набором сервисов ещё можно понимать набор ролей, которые будет выполнять сервер Памир, например, в поведении по-умолчанию, сервер Памир является ещё и базой данных временных рядов, коллектором метрик blackbox и snmp, а также является LDAP-сервером и удостоверяющим центром для приложения.
Технически набор запускаемых сервисов называется профили, а в файле конфигурации за установку
профилей отвечает параметр app_profiles.
Файл конфигурации .pamirctl.yml отсутствует в стандартной инсталляции и должен быть создан вручную, в случае
необходимости конфигурации pamirctl. Утилита ищет его в следующих путях:
- текущая рабочая директория (
$CWD), например, если Вы находитесь в каталоге/opt/pamir, то файл конфигурации должен находиться по пути/opt/pamir/.pamirctl.yml; - домашняя директория пользователя (
$HOME), например,/home/user/.pamirctl.yml; /etc/.pamirctl.yml.
Хорошей практикой будет расположение файла конфигурации .pamirctl.yml в каталоге пользователя.
В таком случае файл гарантированно не будет перезаписан при обновлении
(например, при удалении каталога $HOME/.pamir), а также утилита pamirctl может быть запущена
из любой рабочей директории.
Доступные роли сервера Памир
| Профиль (роль) | Набор сервисов, входящих в профиль |
|---|---|
| all | Все сервисы, входящие в дистрибутив |
| app | Все сервисы в ролях backend и frontend |
| backend | Все сервисы backend и их зависимости |
| backend.auth | Сервис auth и его зависимости (PostgreSQL, RabbitMQ, Redis, Flower) |
| backend.celery | Сервис celery и его зависимости |
| backend.docker-tool | Сервис docker-tool и его зависимости |
| backend.license | Сервис лицензирования и его зависимости |
| backend.monitoring | Сервис monitoring и его зависимости |
| backend.notification | Сервис notification и его зависимости |
| backend.srm | Сервис srm и его зависимости |
| backend.task-tool | Сервис task-tool и его зависимости |
| ca | Сервис удостоверяющего центра (Smallstep Step CA) и ACME клиент (ACME Companion) |
| db | Все сервисы СУБД, кроме СУБД временных рядов (PostgreSQL, Redis) |
| db.postgres | Сервис СУБД PostgreSQL |
| db.redis | Сервис СУБД Redis |
| debug | Профиль, используемый для отладки приложения и разработки |
| exporters | Все экспортеры, входящие в дистрибутив |
| exporters.external | Экспортеры, не управляемые Памир (postgres-exporter, cadvisor, docker-state-exporter, jmx-exporter) |
| exporters.internal | Экспортеры, управляемые Памир (blackbox, snmp, json, sql, nginxlog, node) |
| frontend | Сервис frontend |
| ldap | Сервис службы каталогов (OpenLDAP) |
| migrations | Профиль применения миграций баз данных; запускается автоматически при установке/обновлении Памир |
| mq | Все сервисы брокера сообщений |
| mq.rabbitmq | Сервис брокера сообщений RabbitMQ |
| opensearch | Все компоненты хранилища журналов (OpenSearch, OpenSearch Dashboards, Logstash) |
| opensearch.dashboards | Сервис веб-интерфейса OpenSearch Dashboards |
| opensearch.logstash | Сервис Logstash (агент сбора и передачи журналов в OpenSearch) |
| tsdb | Все базовые сервисы СУБД временных рядов (Metrics, Alertmanager) |
| tsdb.alertmanager | Сервис уведомлений Alertmanager |
| tsdb.longterm | Сервисы Metrics для долговременного хранения метрик (хранилище, агент сбора, обработчик правил) |
| vector | Сервис Vector (агент маршрутизации журналов и метрик) |
Запуск приложения
Запуск Памир осуществляется командой pamirctl start, после чего создаются и
запускаются контейнеры. Большая часть контейнеров дополнительно проверяется
на работоспособность и способность принимать трафик (healthcheck).
Пример вывода команды pamirctl start
[+] Running 28/28
✔ Container pamir-step-ca-1 Running 0.0s
✔ Container pamir-rabbitmq-1 Healthy 1.0s
✔ Container pamir-license-1 Healthy 1.5s
✔ Container pamir-fluent-bit-1 Running 0.0s
✔ Container pamir-redis-1 Healthy 1.0s
✔ Container pamir-openldap-1 Running 0.0s
✔ Container pamir-node-exporter-1 Running 0.0s
✔ Container pamir-database-1 Healthy 1.0s
✔ Container pamir-flower-1 Running 0.0s
✔ Container pamir-frontend-1 Started 0.3s
✔ Container pamir-acme-1 Started 1.3s
✔ Container pamir-prometheus-1 Healthy 16.9s
✔ Container pamir-alertmanager-1 Started 1.6s
✔ Container pamir-celery-1 Started 1.5s
✔ Container pamir-monitoring-1 Started 1.7s
✔ Container pamir-notification-1 Started 1.7s
✔ Container pamir-docker-tool-1 Started 1.6s
✔ Container pamir-auth-1 Started 1.7s
✔ Container pamir-srm-1 Started 1.6s
✔ Container pamir-task-tool-1 Started 0.9s
✔ Container pamir-json-exporter-1 Started 2.3s
✔ Container pamir-nginxlog-exporter-1 Started 2.3s
✔ Container pamir-postgres-exporter-1 Started 2.3s
✔ Container pamir-cadvisor-1 Started 2.5s
✔ Container pamir-sql-exporter-1 Started 2.1s
✔ Container pamir-snmp-exporter-1 Started 2.3s
✔ Container pamir-docker-state-exporter-1 Started 2.8s
✔ Container pamir-blackbox-exporter-1 Started 2.7s
Параметризация сервисов
Данная команда также может использоваться для применения настроек, внесенных
в конфигурацию сервисов (файлы docker-compose*.yml), например, если нужно
опубликовать извне сервис Metrics, для настройки remote-write, вносятся
изменения в файл docker-compose.additional.yml такого вида:
services:
metrics-storage:
ports:
- "8428:8428"
Для применения данных параметров необходимо запустить команду запуска с дополнительным позиционным аргументом - именем сервиса:
pamirctl start metrics-storage
Остановка приложения
Остановка Памир осуществляется командой pamirctl stop, которая останавливает
работающие контейнеры и удаляет их. Тома хранения (volumes) и директория
$HOME/.pamir остаются нетронутыми (для дальнейшего запуска приложения).
Пример вывода команды pamirctl stop
[+] Running 29/29
✔ Container pamir-auth-1 Removed 2.3s
✔ Container pamir-sql-exporter-1 Removed 1.7s
✔ Container pamir-celery-1 Removed 10.3s
✔ Container pamir-openldap-1 Removed 2.1s
✔ Container pamir-task-tool-1 Removed 2.1s
✔ Container pamir-docker-state-exporter-1 Removed 1.7s
✔ Container pamir-notification-1 Removed 2.2s
✔ Container pamir-docker-tool-1 Removed 2.1s
✔ Container pamir-json-exporter-1 Removed 1.8s
✔ Container pamir-snmp-exporter-1 Removed 1.8s
✔ Container pamir-node-exporter-1 Removed 1.3s
✔ Container pamir-step-ca-1 Removed 1.9s
✔ Container pamir-acme-1 Removed 1.8s
✔ Container pamir-cadvisor-1 Removed 1.5s
✔ Container pamir-nginxlog-exporter-1 Removed 2.0s
✔ Container pamir-postgres-exporter-1 Removed 2.0s
✔ Container pamir-alertmanager-1 Removed 2.2s
✔ Container pamir-srm-1 Removed 2.9s
✔ Container pamir-blackbox-exporter-1 Removed 1.9s
✔ Container pamir-monitoring-1 Removed 2.2s
✔ Container pamir-frontend-1 Removed 2.0s
✔ Container pamir-prometheus-1 Removed 10.2s
✔ Container pamir-flower-1 Removed 0.4s
✔ Container pamir-license-1 Removed 0.4s
✔ Container pamir-database-1 Removed 0.9s
✔ Container pamir-redis-1 Removed 1.2s
✔ Container pamir-fluent-bit-1 Removed 0.2s
✔ Container pamir-rabbitmq-1 Removed 10.2s
✔ Network pamir-net Removed 0.2s
Просмотр состояния сервисов
Просмотр статуса работы сервисов осуществляется командой pamirctl status.
Команда также может принимать дополнительные позиционные аргументы - имена сервисов, разделенные пробелом. В таком случае в таблице будут отображены указанные сервисы.
Пример вывода команды pamirctl status
+-----------------------+---------+-----------------------------+
| СЕРВИС | ВЕРСИЯ | СОСТОЯНИЕ |
+-----------------------+---------+-----------------------------+
| json-exporter | 0.6.0 | Up 35 seconds (healthy) |
| blackbox-exporter | 0.20.0 | Up 34 seconds (healthy) |
| cadvisor | v0.50.0 | Up 36 seconds (healthy) |
| docker-state-exporter | latest | Up 35 seconds |
| sql-exporter | 0.4.0 | Up 36 seconds (healthy) |
| nginxlog-exporter | 1.11.0 | Up 36 seconds (healthy) |
| snmp-exporter | 0.20.0 | Up 36 seconds (healthy) |
| postgres-exporter | v0.15.0 | Up 34 seconds |
| task-tool | 0.0.1 | Up 52 seconds (healthy) |
| auth | 0.7.0 | Up 52 seconds (healthy) |
| notification | 0.0.1 | Up 53 seconds (healthy) |
| monitoring | 0.7.0 | Up 52 seconds (healthy) |
| docker-tool | 0.4.2 | Up 52 seconds (healthy) |
| srm | 0.7.0 | Up 53 seconds (healthy) |
| acme | 2.2.9 | Up About a minute |
| celery | 0.7.0 | Up 53 seconds |
| alertmanager | 0.27.0 | Up 52 seconds (healthy) |
| prometheus | 2.35.0 | Up 52 seconds (healthy) |
| frontend | 0.9.2 | Up About a minute (healthy) |
| flower | 2.0.1 | Up About a minute |
| openldap | 2.4.57 | Up About a minute (healthy) |
| node-exporter | 1.3.1 | Up About a minute (healthy) |
| database | 11.21 | Up About a minute (healthy) |
| redis | 7.0.13 | Up About a minute (healthy) |
| fluent-bit | 2.1.8 | Up About a minute |
| license | 0.4.2 | Up About a minute (healthy) |
| rabbitmq | 3.8.2 | Up About a minute (healthy) |
| step-ca | 0.24.1 | Up About a minute (healthy) |
+-----------------------+---------+-----------------------------+
+----------+--------+------------------------+
| СЕРВИС | ВЕРСИЯ | СОСТОЯНИЕ |
+----------+--------+------------------------+
| database | 11.21 | Up 2 minutes (healthy) |
| redis | 7.0.13 | Up 2 minutes (healthy) |
| rabbitmq | 3.8.2 | Up 2 minutes (healthy) |
+----------+--------+------------------------+
Перезапуск приложения (сервисов)
Перезапуск сервисов приложения осуществляется командой pamirctl restart.
Команда также может принимать дополнительные позиционные аргументы - имена сервисов, разделенные пробелом. В данном случае будут перезапущены указанные в команде сервисы.
Пример вывода команды pamirctl restart
[+] Restarting 28/28
✔ Container pamir-monitoring-1 Started 5.6s
✔ Container pamir-node-exporter-1 Started 1.6s
✔ Container pamir-prometheus-1 Started 12.4s
✔ Container pamir-postgres-exporter-1 Started 3.8s
✔ Container pamir-notification-1 Started 5.6s
✔ Container pamir-step-ca-1 Started 3.4s
✔ Container pamir-license-1 Started 4.2s
✔ Container pamir-cadvisor-1 Started 4.8s
✔ Container pamir-frontend-1 Started 4.7s
✔ Container pamir-auth-1 Started 4.7s
✔ Container pamir-database-1 Started 5.6s
✔ Container pamir-srm-1 Started 5.6s
✔ Container pamir-nginxlog-exporter-1 Started 4.3s
✔ Container pamir-alertmanager-1 Started 5.2s
✔ Container pamir-docker-state-exporter-1 Started 3.7s
✔ Container pamir-fluent-bit-1 Started 5.4s
✔ Container pamir-docker-tool-1 Started 5.7s
✔ Container pamir-json-exporter-1 Started 4.2s
✔ Container pamir-flower-1 Started 5.1s
✔ Container pamir-blackbox-exporter-1 Started 3.4s
✔ Container pamir-sql-exporter-1 Started 3.7s
✔ Container pamir-redis-1 Started 3.7s
✔ Container pamir-celery-1 Started 12.5s
✔ Container pamir-rabbitmq-1 Started 13.2s
✔ Container pamir-snmp-exporter-1 Started 4.2s
✔ Container pamir-openldap-1 Started 4.7s
✔ Container pamir-acme-1 Started 3.7s
✔ Container pamir-task-tool-1 Started 2.5s