machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Как отправить исторические данные в Graphite?

Дата публикации Oct 3, 2019

При попытке загрузить более старые точки данных в Graphite, углеродный демон не будет учитывать параметры хранения и не будет объединять точки данных в метрики. Он просто переопределит точки с той же временной меткой.

[process_name_test]
pattern = ^test.stats.process_name.elapsed_time$
retentions = 15s:7d,1m:21d,15m:5y[default]
pattern = .*
retentions = 10s:7d# The first pattern that matches the metric name is used.

Существует несколько способов загрузки более старых точек данных в графит:

Вы можете изменить размер базы данных Whisper, чтобы получить максимальную точность, затем загрузить все данные и снова изменить размер, позволяя агрегатору выполнять свою работу. [ИНФОРМАЦИЯ]

Или вы можете запустить другой экземпляр агрегатора углерода и настроить способ агрегирования данных (сумма, среднее значение). [ИНФОРМАЦИЯ]

Эти методы требуют важных изменений на стороне сервера, и эти изменения очень сложно реализовать в производственной среде.

К счастью, есть другое решение: использоватьPHP Графит фидер,

Библиотека питателей графита имеет следующие преимущества: на графитовом сервере нет изменений, вы можете использовать настройки хранения по умолчанию или пользовательские.

Что вам понадобится перед загрузкой исторических данных в Graphite?

Проверьте ваши данные

Убедитесь, что данные должны быть в форме событий, и вы можете сгруппировать эти события по фрагменту, чтобы назначить каждое событие определенной метрике. Убедитесь, что все временные метки генерируются в одном часовом поясе.

Определите ваши метрики

Если вам нужны разные параметры хранения для каждой метрики, вам придется запустить несколько экземпляров сценария, по одному для каждого срока хранения.

Определите ваши настройки хранения

Решите, насколько важны старые данные и насколько они могут быть агрегированы. Например. : 5s: 7d, 1m: 21d, 15m: 5y означает, что вы будете хранить очки старше 21 дня в течение 5 лет, сгруппированные до 15 минут. Вы также должны учитывать возможности хранения.

После того, как старые данные подготовлены, можно начинать. Просто создайте экземпляр библиотеки, загрузите старые данные и затем отправьте их в порт графитовых данных.

$retentions = ‘15s:7d,1m:21d,15m:5y’;$connector = new GraphiteFeeder\Connector\Fsock(
‘graphite.host’,
‘2003’,
‘tcp’
);$client = new GraphiteFeeder\Client($connector, $retentions);$data = [
new GraphiteFeeder\Entity\Data(
‘test.stats.process_name.elapsed_time’,
10,
time()
),
new GraphiteFeeder\Entity\Data(
‘test.stats.process_name.elapsed_time’,
2.5,
time()
),
];foreach ($data as $item) {
$client->dataBuffer->add($item);
}

$written = $client->flushAllData();

Быстрое доказательство концепции

Получите рабочую среду Grafana: самый простой способ - использовать докер иКамон-ю / докер-графана-графитобраз.

git clone https://github.com/kamon-io/docker-grafana-graphite.git
cd docker-grafana-graphite#add your retention settings
vim graphite/storage-schemas.conf
#sync local retention file to the docker container
# edit docker-compose.yml
./graphite/storage-schemas.conf:/opt/graphite/conf/storage-schemas.conf
#start containers:make up

Поиск проблемы

Если вы столкнулись с проблемами или вам просто любопытно, используйте эти команды, чтобы узнать, как Carbon, база данных Whisper, Graphite и Grafana работают вместе.

# get into the container
make shell# check the retention settings loaded into container
vim.tiny /opt/graphite/conf/storage-schemas.conf# check the generated whisper databases
ls /opt/graphite/storage/whisper#dump one whisper database
whisper-dump.py /opt/graphite/storage/whisper/test/stats/process_name/elapsed_time.wsp | grep -vP “0,[\s]+0” > testfilecat testfile# if you modify retention settings directly to the container, you must delete the corresponding whisper database and restart carbon/usr/bin/supervisorctl restart all#destroy all containers
sudo docker-compose down — rmi local — volumes — remove-orphans

глоссарий

Веб-приложение Graphite - хранимые данные можно визуализировать через веб-интерфейсы графита

StatsD - это внешний прокси для сервера метрик Graphite / Carbon (работает на графитовой машине)

Collectd - это демон, который работает на главном компьютере, который периодически собирает показатели производительности системы и приложений и отправляет их в углеродный ретранслятор

Углерод - различные демоны, которые прослушивают данные временных рядов и могут принимать их по общему набору протоколов.

Whisper - это база данных фиксированного размера, похожая по дизайну и назначению на RRD (round-robin-database).

Ссылка

Метод 1 -запустить шепот изменить размер

Метод2 -другой экземпляр агрегатора углерода

https://www.thingsconnected.io/php-graphite-feeder/

https://stackoverflow.com/questions/28940016/whisper-aggregation-not-working-for-older-data-points

https://codeascraft.com/2011/02/15/measure-anything-measure-everything/

https://graphite.readthedocs.io/en/latest/

https://github.com/graphite-project/graphite-web

https://github.com/graphite-project/carbon

https://github.com/graphite-project/whisper

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map