How do I set up the Agent to run as a system service on macOS?

This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

On macOS, the Datadog Agent is installed as a user service for the user that runs the install instructions. This allows the Datadog Agent GUI system tray application to work, if you’re logged in to the macOS GUI as the user that performed the install. The main drawback is that the Agent runs only when the user that performed the install is logged in using the macOS GUI.

Because of this, by default the Datadog Agent doesn’t run in cases where no GUI access to the macOS host is available. Additional steps are therefore required when installing and running the macOS Datadog Agent with no GUI access.

Install

  1. Connect to the host and follow the Agent installation instructions to install the macOS Datadog Agent.

  2. As the user that ran the install, execute the following bash script:

    #!/bin/bash
    
    echo "Moving the Datadog Agent service for the $USER user to a system service"
    # Move the per-user service definition installed by the Agent to a system service
    sudo mv /Users/$USER/Library/LaunchAgents/com.datadoghq.agent.plist /Library/LaunchDaemons/com.datadoghq.agent.plist
    
    echo "Setting the Datadog Agent service to run as the $USER user"
    # By default, system services run as root.
    # This plist file modification is needed to make the Agent not run as root, but as the current user.
    sudo plutil -insert UserName -string "$USER" /Library/LaunchDaemons/com.datadoghq.agent.plist
    
    echo "Setting permissions on the Datadog Agent service file"
    # Put the correct permissions on the plist file.
    # Otherwise launchctl will refuse running commands for this service.
    sudo chown root:staff /Library/LaunchDaemons/com.datadoghq.agent.plist
    
    echo "Enabling the Datadog Agent service"
    # Enable the service: makes sure it runs on reboot
    sudo launchctl enable system/com.datadoghq.agent
    
    echo "Loading & launching the Datadog Agent service"
    # Load the service: this starts the Agent
    sudo launchctl load /Library/LaunchDaemons/com.datadoghq.agent.plist
    

This script reconfigures the Datadog Agent service to run as a launch daemon, with the following properties:

  • The service is automatically started when the host starts.
  • The Agent processes run as the user that ran the above script (to avoid running as root).
  • The Datadog Agent GUI system tray application is not available.

Operations

The Datadog Agent service is managed with launchctl. After the above installation instructions have been run, manage the Agent service with the following commands:

DescriptionCommand
Start Agent servicesudo launchctl start com.datadoghq.agent
Stop Agent running servicesudo launchctl stop com.datadoghq.agent
Status of Agent servicesudo launchctl list com.datadoghq.agent
Disable Agent servicesudo launchctl disable system/com.datadoghq.agent
Enable Agent servicesudo launchctl enable system/com.datadoghq.agent && sudo launchctl load /Library/LaunchDaemons/com.datadoghq.agent.plist

Disabling the Agent prevents the list, start, and stop commands from working, and prevents the Agent service from being started on reboot.

PREVIEWING: safchain/fix-custom-agent