

# History Server

Flink has a history server that can be used to query the statistics of completed jobs after the corresponding Flink cluster has been shut down.

Furthermore, it exposes a REST API that accepts HTTP requests and responds with JSON data.

## Overview

The HistoryServer allows you to query the status and statistics of completed jobs that have been archived by a JobManager.

After you have configured the HistoryServer _and_ JobManager, you start and stop the HistoryServer via its corresponding startup script:



```
# Start or stop the HistoryServer
bin/historyserver.sh (start|start-foreground|stop)
```



By default, this server binds to `localhost` and listens at port `8082`.

Currently, you can only run it as a standalone process.

## Configuration

The configuration keys `jobmanager.archive.fs.dir` and `historyserver.archive.fs.refresh-interval` need to be adjusted for archiving and displaying archived jobs.

**JobManager**

The archiving of completed jobs happens on the JobManager, which uploads the archived job information to a file system directory. You can configure the directory to archive completed jobs in `flink-conf.yaml` by setting a directory via `jobmanager.archive.fs.dir`.



```
# Directory to upload completed job information
jobmanager.archive.fs.dir: hdfs:///completed-jobs
```



**HistoryServer**

The HistoryServer can be configured to monitor a comma-separated list of directories in via `historyserver.archive.fs.dir`. The configured directories are regularly polled for new archives; the polling interval can be configured via `historyserver.archive.fs.refresh-interval`.



```
# Monitor the following directories for completed jobs
historyserver.archive.fs.dir: hdfs:///completed-jobs

# Refresh every 10 seconds
historyserver.archive.fs.refresh-interval: 10000
```



The contained archives are downloaded and cached in the local filesystem. The local directory for this is configured via `historyserver.web.tmpdir`.

Check out the configuration page for a [complete list of configuration options](//ci.apache.org/projects/flink/flink-docs-release-1.7/ops/config.html#history-server).

## Available Requests

Below is a list of available requests, with a sample JSON response. All requests are of the sample form `http://hostname:8082/jobs`, below we list only the _path_ part of the URLs.

Values in angle brackets are variables, for example `http://hostname:port/jobs/&lt;jobid&gt;/exceptions` will have to requested for example as `http://hostname:port/jobs/7684be6004e4e955c2a558a9bc463f65/exceptions`.

*   `/config`
*   `/jobs/overview`
*   `/jobs/&lt;jobid&gt;`
*   `/jobs/&lt;jobid&gt;/vertices`
*   `/jobs/&lt;jobid&gt;/config`
*   `/jobs/&lt;jobid&gt;/exceptions`
*   `/jobs/&lt;jobid&gt;/accumulators`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/subtasktimes`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/taskmanagers`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/accumulators`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/subtasks/accumulators`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/subtasks/&lt;subtasknum&gt;`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/subtasks/&lt;subtasknum&gt;/attempts/&lt;attempt&gt;`
*   `/jobs/&lt;jobid&gt;/vertices/&lt;vertexid&gt;/subtasks/&lt;subtasknum&gt;/attempts/&lt;attempt&gt;/accumulators`
*   `/jobs/&lt;jobid&gt;/plan`

