Метрики мониторинга#
ПМ собирает метрики во всех подсистемах платформы AIC и выводит информацию в дашборды. Основные метрики, которые собирает и анализирует ПМ приведены ниже:
Метрики ALSE.
Метрики Подсистемы виртуализации:
количество запущенных ВМ в кластере/зоне;
общее ЦПУ / использованное ЦПУ в кластере/ВМ;
общая память / используемая память в кластере/ВМ;
суммарные статус всех сервисов на хостах в кластере;
суммарный статус всех сервисов на fronts в кластере;
статус хоста;
сетевой трафик и скорость трафика через сетевые интерфейсы;
статус сервисов на выбранном хосте.
Мониторинг Подсистемы контроллера домена:
использование ЦПУ / памяти службами ПРК;
проверка служб:
Chrony
;Apache2
;Cups
;Zabbix
;Salt-master
;krb5kdc
;ipa-custodia
;dirsrv
;
проверка синхронизации времени;
проверка работы DNS.
Мониторинг FreeIPA:
количество неуспешных попыток авторизации в LDAP;
количество заблокированных пользователей;
статус служб FreeIPA;
использование памяти;
нагрузка на процессор на контроллерах;
количество событий уровня error во всех логах системы за единицу времени;
количество Search запросов на контроллере домена;
количество логинов в web ui от пользователей с админ правами за единицу времени.
Мониторинг Подсистемы резервного копирования:
использование ЦПУ / памяти службами ПРК;
проверка бэкапных тасок и их статусов;
проверка служб:
rubackup_server
;rubackup_client
;postgresql@11-main
.
Примечание
Известные проблемы
Со временем файловая система на сервере мониторинга забивается полностью данными docker-контейнеров (лог-файлы внутри самих контейнеров, они не являются необходимыми, поэтому могут быть удалены).
Для того, чтобы избежать переполнения файловой системы, необходимо в файле docker-compose.yml
добавить следующие строки под каждой секцией с описанием контейнера:
logging:
options:
max-size: 100m
В данном примере размер лога ограничен 100 МБ.
Пример docker-compose.yml
:
##
## Astra Monitoring - Compose version 0.4.1
##
version: "3.8"
volumes:
grafana_data: {}
services:
clickhouse:
image: 10.205.18.64:5000/clickhouse-server:23.8.2.7
container_name: clickhouse
restart: unless-stopped
logging:
options:
max-size: 100m
user: ${UID}:${GID}
volumes:
- ./clickhouse/data:/var/lib/clickhouse
- ./clickhouse/config/config.xml:/etc/clickhouse-server/config.xml:ro
- ./clickhouse/init:/docker-entrypoint-initdb.d
ports: []
environment:
- CLICKHOUSE_USER=astra
- CLICKHOUSE_PASSWORD=password
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1"]
interval: 10s
timeout: 3s
retries: 3
start_period: 3s
clickhouse-updater:
image: 10.205.18.64:5000/ch-cluster-update:n0.18
container_name: ch-updater
restart: "no"
logging:
options:
max-size: 100m
environment:
- db_name=astra
- db_user=astra
- db_ip=clickhouse
- db_port=9000
- db_timeout=5
- db_pass=password
depends_on:
clickhouse:
condition: service_healthy
vector:
image: 10.205.18.64:5000/vector:0.33.0-alpine
container_name: vector
restart: unless-stopped
user: ${UID}:${GID}
logging:
options:
max-size: 100m
volumes:
- ./vector/config:/etc/vector
ports:
- 9102:9102 # This port is used for incoming data flow
depends_on:
clickhouse:
condition: service_healthy
alertmanager:
image: 10.205.18.64:5000/alertmanager:v0.26.0
container_name: alertmanager
restart: unless-stopped
user: ${UID}:${GID}
volumes:
- ./alertmanager/data:/alertmanager
- ./alertmanager/config:/etc/alertmanager
- ./alertmanager/templates:/etc/alertmanager-templates
ports:
- 9093:9093 # Publishing for troubleshooting
depends_on:
- event-adapter
logging:
options:
max-size: 100m
grafana:
image: 10.205.18.64:5000/grafana:9.5.2
container_name: grafana
restart: unless-stopped
volumes:
- ./grafana/config:/etc/grafana
- ./grafana/dashboards:/src/grafana/dashboards
- grafana_data:/var/lib/grafana
- ./grafana/plugins:/var/lib/grafana/plugins
ports:
- 3000:3000
environment:
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS="astra-astraclickhouse-datasource"
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=password
- GF_USERS_ALLOW_SIGN_UP=false
- GF_USERS_DEFAULT_THEME=dark
- GF_EXPLORE_ENABLED=true
- GF_ALERTING_ENABLED=false
- GF_UNIFIED_ALERTING_ENABLED=true
logging:
options:
max-size: 100m
postgresql:
image: 10.205.18.64:5000/pg-events-db-image:0.04
container_name: postgresql
restart: unless-stopped
user: ${UID}:${GID}
command:
- "-c"
- "config_file=/var/lib/postgresql/postgresql.conf"
volumes:
- ./postgresql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
- ./postgresql/postgresql.conf:/var/lib/postgresql/postgresql.conf:ro
- ./postgresql/pg_hba.conf:/var/lib/postgresql/pg_hba.conf:ro
- ./postgresql/data:/var/lib/postgresql/data
ports: []
environment:
- POSTGRES_USER=astra
- POSTGRES_DB=astra
- POSTGRES_PASSWORD=password
- PGDATA=/var/lib/postgresql/data/pgdata
healthcheck:
test: ["CMD-SHELL", "pg_isready --host=localhost --username=astra"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
logging:
options:
max-size: 100m
postgresql_updater:
image: 10.205.18.64:5000/pg-update-db:0.51.0
container_name: pg-updater
restart: "no"
environment:
- db_name=astra
- db_user=astra
- db_ip=postgresql
- db_port=5432
- db_timeout=5
- db_pass=password
depends_on:
postgresql:
condition: service_healthy
prometheus:
image: 10.205.18.64:5000/prometheus:v2.48.0
container_name: prometheus
restart: unless-stopped
user: ${UID}:${GID}
command:
- --storage.tsdb.retention=12h
- --storage.tsdb.path=/prometheus
- --config.file=/etc/prometheus/prometheus.yml
- --web.enable-lifecycle
volumes:
- ./prometheus/config:/etc/prometheus
- ./prometheus/data:/prometheus
ports:
- 9090:9090
logging:
options:
max-size: 100m
vmetrics:
image: 10.205.18.64:5000/victoria-metrics:v1.93.8
container_name: vmetrics
restart: unless-stopped
user: ${UID}:${GID}
command:
- --vmalert.proxyURL=http://vmalert:8880
volumes:
- ./victoria-metrics/data:/victoria-metrics-data
ports:
- 8428:8428
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8428/metrics"]
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
logging:
options:
max-size: 100m
vmalert:
image: 10.205.18.64:5000/vmalert:v1.91.3
container_name: vmalert
restart: unless-stopped
user: ${UID}:${GID}
command:
- --datasource.url=http://vmetrics:8428/
- --remoteRead.url=http://vmetrics:8428/
- --remoteWrite.url=http://vmetrics:8428/
- --notifier.url=http://event-adapter:8082/
- --notifier.url=http://alertmanager:9093/
- --rule=/etc/alerts/*.yaml
volumes:
- ./vmalert/config:/etc/alerts
ports:
- 8880:8880
depends_on:
vmetrics:
condition: service_healthy
logging:
options:
max-size: 100m
gatekeeper:
image: 10.205.18.64:5000/gatekeeper:2.9.3
container_name: gatekeeper
restart: unless-stopped
command:
- --discovery-url=http://${SERVER_HOST}:8081/realms/astra-monitoring
- --client-id=admin-ui
- --client-secret=TOKEN
- --listen=0.0.0.0:8080 # unix sockets format unix://path
- --enable-refresh-tokens=true
- --encryption-key=AgXa7xRcoClDEU0ZDSH4X0XhL5Qy2Z2j
- --upstream-url=http://admin-ui:80
- --enable-default-deny=true
- --enable-logout-redirect=true
- --cookie-access-name=AccessTokenCookie
- --cookie-refresh-name=RefreshTokenCookie
- --skip-openid-provider-tls-verify=true
- --redirection-url=http://${SERVER_HOST}/
- --enable-request-id=true
- --secure-cookie=false
- --enable-login-handler
ports:
- 80:8080
depends_on:
keycloak:
condition: service_healthy
logging:
options:
max-size: 100m
admin-ui:
image: 10.205.18.64:5000/admin-console-ui:0.0.52
container_name: admin-ui
restart: unless-stopped
volumes:
- ./admin-ui/config/nginx.conf:/etc/nginx/nginx.conf:ro
ports: []
depends_on:
- admin-back
logging:
options:
max-size: 100m
admin-back:
image: 10.205.18.64:5000/admin-console-api:0.0.52
container_name: admin-back
restart: unless-stopped
volumes: []
ports:
- 8000:8000
environment:
- grafana_base_url=${SERVER_HOST}:3000
- db_name=astra
- db_pass=password
- db_user=astra
- db_type=postgres
- db_host=postgresql
- db_port=5432
depends_on:
postgresql:
condition: service_healthy
logging:
options:
max-size: 100m
event-adapter:
image: 10.205.18.64:5000/event-adapter:0.0.22
container_name: event-adapter
restart: unless-stopped
volumes: []
environment:
- db_name=astra
- db_pass=password
- db_user=astra
- db_type=postgres
- db_host=postgresql
- db_port=5432
- PORT=8082
depends_on:
postgresql:
condition: service_healthy
logging:
options:
max-size: 100m
keycloak-db:
image: 10.205.18.64:5000/pg-events-db-image:0.04
container_name: keycloak-db
restart: unless-stopped
user: ${UID}:${GID}
command:
- "-c"
- "config_file=/var/lib/postgresql/postgresql.conf"
ports: []
volumes:
- ./postgresql/postgresql.conf:/var/lib/postgresql/postgresql.conf:ro
- ./postgresql/pg_hba.conf:/var/lib/postgresql/pg_hba.conf:ro
- ./keycloak/data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=keycloak
- POSTGRES_DB=keycloak
- POSTGRES_PASSWORD=password
- PGDATA=/var/lib/postgresql/data/pgdata
healthcheck:
test: ["CMD-SHELL", "pg_isready --host=localhost --username=keycloak"]
interval: 10s
timeout: 3s
retries: 3
start_period: 10s
logging:
options:
max-size: 100m
keycloak:
image: 10.205.18.64:5000/keycloak:23.0.1-017
container_name: keycloak
restart: unless-stopped
user: ${UID}:${GID}
command:
- start
- --optimized
- --import-realm
ports:
- 8081:8080
volumes:
- ./keycloak/realm-astra-monitoring.json:/opt/keycloak/data/import/realm-astra-monitoring.json:ro
- ./keycloak/tmp:/opt/keycloak/data/tmp
environment:
- KC_HOSTNAME_URL=http://${SERVER_HOST}:8081
- KC_HOSTNAME_ADMIN_URL=http://${SERVER_HOST}:8081
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=password
- KC_PROXY=edge
- KC_DB=postgres
- KC_DB_URL_HOST=keycloak-db
- KC_DB_USERNAME=keycloak
- KC_DB_PASSWORD=password
- KC_FILE=/opt/keycloak/data/import/realm-astra-monitoring.json
- KC_OVERRIDE=true
- ADMIN_UI_TOKEN=password
healthcheck:
test: ['CMD-SHELL', '[ -f /tmp/HealthCheck.java ] || echo "public class HealthCheck { public static void main(String[] args) throws java.lang.Throwable { System.exit(java.net.HttpURLConnection.HTTP_OK == ((java.net.HttpURLConnection)new java.net.URL(args[0]).openConnection()).getResponseCode() ? 0 : 1); } }" > /tmp/HealthCheck.java && java /tmp/HealthCheck.java http://localhost:8080/health/ready']
interval: 30s
timeout: 3s
retries: 50
start_period: 10s
depends_on:
keycloak-db:
condition: service_healthy
logging:
options:
max-size: 100m
keycloak-init:
image: 10.205.18.64:5000/keycloak-init:23.0.1-017
container_name: keycloak-init
restart: "no"
command:
- --wait-for
- "1"
environment:
- KEYCLOAK_BASE_URL=http://keycloak:8080
- KEYCLOAK_ADMIN_USER=admin
- KEYCLOAK_ADMIN_PASSWORD=password
- KEYCLOAK_REALM=astra-monitoring
- USERNAME=admin-internal
- EMAIL=admin-internal@localhost
- PASSWORD=admin
depends_on:
keycloak:
condition: service_healthy