MySQL agent

Prerequisites

  • URL/IP of the SixthSense collector (your tenant URL, which will be provided by Customer Support).
  • Access token from the SixthSense portal. For accessing the token, see Accessing your Access Token under Getting started with the Observability Portal.
  • mysql agent version 1.0.00
  • database details (host name, port, database name, database user credentials).
  • Package token to download the agent (which will be provided by Customer Support).

Downloading the Agent

For linux based server, use the following URL to download the agent.

curl --header "PRIVATE-TOKEN:{{PACKAGE_TOKEN}}" --output mysql-agent "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/32/packages/generic/MYSQL-Agent/{{AGENT_VERSION}}/meter-agent"

For Windows Based servers, use the following URL:

curl --header "PRIVATE-TOKEN:{{PACKAGE_TOKEN}}" --output mysql-agent.zip "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/32/packages/generic/MySQL-Agent/v1.0-WINDOWS/mysqlv1.0.0.zip"
note

The agent depends on the Operating System and architecture.

Database User Permissions

To capture database metrics from the MySQL server, you must first create a MySQL user with replication and select permissions.

Perform the following steps to create user and grant permissions.

From the MySQL command line, create a user sixthsense@<your_host_name> with a specific password by running:

Create user

CREATE USER 'sixthsense'@'localhost' IDENTIFIED BY '<your_strong_password>' WITH MAX_USER_CONNECTIONS 5;

Grant replication privileges to sixthsense@<your_host_name> by running:

Grant replication permission

GRANT REPLICATION CLIENT ON *.* TO 'sixthsense'@'localhost';

Grant privileges to sixthsense@<your_host_name>, by running:

Grant select permission

GRANT SELECT ON *.* TO 'sixthsense'@'localhost';
note

Replace <your_host_name> and <your_strong_password> with your values.

Configuring the MySQL agent

Create a config.yaml file in the same directory as the agent.

# sixthsense-mysql-agent can be configured via yaml or environment variables
#
# Note: Environment Variables are given higher priority over yaml file
#
# Following are the environment variables that can be set:
# ENV VARIABLE CORRESPONDS TO
# SS_SERVICE_NAME service_name
# SS_AUTHENTICATION authentication
# SS_BACKEND sixthsense_backend
# SS_LOGGING logging
# SS_SECURE secure
sixthsense:
service_name: <custom-service-name>
# Login to Sixthsense UI --> Go to Settings on Side Navbar --> Copy Access Token
authentication: <custom-service-authKey>
logging: info
sixthsense_backend: <custom-sixthsense_backend-url>
# SSL connection with backend true|false
secure: <true|false>
# MY | ES | MS | CB | OR
type: MY
# cron optional
# cron: "* * * * *"
hostname: <hostIp>
port: <port> #3306
user: <user>
password: <password>
mysql:
isCluster: <true|false>
clusterName: <clusterName>
# database optional
# database: demo_db
# socket: /tmp/mysql.sock
# log file path
# logPath: logs/logs.log
queryLimit: 10 #no of queries
queryThresholdTime: 200 #millisecond
note

Use either the sql port or socket.

Running the agent

./meter-agent config.yaml config1.yaml ...

In case of network restrictions, pass proxy to the meter-agent process to be able to connect to sixthsense-backend.

HTTPS_PROXY=proxy-server:port./meter-agent path/to/config.yaml
note

You can run the agent for multiple databases by adding multiple configuration files.