Advanced Installation

This page includes instructions for monitoring only specific servers on a host running multiple databases, as well as manual installation instructions and instructions on installing the Database Performance Monitor agent using Chef, Puppet, or Ansible.

Ignore Automatically Detected Servers

If you have multiple databases running on one host, the DPM agent will automatically detect and begin monitoring all of them. However, if you want to ignore some of those hosts, you can do so by changing the /etc/vividcortex/global.conf configuration file to include the option ignore-bindings, which is a comma-separated list of port:ip you want to ignore.

For example, you may have two database servers running on one host, with one listening on port 44000 and another on 44001. If you did not want to monitor the database listening on 44001, you would likely add "ignore-bindings":"0.0.0.0:44001,[::]:44001" to your global.conf file:

{
"api-token":"XYZ123...",
"ignore-bindings":"0.0.0.0:44001,[::]:44001",
...
}

The easiest way to identify the bindings is to look at the host you want to ignore on the Machines page in DPM and find the value(s) for listening on:

Bindings

This is the value you will give to ignore-bindings. Restart the service, or wait ten minutes for the supervisor to refresh its list of monitored hosts.

Manually Specifying Hosts to Monitor

First, download and install DPM. You will need your API token, which you can find in the web application by clicking “Add New Host” and then “Containerized”:

curl https://download.vividcortex.com/install > install
sh install --token <API_TOKEN> --autostart --proxy=auto

To specify what database (or databases) to monitor, you will need the URI of your database(s). URIs have the following format:

Database URI syntax
MongoDB [cust_hostname=]mongo://user:pass@0.0.0.0:port/
MySQL [cust_hostname=]mysql://user:pass@0.0.0.0:port/
PostgreSQL [cust_hostname=]postgres://user:pass@0.0.0.0:port/db
Redis [cust_hostname=]redis://:pass@0.0.0.0:port/

Replace user, pass, and port with the DPM username, the password for that user, and the database listening port. For PostgreSQL, you may also need to specify the name of the database to connect to, db. The user and password cannot contain any of the URI reserved characters ( : / ? # [ ] @ ).

If the agent is installed on the same host as as the database, it is important to specify 0.0.0.0; this will instruct the agent to sniff all traffic to the entered port. If skip_name_resolve is active, login permissions will be necessary for 127.0.0.1. If it is not active, it will likely be localhost but may be different.

cust_hostname= is optional; use it to specify a custom name for this database different from the one that would be automatically generated (the OS hostname). You can use this to give the database a human-readable name in DPM. An example would be report_server=mysql://vc_user:vc_pass@0.0.0.0:3306.

You will need to specify the capture method: this controls whether the agent should attempt to monitor the database with packet sniffing or over the network. For packet sniffing, choose sniff; for monitoring with the performance_schema or pg_stat_statements, choose poll; for the MongoDB Profiler, choose profiler; and for the MongoDB log, choose slow-log.

Create /etc/vividcortex/vc-agent-007.conf and copy & paste the following, replacing <HOST URI> with the correct host URI. You can monitor multiple databases by specifying a comma-separated list of URIs.

{
    "use-drv-mongo": "false",
    "use-drv-mysql": "false",
    "use-drv-pgsql": "false",
    "use-drv-redis": "false",
    "drv-manual-query-capture": "CAPTURE METHOD",
    "drv-manual-host-uri": "<HOST URI>[,<HOST URI>][,...]"  
}

Save this file. If you previously installed DPM on this host using the off-host installation method, you will need to remove the option "host-discovery-limit":0 from your /etc/vividcortex/global.conf file.

Start the DPM service with service vividcortex start, /etc/init.d/vividcortex start, or whatever is appropriate for your system. Log-in to the DPM web application, and you should see your database(s) appear in the Inventory page.

Installing With Chef

We also provide a Chef cookbook that acts as an installation wrapper: github.com/VividCortex/chef-cookbook.

In order to use it, you must set the vividcortex['token'] attribute to your API token, and add its default recipe to your runlist. To find your API token, open the Add Hosts wizard and click “Containerized”; your API token will be displayed.

# Attribute example
{
    "vividcortex" => {
        "token" => "12345678901234567890123456789012"
    }
}

# Add it to your runlist:
{
    "run_list": ["recipe[vividcortex]"]
}

Installing From RPM Packages

We can provide an RPM repository with packages for your convenience. The RPM does not contain a complete set of agent binaries; instead it contains a stable version of the agent (and any plugins) which will upgrade and install itself.

Installing From Puppet

We also provide a Puppet manifest for installing the repo, at github.com/VividCortex/puppet. This installs the repo and the agent. It accepts various parameters such as your API token.

If you do not use a configuration management system such as Ansible, Chef, or Puppet to generate the /etc/vividcortex/global.conf file, you must generate it manually. The agent will not work without it, and the RPM installation will fail as a result. The configuration file must be created before installing the RPM.

To install the repository and then the agent, run the following commands:

rpm -Uvh https://download.vividcortex.com/linux/rpms/vividcortex-agents-1.7-815.amzn1.x86_64.rpm
yum install vividcortex-agents