Skip to main content
Version: v2.x

Troubleshooting Guide for logs

Logs are critical for monitoring, debugging, and ensuring the stability of your Hasura-powered applications. By reviewing logs, you can gain insights into the behavior of your GraphQL API, diagnose errors, and monitor performance trends.

Configuring Logs in Hasura​

To enable logs, you must configure the following environment variable:

HASURA_GRAPHQL_ENABLED_LOG_TYPES

You can find detailed information about different log types supported by Hasura in the Hasura Documentation. Grafana provides a filter that allows you to filter different log types.

traces

Searching Logs in Grafana​

You can perform searches in Grafana using the search bar. Example searches include:

  • OperationName
  • request_id
  • error

Separate Logs for Errors and Successes​

  • For effective troubleshooting, it's recommended to separate error logs and success logs. This makes it easier to pinpoint issues when they arise.
  • You can add custom filters to your log searches for faster identification of issues. Examples include:
    • OperationName
    • Roles

How to Troubleshoot a Query Using Logs​

To troubleshoot a query, focus on the following important attributes:

  • attributes_type
  • body_operation_error_error
  • body_operation_query_operationName
  • body_operation_query_query
  • body_http_info_url
  • body_operation_error_code

Steps to Troubleshoot​

  1. Collect Request ID and Trace ID: These identifiers are crucial for tracking and diagnosing issues.
  2. Check operationName: Look under body_operation_query_operationName and, if enabled, check body_operation_query_query for the GraphQL query.
  3. Check Database Queries: You can find database query details in the trace logs.

Issues with Loki?​

If you're encountering issues with Loki, consider the following configuration suggestions:

  • Suggested Configuration: Ensure that your Loki configuration aligns with your system's requirements and optimizations. More details are available in the Loki Documentation.

Sample Loki Queries​

  • Filter by error messages:
    {service_name="hasura"} |= "error"
  • Filter by validation errors:
    {service_name="hasura"} |= "validation-failed"

Examples​

Check out the enterprise observability boilerplate.