Буферизація та зберігання
Один із мікросервісів, що становить ядро Fledge реалізацією є мікросервіс зберігання. Він відповідає за
- збереження конфігурації Fledge
- буферизацію даних, зчитаних з півдня
- ведення журналу аудиту Fledge
- збереження стану системи
Сервіс зберігання можна налаштувати, як і інші сервіси в Fledge, і вона використовує плагіни для розширення функціональності системи зберігання. Ці плагіни зберігання забезпечують основний механізм, за допомогою якого дані зберігаються у Fledge. Fledge може використовувати один або два з цих плагінів одночасно. Якщо використовується один плагін, він забезпечує зберігання всіх даних. Якщо використовуються два плагіни, один буде призначений для буферизації показань, а інший для зберігання конфігурації.
Стандартно Fledge постачається з трьома плагінами для зберігання
- SQLite: Плагін, який може зберігати дані конфігурації та дані зчитування, використовуючи файли SQLite як резервне сховище. Плагін використовує кілька баз даних SQLite для зберігання різних активів, що забезпечує високу пропускну здатність даних за рахунок обмеження кількості активів, які може отримати один екземпляр.,
- SQLiteLB: Плагін, який може зберігати дані конфігурації та дані зчитування, використовуючи файли SQLite як резервне сховище. Ця версія плагіна SQLite використовує єдину базу даних показань і краще підходить для середовищ, які не мають дуже високої пропускної здатності даних. Це не обмежує кількість окремих активів, які можна отримати.
- PostgreSQL: Плагін, який може зберігати як конфігурацію, так і дані зчитування, який використовує сервер PostgreSQL SQL як носій даних.
- SQLiteMemory:Плагін, який можна використовувати лише для зберігання даних про читання. Він використовує SQLite в системі зберігання пам’яті для зберігання даних читання. Це забезпечує високу продуктивність сховища для читання, однак ємність обмежена доступною пам’яттю, і якщо Fledge зупиниться або станеться збій живлення, буферизовані дані будуть втрачені.
Конфігурація за замовчуванням використовує дисковий механізм зберігання SQLite як для конфігурації, так і для читання даних
Налаштування плагіна зберігання
Після встановлення плагін зберігання можна переналаштувати так само, як і будь-яку конфігурацію Fledge, використовуючи API або графічний інтерфейс користувача для налаштування механізму зберігання та його параметрів.
Використовуючи інтерфейс користувача для налаштування сховища, виберіть пункт Configuration на панелі меню ліворуч.
У дереві категорій виберіть Advanced і під ним виберіть Storage.
щоб змінити плагін зберігання, який буде використовуватися як для конфігурації, так і для зчитування, введіть назву нового плагіна в полі введення Storage Plugin. Якщо Readings Plugin залишити порожнім, плагін зберігання також використовуватиметься для зберігання даних читання. Стандартний набір плагінів, установлених разом із Fledge, які можна використовувати як значення Storage Plugin:
- sqlite - механізм зберігання файлів SQLite.
- postgres - сервер PostgreSQL. Зауважте, що сервер Postgres не встановлено за замовчуванням, коли встановлено Fledge, і його потрібно встановити перед використанням.
Для Readings Plugin можна встановити будь-який із наведених вище параметрів, а також можна налаштувати використання плагіна SQLite In Memory, ввівши значення sqlitememory у поле конфігурації.
Поле Database threads дозволяє контролювати кількість потоків, які використовуються для обслуговування бази даних. За звичайних обставин достатньо 1. Якщо спостерігаються проблеми з продуктивністю, його можна збільшити, однак рідко потрібно, щоб воно перевищувало 1, і це може мати негативний вплив на сильно навантажені системи.
Параметр Manage Storage використовується лише тоді, коли сховище бази даних використовує зовнішній сервер бази даних, наприклад PostgreSQL. Якщо ввімкнути цей параметр, Fledge запускатиметься як зупинка сервера бази даних під час запуску та зупинки Fledge. Якщо його зупинити, Fledge вважатиме, що сервер бази даних працює під час запуску.
Параметри Management Port і Service Port дозволяють призначати фіксовані порти для сервісу зберігання. Ці параметри призначені лише для налагодження, і значення мають бути встановлені на 0 у нормальній роботі.
Примітка
Для розширення набору, який постачається зі стандартною установкою Fledge, можна встановити додаткові механізми зберігання. Вони будуть задокументовані в пакетах, які надають плагін зберігання.
Конфігурації плагіна зберігання не є динамічними, і Fledge необхідно перезапустити після зміни цих значень. Зміна плагіна, який використовується для зберігання показань, не призведе до перенесення даних із попередньої системи зберігання до нової системи зберігання, і ці дані можуть бути втрачені, якщо їх не було надіслано далі з Fledge.
Якщо вибрано механізм зберігання Postgres, для успішного запуску Fledge postgres має бути встановлено та запущено зі створеним користувачем fledge.
Налаштування Плагіну SQLite
Плагін SQLite має складніший набір параметрів конфігурації, які можна використовувати для налаштування того, як і коли він створює більше бази даних для розміщення різних активів. Цей плагін розроблено, щоб забезпечити більшу швидкість прийому для зчитувань шляхом розділення зчитувань для кожного активу в таблицю бази даних для цього активу. Однак це призводить до обмеження кількості окремих активів, які можна обробляти, через вимогу обробляти велику кількість файлів бази даних.

