> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
> Use this file to discover all available pages before exploring further.

# getHealth

> Возвращает текущий статус работоспособности узла

## Параметры

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

## Ответ

<ResponseField name="result" type="string">
  Одно из следующих значений статуса:

  * `"ok"`: Узел работает исправно и актуален
  * `"behind"`: Узел отстаёт на некоторое количество слотов
  * `"unknown"`: Работоспособность узла не может быть определена
</ResponseField>

## Примеры кода

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

```bash theme={null}
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 запрос

```bash theme={null}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY/health
```

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

```typescript theme={null}
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. Обрабатывайте все возможные значения ответа

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

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

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

1. **Конфигурация балансировщика нагрузки**
   ```nginx theme={null}
   location /health {
     proxy_pass http://backend;
     proxy_next_upstream error timeout http_503;
   }
   ```

2. **Мониторинг работоспособности**
   ```typescript theme={null}
   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. **Балансировка нагрузки на стороне клиента**
   ```typescript theme={null}
   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. **Панель мониторинга системы**
   ```typescript theme={null}
   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);
   }
   ```
