Skip to content
Nico MT edited this page May 5, 2026 · 1 revision

Welcome to the goshawk wiki!

Goshawk is a fast and lightweight server monitoring tool written in Go. It supports both active and passive monitoring, offering flexible alerting capabilities. Main features include:

  • Passive Monitoring (Heartbeats): Exposes an HTTP endpoint that returns "check ok" on every GET request.
    • Clients can send a passphrase via a key query parameter (?key=your_secret) to authenticate and register as active.
    • If an authenticated host stops checking in within a configured timeframe, Goshawk flags it as offline and triggers a notification.
  • Active Monitoring: Parses a YAML configuration file to define scheduled checks against local or remote services. Supported check types:
    • tcp: Attempts a TCP connection to an address/port with a configurable timeout.
    • web_request: Sends HTTP requests with customizable method, body, and timeout, validating against an expected status code.
    • bash_script: Executes an arbitrary bash script and validates the output using a regular expression.
  • Robust Alerting: Triggers customizable HTTP POST notifications (e.g., Webhooks, Slack, Telegram) when a service or host state changes.
    • Features configurable retry logic (max_fails before alerting) and notification rate-limiting.
    • Notification payloads can be customized using Go templates for titles and bodies.
  • Security: The configuration file can be securely validated against a SHA256 checksum provided via a command-line argument.

Clone this wiki locally