tutorial

How to Monitor Vtiger CRM with Vigilmon

Vtiger CRM is one of the longest-standing open-source CRM platforms — a full-featured PHP/MySQL application providing integrated sales, marketing, and custom...

Vtiger CRM is one of the longest-standing open-source CRM platforms — a full-featured PHP/MySQL application providing integrated sales, marketing, and customer support modules. Since 2004, Vtiger's self-hosted Open Source edition has served SMBs and professional services firms who need an all-in-one sales/support/marketing CRM with full data ownership and no per-seat SaaS fees.

When you self-host Vtiger CRM, you own the uptime. A database connection failure, a PHP crash, or a stopped cron scheduler can silently break your team's entire workflow. This tutorial shows you how to set up comprehensive monitoring for a self-hosted Vtiger CRM installation using Vigilmon.


Why monitoring Vtiger CRM matters

Vtiger CRM is a PHP monolith backed by MySQL with a REST webservice API, a cron-based workflow engine, and an email alert system. Multiple failure modes exist:

  • Web server / PHP failure — Apache stops serving requests or PHP-FPM crashes; users see 502 or a blank page
  • MySQL connectivity loss — the PHP application can't connect to the database; the UI renders partially before failing with SQL errors
  • Webservice API downtime — third-party integrations, mobile apps, and external automations lose access via the REST API
  • Workflow scheduler stoppage — the cron-driven workflow engine stops executing email alerts, automated field updates, and reminder notifications
  • Inventory or case management failure — background processes that update inventory levels or escalate support cases stop running

External monitoring from Vigilmon catches all of these from the user's perspective — not from inside the server where internal monitoring tools might miss them.


