Using the R2R Health Check Endpoint

The health check endpoint in R2R provides a quick and easy way to verify the status of your R2R deployment. This guide will walk you through how to use this endpoint, interpret its results, and integrate it into your monitoring systems.

1. Understanding the Health Check Endpoint

The health check endpoint is a specific URL that, when accessed, returns information about the current state of the R2R system. It typically checks various components and dependencies to ensure everything is functioning correctly.

2. Accessing the Health Check Endpoint

The health check endpoint is usually available at /v2/health. Here are different ways to access it:

2.1 Using cURL

You can use cURL to make a GET request to the health check endpoint:

curl http://localhost:7272/v2/health

2.2 Using a Web Browser

If your R2R instance is accessible via a web browser, you can simply navigate to:

http://localhost:7272/v2/health

Replace localhost:7272 with the appropriate host and port if your setup is different.

2.3 Using the R2R CLI

R2R provides a CLI command to check the health of the system:

r2r health

2.4 Using the Python Client

If you’re using the R2R Python client:

from r2r import R2R

client = R2R()
health_status = client.health()
print(health_status)

3. Interpreting Health Check Results

The health check endpoint typically returns a JSON response. Here’s an example of what it might look like:

{
  "status": "healthy",
  "version": "3.1.22",
  "components": {
    "database": {
      "status": "healthy",
      "message": "Connected to database successfully"
    },
    "vector_store": {
      "status": "healthy",
      "message": "Vector store is operational"
    },
    "llm_service": {
      "status": "healthy",
      "message": "LLM service is responding"
    }
  },
  "timestamp": "2024-09-11T15:30:45Z"
}

Key elements to look for:

  • Overall status: Should be “healthy” if everything is okay.
  • version: Indicates the current version of R2R.
  • components: Shows the status of individual components.
  • timestamp: When the health check was performed.

4. Common Issues and Troubleshooting

If the health check returns a non-healthy status, here are some common issues and how to address them:

4.1 Database Connection Issues

If the database component shows as unhealthy:

  • Check database credentials in your R2R configuration.
  • Ensure the database server is running and accessible.
  • Verify network connectivity between R2R and the database.

4.2 Vector Store Problems

For vector store issues:

  • Check if the vector store service (e.g., Postgres with pgvector) is running.
  • Verify the vector store configuration in R2R settings.

4.3 LLM Service Not Responding

If the LLM service is unhealthy:

  • Check your API key for the LLM service (e.g., OpenAI API key).
  • Ensure you have internet connectivity if using a cloud-based LLM.
  • Verify the LLM service endpoint in your configuration.

5. Integrating Health Checks into Monitoring Systems

To ensure continuous monitoring of your R2R deployment:

5.1 Prometheus Integration

If you’re using Prometheus for monitoring:

  1. Set up a Prometheus exporter that periodically calls the health check endpoint.
  2. Configure Prometheus to scrape metrics from this exporter.
  3. Set up alerts for when the health status is not “healthy”.

5.2 Kubernetes Liveness Probe

If deploying R2R in Kubernetes, use the health check as a liveness probe:

livenessProbe:
  httpGet:
    path: /v2/health
    port: 7272
  initialDelaySeconds: 30
  periodSeconds: 10

5.3 AWS CloudWatch

For AWS deployments:

  1. Create a CloudWatch synthetic canary that periodically calls the health check endpoint.
  2. Set up CloudWatch alarms based on the canary’s results.

6. Best Practices

  1. Regular Checks: Perform health checks at regular intervals (e.g., every 5 minutes).
  2. Alerting: Set up alerts for when the health check fails consistently.
  3. Logging: Log health check results for historical analysis.
  4. Trend Analysis: Monitor trends in response times of the health check endpoint.
  5. Comprehensive Checks: Ensure your health check covers all critical components of your R2R deployment.

7. Advanced Health Check Customization

R2R allows for customization of the health check endpoint. You can add custom checks or modify existing ones by editing the health check configuration. Refer to the R2R documentation for detailed instructions on how to customize health checks for your specific deployment needs.

Conclusion

The health check endpoint is a crucial tool for maintaining the reliability and performance of your R2R deployment. By regularly utilizing this endpoint and integrating it into your monitoring systems, you can ensure quick detection and resolution of any issues that may arise in your R2R system.

For more detailed information on R2R’s features and advanced configurations, refer to the official R2R documentation or join the R2R Discord community for support and discussions.