refactor: improve report field names
This commit is contained in:
parent
9d55abfebe
commit
87608ccdb9
3 changed files with 49 additions and 22 deletions
56
reports.yml
56
reports.yml
|
@ -2,30 +2,36 @@
|
|||
label: Hits
|
||||
icon: pulse
|
||||
chart: line
|
||||
bucket: time_bucket
|
||||
bucket_label: Time
|
||||
query: |
|
||||
SELECT {bucket} AS bucket,
|
||||
SELECT {bucket} AS time_bucket,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY bucket
|
||||
ORDER BY bucket
|
||||
GROUP BY time_bucket
|
||||
ORDER BY time_bucket
|
||||
|
||||
- name: error_rate
|
||||
label: Error Rate (%)
|
||||
icon: file-alert
|
||||
chart: line
|
||||
bucket: time_bucket
|
||||
bucket_label: Time
|
||||
query: |
|
||||
SELECT {bucket} AS bucket,
|
||||
SELECT {bucket} AS time_bucket,
|
||||
SUM(CASE WHEN status BETWEEN 400 AND 599 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY bucket
|
||||
ORDER BY bucket
|
||||
GROUP BY time_bucket
|
||||
ORDER BY time_bucket
|
||||
|
||||
- name: cache_status_breakdown
|
||||
label: Cache Status
|
||||
icon: archive
|
||||
chart: polarArea
|
||||
bucket: cache_status
|
||||
bucket_label: Cache Status
|
||||
query: |
|
||||
SELECT cache_status AS bucket,
|
||||
SELECT cache_status AS cache_status,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY cache_status
|
||||
|
@ -43,30 +49,36 @@
|
|||
icon: globe
|
||||
chart: table
|
||||
per_domain: false
|
||||
bucket: domain
|
||||
bucket_label: Domain
|
||||
query: |
|
||||
SELECT host AS bucket,
|
||||
SELECT host AS domain,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY host
|
||||
GROUP BY domain
|
||||
ORDER BY value DESC
|
||||
|
||||
- name: bytes_sent
|
||||
label: Bytes Sent
|
||||
icon: upload
|
||||
chart: line
|
||||
bucket: time_bucket
|
||||
bucket_label: Time
|
||||
query: |
|
||||
SELECT {bucket} AS bucket,
|
||||
SELECT {bucket} AS time_bucket,
|
||||
SUM(bytes_sent) AS value
|
||||
FROM logs
|
||||
GROUP BY bucket
|
||||
ORDER BY bucket
|
||||
GROUP BY time_bucket
|
||||
ORDER BY time_bucket
|
||||
|
||||
- name: top_paths
|
||||
label: Top Paths
|
||||
icon: map
|
||||
chart: table
|
||||
bucket: path
|
||||
bucket_label: Path
|
||||
query: |
|
||||
SELECT path AS bucket,
|
||||
SELECT path AS path,
|
||||
COUNT(*) AS value
|
||||
FROM (
|
||||
SELECT substr(substr(request, instr(request, ' ') + 1), 1,
|
||||
|
@ -81,8 +93,10 @@
|
|||
label: User Agents
|
||||
icon: user
|
||||
chart: table
|
||||
bucket: user_agent
|
||||
bucket_label: User Agent
|
||||
query: |
|
||||
SELECT user_agent AS bucket,
|
||||
SELECT user_agent AS user_agent,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY user_agent
|
||||
|
@ -93,11 +107,13 @@
|
|||
label: Referrers
|
||||
icon: link
|
||||
chart: table
|
||||
bucket: referrer
|
||||
bucket_label: Referrer
|
||||
query: |
|
||||
SELECT referer AS bucket,
|
||||
SELECT referer AS referrer,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY referer
|
||||
GROUP BY referrer
|
||||
ORDER BY value DESC
|
||||
LIMIT 20
|
||||
|
||||
|
@ -105,17 +121,19 @@
|
|||
label: HTTP Statuses
|
||||
icon: server
|
||||
chart: pie
|
||||
bucket: status_group
|
||||
bucket_label: Status
|
||||
query: |
|
||||
SELECT CASE
|
||||
WHEN status BETWEEN 200 AND 299 THEN '2xx'
|
||||
WHEN status BETWEEN 300 AND 399 THEN '3xx'
|
||||
WHEN status BETWEEN 400 AND 499 THEN '4xx'
|
||||
ELSE '5xx'
|
||||
END AS bucket,
|
||||
END AS status_group,
|
||||
COUNT(*) AS value
|
||||
FROM logs
|
||||
GROUP BY bucket
|
||||
ORDER BY bucket
|
||||
GROUP BY status_group
|
||||
ORDER BY status_group
|
||||
colors:
|
||||
- "#48c78e"
|
||||
- "#209cee"
|
||||
|
|
|
@ -169,6 +169,10 @@ def _generate_interval(interval: str, domain: Optional[str] = None) -> None:
|
|||
}
|
||||
if "icon" in definition:
|
||||
entry["icon"] = definition["icon"]
|
||||
if "bucket" in definition:
|
||||
entry["bucket"] = definition["bucket"]
|
||||
if "bucket_label" in definition:
|
||||
entry["bucket_label"] = definition["bucket_label"]
|
||||
if "color" in definition:
|
||||
entry["color"] = definition["color"]
|
||||
if "colors" in definition:
|
||||
|
@ -253,6 +257,10 @@ def _generate_global() -> None:
|
|||
}
|
||||
if "icon" in definition:
|
||||
entry["icon"] = definition["icon"]
|
||||
if "bucket" in definition:
|
||||
entry["bucket"] = definition["bucket"]
|
||||
if "bucket_label" in definition:
|
||||
entry["bucket_label"] = definition["bucket_label"]
|
||||
if "color" in definition:
|
||||
entry["color"] = definition["color"]
|
||||
if "colors" in definition:
|
||||
|
|
|
@ -105,19 +105,20 @@
|
|||
fetch(base + '/' + rep.json)
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const bucketField = rep.bucket || 'bucket';
|
||||
if (rep.chart === 'table') {
|
||||
const rows = data.map(x => [x.bucket, x.value]);
|
||||
const rows = data.map(x => [x[bucketField], x.value]);
|
||||
new DataTable('#table-' + rep.name, {
|
||||
data: rows,
|
||||
columns: [
|
||||
{ title: 'Bucket' },
|
||||
{ title: rep.bucket_label || 'Bucket' },
|
||||
{ title: 'Value' }
|
||||
]
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const labels = data.map(x => x.bucket);
|
||||
const labels = data.map(x => x[bucketField]);
|
||||
const values = data.map(x => x.value);
|
||||
const chartType = rep.chart === 'stackedBar' ? 'bar' : rep.chart;
|
||||
const options = { scales: { y: { beginAtZero: true } } };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue