Tác giả: Backend Engineer tại HolySheep AI — 3 năm kinh nghiệm xây dựng hệ thống monitoring cho LLM APIs tại doanh nghiệp startup Việt Nam
Vì sao bạn cần theo dõi chi phí API ngay lập tức
Khi tôi bắt đầu làm việc với các mô hình ngôn ngữ lớn (LLM) vào năm 2024, một câu chuyện kinh điển đã xảy ra: team chúng tôi không kiểm soát được chi phí API. Sau 2 tuần launch prototype, hóa đơn API từ $200/tháng nhảy vọt lên $4,800 — gấp 24 lần chỉ vì một bug nhỏ trong vòng lặp retry không giới hạn. Kể từ đó, tôi luôn bắt đầu mọi dự án LLM bằng hệ thống monitoring ngay từ ngày đầu tiên.
So sánh chi phí API LLM 2026 — Bảng giá đã xác minh
Trước khi đi vào kỹ thuật, hãy cùng xem bức tranh tổng quan về chi phí API các nhà cung cấp hàng đầu năm 2026:
| Mô hình | Giá Output (USD/MTok) | Giá Input (USD/MTok) | Chi phí 10M tokens/tháng |
|---|---|---|---|
| GPT-4.1 | $8.00 | $2.00 | $80,000 (nếu toàn output) |
| Claude Sonnet 4.5 | $15.00 | $3.00 | $150,000 (nếu toàn output) |
| Gemini 2.5 Flash | $2.50 | $0.35 | $25,000 (nếu toàn output) |
| DeepSeek V3.2 | $0.42 | $0.14 | $4,200 (nếu toàn output) |
| HolySheep AI | Tiết kiệm 85%+ | Hỗ trợ CNY/USD | Tùy gói — xem bảng giá |
Với mức giá như trên, nếu doanh nghiệp của bạn xử lý 10 triệu tokens mỗi tháng với GPT-4.1 (toàn bộ là output), chi phí lên tới $80,000 — một con số có thể khiến startup phá sản. Đó là lý do monitoring không phải là "nice to have" mà là "must-have" trong kiến trúc LLM.
Kiến trúc hệ thống Monitoring HolySheep
Hệ thống monitoring mà tôi xây dựng cho HolySheep dựa trên 3 thành phần chính:
- OpenTelemetry SDK — Thu thập telemetry data (traces, metrics, logs)
- Prometheus + OpenTelemetry Collector — Tổng hợp và xử lý dữ liệu
- Grafana Dashboard — Trực quan hóa chi phí và độ trễ theo thời gian thực
Cài đặt OpenTelemetry SDK cho HolySheep API
Dưới đây là code hoàn chỉnh để tích hợp OpenTelemetry vào ứng dụng gọi HolySheep API. Tôi đã test trên Python 3.10+ và Node.js 18+.
# Cài đặt dependencies
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp \
opentelemetry-instrumentation-requests prometheus-client
Hoặc với npm cho Node.js
npm install @opentelemetry/api @opentelemetry/sdk-node \
@opentelemetry/exporter-trace-otlp-http @opentelemetry/instrumentation-http \
prom-client
# Python: monitoring_client.py
import os
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import Resource
from prometheus_client import Counter, Histogram, Gauge
import time
Cấu hình Prometheus metrics
REQUEST_COUNT = Counter(
'llm_api_requests_total',
'Total LLM API requests',
['model', 'status', 'provider']
)
REQUEST_LATENCY = Histogram(
'llm_api_latency_seconds',
'LLM API latency in seconds',
['model', 'provider'],
buckets=[0.1, 0.25, 0.5, 1.0, 2.0, 5.0, 10.0]
)
TOKEN_USAGE = Counter(
'llm_token_usage_total',
'Total tokens used',
['model', 'type', 'provider'] # type: input/output
)
COST_TRACKER = Gauge(
'llm_cost_usd',
'Current cost in USD',
['model', 'provider']
)
Cấu hình OpenTelemetry
resource = Resource.create({
"service.name": "holysheep-api-monitor",
"service.version": "1.0.0",
"deployment.environment": os.getenv("ENV", "production")
})
provider = TracerProvider(resource=resource)
processor = BatchSpanProcessor(OTLPSpanExporter(
endpoint=os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4317")
))
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(__name__)
Bảng giá tham chiếu (USD per million tokens)
PRICING = {
"gpt-4.1": {"input": 2.00, "output": 8.00},
"claude-sonnet-4.5": {"input": 3.00, "output": 15.00},
"gemini-2.5-flash": {"input": 0.35, "output": 2.50},
"deepseek-v3.2": {"input": 0.14, "output": 0.42},
# HolySheep: dynamic pricing với 85%+ savings
"holysheep-gpt4": {"input": 0.30, "output": 1.20},
"holysheep-claude": {"input": 0.45, "output": 2.25},
"holysheep-gemini": {"input": 0.05, "output": 0.38},
"holysheep-deepseek": {"input": 0.02, "output": 0.06},
}
def calculate_cost(model: str, input_tokens: int, output_tokens: int) -> float:
"""Tính chi phí USD cho một request"""
model_key = model.lower()
for key, pricing in PRICING.items():
if key in model_key:
cost = (input_tokens / 1_000_000 * pricing["input"] +
output_tokens / 1_000_000 * pricing["output"])
return round(cost, 6)
return 0.0
async def call_holysheep_with_monitoring(
prompt: str,
model: str = "gpt-4",
system_prompt: str = None
):
"""Gọi HolySheep API với full monitoring"""
import requests
start_time = time.time()
status = "success"
with tracer.start_as_current_span("llm_request") as span:
span.set_attribute("llm.model", model)
span.set_attribute("llm.provider", "holysheep")
try:
headers = {
"Authorization": f"Bearer {os.getenv('HOLYSHEEP_API_KEY')}",
"Content-Type": "application/json"
}
payload = {
"model": model,
"messages": []
}
if system_prompt:
payload["messages"].append({
"role": "system",
"content": system_prompt
})
payload["messages"].append({
"role": "user",
"content": prompt
})
# Gọi HolySheep API - base_url: https://api.holysheep.ai/v1
response = requests.post(
"https://api.holysheep.ai/v1/chat/completions",
headers=headers,
json=payload,
timeout=60
)
response.raise_for_status()
data = response.json()
# Trích xuất usage và tính chi phí
usage = data.get("usage", {})
input_tokens = usage.get("prompt_tokens", 0)
output_tokens = usage.get("completion_tokens", 0)
cost = calculate_cost(model, input_tokens, output_tokens)
# Cập nhật Prometheus metrics
REQUEST_COUNT.labels(model=model, status="success", provider="holysheep").inc()
TOKEN_USAGE.labels(model=model, type="input", provider="holysheep").inc(input_tokens)
TOKEN_USAGE.labels(model=model, type="output", provider="holysheep").inc(output_tokens)
COST_TRACKER.labels(model=model, provider="holysheep").set(cost)
span.set_attribute("llm.input_tokens", input_tokens)
span.set_attribute("llm.output_tokens", output_tokens)
span.set_attribute("llm.cost_usd", cost)
span.set_attribute("llm.latency_ms", (time.time() - start_time) * 1000)
return {
"response": data["choices"][0]["message"]["content"],
"usage": usage,
"cost_usd": cost,
"latency_ms": round((time.time() - start_time) * 1000, 2)
}
except Exception as e:
status = "error"
REQUEST_COUNT.labels(model=model, status="error", provider="holysheep").inc()
span.record_exception(e)
raise
finally:
latency = time.time() - start_time
REQUEST_LATENCY.labels(model=model, provider="holysheep").observe(latency)
span.set_attribute("llm.total_latency_seconds", latency)
// Node.js: holysheep-monitor.js
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
const { trace, SpanStatusCode, context } = require('@opentelemetry/api');
const promClient = require('prom-client');
// Khởi tạo Prometheus registry
const register = new promClient.Registry();
promClient.collectDefaultMetrics({ register });
// Định nghĩa metrics
const requestCounter = new promClient.Counter({
name: 'llm_api_requests_total',
help: 'Total LLM API requests',
labelNames: ['model', 'status', 'provider'],
registers: [register]
});
const requestLatency = new promClient.Histogram({
name: 'llm_api_latency_seconds',
help: 'LLM API latency in seconds',
labelNames: ['model', 'provider'],
buckets: [0.1, 0.25, 0.5, 1.0, 2.0, 5.0, 10.0],
registers: [register]
});
const tokenUsage = new promClient.Counter({
name: 'llm_token_usage_total',
help: 'Total tokens used',
labelNames: ['model', 'type', 'provider'],
registers: [register]
});
const costTracker = new promClient.Gauge({
name: 'llm_cost_usd',
help: 'Current cost in USD',
labelNames: ['model', 'provider'],
registers: [register]
});
// Bảng giá HolySheep 2026 (USD per million tokens)
const PRICING = {
'holysheep-gpt4': { input: 0.30, output: 1.20 },
'holysheep-claude': { input: 0.45, output: 2.25 },
'holysheep-gemini': { input: 0.05, output: 0.38 },
'holysheep-deepseek': { input: 0.02, output: 0.06 },
};
function calculateCost(model, inputTokens, outputTokens) {
const pricing = PRICING[model.toLowerCase()];
if (!pricing) return 0;
return (inputTokens / 1_000_000 * pricing.input) +
(outputTokens / 1_000_000 * pricing.output);
}
async function callHolySheep(prompt, model = 'gpt-4', systemPrompt = null) {
const startTime = Date.now();
let status = 'success';
const tracer = trace.getTracer('holysheep-monitor', '1.0.0');
return tracer.startActiveSpan('llm_request', async (span) => {
span.setAttribute('llm.model', model);
span.setAttribute('llm.provider', 'holysheep');
try {
const headers = {
'Authorization': Bearer ${process.env.HOLYSHEEP_API_KEY},
'Content-Type': 'application/json'
};
const messages = [];
if (systemPrompt) {
messages.push({ role: 'system', content: systemPrompt });
}
messages.push({ role: 'user', content: prompt });
const response = await fetch('https://api.holysheep.ai/v1/chat/completions', {
method: 'POST',
headers,
body: JSON.stringify({ model, messages }),
signal: AbortSignal.timeout(60000)
});
if (!response.ok) {
throw new Error(HTTP ${response.status}: ${await response.text()});
}
const data = await response.json();
const { prompt_tokens = 0, completion_tokens = 0 } = data.usage || {};
const cost = calculateCost(model, prompt_tokens, completion_tokens);
const latencyMs = Date.now() - startTime;
// Cập nhật metrics
requestCounter.labels(model, 'success', 'holysheep').inc();
tokenUsage.labels(model, 'input', 'holysheep').inc(prompt_tokens);
tokenUsage.labels(model, 'output', 'holysheep').inc(completion_tokens);
costTracker.labels(model, 'holysheep').set(cost);
span.setAttribute('llm.input_tokens', prompt_tokens);
span.setAttribute('llm.output_tokens', completion_tokens);
span.setAttribute('llm.cost_usd', cost);
span.setAttribute('llm.latency_ms', latencyMs);
return {
response: data.choices[0].message.content,
usage: data.usage,
costUsd: cost,
latencyMs
};
} catch (error) {
status = 'error';
requestCounter.labels(model, 'error', 'holysheep').inc();
span.recordException(error);
span.setStatus({ code: SpanStatusCode.ERROR });
throw error;
} finally {
const latencySeconds = (Date.now() - startTime) / 1000;
requestLatency.labels(model, 'holysheep').observe(latencySeconds);
span.setAttribute('llm.total_latency_seconds', latencySeconds);
span.end();
}
});
}
module.exports = { callHolySheep, register };
Cấu hình Grafana Dashboard cho Cost & Latency Tracking
Sau khi đã thu thập metrics, bước tiếp theo là tạo dashboard Grafana để trực quan hóa dữ liệu. Dưới đây là JSON dashboard template mà tôi sử dụng cho các dự án HolySheep:
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 100},
{"color": "red", "value": 1000}
]
},
"unit": "currencyUSD"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"id": 1,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "8.0.0",
"targets": [
{
"expr": "sum(increase(llm_cost_usd[24h]))",
"legendFormat": "Daily Cost",
"refId": "A"
}
],
"title": "💰 Tổng chi phí API 24h",
"type": "stat"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {"tooltip": false, "viz": false, "legend": false},
"lineInterpolation": "smooth",
"lineWidth": 2,
"pointSize": 5,
"scaleDistribution": {"type": "linear"},
"showPoints": "never",
"spanNulls": true
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 500},
{"color": "red", "value": 2000}
]
},
"unit": "ms"
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"id": 2,
"options": {
"legend": {"displayMode": "list", "placement": "bottom"},
"tooltip": {"mode": "single"}
},
"targets": [
{
"expr": "histogram_quantile(0.50, sum(rate(llm_api_latency_seconds_bucket[5m])) by (le, model)) * 1000",
"legendFormat": "P50 - {{model}}",
"refId": "A"
},
{
"expr": "histogram_quantile(0.95, sum(rate(llm_api_latency_seconds_bucket[5m])) by (le, model)) * 1000",
"legendFormat": "P95 - {{model}}",
"refId": "B"
},
{
"expr": "histogram_quantile(0.99, sum(rate(llm_api_latency_seconds_bucket[5m])) by (le, model)) * 1000",
"legendFormat": "P99 - {{model}}",
"refId": "C"
}
],
"title": "📊 Độ trễ API theo Model (P50/P95/P99)",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
"id": 3,
"options": {
"displayLabels": ["name", "percent"],
"legend": {"displayMode": "list", "placement": "right"},
"pieType": "pie",
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
"tooltip": {"mode": "single"}
},
"targets": [
{
"expr": "sum(increase(llm_token_usage_total[7d])) by (model)",
"legendFormat": "{{model}}",
"refId": "A"
}
],
"title": "🥧 Phân bổ Token theo Model (7 ngày)",
"type": "piechart"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 50},
{"color": "red", "value": 100}
]
},
"unit": "percent"
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
"id": 4,
"options": {
"orientation": "auto",
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"targets": [
{
"expr": "sum(rate(llm_api_requests_total{status='error'}[5m])) / sum(rate(llm_api_requests_total[5m])) * 100",
"legendFormat": "Error Rate",
"refId": "A"
}
],
"title": "⚠️ Tỷ lệ lỗi API (%)",
"type": "gauge"
}
],
"schemaVersion": 27,
"style": "dark",
"tags": ["llm", "monitoring", "holysheep"],
"templating": {"list": []},
"time": {"from": "now-24h", "to": "now"},
"timepicker": {},
"timezone": "browser",
"title": "HolySheep LLM Cost & Latency Dashboard",
"uid": "holysheep-llm-monitor",
"version": 1
}
Cấu hình Alerting Rules cho Cost Control
Một trong những tính năng quan trọng nhất là alerting — tự động thông báo khi chi phí vượt ngưỡng. Dưới đây là Prometheus alerting rules:
# prometheus-alerts.yml
groups:
- name: holysheep_cost_alerts
rules:
# Alert khi chi phí hàng ngày vượt $500
- alert: HighDailyCost
expr: sum(increase(llm_cost_usd[24h])) > 500
for: 5m
labels:
severity: warning
team: backend
annotations:
summary: "Chi phí API LLM cao bất thường"
description: "Chi phí 24h đã đạt ${{ $value }}, vượt ngưỡng $500"
runbook_url: "https://docs.holysheep.ai/runbooks/high-cost"
# Alert khi chi phí hàng ngày vượt $2000 (CRITICAL)
- alert: CriticalDailyCost
expr: sum(increase(llm_cost_usd[24h])) > 2000
for: 5m
labels:
severity: critical
team: backend
annotations:
summary: "⚠️ CRITICAL: Chi phí API vượt kiểm soát!"
description: "Chi phí 24h đạt ${{ $value }} — có thể có bug nghiêm trọng hoặc bị abuse!"
runbook_url: "https://docs.holysheep.ai/runbooks/critical-cost"
# Alert khi latency P95 vượt 5 giây
- alert: HighLatency
expr: histogram_quantile(0.95, sum(rate(llm_api_latency_seconds_bucket[5m])) by (le)) > 5
for: 5m
labels:
severity: warning
team: backend
annotations:
summary: "Độ trễ API cao"
description: "P95 latency đạt {{ $value | humanizeDuration }}, vượt SLA 5s"
# Alert khi tỷ lệ lỗi vượt 5%
- alert: HighErrorRate
expr: |
sum(rate(llm_api_requests_total{status="error"}[5m]))
/
sum(rate(llm_api_requests_total[5m])) > 0.05
for: 5m
labels:
severity: warning
team: backend
annotations:
summary: "Tỷ lệ lỗi API cao"
description: "Error rate đạt {{ $value | humanizePercentage }}"
# Alert khi một model cụ thể có chi phí tăng đột biến 200%
- alert: ModelCostSpike
expr: |
(sum(increase(llm_cost_usd[1h])) by (model)
/
avg(increase(llm_cost_usd[1h])) by (model) over (7d)) > 3
for: 10m
labels:
severity: warning
team: backend
annotations:
summary: "Chi phí model {{ $labels.model }} tăng đột biến"
description: "Chi phí 1h gần đây cao hơn trung bình 7 ngày {{ $value | humanize }} lần"
Hướng dẫn cài đặt Prometheus + Grafana với Docker Compose
Để tiết kiệm thời gian, tôi đã tạo docker-compose.yml hoàn chỉnh cho toàn bộ stack:
version: '3.8'
services:
# OpenTelemetry Collector
otel-collector:
image: otel/opentelemetry-collector-contrib:0.91.0
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
ports:
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
- "8888:8888" # Prometheus metrics exposed by collector
networks:
- monitoring
# Prometheus - Thu thập metrics từ ứng dụng
prometheus:
image: prom/prometheus:v2.48.0
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus-alerts.yml:/etc/prometheus/alerts.yml
- prometheus-data:/prometheus
ports:
- "9090:9090"
networks:
- monitoring
depends_on:
- otel-collector
# Grafana - Dashboard visualization
grafana:
image: grafana/grafana:10.2.2
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=changeme
- GF_USERS_ALLOW_SIGN_UP=false
- GF_INSTALL_PLUGINS=grafana-piechart-panel
volumes:
- grafana-data:/var/lib/grafana
- ./dashboards:/etc/grafana/provisioning/dashboards
- ./datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml
ports:
- "3000:3000"
networks:
- monitoring
depends_on:
- prometheus
# Alertmanager - Xử lý alerts
alertmanager:
image: prom/alertmanager:v0.26.0
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
- alertmanager-data:/alertmanager
ports:
- "9093:9093"
networks:
- monitoring
# Prometheus Push Gateway (cho batch jobs)
pushgateway:
image: prom/pushgateway:v1.6.2
ports:
- "9091:9091"
networks:
- monitoring
networks:
monitoring:
driver: bridge
volumes:
prometheus-data:
grafana-data:
alertmanager-data:
# otel-collector-config.yaml
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
prometheus:
config:
scrape_configs:
- job_name: 'holysheep-api'
static_configs:
- targets: ['host.docker.internal:8000']
metrics_path: /metrics
processors:
batch:
timeout: 10s
send_batch_size: 1024
memory_limiter:
check_interval: 1s
limit_percentage: 75
# Transform để thêm metadata cho cost tracking
transform:
error_mode: ignore
metric_statements:
- context: metric
statements:
- set(description, "LLM API Cost in USD") where name == "llm_cost_usd"
exporters:
prometheus:
endpoint: "0.0.0.0:8888"
namespace: "holysheep"
const_labels:
environment: production
prometheusremotewrite:
endpoint: "http://prometheus:9090/api/v1/write"
tls:
insecure: true
logging:
verbosity: basic
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [logging]
metrics:
receivers: [otlp, prometheus]
processors: [memory_limiter, batch, transform]
exporters: [prometheus, prometheusremotewrite, logging]
logs:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [logging]
Lỗi thường gặp và cách khắc phục
1. Lỗi "Connection refused" khi gửi metrics đến Prometheus
Mô tả: Ứng dụng không thể kết nối đến Prometheus endpoint, thường xảy ra khi chạy Docker trên Mac/Windows với host networking khác.
# Vấn đề: Container không thể truy cập localhost:9090
Error: ConnectionRefusedError: [Errno 111] Connection refused
GIẢI PHÁP:
1. Trên Docker Desktop, sử dụng host.docker.internal thay vì localhost
2. Hoặc thêm vào prometheus.yml:
scrape_configs:
- job_name: 'holysheep-api'
static_configs:
- targets: ['host.docker.internal:8000'] # Thay vì localhost:8000
scrape_interval: 15s
3. Nếu dùng Linux, thêm --network=host vào docker-compose service
4. Kiểm tra firewall không chặn port 9090
Xác minh kết nối:
docker exec prometheus wget -qO- http://host.docker.internal:8000/metrics || \
echo "Kiểm tra lại network configuration"