What you'll need

  • A running self-hosted Vtiger CRM instance (Linux/Apache or Docker)
  • A free Vigilmon account — no credit card required
  • Your Vtiger CRM public URL (e.g. https://crm.yourdomain.com)
  • Note: Vtiger may be installed at /vtigercrm/ (package installs) or at the domain root / (Docker or manual installs)

Step 1: Monitor the Vtiger CRM web UI

The web UI check confirms the web server, PHP runtime, and database are all responding through the application entry point.

For a subdirectory install (e.g. /vtigercrm/):

  1. Log in to vigilmon.online and go to Monitors → New Monitor
  2. Choose HTTP / HTTPS
  3. Set the URL to:
    https://crm.yourdomain.com/vtigercrm/index.php
    
  4. Check interval: 1 minute
  5. Expected status code: 200
  6. (Optional) Response body contains: Vtiger or CRM
  7. Save the monitor

For a domain-root install:

  1. URL:
    https://crm.yourdomain.com/index.php
    
  2. All other settings the same as above

A 200 response confirms that the web server is running and PHP is processing requests without a fatal application error.


Step 2: Monitor the login page (full stack check)

The login page exercises PHP rendering, MySQL queries, and session initialisation all in a single request — making it the deepest health probe available without authentication.

  1. Create a new HTTP / HTTPS monitor
  2. URL (adjust for your install path):
    https://crm.yourdomain.com/vtigercrm/index.php
    
    or
    https://crm.yourdomain.com/index.php
    
  3. Check interval: 2 minutes
  4. Expected status code: 200
  5. Response body contains: password or username
  6. Save the monitor

The body keyword check distinguishes a healthy login page from a PHP error page that still returns HTTP 200.


Step 3: Monitor the webservice API endpoint

Vtiger's REST webservice API (webservice.php) is the integration gateway used by third-party tools, mobile clients, and custom automations. Monitoring this endpoint independently catches API-layer failures that may not affect the web UI.

  1. Create a new HTTP / HTTPS monitor
  2. URL:
    https://crm.yourdomain.com/vtigercrm/webservice.php
    
    or for a root install:
    https://crm.yourdomain.com/webservice.php
    
  3. Method: GET
  4. Check interval: 2 minutes
  5. Expected status code: 200
  6. (Optional) Response body contains: operation
  7. Save the monitor

A GET request to webservice.php without parameters returns a JSON error message about a missing operation parameter — but crucially, with HTTP 200. This confirms the PHP file is executing and the API routing layer is functional. The response body check on operation verifies the JSON is being generated rather than a generic PHP error.


Step 4: Monitor login page load time (PHP and MySQL responsiveness)

Vtiger's login page load time is a useful performance indicator — a slow login page often indicates MySQL query degradation, PHP-FPM saturation, or disk I/O contention before a full outage occurs.

  1. Create a new HTTP / HTTPS monitor
  2. URL:
    https://crm.yourdomain.com/vtigercrm/index.php
    
  3. Check interval: 2 minutes
  4. Response time thresholds:
    • Warning: 3000ms
    • Critical: 8000ms
  5. Save the monitor

Vigilmon tracks response time history so you can correlate slowdowns with database growth, traffic spikes, or server resource exhaustion.


Step 5: Monitor SSL certificate expiry

An expired TLS certificate locks out every user and integration with no advance warning in the application itself.

  1. Create a new SSL Certificate monitor in Vigilmon
  2. Domain: crm.yourdomain.com
  3. Alert thresholds:
    • Warning: 30 days before expiry
    • Critical: 7 days before expiry
  4. Save the monitor

Step 6: Monitor Vtiger CRM workflow scheduler with a heartbeat

Vtiger CRM uses a cron-based scheduler (modules/com_vtiger_workflow/VTProcessAudit.php invoked via the Vtiger cron utility) to execute automated workflows, send email alerts, update fields on schedule, and dispatch reminder notifications. If the cron job stops running, all scheduled automations halt silently.

Create a Vigilmon heartbeat monitor

  1. In Vigilmon, go to Monitors → New Monitor
  2. Choose Heartbeat / Cron Job
  3. Name it Vtiger CRM Workflow Scheduler
  4. Set the expected interval to 5 minutes
  5. Copy the generated heartbeat URL:
    https://vigilmon.online/heartbeat/YOUR_TOKEN
    
  6. Save the monitor

Configure the Vtiger cron job to ping Vigilmon

Vtiger CRM ships with a cron/ directory containing PHP scheduler scripts. Add a Vigilmon ping to your crontab after the Vtiger scheduler runs:

# Vtiger CRM scheduler — runs every minute
* * * * * www-data /usr/bin/php /var/www/html/vtigercrm/cron/modules/Schedulers/Scheduler.php > /dev/null 2>&1

# Ping Vigilmon every 5 minutes to confirm scheduler is running
*/5 * * * * www-data curl -fsS --retry 3 https://vigilmon.online/heartbeat/YOUR_TOKEN > /dev/null

For a combined approach that only pings Vigilmon when the scheduler exits cleanly:

*/5 * * * * www-data /usr/bin/php /var/www/html/vtigercrm/cron/modules/Schedulers/Scheduler.php > /dev/null 2>&1 && curl -fsS --retry 3 https://vigilmon.online/heartbeat/YOUR_TOKEN > /dev/null

Step 7: Configure alert channels

  1. In Vigilmon, go to Alert Channels → Add Channel
  2. Add your preferred notification channels:
    • Slack — route alerts to #operations or #crm-alerts
    • Email — notify the CRM administrator and support team lead
    • Webhook — forward to PagerDuty for on-call escalation

Recommended alert tiers:

| Tier | Trigger | Channel | |------|---------|---------| | Immediate | Login page or webservice.php unavailable | Slack + email + pager | | Warning | Login page response > 3000ms | Slack + email | | Warning | Scheduler heartbeat missed | Slack + email | | Maintenance | SSL expiry within 30 days | Email |


Step 8: Docker deployment with health checks

If you're running Vtiger CRM with Docker, add container-level health checks:

version: "3.9"

services:
  vtigercrm:
    image: vtiger/vtigercrm:latest
    ports:
      - "80:80"
    environment:
      VTIGER_DB_HOST: mysql
      VTIGER_DB_NAME: vtiger
      VTIGER_DB_USER: vtiger
      VTIGER_DB_PASS: ${DB_PASSWORD}
    depends_on:
      mysql:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/index.php"]
      interval: 30s
      timeout: 15s
      retries: 3
      start_period: 60s
    restart: unless-stopped

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
      MYSQL_DATABASE: vtiger
      MYSQL_USER: vtiger
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - vtiger_db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${ROOT_PASSWORD}"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  vtiger_db:

Complete monitor setup summary

| Monitor | Type | Target | Interval | Catches | |---------|------|--------|----------|---------| | Web UI availability | HTTP | /vtigercrm/index.php | 1 min | Web server / PHP crash | | Login page (full stack) | HTTP | /vtigercrm/index.php + body check | 2 min | MySQL, PHP, session failure | | Webservice API | HTTP | /vtigercrm/webservice.php | 2 min | API layer failure | | Login response time | HTTP | /vtigercrm/index.php + threshold | 2 min | Slow PHP/MySQL degradation | | Scheduler heartbeat | Heartbeat | Cron exit ping | 5 min | Scheduler / cron stoppage | | SSL certificate | SSL | crm.yourdomain.com | Daily | Certificate expiry |


Conclusion

Vtiger CRM's long history and extensive feature set make it a dependable self-hosted choice for SMBs — but the same complexity means more failure points to watch. A database connection issue, a stopped cron job, or a slow PHP runtime can silently degrade your sales, support, and marketing operations.

With Vigilmon monitoring every layer of your Vtiger CRM deployment, you'll catch outages within 60 seconds and know the moment your automated workflows stop running.

Start monitoring for free at vigilmon.online.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →