## grafanerator -- создание дашбордов в Графане из текстовых конфигов

### Форматы

.json -- дашборд из Графаны "как есть" (manage dashboard -> view json); 
подходит для сложно сверстанных дашбордов

.tmpl.yaml -- yaml-описание дашборда; вся "верстка" типовая, менять можно ширину отдельных графиков и добавлять grafana-овую шаблонизацию (ключ "templating")
подходит для типовых дашбордов с достаточно разнообразными графиками

.tmpl.yaml.tt2 -- то же самое, что .tmpl.yaml, но снаружи шаблонизированное template toolkit; внешних переменных при шаблонизации не передается
подходит для дашбордов с однотипными графиками (разные показатели для одного и того же набора хостов); пример см. на Директовых дашбордах про базы


### Шаблоны для верстки 

Пример см. в json-templates-example


### Конфиг

Должен называться grafanerator.conf.yaml, пример:

> cat grafanerator.conf.yaml 

---
grafana_api_url: https://ppcgraphite.yandex.ru/grafana/api
main_tag: directmod
sets:
  - dashboards_dir: dashboards
    templates_dir: json-templates

"Главный" тег дописывается ко всем дашбордам автоматически


### Примеры использования: 

  svn+ssh://svn.yandex.ru/direct-utils/grafanerator-direct
  svn+ssh://svn.yandex.ru/direct-utils/grafanerator-directmod


### Перевести json-описание дашборда в yaml

cat backup/mongodb-disks-2016-07-26 | perl -MYAML -MJSON -le '$j = join "", <>; $d = decode_json($j); $nd = {id =>$d->{id}, title => $d->{title},tags => [],}; for $r(@{$d->{rows}}){ my $nr = []; push @{$nd->{rows}}, $nr; for $p(@{$r->{panels}}){ push $nr, {title => $p->{title}, target => [ map {$_->{target}} @{$p->{targets}} ]}; }} print YAML::Dump($nd)' > yaml

