Руководство по установке сервера мониторинга#
1. Общие сведения#
Для предотвращения перегрузки основного сервера приложений все инструменты телеметрии рекомендуется размещать на
отдельной виртуальной машине.
Руководство описывает процесс установки и базовой настройки следующих компонентов:
Grafana - платформа визуализации данных;
Prometheus - система сбора и хранения метрик;
Loki - система централизованного хранения логов;
Promtail - агент для отправки логов в Loki;
OpenTelemetry Collector - компонент для сбора и экспорта телеметрических данных.
Настройки сервисов:
HAProxy
NFS
Global3
GlobalScheduler
Настройки экспортеров:
Скрипт снятия дополнительных метрик
Пример архитектуры серверов#
Сервер СУБД (PostgreSQL)
Сервер приложений (Global ERP) + HAProxy (Load Balancer)
Сервер мониторинга (Prometheus, Grafana, Loki)
Принципиальная схема работы системы мониторинга:

2. Установка Prometheus#
2.1. Общие сведения#
Внимание
Сервис устанавливается на сервер мониторинга.
Подробная документация: Prometheus - First Steps
Загрузить релиз можно с официального сайта: prometheus.io/download
Важно
Для систем на базе Debian рекомендуется использовать установку через apt, а не скачивать последнюю версию вручную - это повышает стабильность и предсказуемость обновлений.
2.2. Установка#
sudo apt update
sudo apt install prometheus
В сервисе prometheus.service приведите стартовый параметр к следующему виду:
ExecStart=/usr/bin/prometheus $ARGS --web.enable-remote-write-receiver
2.3. Конфигурация#
Отредактируйте основной файл конфигурации /etc/prometheus/prometheus.yml
Пример рекомендуемой конфигурации
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'example'
alerting:
alertmanagers:
- static_configs:
- targets: [ 'localhost:9093' ]
rule_files:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: [ 'localhost:9090' ]
relabel_configs:
- replacement: '{{project_name}}'
target_label: project_name
- job_name: 'haproxy'
static_configs:
- targets: [ '<IP адрес сервера haproxy>:8405' ]
labels: { host: '<IP адрес сервера haproxy>' }
params:
extra-counters: [ "on" ]
- job_name: 'otelcol'
static_configs:
- targets: [ '<IP адрес сервера приложений>:8888' ]
labels: { host: '<IP адрес сервера приложений>' }
relabel_configs:
- replacement: '{{project_name}}'
target_label: project_name
- job_name: 'node-exporter-global'
static_configs:
- targets: [ '<IP адрес сервера приложений>:9100' ]
labels: { host: '<IP адрес сервера приложений>' }
- job_name: 'node-exporter-postgres'
static_configs:
- targets: [ '<IP адрес сервера СУБД>:9100' ]
labels: { host: '<IP адрес сервера СУБД>' }
- job_name: 'postgres'
static_configs:
- targets: [ "<IP адрес сервера СУБД>:9187" ]
labels: { host: '<IP адрес сервера СУБД>' }
- job_name: 'pgbouncer'
static_configs:
- targets: [ "<IP адрес сервера СУБД>:9890" ]
labels: { host: '<IP адрес сервера СУБД>' }
2.4. Веб-интерфейс#
Prometheus доступен по адресу:
http://<IP_ADDRESS>:9090
где <IP_ADDRESS> - IP-адрес сервера мониторинга.
3. Установка Grafana#
3.1. Установка#
Внимание
Сервис устанавливается на сервер мониторинга.
Проверить последнюю версию Grafana можно в документации
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/grafana-enterprise/release/<VERSION>/grafana-enterprise_<VERSION>_<OS>_<ARCH>.deb
sudo dpkg -i grafana-enterprise_<VERSION>_<OS>_<ARCH>.deb
sudo systemctl enable --now grafana-server
3.2. Доступ#
Интерфейс доступен по адресу:
http://<IP_ADDRESS>:3000
Стандартные учетные данные:
admin / admin
После первого входа система предложит изменить пароль - задайте надёжный.
4. Установка Loki#
Внимание
Сервис устанавливается на сервер мониторинга.
4.1. Загрузка и установка#
Проверить последний релиз можно в репозитории
wget https://github.com/grafana/loki/releases/download/v<VERSION>/loki_<VERSION>_<ARCH>.deb
sudo apt install loki_<VERSION>_<ARCH>.deb
В сервисе loki.service приведите стартовый параметр к следующему виду:
ExecStart=/usr/bin/loki -config.file /etc/loki/config.yml -config.expand-env=true
4.2. Конфигурация#
Создайте файл конфигурации /etc/loki/config.yml
Пример рекомендуемой конфигурации
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
log_level: debug
grpc_server_max_concurrent_streams: 1000
grpc_server_max_recv_msg_size: 209715200
grpc_server_max_send_msg_size: 209715200
common:
instance_addr: 127.0.0.1
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
limits_config:
metric_aggregation_enabled: true
max_entries_limit_per_query: 1000000
query_timeout: 10m
max_global_streams_per_user: 10000
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
pattern_ingester:
enabled: true
metric_aggregation:
loki_address: localhost:3100
ruler:
alertmanager_url: http://localhost:9093
frontend:
encoding: protobuf
analytics:
reporting_enabled: false
4.3. Запуск и автозагрузка#
sudo systemctl daemon-reload
sudo systemctl start loki
sudo systemctl enable loki.service
sudo systemctl status loki
5. Установка Promtail#
Внимание
Сервис устанавливается как на сервер приложений, так и на сервер СУБД
5.1. Загрузка и установка#
Проверить последний релиз можно в репозитории
https://github.com/grafana/loki/releases/download/v3.5.7/promtail_3.5.7_amd64.deb
wget "https://github.com/grafana/loki/releases/download/v<VERSION>/promtail_<VERSION>_<ARCH>.zip"
sudo apt install promtail_<VERSION>_<ARCH>.deb
5.2. Запуск и проверка#
sudo systemctl start promtail
sudo systemctl status promtail
5.3. Конфигурация Promtail#
Отредактируйте основной файл конфигурации /etc/promtail/config.yml:
Пример рекомендуемой конфигурации для сервера приложений
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://<IP Адрес сервера метрик>:3100/loki/api/v1/push
scrape_configs:
- job_name: haproxy
static_configs:
- targets:
- localhost
labels:
job: "haproxy"
host: "<IP Адрес сервера приложений>"
service: "HAProxy"
__path__: /var/log/haproxy.*
pipeline_stages:
- regex:
expression: '^(?P<timestamp>\S+\s+\d+\s+\S+)\s+(?P<hostname>\S+)\s+haproxy\[(?P<pid>\d+)\]:\s+(?P<client_ip>\S+):(?P<client_port>\d+)\s+\[(?P<accept_time>[^\]]+)\]\s+(?P<frontend>\S+)\s+(?P<backend>\S+)\/(?P<server>\S+)\s+(?P<tq>\d+)\/(?P<tw>\d+)\/(?P<tc>\d+)\/(?P<tr>\d+)\/(?P<tt>\d+)\s+(?P<status_code>\d+)\s+(?P<bytes_read>\d+)\s+(?P<captured_request_headers>\S+)\s+(?P<captured_response_headers>\S+)\s+(?P<termination_state>\S+)\s+(?P<actconn>\d+)\/(?P<feconn>\d+)\/(?P<beconn>\d+)\/(?P<srvconn>\d+)\/(?P<retries>\d+)\s+(?P<srv_queue>\d+)\/(?P<backend_queue>\d+)\s+\{(?P<request_headers>[^}]+)\}\s+\{(?P<response_headers>[^}]+)\}\s+"(?P<http_request>[^"]+)"'
- labels:
client_ip:
frontend:
backend:
server:
status_code:
termination_state:
- job_name: global3
static_configs:
- targets:
- localhost
labels:
job: "Global"
host: "<IP Адрес сервера приложений>"
service: "Global_3"
__path__: /opt/global/globalserver/logs/*
pipeline_stages:
- multiline:
firstline: '\['
- regex:
expression:
'^(?s)\[(?P<time>\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}\.\d{3})\] \[(?P<level>[A-Z ]*)\] \[(?P<thread>.*)\] \[(?P<logger>[^ ]*)\] \[(?P<user>[^ ]*)\] - (?P<msg>.*)$'
- labels:
level:
thread:
logger:
user:
- timestamp:
source: time
format: 01-01-2025 13:30:30.000
location: Europe/Moscow
- labeldrop:
- filename
- time
- output:
source: msg
- job_name: globalscheduler
static_configs:
- targets:
- localhost
labels:
job: "globalscheduler"
host: "<IP Адрес сервера приложений>"
service: "Global_Scheduler"
__path__: /opt/global/globalserver/logs/scheduler/jobscheduler.*
pipeline_stages:
- multiline:
firstline: '\['
- regex:
expression:
'^(?s)\[(?P<time>\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}\.\d{3})\] \[(?P<level>[A-Z ]*)\] \[(?P<thread>.*)\] \[(?P<logger>[^ ]*)\] - (?P<msg>.*)$'
- labels:
level:
thread:
logger:
- timestamp:
source: time
format: 01-01-2025 13:30:30.000
location: Europe/Moscow
- labeldrop:
- filename
- time
- output:
source: msg
Выдайте права на чтение логов:
sudo setfacl -R -m u:promtail:rX /var/log/
sudo chown promtail /var/log/haproxy.log
Пример рекомендуемой конфигурации для сервера СУБД
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://<IP Адрес сервера метрик>:3100/loki/api/v1/push
scrape_configs:
- job_name: postgresql
static_configs:
- targets:
- localhost
labels:
job: postgresql
service: "PostgreSQL"
__path__: /var/log/postgresql/postgresql-17-main.*
pipeline_stages:
- regex:
expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \[\d+\] (?P<user_database>\w+@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\w+@local)?:\w+ \[\d+\] (?P<level>\w+): (?P<message>.*)$'
- labels:
level:
user_database:
timestamp:
- job_name: pgbouncer
static_configs:
- targets:
- localhost
labels:
job: pgbouncer
service: "PgBouncer"
__path__: /var/log/postgresql/pgbouncer.*
pipeline_stages:
- regex:
expression: '^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \[\d+\] (?P<user_database>\w+@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\w+@local)?:\w+ \[\d+\] (?P<level>\w+): (?P<message>.*)$'
- labels:
level:
user_database:
timestamp:
Выдайте права на чтение логов:
sudo setfacl -R -m u:promtail:rX /var/log/
sudo usermod -a -G systemd-journal promtail
Раскомментируйте и настройте следующие строки в /etc/postgresql/*/main/postgresql.conf:
log_destination = 'stderr'
log_rotation_age = 3d
log_min_messages = warning
log_min_error_statement = error
6. Установка OpenTelemetry Collector#
Подробности: opentelemetry.io/docs/collector
6.1 Настройка Otelcol сервиса#
Внимание
Сервис устанавливается на сервер приложений
Проверить последний релиз можно в репозитории
sudo apt-get update
sudo apt-get install -y wget
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v<VERSION>/otelcol_<VERSION>_<OS>_<ARCH>.deb
sudo apt install otelcol_<VERSION>_<OS>_<ARCH>.deb
Отредактируйте конфигурационный файл /etc/otelcol-contrib/config.yaml
Пример рекомендуемой конфигурации
extensions:
health_check:
pprof:
endpoint: 0.0.0.0:1777
zpages:
endpoint: 0.0.0.0:55679
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
# Collect own metrics
prometheus:
config:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 10s
static_configs:
- targets: [ '0.0.0.0:8888' ]
jaeger:
protocols:
grpc:
endpoint: 0.0.0.0:14250
thrift_binary:
endpoint: 0.0.0.0:6832
thrift_compact:
endpoint: 0.0.0.0:6831
thrift_http:
endpoint: 0.0.0.0:14268
zipkin:
endpoint: 0.0.0.0:9411
processors:
batch:
exporters:
debug:
verbosity: detailed
prometheusremotewrite:
endpoint: http://<IP Адрес сервера метрик>:9090/api/v1/write
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 60s
max_elapsed_time: 120s
service:
pipelines:
traces:
receivers: [ otlp, jaeger, zipkin ]
processors: [ batch ]
exporters: [ debug ]
metrics:
receivers: [ otlp, prometheus ]
processors: [ batch ]
exporters: [ debug, prometheusremotewrite ]
logs:
receivers: [ otlp ]
processors: [ batch ]
exporters: [ debug ]
extensions: [ health_check, pprof, zpages ]
Запустите сервис:
sudo systemctl stop otelcol-contrib
sudo systemctl start otelcol-contrib
sudo systemctl status otelcol-contrib
6.2 Настройка сервера приложений#
В папку с дистрибутивом проекта global/globalserver/application/config/ добавить файл otel-sdk.config.yaml
Пример рекомендуемой конфигурации
file_format: "0.1"
disabled: false
resource:
attributes:
service.name: Global
#service.name: ${env:OTEL_SERVICE_NAME}
exporters:
otlp: &otlp-exporter
timeout: 10000
# https://opentelemetry.io/docs/specs/otel/protocol/exporter/#specify-protocol
protocol: grpc
endpoint: http://localhost:4318
logger_provider:
processors:
- batch:
exporter:
otlp: *otlp-exporter
meter_provider:
readers:
- periodic:
interval: 5000
timeout: 30000
exporter:
otlp:
timeout: 10000
protocol: grpc
endpoint: http://localhost:4317
tracer_provider:
processors:
- batch:
exporter:
otlp:
timeout: 10000
protocol: http/protobuf
endpoint: http://localhost:4318
И файл otel-globalserver.config.yaml с содержимым
instrumentation:
common:
default-enabled: true
runtime-telemetry:
enabled: true
emit-experimental-telemetry:
enabled: true
logback-appender:
enabled: true
7. Настройка HAProxy#
Подробнее о настройке выдачи метрик HAProxy в Prometheus в Руководстве по настройке HAProxy.
8. Установка Node Exporter#
Внимание
Сервис устанавливается на сервер приложений и, при необходимости, на сервер СУБД
Проверить последний релиз можно в репозитории
wget https://github.com/prometheus/node_exporter/releases/download/v<VERSION>/node_exporter-<VERSION>.<OS>-<ARCH>.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo mv node_exporter-<VERSION>.<OS>-<ARCH>/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Создайте сервис /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100 --collector.systemd --collector.processes --collector.nfs
[Install]
WantedBy=multi-user.target
Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
9. Установка Postgres Exporter#
Внимание
Сервис устанавливается на сервер СУБД.
Проверить последний релиз можно в репозитории
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v<VERSION>/postgres_exporter-<VERSION>.<OS>-<ARCH>.tar.gz
tar -xf postgres_exporter-*.tar.gz
sudo cp postgres_exporter /usr/local/bin/
sudo chown -R postgres:postgres /usr/local/bin/postgres_exporter
Создайте сервис /etc/systemd/system/postgres_exporter.service
[Unit]
Description=Prometheus PostgreSQL Exporter
After=network.target
[Service]
Type=simple
Restart=always
User=postgres
Group=postgres
Environment=DATA_SOURCE_NAME="user=postgres host=/var/run/postgresql/ sslmode=disable"
ExecStart=/usr/local/bin/postgres_exporter
[Install]
WantedBy=multi-user.target
Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl start postgres_exporter.service
sudo systemctl enable postgres_exporter.service
10. Установка pgSCV#
Внимание
Сервис устанавливается на сервер СУБД. Используется для снятия метрик с Postgres, Pgbouncer.
Установка сервиса:
Проверить последний релиз можно в репозитории
curl -s -L https://github.com/cherts/pgscv/releases/download/v<VERSION>/pgscv_<VERSION>_linux_<ARCH>.tar.gz -o - | tar xzf - -C /tmp && \
mv /tmp/pgscv.yaml /etc && \
mv /tmp/pgscv.service /etc/systemd/system && \
mv /tmp/pgscv.default /etc/default/pgscv && \
mv /tmp/pgscv /usr/sbin && \
chown postgres:postgres /etc/pgscv.yaml && \
chmod 640 /etc/pgscv.yaml && \
systemctl daemon-reload && \
systemctl enable pgscv --now
Приведите сервис /etc/systemd/system/pgscv.service к следующему виду:
[Unit]
Description=pgSCV - PostgreSQL ecosystem metrics collector
Documentation=https://github.com/cherts/pgscv/wiki
Requires=network-online.target
After=postgresql.service
Wants=postgresql.service
[Service]
Type=simple
User=postgres
Group=postgres
EnvironmentFile=-/etc/default/pgscv
# Start the agent process
ExecStart=/usr/sbin/pgscv $ARGS
# Kill all processes in the cgroup
KillMode=control-group
# Wait reasonable amount of time for agent up/down
TimeoutSec=5
# Restart agent if it crashes
Restart=on-failure
RestartSec=10
# if agent leaks during long period of time, let him to be the first person for eviction
OOMScoreAdjust=1000
[Install]
WantedBy=multi-user.target
Создайте нового пользователя в postgres:
CREATE ROLE pgscv WITH LOGIN PASSWORD 'SUPERSECRETPASSWORD';
GRANT pg_read_server_files, pg_monitor TO pgscv;
GRANT EXECUTE on FUNCTION pg_current_logfile() TO pgscv;
Выполните команду, которая выведет хеш пароля для пользователя pgbouncer, и сохраните его. Он понадобится при настройке аутентификации pgbouncer.
SELECT passwd FROM pg_shadow WHERE usename = 'pgscv';
Отредактируйте файл
/etc/pgbouncer/pgbouncer.ini. Добавьте строку:stats_users = pgscv.Для работы аутентификации с вышеописанными настройками, в userlist.txt требуется установить следующие значения:
"pgscv" "<scram-sha-256 хеш пароля для пользователя pgbouncer>"
Убедитесь, что в файле pg_hba.conf указан метод аутентификации scram-sha-256:
host all all all scram-sha-256
Перезапустите PgBouncer:
sudo systemctl restart pgbouncer
Удалите дефолтный
pgscv.yamlи создайте новый:
cat << EOF > /etc/pgscv.yaml
listen_address: 0.0.0.0:9890
services:
"postgres:5432":
service_type: "postgres"
conninfo: "postgres://pgscv:SUPERSECRETPASSWORD@127.0.0.1:<db_port>/<global_db_name>"
"pgbouncer:6432":
service_type: "pgbouncer"
conninfo: "postgres://pgscv:SUPERSECRETPASSWORD@127.0.0.1:<pgbouncer_port>/pgbouncer"
EOF
Выдайте необходимые права:
sudo chown postgres:postgres /etc/pgscv.yaml
sudo chmod 640 /etc/pgscv.yaml
Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable pgscv.service
sudo systemctl start pgscv.service
sudo systemctl status pgscv.service
Проверьте работу сервиса. Значения должны быть больше нуля.
curl -s http://127.0.0.1:9890/metrics | grep -c ^postgres
curl -s http://127.0.0.1:9890/metrics | grep -c ^pgbouncer
curl -s http://127.0.0.1:9890/metrics | grep -c ^node
curl -s http://127.0.0.1:9890/metrics | grep -c ^go
11. Настройка Global3 и GlobalScheduler#
Необходимо включить вывод логов в указанную в конфигурационном файле Promtail директорию.
По умолчанию для Global3: /opt/global/globalserver/logs/.
Подробнее в руководстве по Global3
По умолчанию для GlobalScheduler: /opt/global/globalserver/logs/scheduler/.
Подробнее в руководстве по GlobalScheduler
12. Запуск скрипта снятия дополнительных метрик#
Внимание
Сервис устанавливается на сервер приложений.
Необходимо загрузить и распаковать архив:
wget https://git.global-system.ru/devops/monitoring...
tar -czvf /path/to/archive.tar.gz /path/to/directory
Запустите скрипт на выполнение:
chmod +x install_service.sh
sudo ./install_service.sh global_telemetry GsTelemetryAgent.py
13. Добавление дашбордов в Grafana#
После настройки сбора всех метрик, необходимо перейти на страницу grafana для добавления визуальных дашбордов (досок) для мониторинга состояния системы.
13.1 Подключение источников данных#
В Grafana откройте меню Connections → Data sources → Add new data source.
Выберите Prometheus.
В поле Prometheus server URL укажите адрес сервера мониторинга (http://<IP_ADDRESS>:9090).
Нажмите Save & test.

Таким же образом добавьте Loki как источник данных, указав адрес сервера мониторинга (http://<IP_ADDRESS>:3100)
Примечание
Если вы устанавливали Grafana, Prometheus, Loki на один сервер, в url источника данных можно прописывать localhost
13.2 Импорт готовых дашбордов#
Скачайте все необходимые дашборды по ссылке.
Перейдите на вкладку Dashboards. Справа сверху кнопка New - Import. Загрузите по одному дашборды.
Если дашборд относится к отображению логов, в источнике данных выберете Loki:

Иначе - Prometheus:

14. Настройка Firewall (UFW)#
14.1. Установка и запуск#
sudo apt install ufw
sudo systemctl enable ufw --now
14.2. Базовая политика безопасности#
Применяем данные настройки на всех серверах:
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw enable
default deny incoming- запрет всех входящих соединений по умолчанию.allow ssh- разрешение SSH-доступа.enable- активация правил.
14.3. Разрешённые порты#
Сервер мониторинга#
sudo ufw allow 9090/tcp # Prometheus
sudo ufw allow 3000/tcp # Grafana
sudo ufw allow 3100/tcp # Loki
Сервер СУБД#
sudo ufw allow 9080/tcp # Promtail
sudo ufw allow 9100/tcp # Node exporter
sudo ufw allow 9187/tcp # Postgres exporter
sudo ufw allow 9890/tcp # pgSCV
Сервер приложений#
sudo ufw allow 9080/tcp # Promtail
sudo ufw allow 8405/tcp # HAProxy telemetry
sudo ufw allow 8888/tcp # Otelcol
sudo ufw allow 9100/tcp # Node exporter
Важно
Пример приведён для тестовой среды. Также необходимо открыть порты для СУБД, сервера приложений (балансировщика). На продакшене рекомендуется ограничить доступ из вне ко всем портам мониторинга. При необходимости настроить proxy и другие меры безопасности.
14.4. Проверка состояния#
sudo ufw status verbose