Netdata: снижено потребление памяти и CPU
- выключены ML (52 MB и тренировка k-means по 13.7k измерений каждые 3 часа), network-viewer, debugfs и ioping; storage tiers 3 → 2, то есть максимум истории 3 месяца вместо 2 лет; apps.plugin обходит /proc раз в 30s вместо 10s, метрики групп процессов при этом сохранены - из /proc/net/dev отфильтрованы veth*, br-* и docker0 — 462 графика на 50 интерфейсов, из которых 43 безымянные veth докера. Побочный эффект: проверка имени в proc_net_dev.c идёт до netdev_rename_this_device(), поэтому теряется единственный смапленный cgroup_caddyproxy.net_eth0 - postgres перестал собирать метрики индексов (205 индексов × 2 графика); max_db_indexes задан внутри джоб, потому что на верхнем уровне файла go.d разбирает только confgroup.Default и молча игнорирует остальное Замер до: 13.7k метрик, 479 MiB, ~18% ядра. Ожидаемо после: ~11.8k метрик и ~310 MiB.
This commit is contained in:
@@ -1,9 +1,21 @@
|
||||
update_every: 60
|
||||
|
||||
# max_db_indexes задан внутри каждой джобы намеренно: на верхнем уровне
|
||||
# файла разбирается только confgroup.Default (update_every,
|
||||
# autodetection_retry, priority), остальные ключи yaml проглотит молча.
|
||||
#
|
||||
# Метрики индексов давали 205 индексов × 2 графика на две базы и никакой
|
||||
# пользы на личном сервере. Лимит означает «не собирать метрики индексов для
|
||||
# баз, где индексов больше N», так что 10 отключает их для обеих баз.
|
||||
# Метрики таблиц (seq scans, bloat, hot updates) оставляем: стоковый лимит
|
||||
# max_db_tables = 50 обе базы проходят.
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
- name: outline_db
|
||||
dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@outline_postgres:5432/outline'
|
||||
|
||||
max_db_indexes: 10
|
||||
|
||||
- name: miniflux_db
|
||||
dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@miniflux_postgres:5432/miniflux'
|
||||
max_db_indexes: 10
|
||||
|
||||
@@ -34,6 +34,13 @@
|
||||
#| datatype: duration (seconds), default value: 1s
|
||||
update every = 10s
|
||||
|
||||
# Третий tier (2 года с шагом 10 часов) на личном сервере не нужен, а
|
||||
# per-metric структуры каждого tier'а лежат в памяти для всех ~12k метрик.
|
||||
# Остаётся 14 дней с шагом 10s и 3 месяца с шагом 10m.
|
||||
#| >>> [db].storage tiers <<<
|
||||
#| datatype: number, default value: 3
|
||||
storage tiers = 2
|
||||
|
||||
# enable replication = yes
|
||||
# replication period = 1d
|
||||
# replication step = 1h
|
||||
@@ -106,7 +113,13 @@
|
||||
# proxy = env
|
||||
|
||||
[ml]
|
||||
# enabled = auto
|
||||
# Anomaly detection никто не смотрит, а тренировка k-means по каждому
|
||||
# измерению каждые 3 часа — основной расход CPU демона (замер: 52 MB
|
||||
# памяти и заметная доля от 18% ядра). Модели в ml.db тоже перестанут расти.
|
||||
#| >>> [ml].enabled <<<
|
||||
#| datatype: yes, no or auto, default value: auto
|
||||
enabled = no
|
||||
|
||||
# training window = 6h
|
||||
# min training window = 15m
|
||||
# max training vectors = 1440
|
||||
@@ -233,6 +246,22 @@
|
||||
#| datatype: yes or no, default value: yes
|
||||
statsd = no
|
||||
|
||||
# Периодически обходит все сокеты хоста ради карты соединений, которой мы
|
||||
# не пользуемся: ~5 MiB и постоянный расход CPU.
|
||||
#| >>> [plugins].network-viewer <<<
|
||||
#| datatype: yes or no, default value: yes
|
||||
network-viewer = no
|
||||
|
||||
# Даёт extfrag и zswap (33 метрики) — не смотрим.
|
||||
#| >>> [plugins].debugfs <<<
|
||||
#| datatype: yes or no, default value: yes
|
||||
debugfs = no
|
||||
|
||||
# Latency-пробы диска, требуют явной настройки, у нас не настроены.
|
||||
#| >>> [plugins].ioping <<<
|
||||
#| datatype: yes or no, default value: yes
|
||||
ioping = no
|
||||
|
||||
# idlejitter = yes
|
||||
# netdata pulse = yes
|
||||
# profile = no
|
||||
@@ -362,7 +391,13 @@
|
||||
# command options =
|
||||
|
||||
[plugin:apps]
|
||||
# update every = 10s
|
||||
# 86 групп процессов × 24 контекста = 4039 метрик, четверть всех. Метрики
|
||||
# оставляем (нужен разрез по хостовым процессам вне контейнеров), но обход
|
||||
# /proc по всем процессам делаем втрое реже — это и есть основная цена.
|
||||
#| >>> [plugin:apps].update every <<<
|
||||
#| datatype: duration (seconds), default value: 10s
|
||||
update every = 30s
|
||||
|
||||
# command options =
|
||||
|
||||
[plugin:systemd-journal]
|
||||
@@ -383,7 +418,19 @@
|
||||
|
||||
[plugin:proc:/proc/net/dev]
|
||||
# compressed packets for all interfaces = no
|
||||
# disable by default interfaces matching = lo fireqos* *-ifb fwpr* fwbr* fwln* ifb4*
|
||||
|
||||
# К стоковому списку добавлены veth*, br-* и docker0: это 50 интерфейсов
|
||||
# × 9 контекстов = 462 графика, из них 43 — безымянные veth докера.
|
||||
#
|
||||
# Внимание, побочный эффект: проверка имени в proc_net_dev.c идёт до
|
||||
# netdev_rename_this_device(), поэтому отфильтрованный veth уже не может
|
||||
# быть переименован в контейнерный чарт. У нас смаплен ровно один
|
||||
# (cgroup_caddyproxy.net_eth0), его мы теряем; внешний трафик виден в
|
||||
# system.net по eth0. Если понадобится разрез по контейнерам — убрать
|
||||
# veth* из списка и разбираться, почему маппинг не сработал для остальных.
|
||||
#| >>> [plugin:proc:/proc/net/dev].disable by default interfaces matching <<<
|
||||
#| datatype: simple pattern, default value: lo fireqos* *-ifb fwpr* fwbr* fwln* ifb4*
|
||||
disable by default interfaces matching = lo fireqos* *-ifb fwpr* fwbr* fwln* ifb4* veth* br-* docker0
|
||||
|
||||
[plugin:proc:/proc/stat]
|
||||
# cpu utilization = yes
|
||||
|
||||
Reference in New Issue
Block a user