412 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			412 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Monitor Resource
 | |
| 
 | |
| A monitor resource represents a monitor inside MaxScale that monitors one or
 | |
| more servers.
 | |
| 
 | |
| ## Resource Operations
 | |
| 
 | |
| ### Get a monitor
 | |
| 
 | |
| ```
 | |
| GET /v1/monitors/:name
 | |
| ```
 | |
| 
 | |
| Get a single monitor. The _:name_ in the URI must be a valid monitor name with
 | |
| all whitespace replaced with hyphens. The monitor names are case-sensitive.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| `Status: 200 OK`
 | |
| 
 | |
| ```javascript
 | |
| {
 | |
|     "links": {
 | |
|         "self": "http://localhost:8989/v1/monitors/MariaDB-Monitor"
 | |
|     },
 | |
|     "data": {
 | |
|         "id": "MariaDB-Monitor",
 | |
|         "type": "monitors",
 | |
|         "relationships": {
 | |
|             "servers": {
 | |
|                 "links": {
 | |
|                     "self": "http://localhost:8989/v1/servers/"
 | |
|                 },
 | |
|                 "data": [
 | |
|                     {
 | |
|                         "id": "server1",
 | |
|                         "type": "servers"
 | |
|                     },
 | |
|                     {
 | |
|                         "id": "server2",
 | |
|                         "type": "servers"
 | |
|                     }
 | |
|                 ]
 | |
|             }
 | |
|         },
 | |
|         "attributes": {
 | |
|             "module": "mariadbmon",
 | |
|             "state": "Running",
 | |
|             "parameters": {
 | |
|                 "user": "maxuser",
 | |
|                 "password": "maxpwd",
 | |
|                 "monitor_interval": 10000,
 | |
|                 "backend_connect_timeout": 3,
 | |
|                 "backend_read_timeout": 1,
 | |
|                 "backend_write_timeout": 2,
 | |
|                 "backend_connect_attempts": 1,
 | |
|                 "detect_replication_lag": false,
 | |
|                 "detect_stale_master": true,
 | |
|                 "detect_stale_slave": true,
 | |
|                 "mysql51_replication": false,
 | |
|                 "multimaster": false,
 | |
|                 "detect_standalone_master": false,
 | |
|                 "failcount": 5,
 | |
|                 "allow_cluster_recovery": true,
 | |
|                 "journal_max_age": 28800
 | |
|             },
 | |
|             "monitor_diagnostics": {
 | |
|                 "monitor_id": 0,
 | |
|                 "detect_stale_master": true,
 | |
|                 "detect_stale_slave": true,
 | |
|                 "detect_replication_lag": false,
 | |
|                 "multimaster": false,
 | |
|                 "detect_standalone_master": false,
 | |
|                 "failcount": 5,
 | |
|                 "allow_cluster_recovery": true,
 | |
|                 "mysql51_replication": false,
 | |
|                 "journal_max_age": 28800,
 | |
|                 "server_info": [
 | |
|                     {
 | |
|                         "name": "server1",
 | |
|                         "server_id": 0,
 | |
|                         "master_id": 0,
 | |
|                         "read_only": false,
 | |
|                         "slave_configured": false,
 | |
|                         "slave_io_running": false,
 | |
|                         "slave_sql_running": false,
 | |
|                         "master_binlog_file": "",
 | |
|                         "master_binlog_position": 0
 | |
|                     },
 | |
|                     {
 | |
|                         "name": "server2",
 | |
|                         "server_id": 0,
 | |
|                         "master_id": 0,
 | |
|                         "read_only": false,
 | |
|                         "slave_configured": false,
 | |
|                         "slave_io_running": false,
 | |
|                         "slave_sql_running": false,
 | |
|                         "master_binlog_file": "",
 | |
|                         "master_binlog_position": 0
 | |
|                     }
 | |
|                 ]
 | |
|             }
 | |
|         },
 | |
|         "links": {
 | |
|             "self": "http://localhost:8989/v1/monitors/MariaDB-Monitor"
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Get all monitors
 | |
| 
 | |
| ```
 | |
| GET /v1/monitors
 | |
| ```
 | |
| 
 | |
| Get all monitors.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| `Status: 200 OK`
 | |
| 
 | |
| ```javascript
 | |
