Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill metrics명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | metrics |
| description | System metrics collection and analysis |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"developer, devops-engineer, sre","category":"devops"} |
| Type | Description | Examples |
|---|---|---|
| Counter | Monotonically increasing | requests_total, errors_total |
| Gauge | Point-in-time value | cpu_usage, memory_used |
| Histogram | Distribution of values | request_duration, response_size |
| Summary | Quantiles and sum | request_latency |
from prometheus_client import Counter, Gauge, Histogram, Summary
# Counter - monotonically increasing
http_requests_total = Counter(
'http_requests_total',
'Total HTTP requests',
['method', 'endpoint', 'status']
)
# Gauge - current value
cpu_usage = Gauge(
'cpu_usage_percent',
'CPU usage percentage',
['instance']
)
# Histogram - distribution
request_duration = Histogram(
'http_request_duration_seconds',
'HTTP request duration in seconds',
['method', 'endpoint'],
buckets=[0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0]
)
# Summary - quantiles
response_size = Summary(
'http_response_size_bytes',
'Response size in bytes',
['endpoint'],
quantiles=[0.5, 0.9, 0.99]
)
# Using metrics
@app.route('/api/users')
def get_users():
start = time.time()
users = fetch_users()
http_requests_total.labels(method='GET', endpoint='/api/users', status='200').inc()
request_duration.labels(method='GET', endpoint='/api/users').observe(time.time() - start)
users
# Business metrics
class BusinessMetrics:
def __init__(self):
self.orders_placed = Counter('orders_placed_total', 'Total orders')
self.order_value = Histogram('order_value_dollars', 'Order value')
self.active_users = Gauge('active_users', 'Active users')
self.checkout_duration = Histogram('checkout_duration_seconds', 'Checkout duration')
def record_order(self, order):
self.orders_placed.inc()
self.order_value.observe(order.total)
def set_active_users(self, count):
self.active_users.set(count)
def record_checkout(self, duration):
self.checkout_duration.observe(duration)
{
"title": "Service Metrics",
"panels": [
{
"title": "Request Rate",
"type": "graph",
"targets": [
{
"expr": "sum(rate(http_requests_total[5m])) by (service)",
"legendFormat": "{{service}}"
}
]
},
{
"title": "Error Rate",
"type": "graph",
"targets": [
{
"expr": "sum(rate(http_requests_total{status=~\"5..\"}[5m])) by (service) / sum(rate(http_requests_total[5m])) by (service) * 100",
"legendFormat": "{{service}} %"
}
]
# Good: Meaningful labels
http_requests = Counter(
'http_requests_total',
'Total HTTP requests',
['method', 'path', 'status'] # Specific labels
)
# Avoid: High cardinality labels
http_requests_bad = Counter(
'http_requests_total',
'Total HTTP requests',
['user_id', 'session_id'] # Too many unique values
)
# Cardinality guidelines
# - Static values: OK
# - Known set (status codes): OK
# - User IDs, timestamps: Avoid
# - URL paths (with limits): Use recording rules
groups:
- name: service_aggregation
interval: 30s
rules:
# Aggregate HTTP metrics
- record: service:http_requests:rate5m
expr: sum(rate(http_requests_total[5m])) by (service, status)
- record: service:http_errors:rate5m
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)
- record: service:http_latency:p99
expr: histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))
- record: service:cpu_usage:avg
expr: avg(node_cpu_usage_seconds_total) by (service)
# Node Exporter
node_exporter:
enabled: true
# Blackbox Exporter
blackbox_exporter:
enabled: true
modules:
http_2xx:
prober: http
timeout: 5s
# AWS CloudWatch Exporter
cloudwatch:
region: us-east-1
period: 60
metrics:
- name: CPUUtilization
statistics:
- Average
dimensions:
- name: InstanceId
value: ${AWS::InstanceId}