Monitor

WebIDE Monitor инструмент предназначеный помочь вам отслеживать эффективность работы Firefox OS  приложений и устройств.

The WebIDE Monitor

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

Доступные графики

Monitor поставляется с несколькими различными графиками. Они появляются сразу после того, как WebIDE подключается к Firefox OS.

Обычный пример

Unique Set Size

График показывает работу всех процессов Firefox OS в течение данного времени. Если вас интересует потребление памяти приложением в Firefox OS, запустите приложения, и процесс использования памяти отобразится на графике.

Отображение ваших данных

Отображать любые данные на Monitor очень легко, он принимает отформатированные обновления из разных источников.

Устройства Firefox OS

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

Примечание: Если вы хотите сделать это в сертифицированном приложении пожалуйста, следуйте этой инструкции.

JavaScript

Services.obs.notifyObservers(null, 'devtools-monitor-update', data);

Вы можете отправить данные из любого кода JS с chrom привилегией. Пример измерения времени выполнения определенного кода JS:

const Services = require('Services');

var start = Date.now();
// code to benchmark
var stop = Date.now();

var data = { graph: 'Performance', myFeature: stop-start, time: stop }
;
Services.obs.notifyObservers(null, 'devtools-monitor-update', JSON.stringify(data));

C++

observerService->NotifyObservers(nullptr, "devtools-monitor-update", data);

Вы можете отправить данные из любого места в Gecko. Пример измерения времени выполнения определенного кода:

#include <time.h>
#include "nsPrintfCString.h"
#include "nsIObserverService.h"

clock_t start = clock();
// code to benchmark
clock_t stop = clock();
double time = (double)(stop - start) / (CLOCKS_PER_SEC / 1000);

nsCOMPtr<nsIObserverService> observerService = services::GetObserverService();
if (observerService) {
  nsPrintfCString str("{\"graph\":\"Performance\",\"myFeature\":%f}", time);
  nsAutoString data = NS_ConvertUTF8toUTF16(str);
  observerService->NotifyObservers(nullptr, "devtools-monitor-update", data.get());
}

С вашего компьютера

 

Можно легко передавать данные на Monitor по серверу WebSockets. Это может быть полезно, если вы пишете расширение Firefox, инструмент командной строки или веб-service.

По умолчанию Monitor ищет сервер работающий на порту 9000 вашего компьютера. Вы можете изменить это путем обновления

devtools.webide.monitorWebSocketURL preference.

Вы также можете в этот момент принимать данные из локальной сети или из любой точки мира через Интернет.

Node.js

TODO

Python

TODO

Поддерживаемые форматы

Monitor принимает данные в виде объектов JSON, которые обычно выглядят следующим образом:

{
  "graph": "myGraph",
  "curve": "myCurve",
  "value": 42,
  "time": 1234567890
}

Этот формат предназначен для большего удобства. Если указано, что График или кривая не существует, он будет создан автоматически.

Произвольные имена

Неопознанные записи будут рассматриваться как имя кривой и стоимости.

Для маленького пакета данных вы можете использовать что-то вроде:

{ "myCurve": 42 }

Это добавит данные указывающие на "myCurve" в графе no name. Отсутствует time по умолчанию, когда Monitor получил пакет.

Для повышения точности лучше всегда указывать метку времени "timestamp" для хранения данных:

{
  "current": 60,

  "voltage": 500,
  "time": 1234567890
}

Несколько значений

В одном обновлении, вы можете отправить данные для нескольких кривых:

{
  "graph": "myGraph",
  "myCurve1": 50,
  "myCurve2": 300,
  "myCurve3": 9000,
  "time": 1234567890
}

Или несколько точек данных для одной кривой:

{
  "graph": "myGraph",
  "curve": "myCurve",
  "values": [
    { "time": 1234567890, "value": 42 },
    { "time": 1234567981, "value": 51 }
  ]
}

Multiple обновления

И вы также можете отправить несколько обновлений данных в виде массива:

[
  { "graph": "Memory", "time": 1234567890, "System": 2600, "My App": 1000 },
  { "graph": "Power", "time": 1234567890, "current": 60, "voltage": 500 }
]

Специальное событие

Чтобы отметить специальное событие в графе с вертикальной чертой, добавьте ключ событий для обновления вашего:

{
  "graph": "myGraph",
  "event": "myEvent",
  "time": 1234567980
}

Метки документа и участники

Метки: 
 Внесли вклад в эту страницу: Tihoem
 Обновлялась последний раз: Tihoem,