Что обычно хранится в файле
Общие настройки: сертификаты, лицензирование, логирование, метрики, cluster, xdp, geoip и импорты через from.
config.mgc — основной файл глобальной конфигурации Meshgate. Обычно он лежит рядом с бинарником Meshgate или в директории конфигурации, например /etc/meshgate/.
Meshgate читает config.mgc при старте. После изменения настроек обычно требуется перезапуск сервиса, чтобы новые значения применились.
Что обычно хранится в файле
Общие настройки: сертификаты, лицензирование, логирование, метрики, cluster, xdp, geoip и импорты через from.
Как лучше разносить конфиги
Общие параметры держите в config.mgc, а конфигурации серверов выносите в config.d/ и подключайте через from.
Один config.mgc должен содержать общие параметры (сертификаты, логирование, метрики), а конфигурации серверов лучше хранить в отдельных файлах внутри config.d/ и подключать через from.
Ниже приведена краткая справка по базовым элементам синтаксиса config.mgc, используемым в примерах на этой странице.
Переменные
var name: valuevar certs: [cert: "path/to/cert.pem"]Массивы
[]log: [level: "info" rotation: "daily"]Ключи
key: valueaddress: "127.0.0.1"Комментарии
## тестовый серверvar certs: [ cert: "assets/certs/localhost.pem" key: "assets/certs/localhost-key.pem"]var internal_certs: [ cert: "path/to/internal/internal.pem" key: "path/to/internal/internal-key.pem"]Поля
cert — путь к сертификату (.pem)key — путь к приватному ключу (.pem)Пути к файлам
Если указан относительный путь, он считается относительно директории, где расположен config.mgc (или рабочей директории запуска — зависит от способа запуска Meshgate).
Если сомневаешься — используй абсолютные пути.
Рекомендации
license_key указывает лицензионный ключ для активации Meshgate.
license_key: "XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"Ключ приобретается у официального поставщика Meshgate.
Для Meshgate FREE ключ не требуется.
Блок log определяет, как записываются и хранятся логи.
log: [ rotation: "hourly" runtime: [ layers: [ file: [ folder: "logs" prefix: "meshgate_log" ]
opensearch: [ index_name: "runtime_logs" address: "https://localhost:9200" auth: [ login: "admin" password: "adminpass" ] ]
clickhouse: [ address: "http://localhost:8123" database: "test_db" username: "default" password: "" ]
stdout: [ ] syslog: [ ] ] ]
access: [ layers: [ file: [ folder: "logs" prefix: "meshgate_log" ]
opensearch: [ index_name: "access_logs" address: "https://localhost:9200" auth: [ login: "admin" password: "adminpass" ] ]
clickhouse: [ address: "http://localhost:8123" database: "test_db" username: "default" password: "" ]
stdout: [ ] syslog: [ ] ] ]]Поля логгирования:
level
Определяет уровень подробности логов. Значения: off, info (по умолчанию), debug, warn, error, trace
rotation
Определяет частоту ротации файловых логов. Значения: minutely, hourly (по умолчанию), daily, never
enable_stdout
Включает запись логов в stdout. Тип значения: true / false
runtime — системные (runtime) логи.
access — HTTP access-логи.
Локальная отладка
Используйте stdout вместе с level: "debug" для быстрого фидбэка в терминале.
Продакшн
Используйте file + ротацию, а при необходимости добавляй opensearch или clickhouse для централизованного хранения.
prometheus_config включает сервер экспорта метрик в формате Prometheus.
prometheus_config: [ address: "127.0.0.1" port: 3000 path: "/metrics"]После запуска:
http://{address}:{port}{path}.Метрики сгруппированы по назначению для упрощения навигации и чтения.
Базовые счётчики и gauges
total_requests — Counter (общее количество запросов)total_connections — Gauge (активные соединения)total_bans — Gauge (текущее количество банов)Метрики fingerprint’ов
ja3 — GaugeVec {ja3}ja3_sorted — GaugeVec {ja3_sorted}http2 — GaugeVec {http2}Метрики кэша
cache_inserts_total — GaugeVec {cache_inserts_total}cache_misses_total — GaugeVec {cache_misses_total}cache_hits_total — GaugeVec {cache_hits_total}Health-check и статус upstream
health_check_failed — GaugeVec {upstream}health_check_success — GaugeVec {upstream}upstream_status — GaugeVec {upstream}HTTP-трафик и задержки
http_requests_total — CounterVec {hostname, status_code}http_request_duration_seconds — Histogramupstream_request_duration_seconds — HistogramVec {upstream}bytes_received_total — CounterVec {host, upstream}Доступно с версии PRO.
cluster: [ api: "127.0.0.1:50051" meshgate_uuid: "ru_moscow_01" challenge_url: "http://127.0.0.1:8080" captcha_url: "http://127.0.0.1:8080"]xdp: [ interfaces: ["lo", "enp2s0"] rules: [ block_with_pps: [ expr: "src.ip == 10.0.0.1 && src.port == 8080 && pps > 9" action: "drop" ] ]]Поля выражений Layer4
Источник
src.ip (Ip) — IP источникаsrc.port (Int) — порт источникаНазначение
dst.ip (Ip) — IP назначенияdst.port (Int) — порт назначенияНагрузка
pps (Int) — пакетов в секундуgeo_db_path — путь к базе MaxmindDB (geo2ip) для WAF.
geo_db_path: "/etc/meshgate/maxmindb_geo2ip.mmdb"from)from импортирует конфигурационные файлы (поддерживаются относительные и абсолютные пути):
static: from "config.d/static.mgc"https: from "config.d/https.mgc"http: from "config.d/http.mgc"tcp: from "config.d/tcp.mgc"udp: from "config.d/udp.mgc"Рекомендации по разбиению
https.mgc, static.mgc, tcp.mgc)config.mgcvar certs: [ cert: "assets/certs/localhost.pem" key: "assets/certs/localhost-key.pem"]var internal_certs: [ cert: "path/to/internal/internal.pem" key: "path/to/internal/internal-key.pem"]
license_key: "XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"
prometheus_config: [ address: "127.0.0.1" port: 3000 path: "/metrics"]
cluster: [ api: "127.0.0.1:50051" meshgate_uuid: "ru_moscow_01" challenge_url: "http://127.0.0.1:8080" captcha_url: "http://127.0.0.1:8080"]
xdp: [ interfaces: ["lo", "enp2s0"]]
log: [ level: "debug" rotation: "hourly" enable_stdout: true access: [ layers: [ file: [ folder: "logs" prefix: "access" ]
opensearch: [ auth: [ basic: [ login: "admin" password: $OPENSEARCH_INITIAL_ADMIN_PASSWORD ] ] addr: "https://localhost:9200" ] ] ]]
static: from "config.d/static.mgc"#https: from "config.d/https.mgc"#http: from "config.d/http.mgc"#tcp: from "config.d/tcp.mgc"#udp: from "config.d/udp.mgc"