Программа graphite как пользоваться

Содержание
Prometheus + Grafana 📊 Мониторинг софта и железа 📚 Сбор метрик и построение графиков 📉 Мониторинг исключений с помощью Graphite и Grafana. // Курс «Symfony Framework» 4. Carbon Дополнительно -> Экспортировать схему), а затем загрузите его обратно в свою / app / dashboards. оглавление. Большинству людей не нравится черный цвет, поэтому вы можете выбрать белый стиль DashBoard. В конфигурации DashBoard в правом верхнем углу выберите стиль как светлый. Как и в Kibana, перетаскивание периода времени на временной шкале для уточнения времени является самым ослепительным эффектом презентации. Если вам нужна динамическая DashBoard, вы также можете использовать javascript для ее достижения.Scripted dashboards Шаблонирование также является одной из его основных функций, таких как возможность быстрого переключения между несколькими серверами,Templating。 Некоторые связанные с интерфейсом функции напрямую поддерживаются в графических настройках, и их не нужно записывать в виде функций, таких как Legends, Threshold, и отображать ноль как ноль. Интеллектуальный блок оси Y поддерживает интеллектуальное преобразование мс и байтов, например, преобразование в килобайты, мегабайты и гигабайты. 6. ГА и Масштабируемость Carbon-RelayПоддерживает вертикальные или горизонтальные разделы и отправляет метрики в разные объекты Carbon-Cache (метрики с одинаковыми именами всегда отправляются одному и тому же объекту Cache). Сконфигурируйте RELAY_METHOD = постоянное хэширование в carbon.conf [relay] как горизонтальный раздел, настройте RELAY_METHOD = rules, а затем настройте регулярное выражение в relay-rules.conf в соответствии с именем метрики как вертикальный раздел. Пример relay-rules.conf: [example] pattern = ^mydata.foo..+ серверы = 10.1.2.3, 10.1.2.4:2004 // будут скопированы на все серверы (HA) Если в Carbon-Relay используется согласованное хэширование, вы также можете определить factory = 2 в carbon.conf для копирования данных в Carbon-Cache на двух серверах для достижения высокой готовности. Чтобы использовать больше ЦП, на одном компьютере можно настроить один экземпляр Graphite-Web и несколько экземпляров Carbon-Cache и использовать один и тот же каталог файлов Whisper. Из-за шардинга два экземпляра не будут записывать один и тот же файл whiper. Да, в настоящее время необходимо настроить несколько атомов углерода в CARBONLINK_HOSTS в local_settings.py в Graphite-Web. Graphite-Web сначала читает локальный шепотный файл. Если он читает метрику, он будет проходить обычный процесс. Если такой метрики локально нет, он будет запрашивать другие графические веб-серверы через CLUSTER_SERVERS в local_settings.py. В среде высокой доступности, если один из компьютеров выходит из строя, как синхронизировать последние данные с другого компьютера после перезапуска? В кластерной среде, если будет добавлен внутренний экземпляр Carbon-Cache, метрика согласованного хэша для каждой машины изменится. Как сбалансировать существующие данные? К счастью, есть одинcarbonateПроект выполнил эту грязную работу, такую ​​как синхронизация углерода, и название этой команды кажется сердечным. LOCAL_IP=»$1″ для h in $ (carbon-hosts); do // Доступ ко всем хостам ( ssh $ h — carbon-list | // Вывести все метрики на хосте carbon-sieve -n $ LOCAL_IP | // Вывести метрики этой машины carbon-sync -s $ h // Синхронная совпадающая метрика ) при извлечении данных вы можете добавить звездочку в URL для подведения итогов, см. Выше. Графит поддерживает функции и имеет больше возможностей для использования. 8. Пользователь Основные клиенты: Github, Instagram, Douban, Etsy и др. облачный сервис:playfairapp statsd + Graphite 9. Ссылки Practical Guide to StatsD/Graphite Monitoring 10 Things I Learned Deploying Graphite obfuscurity.comЖурнал сопровождающего Graphite Джейсон Диксон. Перевод с: https://github.com/springside/springside4/wiki/Graphite Источник: russianblogs.com Graphite Приложение для разработки планов и чертежей. Поддерживается функция масштабирования рабочей области и выбора проекции. Доступны инструменты для рисования. Дата обновления: Русский язык: Разработчик: Ashlar-Vellum, Inc. Версия Windows: Windows 7, Windows 8, Windows 8.1, Windows 10 Graphite – приложение для Windows, представляющее собой систему автоматизированного проектирования. Утилита предназначена для инженеров и конструкторов. С ее помощью можно создавать двумерные чертежи или трехмерные модели любой сложности. Есть возможность экспортировать проекты для просмотра в A9CAD и других аналогичных системах. Редактирование После запуска программы необходимо выбрать существующий или создать новый проект. В левой части главного окна расположена панель инструментов для рисования. С ее помощью можно добавлять линии, дуги, а также геометрические фигуры, в том числе квадрат, эллипс, окружность и другие. Поддерживается функция добавления подписей и комментариев. Приложение позволяет менять масштаб и проекцию для удобства просмотра. Кроме того, доступен инструмент для автоматического определения расстояний, радиусов и других размеров. Модели Утилита содержит встроенную библиотеку готовых объектов, которые можно использовать в процессе проектирования. Есть возможность создавать собственные шаблоны. Экспорт По окончании разработки программа позволяет экспортировать проект в формате DWG, DFX, EPS, PS и других. Также можно сохранить чертеж в виде изображения с расширением TIFF, JPRG, или PNG. Поддерживается функция конвертации схем в многостраничные PDF документы. Особенности приложение можно скачать и использовать бесплатно; утилита предназначена для разработки схем и чертежей; поддерживается работа с двумерными и трехмерными объектами; доступны инструменты для рисования линий, кривых и геометрических фигур; программа совместима с актуальными версиями Windows. Источник: iowin.net Сбор и визуализация метрик приложения в Graphite и Graph-Explorer Зачастую возникает необходимость отслеживать различные параметры работы приложения/сервиса. Например, интерес представляет количество запросов в секунду, среднее время ответа сервера, количество ответов сервера с различным HTTP-статусом (технические метрики), количество регистраций пользователей в час, количество платежных транзакций в минуту (бизнес-метрики) и пр. Без системы сбора метрик разработка и сопровождение продукта происходит практически вслепую. Данная статья является руководством по настройке системы сбора и анализа метрик приложения на базе Graphite и vimeo/graph-explorer. Мотивация Система сбора метрик не является монолитом. При ее развертывании приходится иметь дело со значительным числом компонентов, каждый из которых каким-то образом взаимодействует с остальными, имеет свой конфигурационный файл и неповторимый способ запуска. Даже Graphite, сам по себе, состоит минимум из трех подсисем — демон сбора метрик (carbon), БД с метриками (whisper и др.) и веб-приложение для визуализации. Когда же необходимо добавить поддержку graph-explorer, все становится еще интереснее. Каждая из подсистем имеет свою обособленную документацию, но нигде нет документа, описывающего картину вцелом. Метрики Метрика — это последовательность (числовых) значений во времени. Очень простая вещь по сути. Фактически есть некоторый строковый ключ и соответствующий ему ряд (sample1, time1), (sample2, time2),… Типичным для Graphite способом именования метрик является разделение строковых ключей на части при помощи символа «.», например, stats.web.request.GET.time. Graphite позволяет группировать метрики с общим префиксом, используя символ «*» при построении графиков. Очевидно, что это далеко не самый гибкий способ работы с ключами. Если понадобится добавить еще какой-либо компонент к ключу, это может поломать построение графиков. Например, приведение ключа из примера выше к виду stats.web. server1.request.GET.time нарушит общий префикс для исторических данных. Вторым существенным недостатком такого именования метрик является потенциальная неоднозначность их трактования. Куда более самодостаточными были бы метрики, обладающие ключами вида service=web server=server1 what=request_time unit=ms с дальнейшей возможностью построения комбинированных графиков по общим тегам, а не только общим префиксам. К счастью, ребята из vimeo придумали metrics 2.0 и запили свой graph-explorer, работающий поверх graphite. Основная идея — это логическое представление метрик, как сущностей с набором пар тег-значение. Каждая метрика в формате 2.0 все равно в конечном итоге преобразуется в обычный строковый ключ, разделенный точками и попадает в carbon, но предварительно в отдельном хранилище создается «индекс», хранящий информацию о соответствии этих ключей и пар тег-значение. Таким образом, пользуясь информацией из индексов, graph-explorer и реализует комбинирование различных метрик на одном графике. Общий взгляд В общем виде система сбора метрик может быть представлена следующий диаграммой: Таким образом, приложение (веб-сервис, демон, etc.), написанное не любом языке, через некоторый интерфейс (прослойку) отправляет метрики в коллектор, коллектор их частично агрегирует, вычисляет частоту обновления (опционально) и раз в некоторый промежуток времени отправляет их в carbon, который постепенно складывает их в хранилище. Веб-приложение тянет данные из хранилища (и частично из самого carbon) и строит для нас графики. Демон carbon на самом деле — это целых 3 демона: carbon-cache, carbon-relay и carbon-aggregator. В простейшем случае можно использовать carbon-cache. Реализацию carbon-relay можно использовать с целью шардирования (распределение нагрузки между несколькими carbon-cache) или реплицирования (отправка одних и тех же метрик на несолько carbon-cache). Демон carbon-aggregator умеет выполнять промежуточную обработку метрик перед отправкой их в хранилище. Данные метрик в carbon могут быть переданы по одному из двух форматов: в plain text (т.н. line protocol) на порт 2003 и сериализованные в pickle на порт 2004. При этом carbon-relay на выход отдает данные только в pickle (важно!). Надстройка graph-explorer добавляет еще одно хранилище для т.н. индексов метрик. В качестве такого хранилища используется elastic search. Очевидно, что в каком-то месте представленной на диаграмме системы необходимо добавить звено, которое будет осуществлять «индексацию» метрик. Таким звеном является carbon-tagger. В итоге, система принимает следующий вид: Стек технологий приложение на Python statsd клиент для Python statsd/statsdaemon graphite carbon-relay/carbon-relay-ng carbon-cache whisper webapp Установка Установка будет происходить в директорию /opt/graphite, являющуюся директорией по умолчанию. Часть компонентов написана на Go, так что его также придется предварительно установить и прописать соответствующие переменные окружения. Установка подразумевает, что Go в системе один. Если у вас установлено несколько версий Go, то этот шаг можете пропустить и настроить нужную версию по своему усмотрению. cd /opt wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz echo ‘export PATH=$PATH:/usr/local/go/bin’ >> /etc/profile echo ‘export GOPATH=/opt/go’ >> /etc/profile echo ‘export GOBIN=»$GOPATH/bin»‘ >> /etc/profile echo ‘export PATH=$PATH:$GOBIN’ >> /etc/profile source /etc/profile go env # Вывод должен содержать следующие строчки #GOBIN=»/opt/go/bin» #GOPATH=»/opt/go» #GOROOT=»/usr/local/go» Также еще один важный момент при развертывании системы — внимательно следить за портами. Компонентов много, каждый использует по несколько портов и легко ошибиться, кого с кем связывать. Плюс большинство компонентов не обладает каким-либо встроенным механизмом авторизации и при этом по умолчанию слушают интерфейс 0.0.0.0. Поэтому настоятельно рекомендую везде, где это возможно менять интерфейс на локальный и закрывать все порты на сервере через iptables. statsd python клиент В качестве клиента, занимающегося отправкой метрик из приложения, выбран наиболее популярный statsd. Его реализация бесконечно проста. Фактически, это отправка текстовых данных на указанный UDP/TCP-порт с добавлением минимальных протокольных служебных данных. # внутри виртуального окружения приложения pip install statsd Пример использования в коде приложения: import statsd client = statsd.StatsClient(host=’statsdaemon.local’, port=8125) # отправка метрики в metrics 2.0 формате tag_is_value client.gauge(‘service_is_myapp.server_is_web1.what_is_http_request.unit_is_ms’, ) statsd В «классической» схеме установки graphite зачастую в качестве промежуточного коллектора используется statsd. В нашем случае использован statsdaemon, так как он из коробки умеет работать с метриками 2.0, при этом сохраняя обратную совместимость с протоколом statsd. Он написан на Go и его установка чрезвычайно проста (осторожно, сейчас в README.md досадная ошибка в команде установки): go get github.com/Vimeo/statsdaemon/statsdaemon После этого в директории /opt/go/bin должен появиться исполняемый файл statsdaemon. Настройки этого демона достаточно просты: statsdaemon.ini # — /etc/statsdaemon.ini — listen_addr = «:8125» # сюда будет слать метрики statsd-клиент (приложение) admin_addr = «:8126» graphite_addr = «carbon.local:2013» # адрес carbon для агрегированных метрик, раз в flush_interval сек flush_interval = 30 prefix_rates = «stats.» prefix_timers = «stats.timers.» prefix_gauges = «stats.gauges.» percentile_thresholds = «90,75» max_timers_per_s = 1000 statsdaemon -config_file=»/etc/statsdaemon.ini» -debug=true На этом этапе уже можно запустить statsdaemon и послать в него несколько пакетов из приложения с помощью statsd-клиент. Вывод в консоль будет говорить сам за себя. Graphite Актуальное руководство по установке находится здесь. Установку лучше проводить внутри virtual environment, располагающегося в /opt/graphite. sudo apt-get install python-pip python-dev pip install pip —upgrade pip install virtualenv mkdir /opt/graphite virtualenv /opt/graphite cd /opt/graphite source bin/activate sudo apt-get install libcairo2 python-cairo libffi-dev # установка нужных для graphite пакетов pip install https://github.com/graphite-project/ceres/tarball/master pip install whisper pip install carbon # pip install carbon —install-option=»—prefix=/opt/graphite» —install-option=»—install-lib=/opt/graphite/lib» pip install graphite-web # pip install graphite-web —install-option=»—prefix=/opt/graphite» —install-option=»—install-lib=/opt/graphite/webapp» # нужно для Graphite WebApp pip install uwsgi pip install django pip install cairocffi pip install django-tagging # инициализация webapp (cd /opt/graphite/webapp/graphite; python manage.py syncdb) После установки, graphite будет располагаться в /opt/graphite. Далее необходимо выполнить его конфигурацию. Пример файлов с настройками находятся в /opt/graphite/conf. Минимум, что необходимо сделать, это создать файл настроек carbon и whisper. cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf # carbon.conf содержит настройки для carbon-cache, carbon-relay и carbon-aggregator. # Необходимо настроить как минимум следующие значения в секции carbon-cache: # LINE_RECEIVER_INTERFACE = 127.0.0.1 # LINE_RECEIVER_PORT = 2003 cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/storage-schemas.conf # storage-schemas.conf содержит настройки whisper, который по сути — fixed-size db. # Аллокация места под метрики происходит 1 раз, поэтому нужно явно задать (по # ключу метрики), с какой частотой дескритизации и за какой период хранить данные. . Далее необходимо запустить carbon-cache: carbon-cache.py —conf=conf/carbon.conf start # —debug tail -f /opt/graphite/storage/log/carbon-cache/carbon-cache-a/*.log И graphite webapp с помощью uwsgi + какой-либо web-сервер (например, nginx): cp /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py # в local_settings.py необходимо изменить SECRET_KEY и TIME_ZONE. /opt/graphite/bin/uwsgi —socket localhost:6001 —master —processes 4 —home /opt/graphite —pythonpath /opt/graphite/webapp/graphite —wsgi-file=/opt/graphite/conf/graphite.wsgi.example —daemonize=/var/log/graphite-uwsgi.log Настройки nginx: graphite.conf upstream graphite_upstream < server 127.0.0.1:6001; >server < listen 8085; server_name graphite.local; location / < include uwsgi_params; uwsgi_pass graphite_upstream; add_header ‘Access-Control-Allow-Origin’ ‘*’; add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’; add_header ‘Access-Control-Allow-Headers’ ‘origin, authorization, accept’; add_header ‘Access-Control-Allow-Credentials’ ‘true’; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; >> Остается установить только carbon-tagger (именно он заполняет базу индексов для graph-explorer) и настроить дублирующую отправку метрик в carbon-cache и carbon-tagger при помощи carbon-relay. Но к сожалению, carbon-tagger не умеет работать по протоколу pickle, а carbon-relay отдает данные только в таком формате. Поэтому необходимо установить drop-in замену carbon-relay от vimeo — carbon-relay-ng: go get -d github.com/graphite-ng/carbon-relay-ng go get github.com/jteeuwen/go-bindata/. cd «/opt/go/src/github.com/graphite-ng/carbon-relay-ng» make cp carbon-relay-ng /opt/go/bin/carbon-relay-ng touch /opt/graphite/conf/carbon-relay-ng.ini cd /opt/graphite carbon-relay-ng conf/carbon-relay-ng.ini carbon-relay-ng.ini instance = «default» listen_addr = «127.0.0.1:2013» admin_addr = «127.0.0.1:2014» http_addr = «127.0.0.1:8081» spool_dir = «spool» log_level = «notice» bad_metrics_max_age = «24h» init = [ ‘addRoute sendAllMatch carbon-default 127.0.0.1:2003 spool=true pickle=false’, # отправляем все в carbon-cache ‘addRoute sendAllMatch carbon-tagger 127.0.0.1:2023 spool=true pickle=false’ # отправляем все в carbon-tagger ] [instrumentation] graphite_addr = «» graphite_interval = 1000 carbon-tagger Демон carbon-tagger написан на Go и занимается отправкой индексов метрик в Elastic Search для последующего их использования в graph-explorer. Прежде всего на сервере необходимо установить java и Elastic Search. Установка carbon-tagger: go get github.com/Vimeo/carbon-tagger go get github.com/mjibson/party go build github.com/Vimeo/carbon-tagger carbon-tagger.conf [in] port = 2023 # сюда присылает метрики carbon-relay-ng [elasticsearch] host = «esearch.local» port = 9200 index = «graphite_metrics2» flush_interval = 2 max_backlog = 10000 max_pending = 5000 [stats] host = «localhost» port = 2003 # сюда carbon-tagger будет отправлять собственные внутренние метрики (не метрики приложения) id = «default» flush_interval = 10 http_addr = «127.0.0.1:8123″ (cd /opt/go/src/github.com/Vimeo/carbon-tagger/; ./recreate_index.sh) # инициализация индексов в ES carbon-tagger -config=»/opt/graphite/conf/carbon-tagger.conf» -verbose=true graph-explorer И наконец, установка гвоздя программы: pip install graph-explorer graph-explorer.conf [graph_explorer] listen_host = 127.0.0.1 # локальный адрес, чтобы добавить HTTP Basic Auth через nginx listen_port = 8080 filename_metrics = metrics.json log_file = /var/log/graph-explorer/graph-explorer.log [graphite] url_server = http://localhost url_client = http://graphite.local:8085 # адрес graphite webapp nginx/graph-explorer.conf server < listen 80; server_name metrics.yourproject.net; location / < auth_basic «Who are you?»; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:8080; >> mkdir /var/log/graph-explorer run_graph_explorer.py /opt/graphite/conf/graph_explorer.conf После этого веб-интерфейс graph-explorer будет доступен по адресу metrics.yourproject.net. Вместо заключения Хватит жить разрабатывать с закрытыми глазами, %habrauser%! Разворачивайте системы сбора метрик и делитесь занимательными графиками из ваших проектов! Спасибо за внимание! Разработка веб-сайтов Python Визуализация данных Источник: habr.com
  • 3.2 Важные функции
  • 4. Carbon Дополнительно -> Экспортировать схему), а затем загрузите его обратно в свою / app / dashboards. оглавление.
  • Большинству людей не нравится черный цвет, поэтому вы можете выбрать белый стиль DashBoard. В конфигурации DashBoard в правом верхнем углу выберите стиль как светлый. Как и в Kibana, перетаскивание периода времени на временной шкале для уточнения времени является самым ослепительным эффектом презентации. Если вам нужна динамическая DashBoard, вы также можете использовать javascript для ее достижения.Scripted dashboards Шаблонирование также является одной из его основных функций, таких как возможность быстрого переключения между несколькими серверами,Templating。 Некоторые связанные с интерфейсом функции напрямую поддерживаются в графических настройках, и их не нужно записывать в виде функций, таких как Legends, Threshold, и отображать ноль как ноль. Интеллектуальный блок оси Y поддерживает интеллектуальное преобразование мс и байтов, например, преобразование в килобайты, мегабайты и гигабайты.
  • 6. ГА и Масштабируемость
  • 8. Пользователь
  • 9. Ссылки
  • Graphite
  • Редактирование
  • Модели
  • Экспорт
  • Особенности
  • Сбор и визуализация метрик приложения в Graphite и Graph-Explorer
  • Мотивация
  • Метрики
  • Общий взгляд
  • Стек технологий
  • Установка
  • statsd python клиент
  • statsd
  • Graphite
  • carbon-tagger
  • graph-explorer
  • Вместо заключения
  • Читайте также:
    Как закрыть окно программы python

    GraphiteЭто проект Github, который не имеет собственного независимого веб-сайта с доменными именами. Документы также размещаются на веб-сайте, посвященном хранению документов.

    • Новый официальный документhttp://graphite.readthedocs.org
    • Старые официальные документыhttp://graphite.wikidot.com
    • The Architecture of Open Source Applications: Graphite

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

    Графит основан на Python и состоит из трех частей:

    • CarbonTCP-сервер на основе Twist, отвечающий за получение данных, использующий простой до смерти текстовый протокол, потому что он достаточно прост, поэтому в Yammer Codahale Metrics, Netflix Servo, StatsD, Collectd, Logstash у всех есть плагин для Graphite.
    • Whisper: Библиотека классов, в которой хранятся данные в виде файлов RRD (round-robin-databas). Степень детализации данных уменьшается со временем и может хранить более долгосрочные данные. Его преемникCeres, Размер файла больше не является фиксированным.
    • Graphite-Web: Веб-приложение на основе Django, поддержкаRestful URLПолучить изображения или данные JSON, URL может содержать различныеПолезные функции。

    Производительность по одной точке на основе Python может быть невысокой, но у Graphite есть специальные конструкции для Cache, HA и Scalable.

    2. Install Graphite 0.9.12 on Windows

    • On Windows DetailsЭто может быть единственное руководство по установке платформы Windows во всей сети.

    3. Functions target=system.loadavg_1minheight=300 Json: http://localhost:8080/render?from=-10minutesformat=json CSV: http://localhost:8080/render?from=-10minutesformat=csv

    3.2 Важные функции

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

    1. Подстановочный знак на URL:
    В URL могут быть звездочки или селекторы, и будет выбрано несколько счетчиков, и появится ряд других требований:

    target=rest.get*.count.succeeded target=rest.server[1-20].getUser.count

    Обратите внимание, что поскольку каждый. В URL-адресе представляет уровень каталога, на котором фактически хранятся файлы, графический код также использует fnmatch Unix для продвижения и сопоставления каждого уровня каталогов, поэтому rest. * Нельзя использовать для выбора rest.getUser.count.

    • Выберите значение из нескольких счетчиков, определенных звездочками определенным образом, например, maxSeries, sumSeries, averageSeries. sumSeries (rest.getUser.count. *), добавьте к значению счетчик, представленный звездочкой.
    • groupByNode, в URL есть две звезды, которые объединяют несколько серий, представленных первой звездой, и отображают вторую отдельно.
      groupByNode(ganglia.by-functioncpu.load5,2, «sumSeries»), первая звездочка представляет сервер, а вторая звездочка представляет сервер. Эта функция отображает общую загрузку ЦП всех функций на каждом сервере. AverageSeriesWithWildcards и sumSeriesWithWildcards также имеют аналогичные эффекты.
    • AliasByNode, имя счетчика в звезде — Alias, например, aliasByNode (rest.getUser.count. *, 1), псевдоним успешно или неудачно. Более высокий уровень — aliasSub. Вы можете использовать регулярные выражения, чтобы извлечь часть имени счетчика для создания псевдонима.
    • исключить, исключить счетчик индивидуально, например, исключить (серверы * .threads, «server02»)
    • Отображать только определенные счетчики, такие как наибольшие средние значения, максимальные значения максимума, отображать только счетчики с наибольшим значением (или наименьшим) или значения currentAbove, currentBelow и фильтровать по последнему значению (также max, min, avg value).
    • asPercent, отображается как относительный процент нескольких счетчиков.

    2. Улучшение графики:

    • legendValue (rest.getuser.latency, ‘avg’, ‘max’), максимальное небольшое значение и среднее значение данных отображаются под графиком (может быть последним, avg, total, min, max).
    • Порог (60, «Порог задержки 60 мс», «Красный»), отображение строки предупреждения на графике.
    • consolidateBy (rest.getuser.latency, ‘max’), если вы смотрите на кривую в течение недели, каждая точка на графике содержит данные из нескольких точек данных. Эта функция не используется. Поведение по умолчанию — вычисление среднего значения, которое может быть установлено этой функцией. Взять максимум, минимум, сумму и т. Д.

    3. Другое:

    • суммировать (rest.getuser.latency, «1мин»), агрегировать по 1 минуте вместо первоначальных 10 секунд. Метод агрегирования по умолчанию — сумма, или avg, max, last.
    • Преобразуйте самораспространяющийся счетчик в TPS: perSecond (rest.getuser.totalCount), но эта функция, по-видимому, не существует в текущей версии. Одно из решений: scaleToSeconds (производное (rest.getuser.totalCount), 1), первая функция Сначала посчитайте разницу между двумя точками, а вторая усредните каждую секунду.
    • Integral (rest.getUser.count), отображает постепенное совокупное значение всех точек данных.
    • Hitcount, который преобразует скорость в totalCount, может занимать разные промежутки времени.
    • Сдвиг по времени, вы можете сравнить текущее значение со значением недели назад (две строки): 1min»), «today») from = 6pm + today равно после шести часов сегодняшнего дня, from = monday равно после ближайшего понедельника. По умолчанию используется 24 часа назад, а по умолчанию — до.
    • noCache=true
      По умолчанию DEFAULT_CACHE_DURATION в local_settings.py будет кэшироваться в течение 60 секунд по умолчанию. Если вы хотите обновлять последнее значение каждые 10 секунд, вам следует установить noCache = true. Кроме того, если memcached настроен, он кэшируется в memcached, иначе в Graphite-WebApp.
    • drawNullAsZero=true
      Если трафик отсутствует и точки данных не вставлены, данные в графите имеют нулевое значение, а кривая на графике будет иметь точки останова. Установка параметра url drawNullAsZero = true изменит точку останова на 0. Кроме того, в функции также есть keepLastValue (), чтобы сделать значение null равным значению в прошлый раз, или transformNull (webapp.pages. *. Views, -1), вы можете установить значение по умолчанию -1.
    • Prometheus + Grafana 📊 Мониторинг софта и железа 📚 Сбор метрик и построение графиков 📉

      Мониторинг исключений с помощью Graphite и Grafana. // Курс «Symfony Framework»

      4. Carbon Дополнительно -> Экспортировать схему), а затем загрузите его обратно в свою / app / dashboards. оглавление.
    • Большинству людей не нравится черный цвет, поэтому вы можете выбрать белый стиль DashBoard. В конфигурации DashBoard в правом верхнем углу выберите стиль как светлый.
    • Как и в Kibana, перетаскивание периода времени на временной шкале для уточнения времени является самым ослепительным эффектом презентации.
    • Если вам нужна динамическая DashBoard, вы также можете использовать javascript для ее достижения.Scripted dashboards
    • Шаблонирование также является одной из его основных функций, таких как возможность быстрого переключения между несколькими серверами,Templating。
    • Некоторые связанные с интерфейсом функции напрямую поддерживаются в графических настройках, и их не нужно записывать в виде функций, таких как Legends, Threshold, и отображать ноль как ноль.
    • Интеллектуальный блок оси Y поддерживает интеллектуальное преобразование мс и байтов, например, преобразование в килобайты, мегабайты и гигабайты.

    6. ГА и Масштабируемость

    Carbon-RelayПоддерживает вертикальные или горизонтальные разделы и отправляет метрики в разные объекты Carbon-Cache (метрики с одинаковыми именами всегда отправляются одному и тому же объекту Cache). Сконфигурируйте RELAY_METHOD = постоянное хэширование в carbon.conf [relay] как горизонтальный раздел, настройте RELAY_METHOD = rules, а затем настройте регулярное выражение в relay-rules.conf в соответствии с именем метрики как вертикальный раздел.
    Пример relay-rules.conf:

    [example] pattern = ^mydata.foo..+ серверы = 10.1.2.3, 10.1.2.4:2004 // будут скопированы на все серверы (HA)

    Если в Carbon-Relay используется согласованное хэширование, вы также можете определить factory = 2 в carbon.conf для копирования данных в Carbon-Cache на двух серверах для достижения высокой готовности.

    Чтобы использовать больше ЦП, на одном компьютере можно настроить один экземпляр Graphite-Web и несколько экземпляров Carbon-Cache и использовать один и тот же каталог файлов Whisper. Из-за шардинга два экземпляра не будут записывать один и тот же файл whiper. Да, в настоящее время необходимо настроить несколько атомов углерода в CARBONLINK_HOSTS в local_settings.py в Graphite-Web.

    Graphite-Web сначала читает локальный шепотный файл. Если он читает метрику, он будет проходить обычный процесс. Если такой метрики локально нет, он будет запрашивать другие графические веб-серверы через CLUSTER_SERVERS в local_settings.py.

    В среде высокой доступности, если один из компьютеров выходит из строя, как синхронизировать последние данные с другого компьютера после перезапуска? В кластерной среде, если будет добавлен внутренний экземпляр Carbon-Cache, метрика согласованного хэша для каждой машины изменится. Как сбалансировать существующие данные? К счастью, есть одинcarbonateПроект выполнил эту грязную работу, такую ​​как синхронизация углерода, и название этой команды кажется сердечным.

    LOCAL_IP=»$1″ для h in $ (carbon-hosts); do // Доступ ко всем хостам ( ssh $ h — carbon-list | // Вывести все метрики на хосте carbon-sieve -n $ LOCAL_IP | // Вывести метрики этой машины carbon-sync -s $ h // Синхронная совпадающая метрика ) при извлечении данных вы можете добавить звездочку в URL для подведения итогов, см. Выше.

  • Графит поддерживает функции и имеет больше возможностей для использования.
  • 8. Пользователь

    • Основные клиенты: Github, Instagram, Douban, Etsy и др.
    • облачный сервис:playfairapp statsd + Graphite

    9. Ссылки

    • Practical Guide to StatsD/Graphite Monitoring
    • 10 Things I Learned Deploying Graphite
    • obfuscurity.comЖурнал сопровождающего Graphite Джейсон Диксон.
    • Перевод с: https://github.com/springside/springside4/wiki/Graphite

    Источник: russianblogs.com

    Graphite

    Graphite

    Приложение для разработки планов и чертежей. Поддерживается функция масштабирования рабочей области и выбора проекции. Доступны инструменты для рисования.

    Дата обновления:
    Русский язык:
    Разработчик:
    Ashlar-Vellum, Inc.
    Версия Windows:

    Windows 7, Windows 8, Windows 8.1, Windows 10

    Graphite – приложение для Windows, представляющее собой систему автоматизированного проектирования. Утилита предназначена для инженеров и конструкторов. С ее помощью можно создавать двумерные чертежи или трехмерные модели любой сложности. Есть возможность экспортировать проекты для просмотра в A9CAD и других аналогичных системах.

    Редактирование

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

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

    Модели

    Утилита содержит встроенную библиотеку готовых объектов, которые можно использовать в процессе проектирования. Есть возможность создавать собственные шаблоны.

    Экспорт

    По окончании разработки программа позволяет экспортировать проект в формате DWG, DFX, EPS, PS и других. Также можно сохранить чертеж в виде изображения с расширением TIFF, JPRG, или PNG. Поддерживается функция конвертации схем в многостраничные PDF документы.

    Особенности

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

    Источник: iowin.net

    Сбор и визуализация метрик приложения в Graphite и Graph-Explorer

    Зачастую возникает необходимость отслеживать различные параметры работы приложения/сервиса. Например, интерес представляет количество запросов в секунду, среднее время ответа сервера, количество ответов сервера с различным HTTP-статусом (технические метрики), количество регистраций пользователей в час, количество платежных транзакций в минуту (бизнес-метрики) и пр. Без системы сбора метрик разработка и сопровождение продукта происходит практически вслепую.

    Данная статья является руководством по настройке системы сбора и анализа метрик приложения на базе Graphite и vimeo/graph-explorer.

    Мотивация

    Система сбора метрик не является монолитом. При ее развертывании приходится иметь дело со значительным числом компонентов, каждый из которых каким-то образом взаимодействует с остальными, имеет свой конфигурационный файл и неповторимый способ запуска. Даже Graphite, сам по себе, состоит минимум из трех подсисем — демон сбора метрик (carbon), БД с метриками (whisper и др.) и веб-приложение для визуализации. Когда же необходимо добавить поддержку graph-explorer, все становится еще интереснее. Каждая из подсистем имеет свою обособленную документацию, но нигде нет документа, описывающего картину вцелом.

    Метрики

    Метрика — это последовательность (числовых) значений во времени. Очень простая вещь по сути. Фактически есть некоторый строковый ключ и соответствующий ему ряд (sample1, time1), (sample2, time2),… Типичным для Graphite способом именования метрик является разделение строковых ключей на части при помощи символа «.», например, stats.web.request.GET.time.

    Graphite позволяет группировать метрики с общим префиксом, используя символ «*» при построении графиков. Очевидно, что это далеко не самый гибкий способ работы с ключами. Если понадобится добавить еще какой-либо компонент к ключу, это может поломать построение графиков. Например, приведение ключа из примера выше к виду stats.web.

    server1.request.GET.time нарушит общий префикс для исторических данных. Вторым существенным недостатком такого именования метрик является потенциальная неоднозначность их трактования.

    Куда более самодостаточными были бы метрики, обладающие ключами вида service=web server=server1 what=request_time unit=ms с дальнейшей возможностью построения комбинированных графиков по общим тегам, а не только общим префиксам. К счастью, ребята из vimeo придумали metrics 2.0 и запили свой graph-explorer, работающий поверх graphite. Основная идея — это логическое представление метрик, как сущностей с набором пар тег-значение. Каждая метрика в формате 2.0 все равно в конечном итоге преобразуется в обычный строковый ключ, разделенный точками и попадает в carbon, но предварительно в отдельном хранилище создается «индекс», хранящий информацию о соответствии этих ключей и пар тег-значение. Таким образом, пользуясь информацией из индексов, graph-explorer и реализует комбинирование различных метрик на одном графике.

    Общий взгляд

    В общем виде система сбора метрик может быть представлена следующий диаграммой:

    Таким образом, приложение (веб-сервис, демон, etc.), написанное не любом языке, через некоторый интерфейс (прослойку) отправляет метрики в коллектор, коллектор их частично агрегирует, вычисляет частоту обновления (опционально) и раз в некоторый промежуток времени отправляет их в carbon, который постепенно складывает их в хранилище. Веб-приложение тянет данные из хранилища (и частично из самого carbon) и строит для нас графики.

    Демон carbon на самом деле — это целых 3 демона: carbon-cache, carbon-relay и carbon-aggregator. В простейшем случае можно использовать carbon-cache. Реализацию carbon-relay можно использовать с целью шардирования (распределение нагрузки между несколькими carbon-cache) или реплицирования (отправка одних и тех же метрик на несолько carbon-cache).

    Демон carbon-aggregator умеет выполнять промежуточную обработку метрик перед отправкой их в хранилище. Данные метрик в carbon могут быть переданы по одному из двух форматов: в plain text (т.н. line protocol) на порт 2003 и сериализованные в pickle на порт 2004. При этом carbon-relay на выход отдает данные только в pickle (важно!).

    Надстройка graph-explorer добавляет еще одно хранилище для т.н. индексов метрик. В качестве такого хранилища используется elastic search. Очевидно, что в каком-то месте представленной на диаграмме системы необходимо добавить звено, которое будет осуществлять «индексацию» метрик. Таким звеном является carbon-tagger. В итоге, система принимает следующий вид:

    Стек технологий

    • приложение на Python
    • statsd клиент для Python
    • statsd/statsdaemon
    • graphite
    • carbon-relay/carbon-relay-ng
    • carbon-cache
    • whisper
    • webapp

    Установка

    Установка будет происходить в директорию /opt/graphite, являющуюся директорией по умолчанию. Часть компонентов написана на Go, так что его также придется предварительно установить и прописать соответствующие переменные окружения. Установка подразумевает, что Go в системе один. Если у вас установлено несколько версий Go, то этот шаг можете пропустить и настроить нужную версию по своему усмотрению.

    cd /opt wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz echo ‘export PATH=$PATH:/usr/local/go/bin’ >> /etc/profile echo ‘export GOPATH=/opt/go’ >> /etc/profile echo ‘export GOBIN=»$GOPATH/bin»‘ >> /etc/profile echo ‘export PATH=$PATH:$GOBIN’ >> /etc/profile source /etc/profile go env # Вывод должен содержать следующие строчки #GOBIN=»/opt/go/bin» #GOPATH=»/opt/go» #GOROOT=»/usr/local/go»

    Также еще один важный момент при развертывании системы — внимательно следить за портами. Компонентов много, каждый использует по несколько портов и легко ошибиться, кого с кем связывать. Плюс большинство компонентов не обладает каким-либо встроенным механизмом авторизации и при этом по умолчанию слушают интерфейс 0.0.0.0. Поэтому настоятельно рекомендую везде, где это возможно менять интерфейс на локальный и закрывать все порты на сервере через iptables.

    statsd python клиент

    В качестве клиента, занимающегося отправкой метрик из приложения, выбран наиболее популярный statsd. Его реализация бесконечно проста. Фактически, это отправка текстовых данных на указанный UDP/TCP-порт с добавлением минимальных протокольных служебных данных.

    # внутри виртуального окружения приложения pip install statsd

    Пример использования в коде приложения:

    import statsd client = statsd.StatsClient(host=’statsdaemon.local’, port=8125) # отправка метрики в metrics 2.0 формате tag_is_value client.gauge(‘service_is_myapp.server_is_web1.what_is_http_request.unit_is_ms’, )

    statsd

    В «классической» схеме установки graphite зачастую в качестве промежуточного коллектора используется statsd. В нашем случае использован statsdaemon, так как он из коробки умеет работать с метриками 2.0, при этом сохраняя обратную совместимость с протоколом statsd. Он написан на Go и его установка чрезвычайно проста (осторожно, сейчас в README.md досадная ошибка в команде установки):

    go get github.com/Vimeo/statsdaemon/statsdaemon

    После этого в директории /opt/go/bin должен появиться исполняемый файл statsdaemon. Настройки этого демона достаточно просты:

    statsdaemon.ini

    # — /etc/statsdaemon.ini — listen_addr = «:8125» # сюда будет слать метрики statsd-клиент (приложение) admin_addr = «:8126» graphite_addr = «carbon.local:2013» # адрес carbon для агрегированных метрик, раз в flush_interval сек flush_interval = 30 prefix_rates = «stats.» prefix_timers = «stats.timers.» prefix_gauges = «stats.gauges.» percentile_thresholds = «90,75» max_timers_per_s = 1000
    statsdaemon -config_file=»/etc/statsdaemon.ini» -debug=true

    На этом этапе уже можно запустить statsdaemon и послать в него несколько пакетов из приложения с помощью statsd-клиент. Вывод в консоль будет говорить сам за себя.

    Graphite

    Актуальное руководство по установке находится здесь. Установку лучше проводить внутри virtual environment, располагающегося в /opt/graphite.

    sudo apt-get install python-pip python-dev pip install pip —upgrade pip install virtualenv mkdir /opt/graphite virtualenv /opt/graphite cd /opt/graphite source bin/activate sudo apt-get install libcairo2 python-cairo libffi-dev # установка нужных для graphite пакетов pip install https://github.com/graphite-project/ceres/tarball/master pip install whisper pip install carbon # pip install carbon —install-option=»—prefix=/opt/graphite» —install-option=»—install-lib=/opt/graphite/lib» pip install graphite-web # pip install graphite-web —install-option=»—prefix=/opt/graphite» —install-option=»—install-lib=/opt/graphite/webapp» # нужно для Graphite WebApp pip install uwsgi pip install django pip install cairocffi pip install django-tagging # инициализация webapp (cd /opt/graphite/webapp/graphite; python manage.py syncdb)

    После установки, graphite будет располагаться в /opt/graphite. Далее необходимо выполнить его конфигурацию. Пример файлов с настройками находятся в /opt/graphite/conf. Минимум, что необходимо сделать, это создать файл настроек carbon и whisper.

    cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf # carbon.conf содержит настройки для carbon-cache, carbon-relay и carbon-aggregator. # Необходимо настроить как минимум следующие значения в секции carbon-cache: # LINE_RECEIVER_INTERFACE = 127.0.0.1 # LINE_RECEIVER_PORT = 2003 cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/storage-schemas.conf # storage-schemas.conf содержит настройки whisper, который по сути — fixed-size db. # Аллокация места под метрики происходит 1 раз, поэтому нужно явно задать (по # ключу метрики), с какой частотой дескритизации и за какой период хранить данные. .

    Далее необходимо запустить carbon-cache:

    carbon-cache.py —conf=conf/carbon.conf start # —debug tail -f /opt/graphite/storage/log/carbon-cache/carbon-cache-a/*.log

    И graphite webapp с помощью uwsgi + какой-либо web-сервер (например, nginx):

    cp /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py # в local_settings.py необходимо изменить SECRET_KEY и TIME_ZONE. /opt/graphite/bin/uwsgi —socket localhost:6001 —master —processes 4 —home /opt/graphite —pythonpath /opt/graphite/webapp/graphite —wsgi-file=/opt/graphite/conf/graphite.wsgi.example —daemonize=/var/log/graphite-uwsgi.log

    Настройки nginx:
    graphite.conf
    upstream graphite_upstream < server 127.0.0.1:6001; >server < listen 8085; server_name graphite.local; location / < include uwsgi_params; uwsgi_pass graphite_upstream; add_header ‘Access-Control-Allow-Origin’ ‘*’; add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’; add_header ‘Access-Control-Allow-Headers’ ‘origin, authorization, accept’; add_header ‘Access-Control-Allow-Credentials’ ‘true’; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; >>

    Остается установить только carbon-tagger (именно он заполняет базу индексов для graph-explorer) и настроить дублирующую отправку метрик в carbon-cache и carbon-tagger при помощи carbon-relay. Но к сожалению, carbon-tagger не умеет работать по протоколу pickle, а carbon-relay отдает данные только в таком формате. Поэтому необходимо установить drop-in замену carbon-relay от vimeo — carbon-relay-ng:

    go get -d github.com/graphite-ng/carbon-relay-ng go get github.com/jteeuwen/go-bindata/. cd «/opt/go/src/github.com/graphite-ng/carbon-relay-ng» make cp carbon-relay-ng /opt/go/bin/carbon-relay-ng touch /opt/graphite/conf/carbon-relay-ng.ini cd /opt/graphite carbon-relay-ng conf/carbon-relay-ng.ini
    carbon-relay-ng.ini

    instance = «default» listen_addr = «127.0.0.1:2013» admin_addr = «127.0.0.1:2014» http_addr = «127.0.0.1:8081» spool_dir = «spool» log_level = «notice» bad_metrics_max_age = «24h» init = [ ‘addRoute sendAllMatch carbon-default 127.0.0.1:2003 spool=true pickle=false’, # отправляем все в carbon-cache ‘addRoute sendAllMatch carbon-tagger 127.0.0.1:2023 spool=true pickle=false’ # отправляем все в carbon-tagger ] [instrumentation] graphite_addr = «» graphite_interval = 1000

    carbon-tagger

    Демон carbon-tagger написан на Go и занимается отправкой индексов метрик в Elastic Search для последующего их использования в graph-explorer. Прежде всего на сервере необходимо установить java и Elastic Search. Установка carbon-tagger:

    go get github.com/Vimeo/carbon-tagger go get github.com/mjibson/party go build github.com/Vimeo/carbon-tagger
    carbon-tagger.conf
    [in] port = 2023 # сюда присылает метрики carbon-relay-ng [elasticsearch] host = «esearch.local» port = 9200 index = «graphite_metrics2» flush_interval = 2 max_backlog = 10000 max_pending = 5000 [stats] host = «localhost» port = 2003 # сюда carbon-tagger будет отправлять собственные внутренние метрики (не метрики приложения) id = «default» flush_interval = 10 http_addr = «127.0.0.1:8123″
    (cd /opt/go/src/github.com/Vimeo/carbon-tagger/; ./recreate_index.sh) # инициализация индексов в ES carbon-tagger -config=»/opt/graphite/conf/carbon-tagger.conf» -verbose=true

    graph-explorer

    И наконец, установка гвоздя программы:

    pip install graph-explorer
    graph-explorer.conf
    [graph_explorer] listen_host = 127.0.0.1 # локальный адрес, чтобы добавить HTTP Basic Auth через nginx listen_port = 8080 filename_metrics = metrics.json log_file = /var/log/graph-explorer/graph-explorer.log [graphite] url_server = http://localhost url_client = http://graphite.local:8085 # адрес graphite webapp
    nginx/graph-explorer.conf
    server < listen 80; server_name metrics.yourproject.net; location / < auth_basic «Who are you?»; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:8080; >>

    mkdir /var/log/graph-explorer run_graph_explorer.py /opt/graphite/conf/graph_explorer.conf

    После этого веб-интерфейс graph-explorer будет доступен по адресу metrics.yourproject.net.

    Вместо заключения

    Хватит жить разрабатывать с закрытыми глазами, %habrauser%! Разворачивайте системы сбора метрик и делитесь занимательными графиками из ваших проектов! Спасибо за внимание!

    • Разработка веб-сайтов
    • Python
    • Визуализация данных

    Источник: habr.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru