Join us from October 8-10 in New York City to learn the latest tips, trends, and news about GraphQL federation and API platform engineering.Join us for GraphQL Summit 2024 in NYC
Start for Free
Apollo Server 2 is officially end-of-life as of 22 October 2023. Learn more about upgrading.

Health checks

Determining the health status of the Apollo Server

Health checks are often used by load balancers to determine if a server is available and ready to start serving traffic. By default, provides a health check endpoint at /.well-known/apollo/server-health which returns a 200 status code if the server has started.

This basic health check may not be comprehensive enough for some applications and depending on individual circumstances, it may be beneficial to provide a more thorough implementation by defining an onHealthCheck function to the ApolloServer constructor options. If defined, this onHealthCheck function should return a Promise which rejects if there is an error, or resolves if the server is deemed ready. A Promise rejection will result in an HTTP status code of 503, and a resolution will result in an HTTP status code of 200, which is generally desired by most health-check tooling (e.g. Kubernetes, AWS, etc.).

Note: Alternatively, the onHealthCheck can be defined as an async function which throws if it encounters an error and returns when conditions are considered normal.

const { ApolloServer, gql } = require('apollo-server');
// Undefined for brevity.
const typeDefs = gql``;
const resolvers = {};
const server = new ApolloServer({
onHealthCheck: () => {
return new Promise((resolve, reject) => {
// Replace the `true` in this conditional with more specific checks!
if (true) {
} else {
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
`Try your health check at: ${url}.well-known/apollo/server-health`,
Metrics and logging
Rate articleRateEdit on GitHubEditForumsDiscord

© 2024 Apollo Graph Inc.

Privacy Policy