- Purge Exclusions: Цей параметр дозволяє користувачеві вказати, що процес очищення не повинен застосовуватися до певних активів. Користувач може надати розділений комами список назв активів, які слід виключити з процесу очищення. Зауважте, що цей параметр рекомендується використовувати лише для даних пошуку з надзвичайно низькою пропускною здатністю, які в іншому випадку були б повністю видалені з системи під час виконання процесу очищення.
- Pool Size: Кількість підключень, які потрібно створити в пулі підключень бази даних.
- No. Readings per database: Цей параметр визначає, скільки активів можна зберігати в одній базі даних. Кожен актив буде зберігатися в окремій таблиці в базі даних. Після виділення всіх таблиць у базі даних плагін використовуватиме більше баз даних для зберігання додаткових активів.
- No. databases allocate in advance: Цей параметр визначає, скільки баз даних спочатку створює плагін SQLite.
- Database allocation threshold: Кількість невикористаних баз даних, які повинні існувати в системі. Коли кількість доступних баз даних стане нижче цього значення, система почне процес створення додаткових баз даних.
- Database allocation size: Кількість баз даних, які потрібно створити, коли перевищено вищезазначене порогове значення. Створення бази даних є повільним процесом, тому налаштування цих параметрів може вплинути на продуктивність, коли екземпляр отримує велику кількість нових назв активів, для яких раніше не було призначено таблиць читань.
- Vacuum Interval: Інтервал у годинах між виконанням команди очищення бази даних для звільнення місця. Занадто високе значення вплине на продуктивність, а занизьке означатиме, що може знадобитися більше пам’яті протягом довших періодів.
Установка серверу PostgreSQL
Точні команди, необхідні для встановлення сервера PostgreSQL, відрізняються від системи до системи, загалом найкраще використовувати пакетну версію PostgreSQL, яка часто доступна в стандартних репозиторіях пакетів для вашої системи.
Установка Ubuntu
В Ubuntu або інших дистрибутивах на основі apt команда для встановлення postgres:
sudo apt install -y postgresql postgresql-client
Тепер переконайтеся, що PostgreSQL встановлено та працює правильно:
sudo systemctl status postgresql
Перш ніж продовжити, ви повинні створ ити користувача PostgreSQL, який відповідає вашому користувачу Linux. Припустимо, що користувач <fledge_user>, введіть:
sudo -u postgres createuser -d <fledge_user>
Аргумент -d важливий, оскільки користувачеві потрібно буде створити базу даних Fledge.
Більш загальна команда:
sudo -u postgres createuser -d $(whoami)
Установка Red Hat
У Red Hat або інших дистрибутивах на основі yum для встановлення postgres:
Додайте репозиторій PostgreSQL YUM до вашої системи
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Перевірте, чи доступний PostgreSQL 13, використовуючи наведену нижче команду
sudo yum search -y postgresql13
Після того, як ви підтвердите, що репозиторії PostgreSQL 13 доступні у вашій системі. Потім ви можете продовжити встановлення PostgreSQL 13
sudo yum install -y postgresql13 postgresql13-server
Перш ніж використовувати сервер PostgreSQL, вам потрібно спочатку ініціалізувати сервіс бази даних за допомогою команди
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Потім ви можете продовжити запуск сервера бази даних наступним чином
sudo systemctl enable --now postgresql-13
Перевірте, чи запущена вище сервіс виконується, перевіривши її статус за допомогою команди
sudo systemctl status postgresql-13
Далі ви повинні створити користувача PostgreSQL, який відповідає вашому користувачу Linux.
sudo -u postgres createuser -d $(whoami)
Конфікурація плагіну SQLite
Механізм зберігання SQLite має додаткові параметри, які можна використовувати для налаштування його поведінки. Щоб отримати доступ до цих параметрів конфігурації, натисніть у параметрі sqlite у категорії Storage у конфігурації сторінки.

