metric_temp

0

Описание

Языки

  • HTML38%
  • PHP35,5%
  • JavaScript23,3%
  • Dockerfile3,2%
README.md

metric_temp (metr_ch)

Небольшой каркас для сбора числовых метрик в ClickHouse и просмотра их на графике. Запись данных — отдельный REST API на PHP 8, построение графиков — отдельный сервис charts (Node.js + Chart.js).

Зачем это

  • Принимать точки вида
    { "name": "water.temperature", "value": 55 }
    и складывать их в ClickHouse.
  • Смотреть ряды по имени метрики в браузере.

Состав

СервисТехнологияРоль
clickhouse
ClickHouse 24Хранение временных рядов
api
PHP 8.3
POST /api/set
→ INSERT в таблицу
charts
Node 20HTTP API для выборок + страница с графиком

Схема данных (создаётся при первом старте из

clickhouse/init/001-metrics.sql
):

  • БД:
    metrics_db
  • Таблица:
    metrics
    — колонки
    ts
    (время),
    name
    (строка),
    value
    (float)

Быстрый старт

Откройте в браузере: http://localhost:8081/ — список метрик и график по выбранной.

API записи (PHP)

POST

http://localhost:8080/api/set

Content-Type: application/json

Тело:

Имя метрики: только латиница, цифры, точка, подчёркивание и дефис (

[a-zA-Z0-9._-]+
).

Успех:

{"ok":true}
. Ошибки валидации —
400
, проблемы с ClickHouse —
502
.

Проверка живости: GET

http://localhost:8080/health
.

Сервис графиков (charts)

  • GET
    /api/metrics
    — JSON-массив имён метрик.
  • GET
    /api/series?name=water.temperature
    — точки
    { t_ms, value }
    (опционально
    &limit=5000
    , максимум 50000).

Статика и график: GET

/
на порту 8081.

ClickHouse с хоста

Порты проброшены: 8123 (HTTP), 9000 (нативный клиент).

Учётные данные по умолчанию задаются в

docker-compose.yml
(якорь
x-clickhouse-auth
):

  • пользователь:
    default
  • пароль:
    metric_dev_pass

Пример запроса:

Важно про пароль и том

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

clickhouse_data
, а потом сменили пароль в compose, возможен рассинхрон. Тогда один раз сбросьте данные ClickHouse:

Переменные окружения (api / charts)

ПеременнаяНазначение
CLICKHOUSE_URL
Базовый URL HTTP, например
http://clickhouse:8123
CLICKHOUSE_DB
Имя БД (
metrics_db
)
CLICKHOUSE_USER
Пользователь ClickHouse
CLICKHOUSE_PASSWORD
Пароль (пусто — без Basic Auth, только для локальных экспериментов)

Локальная разработка charts

(

charts
ожидает доступный ClickHouse; порт приложения по умолчанию 3000.)

Структура репозитория

api/public/ # PHP: index.php, router.php charts/ # Node: server.mjs, public/index.html clickhouse/init/ # SQL при первом запуске контейнера docker-compose.yml