Saltar al contenido principal

Monitoreo

Si ejecutas Stellar RPC con el --admin-endpoint configurado y expones el puerto, tendrás acceso a las métricas de Prometheus a través del endpoint /metrics. Por ejemplo, si el admin endpoint es 0.0.0.0:8001 y estás ejecutando la imagen Docker de Stellar RPC:

curl localhost:8001/metrics

Verás muchas de las métricas predeterminadas de Go y Process (prefijadas por go_ y process_ respectivamente) como uso de memoria, uso de CPU, número de hilos, etc.

También exponemos métricas relacionadas con Stellar RPC (prefijadas por soroban_rpc). Hay muchas, pero algunas notables son:

  • soroban_rpc_transactions_count - conteo de transacciones ingeridas con una ventana dinámica de 10m
  • soroban_rpc_events_count - conteo de eventos ingeridos con una ventana dinámica de 10m
  • soroban_rpc_ingest_local_latest_ledger - último ledger ingerido
  • soroban_rpc_db_round_trip_time_seconds - tiempo requerido para ejecutar la consulta SELECT 1 en la BASE DE DATOS

Stellar RPC también proporciona registro en consola para:

  • Actividad de inicio
  • Ingerir, aplicar y cerrar ledgers
  • Manejar solicitudes JSON RPC
  • Cualquier error

Los registros tienen el formato:

time=<timestamp in YYYY-MM-DDTHH:MM:SS.000Z format> level=<debug|info|error> msg=<Actual message> pid=<process ID> subservice=<optional if coming from subservice>

Dashboard de Grafana

Proporcionamos un dashboard de Grafana con diferentes métricas para monitorear tu instancia de RPC.

Verificar la instancia de RPC

Después de la instalación, valdrá la pena verificar que la instalación de Stellar RPC esté saludable. Hay dos métodos:

  1. Accede al endpoint de estado de salud del servicio JSON RPC usando un cliente HTTP
  2. Usa nuestra imagen Docker de prueba del sistema como herramienta para ejecutar un conjunto de pruebas en vivo contra Stellar RPC

Endpoint de estado de salud

Si envías una solicitud HTTP JSON RPC a tu instancia de Stellar RPC en ejecución:

curl --location 'http://localhost:8000' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":2,
"method":"getHealth"
}'

Deberías recibir una respuesta de estado HTTP 200 si la instancia está saludable:

{
"jsonrpc": "2.0",
"id": 2,
"result": {
"status": "healthy"
}
}

Imagen Docker de prueba del sistema

Esta prueba compilará, desplegará e invocará contratos de ejemplo a la red a la que tu instancia de RPC está conectada. Aquí hay un ejemplo para verificar tu instancia si está conectada a Testnet:

# checkout https://github.com/stellar/system-test repo first, and build the image locally with release component versions
system-test$ make \
CORE_IMAGE=stellar/stellar-core:22 \
CORE_IMAGE_BIN_PATH=/usr/bin/stellar-core \
SOROBAN_RPC_GIT_REF=https://github.com/stellar/soroban-rpc.git#v22.1.2 \
SOROBAN_CLI_GIT_REF=https://github.com/stellar/soroban-cli.git#v22.2.0 \
RS_XDR_GIT_REF=v22.1.0 \
JS_STELLAR_SDK_NPM_VERSION=13.1.0 \
build
# run the local system test image
$ docker run --rm -t --name e2e_test \
stellar/system-test:dev \
--VerboseOutput true \
--TargetNetworkRPCURL <your rpc url here> \
--TargetNetworkPassphrase "Test SDF Network ; September 2015" \
--TargetNetworkTestAccountSecret <your test account StrKey encoded key here > \
--TargetNetworkTestAccountPublic <your test account StrKey encoded pubkey here> \

Asegúrate de configurar correctamente la prueba del sistema:

  • Establece --TargetNetworkRPCURL en tu URL HTTP RPC
  • Establece --TargetNetworkPassphrase en la misma red a la que está conectada tu instancia de RPC:
  • "Test SDF Network ; Septiembre 2015" para Testnet
  • "Test SDF Future Network ; Octubre 2022" para Futurenet
  • Establece --SorobanExamplesGitHash en la etiqueta de lanzamiento correspondiente en el repositorio de Ejemplos de Soroban
  • Crea y financia una cuenta que se utilizará para propósitos de prueba en la misma red a la que está conectada tu instancia de RPC
  • Esta cuenta necesita un pequeño saldo de XLM para enviar transacciones Soroban
  • Las pruebas se pueden realizar repetidamente con la misma cuenta
  • Establece --TargetNetworkTestAccountPublic en la clave pública codificada StrKey de la cuenta
  • Establece --TargetNetworkTestAccountSecret en el secreto codificado StrKey para la cuenta