gatus
Gatusは、Go言語で書かれた軽量なヘルスチェックツールで、YAMLファイルで設定することで、エンドポイントの監視、アラート通知、美しいステータスページの作成を簡単に行い、システムの状態を把握しやすくするSkill。
📜 元の英語説明(参考)
Expert guidance for Gatus, the lightweight, self-hosted health check and status page tool written in Go. Helps developers set up endpoint monitoring with conditions, alerting, and a beautiful status page — all configured via a single YAML file with no database required.
🇯🇵 日本人クリエイター向け解説
Gatusは、Go言語で書かれた軽量なヘルスチェックツールで、YAMLファイルで設定することで、エンドポイントの監視、アラート通知、美しいステータスページの作成を簡単に行い、システムの状態を把握しやすくするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o gatus.zip https://jpskill.com/download/14922.zip && unzip -o gatus.zip && rm gatus.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14922.zip -OutFile "$d\gatus.zip"; Expand-Archive "$d\gatus.zip" -DestinationPath $d -Force; ri "$d\gatus.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
gatus.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
gatusフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Gatus — 軽量ヘルスチェックダッシュボード
概要
Gatusは、Goで記述された軽量な、自己ホスト型のヘルスチェックおよびステータスページツールです。開発者が、条件、アラート、および美しいステータスページを備えたエンドポイント監視を、データベースを必要とせずに、単一のYAMLファイルで設定するのに役立ちます。
手順
設定
# config.yaml — Gatusの完全な設定
# 単一のYAMLファイルが、すべてのエンドポイント、条件、およびアラートを定義します。
# ストレージ(オプション — 再起動後の永続化用)
storage:
type: sqlite
path: /data/gatus.db
# Web UIの設定
web:
port: 8080
# アラートプロバイダー
alerting:
slack:
webhook-url: "${SLACK_WEBHOOK_URL}"
default-alert:
enabled: true
failure-threshold: 3 # 3回連続で失敗した場合にアラート
success-threshold: 2 # 2回連続で成功した場合に復旧
send-on-resolved: true
pagerduty:
integration-key: "${PAGERDUTY_KEY}"
default-alert:
enabled: true
failure-threshold: 5
send-on-resolved: true
email:
from: "gatus@example.com"
host: "smtp.example.com"
port: 587
username: "${SMTP_USER}"
password: "${SMTP_PASS}"
default-alert:
enabled: false # 重要なエンドポイントでのみ有効にする
# 監視するエンドポイント
endpoints:
# --- APIのヘルスチェック ---
- name: API Gateway
group: backend
url: "https://api.example.com/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 2000" # 2秒未満
- "[BODY].status == healthy" # JSONボディのチェック
alerts:
- type: slack
- type: pagerduty
- name: Auth Service
group: backend
url: "https://api.example.com/auth/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
# --- フロントエンド ---
- name: Website
group: frontend
url: "https://example.com"
interval: 60s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 3000"
- "[BODY] contains Welcome" # ページのレンダリングを確認
alerts:
- type: slack
# --- データベース ---
- name: PostgreSQL
group: infrastructure
url: "tcp://db.example.com:5432"
interval: 30s
conditions:
- "[CONNECTED] == true"
alerts:
- type: slack
- type: pagerduty
# --- Redis ---
- name: Redis
group: infrastructure
url: "tcp://redis.example.com:6379"
interval: 15s
conditions:
- "[CONNECTED] == true"
# --- DNS ---
- name: DNS Resolution
group: infrastructure
url: "dns://8.8.8.8"
dns:
query-name: "example.com"
query-type: "A"
conditions:
- "[DNS_RCODE] == NOERROR"
- "[RESPONSE_TIME] < 500"
# --- SSL証明書 ---
- name: SSL Certificate
group: security
url: "https://example.com"
interval: 1h
conditions:
- "[CERTIFICATE_EXPIRATION] > 720h" # 30日未満の場合にアラート
# --- 外部依存関係 ---
- name: Stripe API
group: external
url: "https://api.stripe.com/v1"
interval: 5m
conditions:
- "[STATUS] == 401" # 未認証が期待される(APIは稼働している)
- "[RESPONSE_TIME] < 3000"
# --- GraphQL ---
- name: GraphQL API
group: backend
url: "https://api.example.com/graphql"
method: POST
headers:
Content-Type: application/json
body: '{"query": "{ __typename }"}'
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY].data.__typename == Query"
デプロイメント
# docker-compose.yml — 自己ホスト型のGatus
version: "3.8"
services:
gatus:
image: twinproduction/gatus:latest
ports:
- "8080:8080"
volumes:
- ./config.yaml:/config/config.yaml
- gatus-data:/data
environment:
- SLACK_WEBHOOK_URL=${SLACK_WEBHOOK_URL}
- PAGERDUTY_KEY=${PAGERDUTY_KEY}
restart: unless-stopped
volumes:
gatus-data:
# Kubernetesデプロイメント
apiVersion: apps/v1
kind: Deployment
metadata:
name: gatus
spec:
replicas: 1
selector:
matchLabels:
app: gatus
template:
metadata:
labels:
app: gatus
spec:
containers:
- name: gatus
image: twinproduction/gatus:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config
mountPath: /config
envFrom:
- secretRef:
name: gatus-secrets
volumes:
- name: config
configMap:
name: gatus-config
インストール
# Docker
docker run -p 8080:8080 -v $(pwd)/config.yaml:/config/config.yaml twinproduction/gatus
# Binary
go install github.com/TwiN/gatus/v5@latest
# Helm
helm repo add gatus https://twin.github.io/helm-charts
helm install gatus gatus/gatus
例
例1:マイクロサービスプロジェクトのためのGatusの設定
ユーザーリクエスト:
Node.js APIとReactフロントエンドをDockerで実行しています。監視/デプロイメントのためにGatusを設定してください。
エージェントは、# config.yaml — Complete Gatus configurationのようなパターンに基づいて必要な設定ファイルを作成し、既存のDockerセットアップとの統合を設定し、Node.js + Reactスタックに適切なデフォルトを設定し、すべてが動作していることを確認するための検証コマンドを提供します。
例2:デプロイメントの問題のトラブルシューティング
ユーザーリクエスト:
Gatusがデプロイメントでエラーを表示しています。ログは次のとおりです:[エラー出力]
エージェントはエラー出力を分析し、一般的なGatusの問題との相互参照によって根本原因を特定し、修正(設定の更新、リソース制限の調整、または構文の修正)を適用し、適切なヘルスチェックで解決を確認します。
ガイドライン
- 単一のYAML — すべての監視を1つの設定ファイルに保持します。インフラストラクチャとともにバージョン管理します。
- エンドポイントのグループ化 — グループ(backend、frontend、infrastructure)を使用して、ステータスページを整理します。
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Gatus — Lightweight Health Check Dashboard
Overview
Gatus, the lightweight, self-hosted health check and status page tool written in Go. Helps developers set up endpoint monitoring with conditions, alerting, and a beautiful status page — all configured via a single YAML file with no database required.
Instructions
Configuration
# config.yaml — Complete Gatus configuration
# Single YAML file defines all endpoints, conditions, and alerts.
# Storage (optional — for persistence across restarts)
storage:
type: sqlite
path: /data/gatus.db
# Web UI settings
web:
port: 8080
# Alert providers
alerting:
slack:
webhook-url: "${SLACK_WEBHOOK_URL}"
default-alert:
enabled: true
failure-threshold: 3 # Alert after 3 consecutive failures
success-threshold: 2 # Recover after 2 consecutive successes
send-on-resolved: true
pagerduty:
integration-key: "${PAGERDUTY_KEY}"
default-alert:
enabled: true
failure-threshold: 5
send-on-resolved: true
email:
from: "gatus@example.com"
host: "smtp.example.com"
port: 587
username: "${SMTP_USER}"
password: "${SMTP_PASS}"
default-alert:
enabled: false # Only enable on critical endpoints
# Endpoints to monitor
endpoints:
# --- API Health ---
- name: API Gateway
group: backend
url: "https://api.example.com/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 2000" # Under 2 seconds
- "[BODY].status == healthy" # JSON body check
alerts:
- type: slack
- type: pagerduty
- name: Auth Service
group: backend
url: "https://api.example.com/auth/health"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
# --- Frontend ---
- name: Website
group: frontend
url: "https://example.com"
interval: 60s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 3000"
- "[BODY] contains Welcome" # Verify page renders
alerts:
- type: slack
# --- Database ---
- name: PostgreSQL
group: infrastructure
url: "tcp://db.example.com:5432"
interval: 30s
conditions:
- "[CONNECTED] == true"
alerts:
- type: slack
- type: pagerduty
# --- Redis ---
- name: Redis
group: infrastructure
url: "tcp://redis.example.com:6379"
interval: 15s
conditions:
- "[CONNECTED] == true"
# --- DNS ---
- name: DNS Resolution
group: infrastructure
url: "dns://8.8.8.8"
dns:
query-name: "example.com"
query-type: "A"
conditions:
- "[DNS_RCODE] == NOERROR"
- "[RESPONSE_TIME] < 500"
# --- SSL Certificate ---
- name: SSL Certificate
group: security
url: "https://example.com"
interval: 1h
conditions:
- "[CERTIFICATE_EXPIRATION] > 720h" # Alert if < 30 days
# --- External Dependencies ---
- name: Stripe API
group: external
url: "https://api.stripe.com/v1"
interval: 5m
conditions:
- "[STATUS] == 401" # Unauthenticated is expected (API is up)
- "[RESPONSE_TIME] < 3000"
# --- GraphQL ---
- name: GraphQL API
group: backend
url: "https://api.example.com/graphql"
method: POST
headers:
Content-Type: application/json
body: '{"query": "{ __typename }"}'
interval: 30s
conditions:
- "[STATUS] == 200"
- "[BODY].data.__typename == Query"
Deployment
# docker-compose.yml — Self-hosted Gatus
version: "3.8"
services:
gatus:
image: twinproduction/gatus:latest
ports:
- "8080:8080"
volumes:
- ./config.yaml:/config/config.yaml
- gatus-data:/data
environment:
- SLACK_WEBHOOK_URL=${SLACK_WEBHOOK_URL}
- PAGERDUTY_KEY=${PAGERDUTY_KEY}
restart: unless-stopped
volumes:
gatus-data:
# Kubernetes deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: gatus
spec:
replicas: 1
selector:
matchLabels:
app: gatus
template:
metadata:
labels:
app: gatus
spec:
containers:
- name: gatus
image: twinproduction/gatus:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config
mountPath: /config
envFrom:
- secretRef:
name: gatus-secrets
volumes:
- name: config
configMap:
name: gatus-config
Installation
# Docker
docker run -p 8080:8080 -v $(pwd)/config.yaml:/config/config.yaml twinproduction/gatus
# Binary
go install github.com/TwiN/gatus/v5@latest
# Helm
helm repo add gatus https://twin.github.io/helm-charts
helm install gatus gatus/gatus
Examples
Example 1: Setting up Gatus for a microservices project
User request:
I have a Node.js API and a React frontend running in Docker. Set up Gatus for monitoring/deployment.
The agent creates the necessary configuration files based on patterns like # config.yaml — Complete Gatus configuration, sets up the integration with the existing Docker setup, configures appropriate defaults for a Node.js + React stack, and provides verification commands to confirm everything is working.
Example 2: Troubleshooting deployment issues
User request:
Gatus is showing errors in our deployment. Here are the logs: [error output]
The agent analyzes the error output, identifies the root cause by cross-referencing with common Gatus issues, applies the fix (updating configuration, adjusting resource limits, or correcting syntax), and verifies the resolution with appropriate health checks.
Guidelines
- Single YAML — Keep all monitoring in one config file; version control it alongside your infrastructure
- Group endpoints — Use groups (backend, frontend, infrastructure) for organized status page display
- Multiple conditions — Check status code AND response time AND body content; a 200 with wrong content is still broken
- Failure thresholds — Set failure-threshold to 2-3 to avoid false alarms from transient network blips
- Check dependencies — Monitor external services (Stripe, AWS) separately; know when the issue is upstream vs yours
- SSL monitoring — Check certificate expiration weekly; alert at 30 days to give time for renewal
- Lightweight deployment — Gatus uses ~15MB RAM; run it on any machine, even a Raspberry Pi
- SQLite for history — Enable SQLite storage for uptime history across restarts; no external database needed