Compare commits

..
3 Commits
Author SHA1 Message Date
av 626bac5303 Netdata: снижено потребление памяти и CPU
Linting / Ansible Lint (push) Canceled after 0s
Linting / YAML Lint (push) Canceled after 0s
- выключены 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.
2026-08-13 08:57:09 +03:00
av 50c975d49b Netdata: update to 2.11.0
- в 2.11 появился netflow-plugin, его стоковый netflow.yaml идёт с
  enabled: true и слушателями на UDP 2055/6343; при дефолтном
  `enable running new plugins = yes` он поднялся бы сам, поэтому отключён
  явно — экспортировать потоки нам некому, а память не бесконечная
- ломающих изменений для нас нет: убранный из prometheus-коллектора
  label_prefix и удалённый go-коллектор sensors мы не используем
2026-08-12 21:56:27 +03:00
av dd4a3b8456 Calibre-Web: update to 0.6.27 2026-08-10 08:53:27 +03:00
4 changed files with 74 additions and 7 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
services: services:
calibre_web_app: calibre_web_app:
image: lscr.io/linuxserver/calibre-web:0.6.26 image: lscr.io/linuxserver/calibre-web:0.6.27
container_name: calibre_web_app container_name: calibre_web_app
restart: unless-stopped restart: unless-stopped
networks: networks:
+1 -1
View File
@@ -1,7 +1,7 @@
services: services:
netdata: netdata:
image: netdata/netdata:v2.10.4 image: netdata/netdata:v2.11.0
container_name: netdata container_name: netdata
restart: unless-stopped restart: unless-stopped
cap_add: cap_add:
+12
View File
@@ -1,9 +1,21 @@
update_every: 60 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: jobs:
- name: outline_db - name: outline_db
dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@outline_postgres:5432/outline' dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@outline_postgres:5432/outline'
max_db_indexes: 10
- name: miniflux_db - name: miniflux_db
dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@miniflux_postgres:5432/miniflux' dsn: 'postgresql://netdata:{{ netdata_postgres_password }}@miniflux_postgres:5432/miniflux'
max_db_indexes: 10
+58 -3
View File
@@ -34,6 +34,13 @@
#| datatype: duration (seconds), default value: 1s #| datatype: duration (seconds), default value: 1s
update every = 10s 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 # enable replication = yes
# replication period = 1d # replication period = 1d
# replication step = 1h # replication step = 1h
@@ -106,7 +113,13 @@
# proxy = env # proxy = env
[ml] [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 # training window = 6h
# min training window = 15m # min training window = 15m
# max training vectors = 1440 # max training vectors = 1440
@@ -221,10 +234,34 @@
#| datatype: yes or no, default value: yes #| datatype: yes or no, default value: yes
otel = no otel = no
# Появился в 2.11: приёмник NetFlow/IPFIX/sFlow, стоковый netflow.yaml
# идёт с enabled: true и слушателями на UDP 2055/6343. Экспортировать
# потоки некому, а свой четырёхуровневый журнал и MMDB-базы плагин
# держит в памяти — на нашей памяти это лишний процесс.
#| >>> [plugins].netflow <<<
#| datatype: yes or no, default value: yes
netflow = no
#| >>> [plugins].statsd <<< #| >>> [plugins].statsd <<<
#| datatype: yes or no, default value: yes #| datatype: yes or no, default value: yes
statsd = no 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 # idlejitter = yes
# netdata pulse = yes # netdata pulse = yes
# profile = no # profile = no
@@ -354,7 +391,13 @@
# command options = # command options =
[plugin:apps] [plugin:apps]
# update every = 10s # 86 групп процессов × 24 контекста = 4039 метрик, четверть всех. Метрики
# оставляем (нужен разрез по хостовым процессам вне контейнеров), но обход
# /proc по всем процессам делаем втрое реже — это и есть основная цена.
#| >>> [plugin:apps].update every <<<
#| datatype: duration (seconds), default value: 10s
update every = 30s
# command options = # command options =
[plugin:systemd-journal] [plugin:systemd-journal]
@@ -375,7 +418,19 @@
[plugin:proc:/proc/net/dev] [plugin:proc:/proc/net/dev]
# compressed packets for all interfaces = no # 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] [plugin:proc:/proc/stat]
# cpu utilization = yes # cpu utilization = yes