fixed: <= to <
This commit is contained in:
parent
98405934ce
commit
f902edd49d
@ -25,7 +25,7 @@ class StarRocksMetricsService:
|
|||||||
updated_at
|
updated_at
|
||||||
FROM dws_daily_registered_users
|
FROM dws_daily_registered_users
|
||||||
WHERE date_id >= %s
|
WHERE date_id >= %s
|
||||||
AND date_id <= %s
|
AND date_id < %s
|
||||||
AND product_id = %s
|
AND product_id = %s
|
||||||
ORDER BY date_id ASC
|
ORDER BY date_id ASC
|
||||||
""",
|
""",
|
||||||
|
|||||||
@ -8,6 +8,159 @@ We support two ways to query metrics:
|
|||||||
|
|
||||||
We can implement StarRocks Metric queries similar to Prometheus Metric queries. The only difference is replacing PromQL with SQL and querying through StarRocks API.
|
We can implement StarRocks Metric queries similar to Prometheus Metric queries. The only difference is replacing PromQL with SQL and querying through StarRocks API.
|
||||||
|
|
||||||
|
## 2.1.Metrics Config
|
||||||
|
Currently, metrics are configured in code through the `StarRocksMetricsService.METRIC_SQL_MAP` dictionary. In the future, they will be configured through database or other methods.
|
||||||
|
Organization structure: Product ID -> Metric Name -> SQL Query
|
||||||
|
```python
|
||||||
|
METRIC_SQL_MAP: Dict[str, Dict[str, str]] = {
|
||||||
|
"freeleaps": {
|
||||||
|
"daily_registered_users": """
|
||||||
|
SELECT
|
||||||
|
date_id,
|
||||||
|
product_id,
|
||||||
|
registered_cnt,
|
||||||
|
updated_at
|
||||||
|
FROM dws_daily_registered_users
|
||||||
|
WHERE date_id >= %s
|
||||||
|
AND date_id <= %s
|
||||||
|
AND product_id = %s
|
||||||
|
ORDER BY date_id ASC
|
||||||
|
""",
|
||||||
|
},
|
||||||
|
"magicleaps": {
|
||||||
|
# Future metrics can be added here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2.API Design
|
||||||
|
|
||||||
|
### 2.2.1.Query Metrics by Product ID
|
||||||
|
|
||||||
|
API: `/api/metrics/starrocks/product/{product_id}/available-metrics`
|
||||||
|
|
||||||
|
Method: GET
|
||||||
|
Request:
|
||||||
|
```
|
||||||
|
product_id=freeleaps
|
||||||
|
```
|
||||||
|
Response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"available_metrics": [
|
||||||
|
"daily_registered_users"
|
||||||
|
],
|
||||||
|
"total_count": 1,
|
||||||
|
"description": "List of StarRocks-backed metrics for product 'freeleaps'"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2.2.Query Metric Info
|
||||||
|
API: `/api/metrics/starrocks/product/{product_id}/metric/{metric_name}/info`
|
||||||
|
|
||||||
|
Method: GET
|
||||||
|
Request:
|
||||||
|
```
|
||||||
|
product_id=freeleaps
|
||||||
|
metric_name=daily_registered_users
|
||||||
|
```
|
||||||
|
Response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"metric_info": {
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_name": "daily_registered_users",
|
||||||
|
"sql_query": "SELECT date_id, product_id, registered_cnt, updated_at FROM dws_daily_registered_users WHERE date_id >= %s AND date_id <= %s AND product_id = %s ORDER BY date_id ASC",
|
||||||
|
"description": "Daily registered users count from StarRocks table dws_daily_registered_users"
|
||||||
|
},
|
||||||
|
"description": "Information about StarRocks metric 'daily_registered_users' in product 'freeleaps'"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2.3.Query Metric Data
|
||||||
|
API: `/api/metrics/starrocks/metrics_query`
|
||||||
|
|
||||||
|
Method: POST
|
||||||
|
Request:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_name": "daily_registered_users",
|
||||||
|
"start_date": "2024-09-10",
|
||||||
|
"end_date": "2024-09-20"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"metric_name": "daily_registered_users",
|
||||||
|
"data_points": [
|
||||||
|
{
|
||||||
|
"date": "2024-09-10",
|
||||||
|
"value": 45,
|
||||||
|
"labels": {
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_type": "daily_registered_users"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2024-09-11",
|
||||||
|
"value": 52,
|
||||||
|
"labels": {
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_type": "daily_registered_users"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"date": "2024-09-12",
|
||||||
|
"value": 38,
|
||||||
|
"labels": {
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_type": "daily_registered_users"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
...
|
||||||
|
{
|
||||||
|
"date": "2024-09-19",
|
||||||
|
"value": 67,
|
||||||
|
"labels": {
|
||||||
|
"product_id": "freeleaps",
|
||||||
|
"metric_type": "daily_registered_users"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"total_points": 10,
|
||||||
|
"time_range": {
|
||||||
|
"start": "2024-09-10",
|
||||||
|
"end": "2024-09-19"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3.Technical Implementation
|
||||||
|
|
||||||
|
### 2.3.1.StarRocks Client
|
||||||
|
- Uses PyMySQL to connect to StarRocks database
|
||||||
|
- Supports parameterized queries for security
|
||||||
|
- Automatic connection management with context manager
|
||||||
|
- Error handling and logging
|
||||||
|
|
||||||
|
### 2.3.2.Data Format
|
||||||
|
- Date format: `YYYY-MM-DD`
|
||||||
|
- Values are returned as integers or floats
|
||||||
|
- Labels include product_id and metric_type for debugging
|
||||||
|
- Results are sorted by date in ascending order
|
||||||
|
|
||||||
|
### 2.3.3.Validation
|
||||||
|
- Date range validation (start_date < end_date)
|
||||||
|
- Maximum date range limit (1 year)
|
||||||
|
- Product ID and metric name validation against available mappings
|
||||||
|
- Input format validation for date strings
|
||||||
|
|
||||||
# 3.Prometheus Metric
|
# 3.Prometheus Metric
|
||||||
|
|
||||||
## 3.1.Metrics Config
|
## 3.1.Metrics Config
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user