diff --git a/files/netdata/go.d/postgres.conf b/files/netdata/go.d/postgres.conf index 0dfd8b4..f26d78f 100644 --- a/files/netdata/go.d/postgres.conf +++ b/files/netdata/go.d/postgres.conf @@ -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 diff --git a/files/netdata/netdata.template.conf b/files/netdata/netdata.template.conf index 4f1cd48..3c4f40f 100644 --- a/files/netdata/netdata.template.conf +++ b/files/netdata/netdata.template.conf @@ -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