ADMON is a lightweight monitoring utility used to:
- Monitor AccelData Pulse containers
- Monitor system disk usage
- Send alerts via Email, Slack, and PagerDuty
This page explains how to deploy and configure admon as a systemd-managed service, ensuring automatic restarts during reboots and failures.
Prerequisites
- Pulse server access with
sudo $AcceloHomeenvironment variable configured- Docker installed at
/usr/bin/docker - SMTP credentials for email alerts
- Optional: Slack bot token and PagerDuty credentials
Install ADMON Binary
- Navigate to Accelo Home
cd $AcceloHome- Install the Binary
- Download the
ADMONbinary provided by the Acceldata team. - Place it inside
$AcceloHome. - Make the binary executable:
chmod +x $AcceloHome/admonGenerate Default Configuration
Run admon once to generate the default configuration file:
./admonThis creates:
$AcceloHome/config/admon.ymlConfigure admon.yml
Edit the configuration file:
vi $AcceloHome/config/admon.ymlSample Configuration:
# AccelData AdMon configuration (admon.yml)network: ad-defaultapmServerIP: <PULSE_SERVER_HOSTNAME/IP>containers: - ad-director_default - ad-graphql_default - ad-connectors_default - ad-sparkstats_default - ad-alerts_default - ad-streaming_default - ad-tsdb_default - ad-db_defaultsmtp: username: <SMTP_SERVER_USERNAME> password: <SMTP_SERVER_PASSWORD> server: <SMTP_SERVER_HOST/IP> port: <SMTP_SERVER_PORT> sender: <SENDER_EMAIL_ADDRESS> senderName: <SENDER_NAME> receivers: - <RECEIVER_EMAIL_ADDRESS_1> - <RECEIVER_EMAIL_ADDRESS_2> emailSubject: '[<PULSE_SERVER_HOSTNAME/IP> - ALERT] AccelData APM Containers Not Running' sysAlertSubject: '[<PULSE_SERVER_HOSTNAME/IP> - ALERT] AccelData Pulse Server Resources Threshold Reached' authEnabled: trueslackTeamURL: ""CheckInterval: <CONTAINER_MONITORING_CHECK_INTERVAL_IN_SECONDS>SnoozeTime: <CONTAINER_MONITORING_SNOOZE_TIME_IN_SECONDS>sysConfig: diskThreshold: /: <DISK_THRESHOLD_PERCENTAGE> /root: <DISK_THRESHOLD_PERCENTAGE> checkInterval: <DISK_MONITORING_CHECK_INTERVAL_IN_SECONDS> SnoozeTime: <DISK_MONITORING_SNOOZE_TIME_IN_SECONDS>pagerDuty: apiKey: <PAGER_DUTY_API_KEY> serviceId: <PAGER_DUTY_SERVICE_ID> incidentTitle: '<INCIDENT_TITLE>' sysIncidentTitle: '<RESOURCES_INCIDENT_TITLE>' senderEmail: <SENDER_EMAIL>alertList: - email - pagerDutypath: /data01/acceldata/config/nodeInfo.ymlUpdate the following properties based on your environment:
PULSE_SERVER_HOSTNAME/IPcontainers– validate the list of containers to monitor on the Pulse serverSMTP_SERVER_USERNAMESMTP_SERVER_PASSWORDSMTP_SERVER_HOST/IPSMTP_SERVER_PORTSENDER_EMAIL_ADDRESSSENDER_NAMERECEIVER_EMAIL_ADDRESS_1RECEIVER_EMAIL_ADDRESS_2
Default Values
| Property | Default |
|---|---|
| CONTAINER MONITORING CHECK_INTERVAL_IN_SECONDS | 60 |
| CONTAINER MONITORING SNOOZE_TIME_IN_SECONDS | 360 |
| DISK THRESHOLD PERCENTAGE | 0 (disabled) |
| DISK MONITORING CHECK_INTERVAL_IN_SECONDS | 60 |
| DISK MONITORING SNOOZE TIME IN_SECONDS |
Example: Container Monitoring Email Alerts
Scenario
- Check container status every 60 seconds.
- Send an email alert if any container is not running.
- Do not resend alerts for 6 minutes unless a new container fails.
Configuration
CheckInterval: 60SnoozeTime: 360Example: Disk Usage Email Alerts
Scenario
- Monitor disk usage for mount point
/. - Trigger an alert when usage is greater than or equal to 80%.
- Check every 60 seconds.
- Snooze alerts for 6 minutes after triggering.
Configuration
sysConfig: diskThreshold: /: 80 checkInterval: 60 SnoozeTime: 360Identify Available Mount Points
Use the following command to list all mount points on the system:
df -hExample Output
Filesystem Size Used Avail Use% Mounted ondev 7.8G 0 7.8G 0% /devrun 7.8G 1.7M 7.8G 1% /run/dev/nvme0n1p1 246G 132G 104G 50% /tmpfs 7.8G 232M 7.6G 3% /dev/shmtmpfs 7.8G 60M 7.7G 1% /tmp/dev/nvme0n1p3 500M 280K 499M 1% /boot/efitmpfs 1.6G 108K 1.6G 1% /run/user/1000Enable PagerDuty Alerts
By default, alertList contains email.
To enable PagerDuty alerts, add pagerDuty to alertList and configure the following fields:
pagerDuty: apiKey: <PAGER_DUTY_API_KEY> serviceId: <PAGER_DUTY_SERVICE_ID> incidentTitle: '<INCIDENT_TITLE>' sysIncidentTitle: '<RESOURCES_INCIDENT_TITLE>' senderEmail: <SENDER_EMAIL>Configure the path Field in admon.yml
The path field specifies the location of nodeInfo.yml.
This file contains user-defined metadata (key-value pairs) such as:
ClusterNameNodeNameNodeIP
This metadata is automatically appended to every alert message.
The path field must be defined in admon.yml. If the file cannot be read, AdMon will fail to start.
Example nodeInfo.yml
APMServerIP: <IP Address>NodeName: dev-node-01ClusterName: my-clusterConfigure Slack Notifications with groupIds
To send Slack notifications via the Slack bot, configure the following fields in admon.yml:
slack: channelId: <PLEASE REPLACE THIS VALUE WITH YOUR CHANNEL ID> botToken: <PLEASE REPLACE THIS VALUE WITH YOUR BOT TOKEN> groupIds: <PLEASE REPLACE WITH GROUP ID>groupIds Behavior
- Empty or not set
Mentions
@channel(default behavior) disabledSends notifications without mentioning any users or groups- Specific groups
Comma-separated Slack group IDs (for example,
S01ABC,S02DEF)
If all specified IDs are empty, the notification falls back to @channel.
Example:
slack: channelId: D090SRD1GF77788M botToken: xoxb-565656eddt676ff6-vvyrrfy7777ff-ggui88999 groupIds: S06GTUNB,S06HTKCreate the ADMON Systemd Service
Create a new file at the following path:
/etc/systemd/system/admon.serviceCopy the contents exactly as shown below and replace all instances of <ACCELO_HOME> with the correct path.
[Unit]Description=AccelData AdMon DaemonWants=syslog.target network.targetAfter=syslog.target network.target[Service]Type=simplePIDFile=/run/admon.pidExecStartPre=/usr/bin/test -f /usr/bin/dockerExecStart=<ACCELO_HOME>/admon -r -c <ACCELO_HOME>ExecStop=/bin/kill -9 $MAINPIDTimeoutStopSec=10Restart=alwaysRestartSec=10[Install]Start and Enable the ADMON Service
Run the following commands:
sudo systemctl daemon-reloadsudo systemctl start admonsudo systemctl status admonIf the service status shows running, enable it to start automatically on reboot:
sudo systemctl enable admon