2016-05-30 2 views
0

Надеясь, что кто-то может помочь мне в правильном направлении.json fusioncharts и shell script

У нас есть система мониторинга с открытым исходным кодом (Nagios), которая использует решение rrdtool для графиков. Хотя это здорово и все, что я хочу, чтобы иметь возможность rrdfetch или rrdexport данных через скрипты оболочки nagios и кодировать их в json, чтобы использовать более удобное графическое решение, такое как Fusioncharts.

Я не являюсь веб-администратором, поэтому я искал правильный подход. То, что я экспериментировал с:

с двумя переменными выходами через экспорт RRD и производство:

echo "$label" 

    22:30:00 
    23:00:00 
    23:30:00 
    00:00:00 

echo "$value" 
    2.47 
    2.68 
    3.40 
    2.43 

Что является лучшим способом, чтобы получить это в формат JSON таким решением, как FusionCharts может потреблять?

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

jq -n "{label:\"$cat1\"}" 
jq -n "{value:\"$avg1\"}" 

{ 
    "label": "22:30:00 23:00:00 23:30:00 00:00:00" 
} 

{ 
    "value": "2.47 2.68 3.40 2.43" 
} 

В jsfiddle я пытался получить скрипт для вывода формата JSON, как этот fusionchart пример.

FusionCharts.ready(function() { 
    var revenueChart = new FusionCharts({ 
     type: 'line', 
     renderAt: 'chart-container', 
     width: '500', 
     height: '300', 
     dataFormat: 'json', 
     id: 'revenue-chart', 
     dataSource: { 
      "chart": { 
       "caption": "Sample avg times", 
       "subCaption": "Sample avg times", 
       "xAxisName": "time", 
       "yAxisName": "avg", 
       "theme": "fint", 
       "rotateValues": "0" 
      }, 

      "data": [{ 
       "label": "22:30:00", 
       "value": "2.47" 
      }, { 
       "label": "23:00:00", 
       "value": "2.68" 
      }, { 
       "label": "23:30:00", 
       "value": "3.40" 
      }, { 
       "label": "00:00:00", 
       "value": "2.43" 
      },] 
     } 
    }); 
+0

С какими частями вам нужна помощь? Какой у Вас вопрос? – tripleee

+0

Угадайте, мой главный вопрос: лучше всего взять две переменные $ label + $ value и вывести их в json-файл, который fusioncharts может использовать через скрипт оболочки. Извините, я понимаю, что это вопрос с открытым вопросом. Я думаю, что fusioncharts позволит мне выводить эти данные в json-файл, и диаграмма будет использовать этот файл для заполнения данных. – user1999357

+0

В качестве сторонних высказываний 'echo', возможно, не создавались многострочные строки без цитирования вокруг переменных. – tripleee

ответ

0

Если вы хотите интерполировать некоторые значения в статическую часть текста, посмотрите здесь документы.

cat <<HERE 
    some static text here; 
    $label 
    some more static text; 
    or even $(code to dynamically extract value) in the middle 
    of some other text 
HERE 

Вы можете легко склеить части, тоже:

printf 'static\nheader\ntext' 
jq something | 
while read -r snippet; do # reads one line from jq at a time 
    printf 'stuff around %s goes here\n' "$snippet" 
done 
echo 'static 
tail 
can be multi-line string, too!' 
tr ':' '\n' <<<"multi:line:string:with:$value:in:it" # here string, bash only 

Используете ли вы cat с здесь документ, или printf (или просто echo, или, скажем, date с творческим форматом строка - фактически, все, что создает текст на стандартном выходе) для создания строки, не имеет большого значения с точки зрения производительности или удобства использования; использовать то, что кажется самым естественным.

+0

Спасибо tripleee, я буду играть с этим в тестовом скрипте, чтобы узнать, могу ли я получить правильный вывод. – user1999357