Apache Atlas is the metadata and data governance layer for your Hadoop ecosystem — tracking lineage, classification, and data ownership across thousands of datasets. When Atlas goes down, your data stewards lose visibility, compliance audits stall, and downstream tools like Ranger and Hive that depend on Atlas classification policies begin operating on stale data. Yet Atlas is often monitored with nothing more than a process check on the JVM, if that.
Vigilmon gives you external visibility into Apache Atlas availability through HTTP probe monitoring of its REST API and Admin endpoints, plus heartbeat monitoring for your metadata ingestion pipelines. This tutorial covers both.
Why Apache Atlas Needs External Monitoring
Apache Atlas runs as a multi-component system where each layer can fail independently:
- Atlas REST Server — the main HTTP API used by data stewards, Ranger, and ingestion clients. If it's down, no metadata can be read or written.
- HBase backend — Atlas stores its entity graph in HBase. If HBase degrades, Atlas REST requests start timing out or returning errors.
- Solr indexing — Atlas uses Solr (or embedded Elasticsearch) for full-text metadata search. A Solr outage means search queries return empty results without obvious error messages.
- Kafka ingestion hooks — Atlas receives metadata events from Hive, Spark, and HDFS via Kafka. If the Kafka bridge process stops, metadata for new datasets goes unrecorded silently.
Standard infrastructure monitoring (JVM heap checks, process counts) tells you whether Atlas is running, not whether it's correctly serving metadata. External monitoring with Vigilmon adds:
- API availability probes via the Atlas REST Admin endpoint
- Search functionality checks via the Atlas type search API
- Heartbeat monitoring for Kafka bridge and metadata ingestion processes
- Multi-region probe consensus to avoid false alerts from transient network partitions between Vigilmon's probes and your Atlas cluster
Step 1: Identify Atlas Health Endpoints
Apache Atlas ships with built-in REST endpoints you can probe directly.
Admin Status Endpoint
The Atlas Admin API exposes a server status endpoint that confirms Atlas is alive and connected to its backend:
# Check Atlas admin status — returns JSON with server state
curl -u admin:admin -i http://atlas-host:21000/api/atlas/admin/status
# Expected healthy response:
# {"Status":"ACTIVE"}
# During startup or backend issues:
# {"Status":"STARTING"} or {"Status":"PASSIVE"}
Monitor this endpoint: a non-200 response or a status other than "ACTIVE" indicates Atlas is unavailable or degraded.
Version Endpoint (Unauthenticated)
For a quick liveness check without credentials:
curl -i http://atlas-host:21000/api/atlas/admin/version
# Returns Atlas version info — 200 means the HTTP server is up
Search API Health Check
Verify that Solr search is working by running a lightweight type search:
curl -u admin:admin \
"http://atlas-host:21000/api/atlas/v2/search/basic?typeName=hive_table&limit=1" \
-H "Accept: application/json"
A 200 response with a JSON search result confirms Atlas REST and Solr are both functional. A timeout or error indicates Solr indexing issues.
Custom Health Wrapper
For cleaner Vigilmon integration, wrap these checks behind a single health endpoint in a sidecar:
# health/atlas.py
from fastapi import FastAPI
from fastapi.responses import JSONResponse
import httpx
import os
app = FastAPI()
ATLAS_BASE = os.environ.get("ATLAS_URL", "http://atlas-host:21000")
ATLAS_USER = os.environ.get("ATLAS_USER", "admin")
ATLAS_PASS = os.environ.get("ATLAS_PASSWORD", "admin")
@app.get("/health/atlas")
async def atlas_health():
auth = (ATLAS_USER, ATLAS_PASS)
async with httpx.AsyncClient(timeout=8.0) as client:
try:
status_resp = await client.get(
f"{ATLAS_BASE}/api/atlas/admin/status", auth=auth
)
if status_resp.status_code != 200:
return JSONResponse(
{"status": "down", "reason": "admin_api_unavailable", "code": status_resp.status_code},
503
)
body = status_resp.json()
if body.get("Status") != "ACTIVE":
return JSONResponse(
{"status": "degraded", "reason": "atlas_not_active", "atlas_status": body.get("Status")},
503
)
# Verify search is working
search_resp = await client.get(
f"{ATLAS_BASE}/api/atlas/v2/search/basic?typeName=hive_table&limit=1",
auth=auth,
headers={"Accept": "application/json"},
)
if search_resp.status_code != 200:
return JSONResponse(
{"status": "degraded", "reason": "search_unavailable", "code": search_resp.status_code},
503
)
return {"status": "ok", "atlas_status": "ACTIVE", "search": "ok"}
except httpx.TimeoutException:
return JSONResponse({"status": "down", "reason": "timeout"}, 503)
except Exception as e:
return JSONResponse({"status": "down", "error": str(e)}, 503)
# Deploy the health sidecar
pip install fastapi httpx uvicorn
ATLAS_URL=http://atlas-host:21000 ATLAS_USER=admin ATLAS_PASSWORD=secret \
uvicorn health.atlas:app --host 0.0.0.0 --port 8090
Step 2: Configure Vigilmon HTTP Monitors for Apache Atlas
Primary Atlas Status Monitor
- Log in to vigilmon.online and go to Monitors → New Monitor
- Choose HTTP / HTTPS
- Set the URL to your Atlas health endpoint:
- Sidecar:
https://your-server.example.com/health/atlas - Direct (if publicly accessible):
http://atlas-host:21000/api/atlas/admin/status
- Sidecar:
- Set the check interval to 2 minutes
- Under Expected response:
- Status code:
200 - Response body contains:
"status":"ok"(sidecar) or"ACTIVE"(direct) - Response time threshold:
8000ms(Atlas admin API can be slow under HBase pressure)
- Status code:
- Under Alert channels, assign your data platform Slack channel + PagerDuty
- Save the monitor
Atlas Search Availability Monitor
Add a second monitor for Solr search functionality:
- URL:
https://your-server.example.com/health/atlas(or a dedicated/health/atlas/search) - Expected:
200, body contains"search":"ok" - Interval:
5 minutes - Alert channel: Slack (P2 — search degradation before full API outage)
- Response time threshold:
10000ms(search can be slower than admin API)
Direct Admin Endpoint Monitor (Backup)
For belt-and-suspenders coverage if the sidecar is not deployed:
- URL:
http://atlas-host:21000/api/atlas/admin/version - Expected:
200 - Interval:
1 minute - Alert: PagerDuty (P1 for process-down)
- Authentication: Use Vigilmon's HTTP Basic Auth header option:
Authorization: Basic base64(admin:password)
Step 3: Heartbeat Monitoring for Atlas Ingestion Pipelines
The Atlas REST API being healthy doesn't mean metadata is being ingested. Atlas hooks for Hive, Spark, and HDFS run as separate bridge processes that send metadata events to Kafka for Atlas to consume. If these bridges stop running, new tables, columns, and lineage events go unrecorded — silently.
Vigilmon heartbeat monitors detect bridge stalls: each bridge sends a ping to Vigilmon after processing a batch of events. If pings stop, Vigilmon alerts before metadata drift becomes a compliance problem.
Set Up the Heartbeat Monitor
- In Vigilmon, go to Monitors → New Monitor → Heartbeat
- Name it:
atlas-hive-bridge - Set expected interval: 15 minutes
- Set grace period: 30 minutes
- Save — copy the heartbeat URL
Wire Into Your Hive Atlas Bridge Script
# bridge/hive_metadata_sync.py
"""
Syncs Hive table metadata to Apache Atlas via REST API.
Run this on a schedule (cron / Airflow) after Hive DDL operations.
"""
import subprocess
import requests
import os
import sys
ATLAS_URL = os.environ["ATLAS_URL"]
ATLAS_USER = os.environ["ATLAS_USER"]
ATLAS_PASSWORD = os.environ["ATLAS_PASSWORD"]
VIGILMON_HEARTBEAT = os.environ["VIGILMON_HEARTBEAT_URL"]
def sync_hive_metadata():
# Invoke Atlas Hive hook import
result = subprocess.run(
["hive", "--service", "hiveimport", "--database", "default"],
capture_output=True, text=True, timeout=600
)
if result.returncode != 0:
print(f"Hive import failed:\n{result.stderr}", file=sys.stderr)
return False
# Verify a sample entity was imported
resp = requests.get(
f"{ATLAS_URL}/api/atlas/v2/search/basic?typeName=hive_table&limit=1",
auth=(ATLAS_USER, ATLAS_PASSWORD),
timeout=10,
)
if resp.status_code != 200:
print(f"Atlas search check failed: {resp.status_code}", file=sys.stderr)
return False
# Ping Vigilmon to confirm successful sync
requests.get(VIGILMON_HEARTBEAT, timeout=5)
print("Hive metadata sync complete, heartbeat sent")
return True
if __name__ == "__main__":
success = sync_hive_metadata()
sys.exit(0 if success else 1)
Wire Into an Airflow DAG
# dags/atlas_metadata_sync.py
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
import requests
import os
VIGILMON_HEARTBEAT = os.environ.get("VIGILMON_HEARTBEAT_URL_ATLAS_SYNC")
def sync_atlas(**context):
import subprocess
result = subprocess.run(
["python", "/opt/bridge/hive_metadata_sync.py"],
capture_output=True, text=True
)
if result.returncode != 0:
raise RuntimeError(f"Atlas sync failed: {result.stderr}")
# Ping Vigilmon on successful DAG run
if VIGILMON_HEARTBEAT:
requests.get(VIGILMON_HEARTBEAT, timeout=5)
with DAG(
"atlas_metadata_sync",
default_args={"owner": "data-platform", "retries": 1, "retry_delay": timedelta(minutes=5)},
schedule_interval="@hourly",
start_date=datetime(2026, 1, 1),
catchup=False,
) as dag:
sync_task = PythonOperator(
task_id="sync_hive_to_atlas",
python_callable=sync_atlas,
)
Step 4: Alert Routing for Atlas Failures
Atlas failures have layered impact: an HBase degradation causes Atlas API slowness before full outage, and a Solr failure causes silent search gaps before users notice. Configure alert routing to catch failures early:
| Monitor | Alert Channel | Priority |
|---|---|---|
| Atlas /health/atlas (full health) | Slack + PagerDuty | P1 |
| Atlas admin /api/atlas/admin/version (liveness) | PagerDuty | P1 |
| Atlas search endpoint | Slack | P2 |
| Heartbeat: Hive bridge | Slack + email | P2 |
| Heartbeat: Spark lineage bridge | Email | P3 |
Response time thresholds for early warning:
- Alert at
5000msfor admin API (slow admin response signals HBase pressure before full outage) - Alert at
15000msfor search endpoint (Solr latency climbing) - Alert at
12000msfor sidecar health check (end-to-end check including search)
For governance-critical deployments, configure a status page in Vigilmon so data stewards and compliance teams can see Atlas status without needing to contact the data platform team.
Summary
Apache Atlas is the metadata backbone of your data governance platform — when it's down, compliance visibility, lineage tracking, and policy enforcement all degrade. External monitoring with Vigilmon ensures you find out before your data stewards do:
| Monitor Type | What It Covers | |---|---| | HTTP monitor on Atlas admin status | Atlas REST server availability, ACTIVE state | | HTTP monitor on Atlas search API | Solr search functionality | | HTTP monitor on admin version endpoint | Raw process liveness | | Heartbeat monitor | Hive/Spark metadata ingestion bridges |
Get started free at vigilmon.online — your first Atlas monitor is running in under two minutes.