| {
 | |
|     "links": {
 | |
|         "self": "http://localhost:8989/v1/monitors/"
 | |
|     },
 | |
|     "data": [
 | |
|         {
 | |
|             "id": "MariaDB-Monitor",
 | |
|             "type": "monitors",
 | |
|             "relationships": {
 | |
|                 "servers": {
 | |
|                     "links": {
 | |
|                         "self": "http://localhost:8989/v1/servers/"
 | |
|                     },
 | |
|                     "data": [
 | |
|                         {
 | |
|                             "id": "server1",
 | |
|                             "type": "servers"
 | |
|                         },
 | |
|                         {
 | |
|                             "id": "server2",
 | |
|                             "type": "servers"
 | |
|                         }
 | |
|                     ]
 | |
|                 }
 | |
|             },
 | |
|             "attributes": {
 | |
|                 "module": "mariadbmon",
 | |
|                 "state": "Running",
 | |
|                 "parameters": {
 | |
|                     "user": "maxuser",
 | |
|                     "password": "maxpwd",
 | |
|                     "monitor_interval": 10000,
 | |
|                     "backend_connect_timeout": 3,
 | |
|                     "backend_read_timeout": 1,
 | |
|                     "backend_write_timeout": 2,
 | |
|                     "backend_connect_attempts": 1,
 | |
|                     "detect_replication_lag": false,
 | |
|                     "detect_stale_master": true,
 | |
|                     "detect_stale_slave": true,
 | |
|                     "mysql51_replication": false,
 | |
|                     "multimaster": false,
 | |
|                     "detect_standalone_master": false,
 | |
|                     "failcount": 5,
 | |
|                     "allow_cluster_recovery": true,
 | |
|                     "journal_max_age": 28800
 | |
|                 },
 | |
|                 "monitor_diagnostics": {
 | |
|                     "monitor_id": 0,
 | |
|                     "detect_stale_master": true,
 | |
|                     "detect_stale_slave": true,
 | |
|                     "detect_replication_lag": false,
 | |
|                     "multimaster": false,
 | |
|                     "detect_standalone_master": false,
 | |
|                     "failcount": 5,
 | |
|                     "allow_cluster_recovery": true,
 | |
|                     "mysql51_replication": false,
 | |
|                     "journal_max_age": 28800,
 | |
|                     "server_info": [
 | |
|                         {
 | |
|                             "name": "server1",
 | |
|                             "server_id": 0,
 | |
|                             "master_id": 0,
 | |
|                             "read_only": false,
 | |
|                             "slave_configured": false,
 | |
|                             "slave_io_running": false,
 | |
|                             "slave_sql_running": false,
 | |
|                             "master_binlog_file": "",
 | |
|                             "master_binlog_position": 0
 | |
|                         },
 | |
|                         {
 | |
|                             "name": "server2",
 | |
|                             "server_id": 0,
 | |
|                             "master_id": 0,
 | |
|                             "read_only": false,
 | |
|                             "slave_configured": false,
 | |
|                             "slave_io_running": false,
 | |
|                             "slave_sql_running": false,
 | |
|                             "master_binlog_file": "",
 | |
|                             "master_binlog_position": 0
 | |
|                         }
 | |
|                     ]
 | |
|                 }
 | |
|             },
 | |
|             "links": {
 | |
|                 "self": "http://localhost:8989/v1/monitors/MariaDB-Monitor"
 | |
|             }
 | |
|         }
 | |
|     ]
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Create a monitor
 | |
| 
 | |
| ```
 | |
| POST /v1/monitors
 | |
| ```
 | |
| 
 | |
| Create a new monitor. The request body must define at least the following
 | |
| fields.
 | |
| 
 | |
| * `data.id`
 | |
|   * Name of the monitor
 | |
| 
 | |
| * `data.type`
 | |
|   * Type of the object, must be `monitors`
 | |
| 
 | |
| * `data.attributes.module`
 | |
|   * The monitor module to use
 | |
| 
 | |
| * `data.attributes.parameters.user`
 | |
|   * The [`user`](../Getting-Started/Configuration-Guide.md#password) to use
 | |
| 
 | |
| * `data.attributes.parameters.password`
 | |
|   * The [`password`](../Getting-Started/Configuration-Guide.md#password) to use
 | |
| 
 | |
| All monitor parameters can be defined at creation time.
 | |
| 
 | |
| The following example defines a request body which creates a new monitor and
 | |
| assigns two servers to be monitored by it. It also defines a custom value for
 | |
| the _monitor_interval_ parameter.
 | |
| 
 | |
| ```javascript
 | |
| {
 | |
|     data: {
 | |
|         "id": "test-monitor", // Name of the monitor
 | |
|         "type": "monitors",
 | |
|         "attributes": {
 | |
|             "module": "mariadbmon", // The monitor uses the mariadbmon module
 | |
|             "parameters": { // Monitor parameters
 | |
|                 "monitor_interval": 1000,
 | |
|                 "user": "maxuser,
 | |
|                 "password": "maxpwd"
 | |
|             }
 | |
|         },
 | |
|         "relationships": { // List of server relationships that this monitor uses
 | |
|             "servers": {
 | |
|                 "data": [ // This monitor uses two servers
 | |
|                     {
 | |
|                         "id": "server1",
 | |
|                         "type": "servers"
 | |
|                     },
 | |
|                     {
 | |
|                         "id": "server2",
 | |
|                         "type": "servers"
 | |
|                     }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor is created:
 | |
| 
 | |
| `Status: 204 No Content`
 | |
| 
 | |
| ### Update a monitor
 | |
| 
 | |
| ```
 | |
| PATCH /v1/monitors/:name
 | |
| ```
 | |
| 
 | |
| The :name in the URI must map to a monitor name with all whitespace replaced
 | |
| with hyphens. The request body must be a valid JSON document representing the
 | |
| modified monitor.
 | |
| 
 | |
| ### Modifiable Fields
 | |
| 
 | |
| The following standard server parameter can be modified.
 | |
| 
 | |
| - [user](../Monitors/Monitor-Common.md#user)
 | |
| - [password](../Monitors/Monitor-Common.md#password)
 | |
| - [monitor_interval](../Monitors/Monitor-Common.md#monitor_interval)
 | |
| - [backend_connect_timeout](../Monitors/Monitor-Common.md#backend_connect_timeout)
 | |
| - [backend_write_timeout](../Monitors/Monitor-Common.md#backend_write_timeout)
 | |
| - [backend_read_timeout](../Monitors/Monitor-Common.md#backend_read_timeout)
 | |
| - [backend_connect_attempts](../Monitors/Monitor-Common.md#backend_connect_attempts)
 | |
| 
 | |
| In addition to these standard parameters, the monitor specific parameters can
 | |
| also be modified. Refer to the monitor module documentation for details on these
 | |
| parameters.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor is modified:
 | |
| 
 | |
| `Status: 204 No Content`
 | |
| 
 | |
| Invalid request body:
 | |
| 
 | |
| `Status: 403 Forbidden`
 | |
| 
 | |
| ### Update monitor relationships
 | |
| 
 | |
| ```
 | |
| PATCH /v1/monitors/:name/relationships/servers
 | |
| ```
 | |
| 
 | |
| The _:name_ in the URI must map to a monitor name with all whitespace replaced
 | |
| with hyphens.
 | |
| 
 | |
| The request body must be a JSON object that defines only the _data_ field. The
 | |
| value of the _data_ field must be an array of relationship objects that define
 | |
| the _id_ and _type_ fields of the relationship. This object will replace the
 | |
| existing relationships of the monitor.
 | |
| 
 | |
| The following is an example request and request body that defines a single
 | |
| server relationship for a monitor.
 | |
| 
 | |
| ```
 | |
| PATCH /v1/monitors/my-monitor/relationships/servers
 | |
| 
 | |
| {
 | |
|     data: [
 | |
|           { "id": "my-server", "type": "servers" }
 | |
|     ]
 | |
| }
 | |
| ```
 | |
| 
 | |
| All relationships for a monitor can be deleted by sending an empty array as the
 | |
| _data_ field value. The following example removes all servers from a monitor.
 | |
| 
 | |
| ```
 | |
| PATCH /v1/monitors/my-monitor/relationships/servers
 | |
| 
 | |
| {
 | |
|     data: []
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor relationships modified:
 | |
| 
 | |
| `Status: 204 No Content`
 | |
| 
 | |
| Invalid JSON body:
 | |
| 
 | |
| `Status: 403 Forbidden`
 | |
| 
 | |
| ### Destroy a monitor
 | |
| 
 | |
| ```
 | |
| DELETE /v1/monitors/:name/stop
 | |
| ```
 | |
| 
 | |
| Destroy a created monitor. The monitor must not have relationships to any
 | |
| servers in order to be destroyed.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor is deleted:
 | |
| 
 | |
| `Status: 204 No Content`
 | |
| 
 | |
| Monitor could not be deleted:
 | |
| 
 | |
| `Status: 403 Forbidden`
 | |
| 
 | |
| ### Stop a monitor
 | |
| 
 | |
| ```
 | |
| PUT /v1/monitors/:name/stop
 | |
| ```
 | |
| 
 | |
| Stops a started monitor.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor is stopped:
 | |
| 
 | |
| `Status: 204 No Content`
 | |
| 
 | |
| ### Start a monitor
 | |
| 
 | |
| ```
 | |
| PUT /v1/monitors/:name/start
 | |
| ```
 | |
| 
 | |
| Starts a stopped monitor.
 | |
| 
 | |
| #### Response
 | |
| 
 | |
| Monitor is started:
 | |
| 
 | |
| `Status: 204 No Content`
 | 
