Руководство по системному администрированию#
Термины и определения#
Термин/аббревиатура |
Определение |
|---|---|
Платформа |
Платформа оркестрации приложений со средствами автоматизации и управления на основе политик, например, Kubernetes |
StatefulSet / «kind: StatefulSet» |
Статический набор инструкций для запуска приложения в Kubernetes |
Pod / «kind: Pod» |
Набор контейнеров внутри узла кластера Kubernetes |
CLI |
Command line interface — интерфейс командной строки, где выполняются команды с использованием терминала |
GATM |
Программный компонент «Сбор и анализ метрик» (GATM) из состава программного продукта Platform V Synapse Service Mesh (SSM) |
Kubernetes |
Платформа оркестрации приложений со средствами автоматизации и управления на основе политик |
SSM |
Platform V Synapse Service Mesh — Программный продукт на базе Istio SE, обеспечивающий возможность создания сервисной сети поверх Платформенной в Kubernetes |
URL |
Uniform Resource Locator — стандартизированный способ записи адреса ресурса в сети Интернет» |
Target |
Сервисы/приложения по которым будет производиться сбор метрик |
istio-proxy |
Компонент Сервисный прокси продукта Platform V Synapse Service Mesh |
Configmap |
Общие описание конфигурации, которая будет храниться в рамках проекта кластера |
Deployment / «kind: Deployment» |
Набор инструкций для запуска приложения в Kubernetes |
Сценарии администрирования#
Программный компонент «Сбор и анализ метрик» (GATM) из состава программного продукта Platform V Synapse Service Mesh (SSM) не имеет собственного пользовательского интерфейса для администрирования. Все действия по управлению им производятся с использованием интерфейсов, предоставляемых Платформой Kubernetes.
Для взаимодействия с клиентом среды контейнеризации необходим токен или конфигурационный файл авторизации, подробнее об этом можно ознакомиться здесь.
Для выполнения сценариев администрирования администратору инсталляции компонента может пригодиться привязка к admin-role, стандартизированной реализации роли админа проекта в рамках платформы K8s/OpenShift.
Запуск#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig». |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes. |
Запуск Pod |
1. В меню выберите пункт Workload/StatefulSets(Deployment). |
Выход из web-консоли Kubernetes |
1. Нажмите по имени пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Вход в kubernetes |
Загрузите «kubeConfig» от вашего «ServiceAccount». Заведите переменную |
— |
Переход в нужный «Namespace» |
Введите команду: |
— |
Запуск приложения |
В консоли выполните команду: |
N>0 — требуемое количество запущенных Pods приложения |
Остановка#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Логин в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig». |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes. |
Остановка компонента |
Выполнить следующие действия: |
Выход из web-консоли Kubernetes |
Выполнить следующие действия: |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Остановка приложения |
В консоли выполнить команду |
— |
Проверка работоспособности#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейдите по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект в выпадающем списке в шапке web-интерфейса Kubernetes |
Переход во вкладку Pod |
В меню выбрать пункт Workload/Pods |
Через CLI kubernetes (kubectl)
Agent#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-agent-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Kafka adapter#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-agent-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Event exporter#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-event-exporter-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Select#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-select-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Insert#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-insert-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Storage#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-storage-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Alert#
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-metrics-alert-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
— |
Также проверить отсутствие ошибок в рамках логов приложения (раздел «Выгрузка системных логов»).
Настройка выделения ресурсов#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Логин в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig» |
Переход в проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes |
Вход в StatefulSet/Deployment |
Выполнить следующие действия: |
Скорректировать параметры |
В окне редактирования найдите параметры: |
Сохранение |
Нажмите кнопку Update |
Проверка конфигурации |
Снова зайти на вкладку Edit в YAML или JSON |
Выход из web-консоли Kubernetes |
Выполнить следующие действия: |
Через CLI kubernetes (kubectl)
Шаг |
Действие |
Описание |
|---|---|---|
Получить текущие StatefulSet/Deployment приложений |
В консоли выполнить команду |
— |
Скорректировать параметры |
В консоли выполнить команду |
$STATEFULSET_NAME - имя statefulset/deployments; $CONTAINER_NAME — имя контейнера в рамках statfulset/deployments; $LIMIT_TYPE — секция где необходимо изменить квоту (limits/requests); $LIMIT_ENV - значение лимита (cpu/memory); $VALUE — необходимое значение (пример 1Gi) |
Проверить конфигурацию |
В консоли выполнить команду |
— |
Изменение количества Pods#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейти по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig» |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes |
Запуск Pod |
1. В меню выберите пункт Workload/StatefulSets. |
Выход из web-консоли Kubernetes |
1. Нажмите по имени пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Увеличить/уменьшить количество Pods |
В консоли выполнить команду: |
— |
Выгрузка системных логов#
С использованием web-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в web-консоль Kubernetes |
Перейдите по ссылке (URL) web-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект можно в выпадающем списке в шапке web-интерфейса Kubernetes |
Выгрузить лог |
1. В меню выберите пункт Workload/Pods. |
Выход из web-консоли Kubernetes |
1. Выберите имя пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Выгрузить лог |
В консоли выполнить команду: |
— |
Ротация сертификатов#
Для проведения ротации используемых сертификатов необходимо ознакомиться с документацией используемого хранилища (Kubernetes, Vault и т.д.)
Подключение и конфигурирование#
Программный компонент GATM из состава программного продукта Platform V Service Mesh (SSM) работает в рамках собственной реализации Pod.
Подключение проводится в рамках установки компонента GATM в пользовательский namespace
Конфигурирование проводиться посредством реализации scrape конфигурации
Маска конфигурации:
kind: ConfigMap
apiVersion: v1
metadata:
name: synapse-metrics-agent-scrapeconfig
data:
scrape.yml: |
global:
...
scrape_configs:
...
Путь к конфигурационному YML-файлу указывается в секции spec.containers[@.name="synapse-metrics-agent"].args в pod агента с помощью флага командной строки -promscrape.config
Рекомендуемый формат:
args: - '-promscrape.config=/scrapeconfig/scrape.yml'Важно, тобы ресурс kind: ConfigMap был подмонтирован к pods агента
Agent учитывает следующие разделы из конфигурационного файла в формате Prometheus:
globalscrape_configs
Все остальные разделы игнорируются, включая раздел remote_write.
Информация по формированию конфигурационного файла для scrape метрик
Пример конфигурации: ConfigMap.yml
События системного журнала#
Системный лог выводится в консоль контейнера приложения.
Agent#
Уровни логирования INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в spec.template.spec.containers[0].args, в statefulset.
'-loggerLevel=<уровень>'
Минимальный уровень ошибок для вывода. Возможные значения: INFO, WARN, ERROR, FATAL, PANIC (по умолчанию: "INFO")
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-agent.
Разворачивание среды
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:12 build version: vmagent-20221115-121853-heads-master-0-g39fc90dbf-dirty-5d654ac2
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:13 command-line flags
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -promscrape.cluster.memberNum="synapse-metrics-agent-0"
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -promscrape.cluster.membersCount="2"
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -promscrape.cluster.name="synapse-metrics-agent-0-tribe-sy-fssm-dev"
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -promscrape.config="/scrapeconfig/scrape.yml"
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -promscrape.suppressDuplicateScrapeTargetErrors="true"
2023-01-26T14:20:30.718Z info ***/lib/logger/flag.go:20 -remoteWrite.url="secret"
2023-01-26T14:20:30.718Z info ***/app/vmagent/main.go:103 starting vmagent at ":8429"...
2023-01-26T14:20:30.718Z info ***/lib/memory/memory.go:42 limiting caches to 188743680 bytes, leaving 125829120 bytes to the OS according to -memory.allowedPercent=60
2023-01-26T14:20:30.721Z info ***/lib/persistentqueue/fastqueue.go:59 opened fast persistent queue at "vmagent-remotewrite-data/persistent-queue/1_AA191EE87E52329A" with maxInmemoryBlocks=188, it contains 0 pending bytes
2023-01-26T14:20:30.722Z info ***/app/vmagent/remotewrite/client.go:169 initialized client for -remoteWrite.url="1:secret-url"
2023-01-26T14:20:30.722Z info ***/app/vmagent/main.go:130 started vmagent in 0.004 seconds
2023-01-26T14:20:30.722Z info ***/lib/httpserver/httpserver.go:96 starting http server at http://127.*.0.1:8429/
2023-01-26T14:20:30.722Z info ***/lib/httpserver/httpserver.go:97 pprof handlers are exposed at http://127.*.0.1:8429/debug/pprof/
2023-01-26T14:20:30.723Z info ***/lib/promscrape/scraper.go:106 reading Prometheus configs from "/scrapeconfig/scrape.yml"
2023-01-26T14:20:30.725Z info ***/lib/promscrape/config.go:120 starting service discovery routines...
2023-01-26T14:20:30.775Z info ***/lib/promscrape/discovery/kubernetes/api_watcher.go:501 started pod watcher for "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/tribe-sy-fssm-dev/pods"
2023-01-26T14:20:30.783Z info ***/lib/promscrape/config.go:126 started service discovery routines in 0.058 seconds
Информация о захвате целей для сбора метрик
2023-01-26T14:20:45.834Z info ***/lib/promscrape/discovery/kubernetes/api_watcher.go:633 reloaded 6 objects from "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/tribe-sy-fssm-dev/pods" in 0.030s; updated=0, removed=0, added=6, resourceVersion="1361161414"
2023-01-26T14:21:00.784Z info ***/lib/promscrape/scraper.go:403 kubernetes_sd_configs: added targets: 6, removed targets: 0; total targets: 6
Информация об удалении цели для сбора метрик
2023-01-27T07:59:13.418Z info ***/lib/promscrape/scraper.go:403 kubernetes_sd_configs: added targets: 0, removed targets: 1; total targets: 5
Предупреждение о недоступности цели для сбора метрик
2023-01-27T07:58:29.731Z warn ***/lib/promscrape/scrapework.go:390 cannot scrape "http://192.*.55.81:15020/stats/prometheus" (job "istio-pods", labels {instance="192.*.55.81:15020",job="istio-pods"}): error when scraping "http://192.*.55.81:15020/stats/prometheus": unexpected EOF
Предупреждение о недоступности сервера, в рамках передачи метрик
2023-04-05T05:15:33.894Z warn ***/app/smagent/remotewrite/client.go:333 couldn't send a block with size 27416 bytes to "1:secret-url": Post "http://localhost:8081/receive": dial tcp4 127.*.0.1:8081: connect: connection refused; re-sending the block in 2.000 seconds
Ошибки при обращении к KubeAPI, недоступность сервиса
2023-03-31T18:20:30.533Z error ***/lib/promscrape/discovery/kubernetes/api_watcher.go:690 error when reading WatchEvent stream from "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/federation-istio-system/pods?watch=1&allowWatchBookmarks=true&timeoutSeconds=1620&resourceVersion=163285310": cannot parse WatchEvent json response: unexpected EOF
2023-01-26T14:20:30.782Z error ***/lib/promscrape/discovery/kubernetes/api_watcher.go:578 cannot perform request to "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/tribe-sy-fssm-dev/pods": Get "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/tribe-sy-fssm-dev/pods": dial tcp 192.*.0.1:443: connect: connection refused
Ошибки при обращении к KubeAPI, недостаточно прав для запроса
2023-04-04T17:19:46.409Z error ***/lib/promscrape/discovery/kubernetes/api_watcher.go:584 unexpected status code for request to "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/federation-istio-system/pods": 403; want 200; response: "{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"pods is forbidden: User \\\"system:serviceaccount:synapse-metrics-system:synapse-metrics-sa\\\" cannot list resource \\\"pods\\\" in API group \\\"\\\" in the namespace \\\"federation-istio-system\\\"\",\"reason\":\"Forbidden\",\"details\":{\"kind\":\"pods\"},\"code\":403}\
В рамках ошибок сетевого взаимодействия необходимо ознакомиться с документацией компонент SVPX/IGEG «Руководство прикладного разработчика», раздел «Часто встречающиеся проблемы и пути их устранения».
Kafka Adapter#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-kafka-adapter.
Подключение к Kafka
time="2023-01-27T11:24:07Z" level=info msg="creating kafka producer" source="main.go:29"
Логгирование об обработке метрики
{"fields.time":"2023-01-27T11:24:53Z","ip":"127.*.0.1","latency":308830,"level":"info","method":"POST","msg":"","path":"/receive","status":200,"time":"2023-01-27T11:24:53Z","user-agent":"vmagent"}
{"fields.time":"2023-01-27T11:25:00Z","ip":"127.*.0.1","latency":208489,"level":"info","method":"POST","msg":"","path":"/receive","status":200,"time":"2023-01-27T11:25:00Z","user-agent":"vmagent"}
Информирование об ошибке соединения с Kafka
%6|1674861433.494|FAIL|rdkafka#producer-1| [thrd:broker.ru:9093/bootstrap]: broker.ru:9093/24: Disconnected while requesting ApiVersion: might be caused by incorrect security.protocol configuration (connecting to a SSL listener?) or broker version is < 0.10 (see api.version.request) (after 0ms in state APIVERSION_QUERY, 3 identical error(s) suppressed)
Информирование об ошибке Kafka
%6|1680671954.839|FAIL|rdkafka#producer-1| [thrd:10.25.134.75:30492/bootstrap]: 10.*.134.75:30492/0: Disconnected (after 58058ms in state UP
В рамках ошибок сетевого взаимодействия необходимо ознакомиться с документацией компонент SVPX/IGEG «Руководство прикладного разработчика», раздел «Часто встречающиеся проблемы и пути их устранения».
Event Exporter#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-event-exporter.
Разворачивание среды
W0724 05:39:12.660130 1 client_config.go:618] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0724 05:39:12.660743 1 main.go:89] starting prometheus metrics server on http://localhost:9102
I0724 05:39:12.660824 1 event.go:91] [synapse-metrics-system] starting eventCollector
I0724 05:39:31.661945 1 event.go:95] [synapse-metrics-system] started
Ошибки при обращении в Kube API server
W0724 05:39:12.665602 1 reflector.go:533] pkg/mod/k8s.io/client-go@v0.27.3/tools/cache/reflector.go:231: failed to list *v1.Event: Get "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/synapse-metrics-system/events?limit=500&resourceVersion=0": dial tcp **.**.*.*:443: connect: connection refused
E0724 05:39:12.665680 1 reflector.go:148] pkg/mod/k8s.io/client-go@v0.27.3/tools/cache/reflector.go:231: Failed to watch *v1.Event: failed to list *v1.Event: Get "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/synapse-metrics-system/events?limit=500&resourceVersion=0": dial tcp **.**.*.*:443: connect: connection refused
W0724 05:39:13.951826 1 reflector.go:533] pkg/mod/k8s.io/client-go@v0.27.3/tools/cache/reflector.go:231: failed to list *v1.Event: Get "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/synapse-metrics-system/events?limit=500&resourceVersion=0": dial tcp **.**.*.*:443: connect: connection refused
E0724 05:39:13.951897 1 reflector.go:148] pkg/mod/k8s.io/client-go@v0.27.3/tools/cache/reflector.go:231: Failed to watch *v1.Event: failed to list *v1.Event: Get "https://kubernetes.default.svc.cluster.local:443/api/v1/namespaces/synapse-metrics-system/events?limit=500&resourceVersion=0": dial tcp **.**.*.*:443: connect: connection refused
Допустимо получать указанные ошибки при старте приложения при медленном старте контейнера «istio-proxy», что реализует блокирование запросов.
Формирование метрик по событиям
I0724 07:03:39.435555 1 event.go:165] [synapse-metrics-system] event name: synapse-metrics-event-exporter-7776b8c97-cm4cq.1774bbc1ad2db7b6,count: 1,involvedObject_namespace: synapse-metrics-system,involvedObject_kind: Pod,involvedObject_name: synapse-metrics-event-exporter-7776b8c97-cm4cq,reason: Started,type: Normal
I0724 07:03:39.435587 1 event.go:165] [synapse-metrics-system] event name: synapse-metrics-event-exporter-7776b8c97-cm4cq.1774bbc1ff1ce991,count: 11,involvedObject_namespace: synapse-metrics-system,involvedObject_kind: Pod,involvedObject_name: synapse-metrics-event-exporter-7776b8c97-cm4cq,reason: Unhealthy,type: Warning
I0724 07:03:39.435626 1 event.go:165] [synapse-metrics-system] event name: synapse-metrics-event-exporter-7776b8c97-hmz58.1774b72a78095048,count: 18,involvedObject_namespace: synapse-metrics-system,involvedObject_kind: Pod,involvedObject_name: synapse-metrics-event-exporter-7776b8c97-hmz58,reason: Unhealthy,type: Warning
I0724 07:03:39.435662 1 event.go:165] [synapse-metrics-system] event name: synapse-metrics-event-exporter-7776b8c97-hmz58.1774bbc14ba1a347,count: 1,involvedObject_namespace: synapse-metrics-system,involvedObject_kind: Pod,involvedObject_name: synapse-metrics-event-exporter-7776b8c97-hmz58,reason: Killing,type: Normal
Select#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-select.
Разворачивание среды
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:12","msg":"build version: vmselect-20230718-053115-heads-test-build-bin-0-g2ee14fe1e"}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -cacheDataPath=\"/cache\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -dedup.minScrapeInterval=\"1m0s\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8401\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/app/vmselect/main.go:95","msg":"starting netstorage at storageNodes [synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8401]"}
{"ts":"2023-07-18T14:22:10.058Z","level":"info","caller":"**/app/vmselect/main.go:109","msg":"started netstorage in 0.002 seconds"}
{"ts":"2023-07-18T14:22:10.059Z","level":"info","caller":"**/lib/memory/memory.go:42","msg":"limiting caches to 188743680 bytes, leaving 125829120 bytes to the OS according to -memory.allowedPercent=60"}
{"ts":"2023-07-18T14:22:10.059Z","level":"info","caller":"**/app/vmselect/promql/rollup_result_cache.go:66","msg":"loading rollupResult cache from \"/cache/rollupResult\"..."}
{"ts":"2023-07-18T14:22:10.060Z","level":"info","caller":"**/app/vmselect/promql/rollup_result_cache.go:94","msg":"loaded rollupResult cache from \"/cache/rollupResult\" in 0.001 seconds; entriesCount: 0, sizeBytes: 0"}
{"ts":"2023-07-18T14:22:10.060Z","level":"info","caller":"**/lib/httpserver/httpserver.go:96","msg":"starting http server at http://127.0.0.1:8481/"}
{"ts":"2023-07-18T14:22:10.061Z","level":"info","caller":"**/lib/httpserver/httpserver.go:97","msg":"pprof handlers are exposed at http://127.0.0.1:8481/debug/pprof/"}
Параметры запуска
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -cacheDataPath=\"/cache\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -dedup.minScrapeInterval=\"1m0s\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-18T14:22:10.056Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
Успешный запрос в рамках приложения
{"ts":"2023-07-24T05:58:51.167Z","level":"info","caller":"**/app/vmselect/querystats/querystats.go:87","msg":"enabled query stats tracking at `/api/v1/status/top_queries` with -search.queryStats.lastQueriesCount=20000, -search.queryStats.minQueryDuration=1ms"}
Ошибка в рамках обращения к storage
{"ts":"2023-07-24T06:00:34.141Z","level":"warn","caller":"**/app/vmselect/main.go:451","msg":"error in \"/select/0/prometheus/api/v1/query # далее описывается причина ошибки
Ошибки могут быть связаны с временной недоступностью приложения storage.
Insert#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-insert.
Разворачивание среды
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:12","msg":"build version: vminsert-20230718-053035-heads-test-build-bin-0-g2ee14fe1e"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/app/vminsert/main.go:97","msg":"initializing netstorage for storageNodes [synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400]..."}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/memory/memory.go:42","msg":"limiting caches to 188743680 bytes, leaving 125829120 bytes to the OS according to -memory.allowedPercent=60"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/app/vminsert/main.go:116","msg":"successfully initialized netstorage in 0.000 seconds"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/httpserver/httpserver.go:96","msg":"starting http server at http://***.*.*.*:8480/"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/httpserver/httpserver.go:97","msg":"pprof handlers are exposed at http://127.0.0.1:8480/debug/pprof/"}
Параметры запуска
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
{"ts":"2023-07-24T05:57:50.331Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\""}
Успешное подключение в storage
{"ts":"2023-07-24T05:58:06.938Z","level":"info","caller":"**/app/vminsert/netstorage/netstorage.go:268","msg":"successfully dialed -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\""}
Ошибки при подключении к storage
{"ts":"2023-07-24T05:57:50.533Z","level":"warn","caller":"**/app/vminsert/netstorage/netstorage.go:264","msg":"cannot dial storageNode \"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\": dial tcp4 **.**.*.***:8400: connect: connection refused"}
Ошибки могут быть связаны с временной недоступностью приложения storage, а также при медленном старте контейнера «istio-proxy», что реализует блокирование запросов.
Ошибки при запросе к storage
{"ts":"2023-07-24T05:58:06.938Z","level":"info","caller":"**/app/vminsert/netstorage/netstorage.go:268","msg":"successfully dialed -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\""}
{"ts":"2023-07-24T06:00:16.533Z","level":"warn","caller":"**/app/vminsert/netstorage/netstorage.go:306","msg":"cannot send 1615 bytes with 9 rows to -storageNode=\"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\": cannot read `ack` from vmstorage: EOF; closing the connection to storageNode and re-routing this data to healthy storage nodes"}
{"ts":"2023-07-24T06:00:16.533Z","level":"warn","caller":"**/app/vminsert/netstorage/netstorage.go:211","msg":"cannot push 1615 bytes with 9 rows to storage nodes, since all the nodes are temporarily unavailable; re-trying to send the data soon"}
{"ts":"2023-07-24T06:00:16.735Z","level":"warn","caller":"**/app/vminsert/netstorage/netstorage.go:264","msg":"cannot dial storageNode \"synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local:8400\": dial tcp4: lookup synapse-metrics-storage-0.synapse-metrics-storage.synapse-metrics-system.svc.cluster.local on **.**.*.**:53: no such host"}
Storage#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-storage.
Разворачивание среды
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:12","msg":"build version: vmstorage-20230718-053156-heads-test-build-bin-0-g2ee14fe1e"}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -retentionPeriod=\"1d\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -storageDataPath=\"/storage\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/app/vmstorage/main.go:100","msg":"opening storage at \"/storage\" with -retentionPeriod=1d"}
{"ts":"2023-07-24T06:00:22.561Z","level":"info","caller":"**/lib/memory/memory.go:42","msg":"limiting caches to 377487360 bytes, leaving 251658240 bytes to the OS according to -memory.allowedPercent=60"}
{"ts":"2023-07-24T06:00:22.564Z","level":"info","caller":"**/lib/storage/storage.go:873","msg":"nothing to load from \"/storage/cache/curr_hour_metric_ids\""}
{"ts":"2023-07-24T06:00:22.564Z","level":"info","caller":"**/lib/storage/storage.go:873","msg":"nothing to load from \"/storage/cache/prev_hour_metric_ids\""}
{"ts":"2023-07-24T06:00:22.564Z","level":"info","caller":"**/lib/storage/storage.go:833","msg":"nothing to load from \"/storage/cache/next_day_metric_ids\""}
{"ts":"2023-07-24T06:00:22.586Z","level":"info","caller":"**/app/vmstorage/main.go:112","msg":"successfully opened storage \"/storage\" in 0.027 seconds; partsCount: 0; blocksCount: 0; rowsCount: 0; sizeBytes: 0"}
Параметры запуска
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:13","msg":"command-line flags"}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.enable=\"true\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -envflag.prefix=\"GATM_\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerFormat=\"json\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -loggerLevel=\"INFO\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -retentionPeriod=\"1d\""}
{"ts":"2023-07-24T06:00:22.559Z","level":"info","caller":"**/lib/logger/flag.go:20","msg":" -storageDataPath=\"/storage\""}
Успешное подключение insert/select
{"ts":"2023-07-24T06:00:22.587Z","level":"info","caller":"**/app/vmstorage/servers/vminsert.go:65","msg":"accepting vminsert conns at 0.0.0.0:8400"}
{"ts":"2023-07-24T06:00:22.587Z","level":"info","caller":"**/lib/vmselectapi/server.go:157","msg":"accepting vmselect conns at 0.0.0.0:8401"}
{"ts":"2023-07-24T06:00:22.587Z","level":"info","caller":"**/lib/httpserver/httpserver.go:96","msg":"starting http server at http://***.*.*.*:8482/"}
{"ts":"2023-07-24T06:00:22.587Z","level":"info","caller":"**/lib/httpserver/httpserver.go:97","msg":"pprof handlers are exposed at http://***.*.*.*:8482/debug/pprof/"}
{"ts":"2023-07-24T06:00:45.037Z","level":"info","caller":"**/app/vmstorage/servers/vminsert.go:114","msg":"processing vminsert conn from ***.*.*.*:37931"}
Резервирование данных для хранения
{"ts":"2023-07-24T06:00:45.040Z","level":"info","caller":"**/lib/storage/partition.go:221","msg":"creating a partition \"2023_07\" with smallPartsPath=\"/storage/data/small/2023_07\", bigPartsPath=\"/storage/data/big/2023_07\""}
{"ts":"2023-07-24T06:00:45.042Z","level":"info","caller":"**/lib/storage/partition.go:230","msg":"partition \"2023_07\" has been created"}
Alert#
Уровни логирования DEBUG, INFO, WARN, ERROR, FATAL или PANIC. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap». Уровень по умолчанию: INFO. Уровень логирования устанавливает администратор данного компонента.
Уровень логирования DEBUG не рекомендован для ПРОМ среды.
Наименование контейнера в рамках «kind: Pod» — synapse-metrics-alert.
Разворачивание среды
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:12 build version: vmalert-20230718-052954-heads-test-build-bin-0-g2ee14fe1e
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:13 command-line flags
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -datasource.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -disableNotifiers="true"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -remoteRead.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -remoteWrite.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -rule="/var/log/rules/*.yaml"
2023-07-19T07:37:30.672Z info **/app/vmalert/main.go:175 reading rules configuration file from "/var/log/rules/*.yaml"
2023-07-19T07:37:30.673Z info **/app/vmalert/config/log/logger.go:52 found 4 files to read from "Local FS{MatchPattern: \"/var/log/rules/*.yaml\"}"
2023-07-19T07:37:30.673Z info **/app/vmalert/config/log/logger.go:52 finished reading 4 files in 90.093µs from "Local FS{MatchPattern: \"/var/log/rules/*.yaml\"}"
2023-07-19T07:37:30.824Z info **/lib/httpserver/httpserver.go:96 starting http server at http://127.0.0.1:8880/
2023-07-19T07:37:30.824Z info **/lib/httpserver/httpserver.go:97 pprof handlers are exposed at http://127.0.0.1:8880/debug/pprof/
Параметры запуска
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -datasource.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -disableNotifiers="true"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -remoteRead.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -remoteWrite.url="secret"
2023-07-19T07:37:30.670Z info **/lib/logger/flag.go:20 -rule="/var/log/rules/*.yaml"
Загрузка правил агрегации
2023-07-19T07:37:30.672Z info **/app/vmalert/main.go:175 reading rules configuration file from "/var/log/rules/*.yaml"
2023-07-19T07:37:30.673Z info **/app/vmalert/config/log/logger.go:52 found 4 files to read from "Local FS{MatchPattern: \"/var/log/rules/*.yaml\"}"
2023-07-19T07:37:30.673Z info **/app/vmalert/config/log/logger.go:52 finished reading 4 files in 90.093µs from "Local FS{MatchPattern: \"/var/log/rules/*.yaml\"}"
Успешная обработка правил агрегации
2023-07-19T07:37:31.956Z info **/app/vmalert/group.go:309 group "kube-apiserver.rules" started; interval=1m0s; concurrency=1
2023-07-19T07:37:34.137Z info **/app/vmalert/group.go:309 group "openshift-sre.rules" started; interval=1m0s; concurrency=1
Ошибка при обработке правил агрегации
2023-07-19T07:37:31.973Z error **/app/vmalert/group.go:326 group "kube-apiserver.rules": rule "apiserver_request:burnrate6h":
2023-07-19T07:37:31.973Z error **/app/vmalert/group.go:326 group "kube-apiserver.rules": rule "apiserver_request:burnrate5m"
При старте допустимы сообщения об ошибках, так как есть временной диапазон по старту контейнера «istio-proxy», если ошибки не будут повторяться, то приложение работает в штатном режиме.
Также в указанных ошибках транслируются ошибки связанные с сетевым взаимодействием компонент, таким как agent и select.
События мониторинга#
Компонент не порождает метрики мониторинга.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Причина |
Решение |
|---|---|---|
Не стартует Pod приложения |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |
Нет доступной node для запуска |
Зарегистрировать обращение в поддержку инфраструктуры |
|
Ошибка в конфигурации |
Выгрузить лог, провести анализ, скорректировать конфигурацию |
|
Ресурсы Pod не соответствуют ограничениям, заданным в LimitRanges |
Изменить ресурсы для приложения таким образом, чтобы они соответствовали LimitRanges либо удалить LimitRanges |
|
Частый перезапуск контейнера приложения |
Медленная загрузка приложения |
Увеличить задержку и/или интервал опроса Liveness пробы |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |
|
Ошибка при вызове |
Нет доступных Pods сервиса, которому направлен вызов |
Проверить состояние сервиса-получателя вызова |
Ошибки в конфигурации сервисного прокси |
Выгрузить лог сервисного прокси, проанализировать, устранить ошибки (ознакомиться с указанными действиями можно в документации компонента SPVX «Руководство по системному администрированию», раздел «Сценарии администрирования»). Пример устранения: редактирование конфигурации Istio по host вызываемого сервиса. |