İzleme
Prometheus metrikleri, içe aktarmaya hazır bir Grafana gösterge paneli, operatörü "çağırmayı" gerektiren dört koşul için uyarı kuralları, yapılandırılmış günlük iletimi ve Kubernetes probe'ları ile harici çalışma süresi izleyicileri için bir sağlık kontrolü uç noktası.
Genel bakış
Solidus Node, aynı RPC portu (varsayılan 9652) üzerinde, /metrics yolu altında Prometheus uyumlu bir metrik uç noktası sunar. v0.1.0+ sürümlerinde varsayılan olarak etkindir; aşağıdaki yapılandırma bloğunu kontrol edin.
[telemetry] prometheus_enabled = true prometheus_path = "/metrics" log_format = "json" # required for log forwarders (Loki, ES, Datadog) log_level = "info"
/metrics uç noktası yalnızca 127.0.0.1 adresine bağlanır. Başka bir hosttan erişmek için SSH tüneli veya özel bir ağ üzerinden scrape yapan bir Prometheus örneği kullanın.Prometheus metrikleri
5 alt sistem genelinde 12 metrik serisi sunulur. İhtiyacınızı bulmak için aşağıdan filtreleyin.
| Metrik | Tür | Örnek değer |
|---|---|---|
düğümsolidus_block_height Bu düğümün gördüğü mevcut blok yüksekliği. | gauge | 4827392 |
p2psolidus_peer_count Şu anda bağlı olan eş sayısı. | gauge | 47 |
düğümsolidus_uptime_seconds Düğüm sürecinin başlamasından bu yana geçen saniye. Yeniden başlatıldığında sıfırlanır. | counter | 1842301 |
düğümsolidus_rss_bytes Resident set size (RSS) — bayt cinsinden süreç bellek tüketimi. | gauge | 1342177280 |
konsensüssolidus_consensus_blocks_produced_total Bu doğrulayıcının önerici olarak ürettiği blok sayısı. | counter | 14287 |
konsensüssolidus_consensus_blocks_missed_total Bu doğrulayıcının önerici seçildiği ama üretemediği blok sayısı. | counter | 3 |
konsensüssolidus_consensus_view_changes_total Bu düğümün gözlemlediği görünüm değişikliği sayısı (BFT zaman aşımı yükselmeleri). | counter | 142 |
doğrulayıcısolidus_validator_reputation Bu doğrulayıcı DID'i için 0-1000 arası itibar puanı. | gauge | 847 |
doğrulayıcısolidus_validator_violation_points Mevcut ihlal puanı sayısı 0-3. Eşik = 3, kesintiyi tetikler. | gauge | 0 |
p2psolidus_p2p_bandwidth_in_bytes Bayt cinsinden birikimli gelen eş trafiği. | counter | 8847291002 |
p2psolidus_p2p_bandwidth_out_bytes Bayt cinsinden birikimli giden eş trafiği. | counter | 6219384172 |
depolamasolidus_storage_disk_used_bytes Solidus veri dizini tarafından tüketilen disk alanı. | gauge | 699035811840 |
Prometheus sunucunuz için scrape yapılandırması:
scrape_configs:
- job_name: 'solidus-node'
scrape_interval: 15s
static_configs:
- targets: ['localhost:9652']
labels:
environment: 'mainnet'
tier: 'subnet'Grafana gösterge paneli
Önceden hazırlanmış bir Grafana gösterge paneli JSON'u her sürümle birlikte gelir. Operatör gösterge panelinin genel bakış ekranını birebir yansıtır — aynı paneller, aynı renk paleti — böylece iki arayüz aynı ürünmüş gibi hissettirir.
4,827,392
47
1.24 GB
1,247
99.97%
0 / 3
Solidus Node Gösterge Paneli
12 panel · herhangi bir Grafana 9+ örneğiyle çalışır
İçe aktarmak için:
- 1Grafana'da Dashboards → Import menüsünü açın.
- 2
solidus-node-dashboard.jsondosyasını yükleyin veya içeriğini yapıştırın. - 3Açılır menüden Prometheus veri kaynağınızı seçin.
- 4Import'a tıklayın. Paneller bir scrape aralığı içinde dolar.
Uyarı kuralları
Bunları Prometheus alertmanager yapılandırmanıza ekleyin. Operatörü uyandırmaya değer dört koşulu kapsarlar — bunların dışındaki her şey günlük özete düşmelidir.
groups:
- name: solidus-node-critical
rules:
- alert: NodeDown
expr: up{job="solidus-node"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Solidus node {{ $labels.instance }} is down"
- alert: LowPeerCount
expr: solidus_peer_count < 3
for: 5m
labels:
severity: warning
annotations:
summary: "Low peer count: {{ $value }} (expected >= 3)"
- alert: DiskCritical
expr: (solidus_storage_disk_used_bytes
/ node_filesystem_size_bytes{mountpoint="/var/lib/solidus"})
> 0.90
for: 10m
labels:
severity: critical
annotations:
summary: "Disk usage > 90% on {{ $labels.instance }}"
- alert: SyncStalled
expr: rate(solidus_block_height[5m]) == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Block height has not advanced for 5 minutes"Neden bu dördü?
Günlük iletimi
Yapılandırmanızda log_format = "json" ayarıyla, her günlük satırı tek bir JSON nesnesidir. Loki, Elasticsearch, Datadog veya JSON ayrıştıran başka herhangi bir yere iletin.
JSON günlük satırı biçimi
{
"ts": "2026-03-17T09:41:22.487Z",
"level": "INFO",
"component": "consensus",
"msg": "Block finalized",
"fields": {
"block_height": 4827392,
"tx_count": 247,
"latency_ms": 1832,
"proposer": "did:sol:b3d1f8c4a7f2"
}
}Loki / Promtail
scrape_configs:
- job_name: solidus-node
journal:
max_age: 12h
labels:
job: solidus-node
relabel_configs:
- source_labels: ['__journal__systemd_unit']
regex: 'solidus-node.service'
action: keep
pipeline_stages:
- json:
expressions:
level: level
component: component
- labels:
level:
component:Elasticsearch / Filebeat
filebeat.inputs:
- type: journald
id: solidus-node
include_matches.match:
- _SYSTEMD_UNIT=solidus-node.service
processors:
- decode_json_fields:
fields: ["message"]
target: "solidus"
overwrite_keys: true
output.elasticsearch:
hosts: ["https://es.example.internal:9200"]
index: "solidus-node-%{+yyyy.MM.dd}"Sağlık kontrolleri
RPC portu üzerinde özel bir /health uç noktası, düğüm sağlığını Kubernetes probe'larına uygun bir biçimde raporlar. Durum kodları hazır olma (readiness) kararını yönlendirir; gövde ise insan gözü içindir.
# Manuel kontrol curl -s http://127.0.0.1:9652/health | jq # Sağlıklı → 200 # Senkronize oluyor → 503 (henüz trafik yönlendirmeyin) # Bozulmuş → 200 (hâlâ işlevsel, ama işaretlenmiş) # Kritik → 503
Örnek yanıt — sağlıklı
{
"status": "healthy",
"block_height": 4827392,
"sync_lag": 0,
"peer_count": 47,
"uptime_seconds": 1842301,
"violation_points": 0,
"checks": {
"consensus": "ok",
"p2p": "ok",
"storage": "ok",
"validator": "ok"
}
}Kubernetes probe'ları
livenessProbe:
httpGet:
path: /health
port: 9652
initialDelaySeconds: 30
periodSeconds: 30
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 9652
initialDelaySeconds: 60
periodSeconds: 10
failureThreshold: 2 # 503 during sync is normal — give it roomSenkronizasyon sırasında 503'te yeniden başlatmayın
syncing (HTTP 503) raporlar. Liveness probe'unda initialDelaySeconds değerini cömertçe ayarlayın — senkronizasyon ortasında yeniden başlatmak, yetişme çalışmasını boşa harcar.
