Перейти к основному содержимому
Версия: 2.4

Управление сервисами

Для управления сервисами Памир используется утилита командной строки (CLI) — pamirctl. Утилита автоматически устанавливается в PATH пользователя в ходе установки приложения; привилегии суперпользователя для этого не требуются. При необходимости утилиту можно вызвать напрямую по пути $HOME/.pamir/pamirctl.

Утилита принимает следующие команды:

  • start — запуск сервисов приложения. Перед запуском автоматически выполняется проверка целостности образов контейнеров и конфигурационных файлов.
  • stop — остановка сервисов и удаление контейнеров. Тома хранения данных сохраняются.
  • restart — последовательная остановка и запуск сервисов. Также выполняет проверку целостности перед запуском.
  • status — просмотр текущего состояния всех сервисов.
  • sums — вывод эталонных контрольных сумм, встроенных в бинарник при сборке.
  • --daemon — режим демона: непрерывный периодический контроль целостности работающих контейнеров с автоматической остановкой нарушителей. Устанавливается и запускается инсталлятором автоматически как пользовательский сервис systemd.
подсказка

Утилита применяется для управления как сервисами Памир, так и сервисами пробы. Для этого используется файл конфигурации, по умолчанию располагающийся по пути $HOME/.pamirctl.yml, и может быть переопределён опциональным аргументом --config /path/to/config.yml.

Пример файла конфигурации для управления сервером Памир:

.pamirctl.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
# 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
# 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
# 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) |
+-----------------------+---------+-----------------------------+
# pamirctl status database rabbitmq redis
+----------+--------+------------------------+
| СЕРВИС | ВЕРСИЯ | СОСТОЯНИЕ |
+----------+--------+------------------------+
| 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
# 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