How to Write Your First 360 Monitoring Plugin

As a product manager at Plesk, I am always interested in how our products work to gain an in-depth understanding of the tools we’re handing out to our customers. That’s why after the release of 360 Monitoring, I used the tool to build customized dashboards with full server and site monitoring including all pertinent information available by default on the platform. 

However, I realized I was missing something: as a user of the Plesk WP Toolkit, I’m accustomed to enjoying an overview of all my WordPress Websites and what their status is according to the Toolkit. So I decided to integrate the toolkit into my 360 Monitoring platform by writing my own plugin!

Interested in integrating your favorite tools into your 360 Monitoring dashboards? Then take a look at how I got started so that you can write your own 360 Monitoring plugins too!

The basics of 360 Monitoring Plugins

In the documentation provided for the 360 Cloud Platform, you’ll find a dedicated article on how 360 Monitoring plugins work and how to build them, but in this blog we’re going to look at the process in action.

After understanding how the plugins work and how to leverage CLI calls inside the plugins, the next step of my journey continues towards the Plesk command-line interface to take a closer look at the WP Toolkit capabilities. 

The WP Toolkit CLI

Using the Plesk command-line interface, you can easily get a list of all WordPress installations managed with the WP Toolkit using this command:

plesk ext wp-toolkit -l

 After executing this, the command returned the list that I was able to filter, piping the right information into the variables. But what does this mean specifically? Let’s take a closer look.

My plugin code

Beyond the theory, here we’re taking a look at the real code extracted in the previous step, along with an explanation:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os

import plugins
class Plugin(plugins.BasePlugin):
    __name__ = 'plesk-wpt'
    def run(self, config):
        Grabbing some basic information from the plesk server
        add to /etc/sudoers the following line:
        agent360 ALL=(ALL) NOPASSWD: /usr/sbin/plesk
        test by running:
        sudo -u agent360 agent360 test plesk-wpt
        Add to /etc/agent360.ini:
        enabled = yes
        interval = 600
        data = {}
        data['wpsites'] = int(os.popen('sudo -n plesk ext wp-toolkit --list | grep -$
        data['wpsites-live'] = int(os.popen('sudo -n plesk ext wp-toolkit --list | g$
        data['wpsites-outdated'] = int(os.popen('sudo -n plesk ext wp-toolkit --list$
        data['wpsites-outdated-php'] = int(os.popen('sudo -n plesk ext wp-toolkit --$
        data['wpsites-broken'] = int(os.popen('sudo -n plesk ext wp-toolkit --list |$
        return data
if __name__ == '__main__':

Here’s the steps I took in more detail:

  1. First, I created a new array in which I can store my data.
  2. From there, I filled up the array with various integers I grabbed from the command line interface of Plesk and the WP Toolkit.
  3. Last but not least, I returned the data to be collected by the monitoring agent.

How to use & install your plugin

First, you need to find out the location where your 360 Monitoring plugins are currently installed. To do so, simply execute the following code:

agent360 info

Example output:

Version: 1.2.33

Plugins enabled: ping, apt-updates, system, iostat, httpd, loadavg, memory, mysql, nginx, diskusage, network, process, docker, cpu, swap

Plugins directory: /usr/local/lib/python3.7/dist-packages/agent360/plugins

Server: 12354148123124

As described in the documentation for the plugins, it will now tell you the exact location. Next up, for my plugin I need to create a file, which I have named in the given folder (i.e. in the location discovered in the previous step). 

Now simply open the file, paste the code and save it. 

Before testing, we need to make sure the user agent360 is allowed to access the Plesk command line with sudo and without password. Therefore we’re adding the following line to /etc/sudoers:

agent360 ALL=(ALL) NOPASSWD: /usr/sbin/plesk

To verify the plugin is installed and all data can be fetched, run this code:

sudo -u agent360 agent360 test plesk-wpt

Now you should get an output with the actual data. To finally activate the plugin and make sure the data is reported in the 360 Monitoring infrastructure, we need to add the following lines to /etc/agent360.ini:


        enabled = yes

        interval = 600

This configuration tells the agent360 not only to start using the plugin but to report the status every 600 seconds.

 Once done, restart the monitoring service:

service agent360 restart

Verify the data

After a few minutes, you should be able to see a new tab in the detailed view of your server on named “plesk-wpt” – the name assigned to your plugin folder. All data will be shown there in graphs and you can now start to add alerts or metrics based on this data. 


It’s as easy as that! And since agent360 is open source, you are also free to discover all the other monitoring plugins on our GitHub page. 

Have you built an interesting plugin yourself? Send us a push and maybe we will include it in our next release!


No comment yet, add your voice below!

Add a Comment

Your email address will not be published. Required fields are marked *

We are Plesk

Value simplicity and automation too? We help devs, sysadmins, and resellers run, manage and secure via our control panel solutions, extensions and hyperscale opportunites. Discover how you fit with us.


  • Yes, please, I agree to receiving my personal Plesk Newsletter! Plesk International GmbH and other WebPros group companies may store and process the data I provide for the purpose of delivering the newsletter according to the Plesk Privacy Policy. In order to tailor its offerings to me, Plesk may further use additional information like usage and behavior data (Profiling). I can unsubscribe from the newsletter at any time by sending an email to [email protected] or use the unsubscribe link in any of the newsletters.

Related Posts

Knowledge Base

Plesk uses LiveChat system (3rd party).

By proceeding below, I hereby agree to use LiveChat as an external third party technology. This may involve a transfer of my personal data (e.g. IP Address) to third parties in- or outside of Europe. For more information, please see our Privacy Policy.

Generic filters
Exact matches only
Search in title
Search in content
Search in excerpt