Перейти к основному содержанию

Параметры

Этот метод не принимает никаких параметров.

Ответ

result
string
Одно из следующих значений статуса:
  • "ok": Узел работает исправно и актуален
  • "behind": Узел отстаёт на некоторое количество слотов
  • "unknown": Работоспособность узла не может быть определена

Примеры кода

Базовый запрос

curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getHealth"
}'

Альтернативный HTTP GET запрос

curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY/health

Использование web3.js

import { Connection } from '@solana/web3.js';

const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');

const health = await connection.getHealth();
console.log('Node health:', health);

// Example: Check if node is healthy
const isHealthy = health === 'ok';
if (!isHealthy) {
  console.warn('Node is not healthy:', health);
}

Примечания

  1. Этот метод обычно используется для проверки работоспособности балансировщиков нагрузки
  2. HTTP GET эндпоинт /health предоставляет ту же информацию
  3. Узел считается “отстающим”, если он отстаёт более чем на HEALTH_CHECK_SLOT_DISTANCE слотов от последнего слота кластера
  4. Статус “unknown” обычно указывает на то, что узел выполняет начальную загрузку или имеет проблемы

Лучшие практики

  1. Используйте этот эндпоинт для базового мониторинга работоспособности
  2. Реализуйте прерыватели цепи на основе статуса работоспособности
  3. Рассмотрите использование более детализированных методов для конкретных метрик работоспособности:
    • getVersion для версии программного обеспечения
    • getSlot для прогресса слота
    • getBlockHeight для высоты блока
  4. Устанавливайте подходящие тайм-ауты для проверок работоспособности
  5. Обрабатывайте все возможные значения ответа

Распространённые ошибки

КодСообщениеРешение
-32601Method not foundУбедитесь, что вы подключены к узлу Solana RPC
-32603Internal errorУзел может испытывать проблемы
503Service UnavailableУзел не готов обрабатывать запросы

Примеры использования

  1. Конфигурация балансировщика нагрузки
    location /health {
      proxy_pass http://backend;
      proxy_next_upstream error timeout http_503;
    }
    
  2. Мониторинг работоспособности
    async function monitorHealth(endpoint: string) {
      const connection = new Connection(endpoint);
      try {
        const health = await connection.getHealth();
        if (health !== 'ok') {
          alertNodeUnhealthy(endpoint, health);
        }
      } catch (error) {
        alertNodeError(endpoint, error);
      }
    }
    
  3. Балансировка нагрузки на стороне клиента
    async function getHealthyEndpoint(endpoints: string[]) {
      for (const endpoint of endpoints) {
        const connection = new Connection(endpoint);
        try {
          const health = await connection.getHealth();
          if (health === 'ok') {
            return endpoint;
          }
        } catch (error) {
          continue;
        }
      }
      throw new Error('No healthy endpoints available');
    }
    
  4. Панель мониторинга системы
    interface NodeStatus {
      endpoint: string;
      health: string;
      lastChecked: Date;
    }
    
    async function updateDashboard(nodes: NodeStatus[]) {
      for (const node of nodes) {
        const connection = new Connection(node.endpoint);
        try {
          node.health = await connection.getHealth();
        } catch (error) {
          node.health = 'error';
        }
        node.lastChecked = new Date();
      }
      renderDashboard(nodes);
    }