Translate

понеділок, 11 квітня 2016 р.

Graphite Configuration. Sending Metrics Using CollectD, StatsD

Збір статистики всіх систем - дуже важлива річ, адже дозволяє оперативно реагувати на будь-які відхилення в їх роботі, приймати рішення щодо збільшення потужностей чи оптимізацій. А представлення такої статистики у виді графіків зробить процес моніторингу більш наочним та зручним.

Раніше я вже писав про побудову графіків за допомогою Cacti, графічний бекенд до Nagios Nagiosgraph, в основі побудови графіків яких лежить RRDtool. Дуже можливо, що це саме те, що вам необхідно. Проте цього разу мова піде про Graphite, що має подібну до RRDtool логіку збереження даних для зображень графіків.

Graphite складається з таких компонентів:

  • Carbon - storage-бекенд, написаний на Twisted Framework. Приймає дані, по-замовчуванню на 2003 порту, та в певні проміжки часу записує їх на диск, використовуючи Whisper. Задля масштабування стандартний процес carbon-cache.py, котрого більш ніж досить у звичайних конфігураціях, може бути доповнений додатковими процесами carbon-relay.py та carbon-aggregator.py. Перший може виступати як балансувальника між декількома carbon-cache.py процесами, а другий - у якості проміжного буферу.
  • Whisper - storage-engine, бібліотека бази Graphite, використовується для збереження даних. Відповідає за реорганізацію даних, що отримав Carbon: переважно перетворює більш точні серії даних в менш точні та довгострокові задля більшої ефективності використання дискового простору. У залежності від наявних серій, може показувати більш точні дані на коротких діапазонах часу, або менш точні на більш довгих. Політика точності, тип агрегації та тривалості збереження серій даних звісно може налаштовуватись. В перспективі Whisper планується замінити на Ceres. Суть в тому, що Whisper на початку створює файли серій метрик фіксованого розміру і з плином часу, в разі зменшення точності вимірів (rollup/downsampling/retention/storage aggregation/compaction) розмір цих файлів не зменшується. Окрім того Whisper, для запису нових метрик, створює на диску файли наперед визначеного розміру,  що веде до неефективного використання дискового простору. Ceres вже не володіє останнім недоліком та краще працює з розподіленими сховищами і, як наслідок, один файл метрик може лежати на декількох серверах. Але, на противагу, він менш стабільний. Є звісно і інші альтернативи для storage-engine.
  • Веб-панель Graphite/API-сервер - панель/API для перегляду графіків, отриманих із серій даних Whisper. Також має можливість побудови панелей для швидкого перегляду груп графіків. Написана на Django з використанням бібліотеки Cairo.

Підсумуємо. Carbon отримує дані, та записує метрики кожний сталий проміжок часу, Whisper агрегує їх залежно від політики збереження, а веб-панель Graphite надає можливість їх переглядати.