Heartbeat is a lightweight shipping agent used to monitor the health of services running on the host. The results can then be shipped to one or more destinations, including Logstash.

Install

  Package managers Apt/Yum users can install from official repositories.

deb (Debian/Ubuntu)

curl -L -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-oss-6.4.0-amd64.deb 
sudo dpkg -i heartbeat-oss-6.4.0-amd64.deb

rpm (Redhat/Centos/Fedora)

curl -L -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-oss-6.4.0-x86_64.rpm 
sudo rpm -vi heartbeat-oss-6.4.0-x86_64.rpm

macOS

curl -L -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-oss-6.4.0-darwin-x86_64.tar.gz 
tar xzvf heartbeat-oss-6.4.0-darwin-x86_64.tar.gz

Windows y

  • Download the Heartbeat Windows zip file from the official downloads page.

  • Extract the contents of the zip file into C:\Program Files.

  • Rename the heartbeat-<version>-windows directory to Heartbeat.

  • Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select Run As Administrator). If you are running Windows XP, you may need to download and install PowerShell.

  • Run the following commands to install Heartbeat as a Windows service:

    PS > cd 'C:\Program Files\Heartbeat'
    PS C:\Program Files\Heartbeat> .\install-service-heartbeat.ps1`
    
      If script execution is disabled on your system, you need to set the execution policy for the current session to allow the script to run. For example: PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-heartbeat.ps1.
  My OS isn't here! Don't see your system? Check out the official downloads page for more options (including 32-bit versions).

Locate the configuration file

deb/rpm /etc/heartbeat/heartbeat.yml
mac/win <EXTRACTED_ARCHIVE>/heartbeat.yml

Configure the monitors

The following example shows a basic configuration for each of the three different types of monitors, ICMP, TCP, and HTTP.

heartbeat.monitors:
- type: icmp
  schedule: '*/5 * * * * * *'
  hosts: ["myhost"]
- type: tcp
  schedule: '@every 5s'
  hosts: ["myhost:7"]  # default TCP Echo Protocol
  check.send: "Check"
  check.receive: "Check"
- type: http
  schedule: '@every 5s'
  urls: ["http://localhost:80/service/status"]
  check.response.status: 200
heartbeat.scheduler:
  limit: 10
  There's also a full example configuration file called heartbeat.reference.yml that shows all the possible options.

Configure output

We'll be shipping to Logstash so that we have the option to run filters before the data is indexed.
Comment out the elasticsearch output block.

## Comment out elasticsearch output
#output.elasticsearch:
#  hosts: ["localhost:9200"]

Uncomment and change the logstash output to match below.

output.logstash:
    hosts: ["your-logstash-host:your-port"]
    loadbalance: true
    ssl.enabled: true

Validate configuration

Let's check the configuration file is syntactically correct.

deb/rpm

heartbeat -e -c /etc/heartbeat/heartbeat.yml

mac/win
Ran from the extracted archive dir

heartbeat -e -c heartbeat.yml

Start heartbeat

Ok, time to start ingesting data!

deb

$ sudo service heartbeat start

win

PS C:\Program Files\heartbeat> Start-Service heartbeat