Багато з цих параметрів конфігурації контролюють продуктивність SQLite, тому важливо знати, як дані зберігаються в SQLite. Плагін зберігання зберігає зчитання для кожного окремого активу в таблиці для цього активу. Ці таблиці зберігаються в базі даних. Для покращення паралелізму використовується кілька баз даних у модулі зберігання. Набір параметрів використовується для визначення способу використання цих таблиць і баз даних.
- Pool Size: Кількість підключень до сервера бази даних, які потрібно підтримувати.
- No. Readings per database: Це контролює кількість різних активів, які зберігатимуться в кожному файлі бази даних у SQLite.
- No. databases to allocate in advance: Кількість баз даних SQLite, які будуть створені під час запуску.
- Database allocation threshold: Точка, у якій створюються нові бази даних. Якщо кількість порожніх баз даних буде меншою за це значення, буде створено інши й набір баз даних.
- Database allocation size: Кількість баз даних, яку потрібно виділяти кожного разу, коли потрібен новий набір баз даних.
Налаштування цих параметрів також накладає верхню межу на кількість активів, які можна зберігати в екземплярі Fledge, оскільки SQLite має максимальне обмеження в 61 базу даних, які можуть бути використані в будь-який час. Таким чином, максимальна кількість зчитувань у 60 разів перевищує кількість зчитувань на базу даних. Одна база даних зарезервована для конфігураційних даних.
Управління зберіганням
Fledge керує обсягом пам’яті, що використовується, за допомогою процесів очищення, які періодично виконуються, щоб видалити старіші дані та таким чином обмежити зростання використання пам’яті. Операції очищення реалізуються як завдання Fledge, які можна запланувати для періодичного виконання. Виконуються два різні завдання
- purge: Це завдання відповідає за обмеження показань, які зберігаються в буфері Fledge.
- system purge: Це завдання обмежує кількість системних даних у формі логів, контрольного журналу та історії завдань, які зберігаються.
Завдання очищення
Завдання очищення виконується за розкладом під назвою purge, типовим для цього розкладу є виконання завдання очищення щогодини. Це можна змінити через інтерфейс користувача в пункті меню Schedules або через REST API, оновивши розклад.
Завдання очищення має дві метрики, які воно враховує: вік зчитувань у системі та кількість зчитувань у системі. Їх можна налаштувати, щоб контролювати, скільки даних зберігається в системі. Зауважте, однак, що це не означає, що ніколи не буде даних старших, ніж указано, або більше рядків, ніж зазначено, оскільки очищення виконується періодично, а між виконанням завдання очищення буферизовані показання продовжуватимуть зростати.
Конфігурацію завдання очищення можна знайти в пункті меню Configuration в р озділі Utilities.

Age Of Data To Be Retained: Цей параметр конфігурації встановлює обмеження щодо того, наскільки старими мають бути дані, перш ніж їх буде розглянуто для видалення із системи. Він визначає значення в годинах, і лише старіші дані розглядаються для видалення із системи.
Max rows of data to retain: Це визначає, скільки показань має зберігатися в буфері. Це може замінити термін зберігання даних і визначити максимально дозволену кількість показань, які мають бути в буфері після завершення процесу очищення.
Retain Unsent Data: Це визначає, як обробляти дані, які були прочитані Fledge, але ще не надіслані в один або кілька північних пунктів призначення для даних. Він підтримує ряд опцій
- purge unsent: Дані буде видалено незалежно від того, були вони надіслані з Fledge чи ні.
- retain unsent to any destination: Дані не буде видалено, тобто вони збережуться, якщо вони не були надіслані в жодне з північних місць призначення. Якщо його було надіслано принаймні в один із північних напрямків, його буде очищено.
- retain unset to all destinations: Дані зберігатимуться, доки їх не буде надіслано на всі північні напрямки, увімкнені на момент запуску процесу очищення. Вимкнені північні напрямки не включено, щоб запобігти зупинці видалення всіх даних.
Примітка: Ця категорія конфігурації не з’явиться, доки процес очищення не запуститься вперше. За замовчуванням це буде 1 година після першого запуску примірника Fledge.
Завдання очищення системи
Завдання очищення системи виконується за розкладом під назвою system_purge. За умовчанням для цього розкладу завдання очищення системи виконується кожні 23 години 50 хвилин. Це можна змінити через інтерфейс користувача в пункті меню Schedules або через REST API, оновивши розклад.
Категорію конфігурації для очищення системи можна знайти в пункті меню Configuration в розділі Utilities.

- Statistics Retention: Це визначає кількість днів, за які зберігається повна статистика у Fledge. Статистичні дані, старші за цю кількість днів, видаляються, і зберігається лише підсумкова статистика.
- Audit Retention: Це визначає кількість днів, протягом яких зберігатимуться записи журналу аудиту. Коли записи досягнуть цього віку, їх буде видалено із системи.
- Task Retention: Це визначає кількість днів, протягом яких зберігається історія виконання завдань у Fledge.
Примітка: Ця категорія конфігурації не з’явиться, доки процес очищення системи не запуститься вперше.

