Skip to main content

معلومات المصدر

المستودع
ffsshhttiikk/opencode-agents-skills
آخر نشاط في المصدر
٢٨ فبراير ٢٠٢٦ في ٢٢:٥٢
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣
التفرعات
٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
metrics
description
System metrics collection and analysis
license
MIT
compatibility
opencode
metadata
{"audience":"developer, devops-engineer, sre","category":"devops"}
## What I do - Design and implement metrics collection systems - Create custom metrics for applications - Build dashboards and visualizations - Configure alerting based on metrics - Analyze trends and anomalies - Implement SLI measurements ## When to use me - When building observability systems - When monitoring application health - When setting up alerting - When measuring SLAs and SLOs - When analyzing performance - When creating operational dashboards ## Key Concepts ### Metric Types | 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 | ### Prometheus Metrics ```python 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) return users ``` ### Custom Metrics ```python # 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) ``` ### Grafana Dashboard ```json { "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}} %" } ] }, { "title": "P99 Latency", "type": "graph", "targets": [ { "expr": "histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service)) * 1000", "legendFormat": "p99 {{service}}" } ] }, { "title": "Saturation", "type": "gauge", "targets": [ { "expr": "container_memory_usage_bytes / container_spec_memory_limit_bytes * 100", "legendFormat": "Memory" } ] } ] } ``` ### Metric Labeling Best Practices ```python # 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 ``` ### Recording Rules ```yaml 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) ``` ### Metrics Exporters ```yaml # 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} ``` ### Key Metrics Categories - **Red Metrics**: Rate, Errors, Duration - **Golden Signals**: Latency, Traffic, Errors, Saturation - **USE Method**: Utilization, Saturation, Errors - **DORA**: Deployment Frequency, Lead Time, MTTR, Change Failure Rate - **Business Metrics**: Revenue, Conversion, Active Users
عرض على GitHub