prometheus
Prometheus monitoring system for collecting and querying time-series metrics
معلومات المصدر
- المستودع
- ffsshhttiikk/opencode-agents-skills
- آخر نشاط في المصدر
- ٢٨ فبراير ٢٠٢٦ في ٢٢:٥٣
- لغة SKILL.md المكتشفة
- الإنجليزية
- النجوم
- ٣
- التفرعات
- ٢
خيارات التثبيت
يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.
مراجعة ملفات المصدر
اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.
عرض SKILL.md
SKILL.md
تعليمات المصدر · معاينة للقراءة فقط- name
- prometheus
- description
- Prometheus monitoring system for collecting and querying time-series metrics
- license
- MIT
- compatibility
- opencode
- metadata
- {"audience":"devops","category":"monitoring"}
## What I do
- Set up Prometheus metrics collection
- Write PromQL queries
- Configure alerting rules
- Use client libraries
- Set up service discovery
- Create Grafana dashboards
- Handle metric cardinality
## When to use me
When monitoring applications and infrastructure metrics.
## Configuration
```yaml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'myapp'
metrics_path: '/metrics'
static_configs:
- targets: ['app:8080']
```
## Metrics Types
```go
import "github.com/prometheus/client_golang/prometheus"
var (
// Counter - only increases
requestsTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total HTTP requests",
},
[]string{"method", "status"},
)
// Gauge - can go up and down
temperature = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "room_temperature_celsius",
Help: "Current room temperature",
},
)
// Histogram - distributions
requestDuration = prometheus.NewHistogram(
prometheus.HistogramOpts{
Name: "http_request_duration_seconds",
Buckets: []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5},
},
)
// Summary - percentiles
responseSize = prometheus.NewSummary(
prometheus.SummaryOpts{
Name: "http_response_size_bytes",
Objectives: map[float64]float64{0.5: 0.05, 0.95: 0.05, 0.99: 0.01},
},
)
)
func init() {
prometheus.MustRegister(requestsTotal, temperature, requestDuration)
}
```
## PromQL Queries
```promql
# Rate - per second increase
rate(http_requests_total[5m])
# Increase over time window
increase(http_requests_total[1h])
# Average over time
avg(http_request_duration_seconds)
# Percentiles
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
# Count over time
count(http_requests_total{status="200"})
# Sum by label
sum by (method) (http_requests_total)
# Top queries
topk(10, http_requests_total)
# Subqueries
max_over_time(http_requests_total[1h:5m])
```
## Alerting Rules
```yaml
groups:
- name: example
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "High error rate on {{ $labels.method }}"
- alert: InstanceDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Instance {{ $labels.instance }} down"
```
## Python Client
```python
from prometheus_client import Counter, Gauge, Histogram, start_http_server
REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP requests', ['method', 'status'])
ACTIVE_USERS = Gauge('active_users', 'Number of active users')
REQUEST_LATENCY = Histogram('http_request_latency_seconds', 'Request latency')
@app.route('/api')
def handle_request():
with REQUEST_LATENCY.time():
# process request
REQUEST_COUNT.labels(method='GET', status='200').inc()
return 'OK'
if __name__ == '__main__':
start_http_server(8000)
```
عرض على GitHub