Custom Probe
============

get\_\ *probe*
--------------

**Code samples**

.. code:: shell


   #  You can also use wget

   curl -X GET https://PEM-SERVER-IP/api/v14/probe/ \
     -H Accept: application/json \
     -H X-Auth-Token: string

.. code:: python

   import requests
   headers = {
     Accept: application/json,
     X-Auth-Token: string
   }

   r = requests.get(https://PEM-SERVER-IP/api/v14/probe/, headers = headers)

   print(r.json())

.. code:: javascript


   const headers = {
     Accept:application/json,
     X-Auth-Token:string
   };

   fetch(https://PEM-SERVER-IP/api/v14/probe/,
   {
     method: GET,

     headers: headers
   })
   .then(function(res) {
       return res.json();
   }).then(function(body) {
       console.log(body);
   });

``GET /probe/``

Gets all the custom/system probes.

Parameters
^^^^^^^^^^

.. csv-table::
  :header: Name,In,Type,Required,Description
  :widths: 11,7,7,7,17
  :align: left
  :class: longtable

  X-Auth-Token,header,string,true,Token of authorization

**Example responses**

.. raw:: html

   <Details summary="200 Response">

.. code:: json

   [
     {
       "probe_id": 0,
       "probe_name": "string",
       "enabled": true,
       "target_type": 0,
       "internal_name": "string",
       "is_system_probe": true,
       "any_server_version": true,
       "collection_method": "w",
       "interval": 0,
       "lifetime": 0,
       "discard_history": true,
       "platform": "unix",
       "probe_code": "string",
       "probe_columns": [
         {
           "pc_id": 0,
           "pc_name": "string",
           "pc_data_type": "bigint",
           "pc_internal_name": "string",
           "pc_unit": "string",
           "pc_col_type": "m",
           "pc_position": 0,
           "pc_graphable": true,
           "pc_calc_pit": true,
           "pc_pit_default": true
         }
       ],
       "alternate_code": [
         {
           "server_version_id": 0,
           "server_probe_code": "string",
           "extension_version": 0
         }
       ]
     }
   ]

.. raw:: html

   </Details>

Responses
^^^^^^^^^

.. csv-table::
  :header: Status,Meaning,Description,Schema
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  200,:ref:`Invoking the server installer from the command line<Invoking the server installer from the command line>` ,Successful response,Inline

Response Schema
^^^^^^^^^^^^^^^

Status Code **200**

.. csv-table::
  :header: Name,Type,Required,Restrictions,Description
  :widths: 12,8,8,8,12
  :align: left
  :class: longtable

  *anonymous*,\ :ref:`Query information <Probes>` ],false,none,none
  » probe_id,integer,false,none,Identifier for a probe
  » probe_name,string,false,none,Name of the probe
  » enabled,boolean,false,none,Determines whether the probe is enabled or disabled by default.
  » target_type,integer,false,none,Defines the type of the object to which the probe applies. <ul><li>A probe with target_type <b>100</b> is responsible for collecting statistics for an agent.</li><li>A probe with target_type <b>200</b> is responsible for collecting statistics for a monitored server.</li><li>A probe with target_type <b>300</b> is responsible for collecting statistics for a database.</li><li>A probe with target_type <b>400</b> is responsible for collecting statistics for a schema.</li><li>A probe with target_type <b>500</b> is responsible for collecting statistics for a table.</li><li>A probe with target_type <b>600</b> is responsible for collecting statistics for a index.</li><li>A probe with target_type <b>700</b> is responsible for collecting statistics for a sequence.</li><li>A probe with target_type <b>800</b> is responsible for collecting statistics for a function.</li><li>A probe with target_type <b>900</b> is responsible for collecting statistics for a view.</li><li>A probe with target_type <b>1000</b> is responsible for collecting statistics for a extension.</li></ul>
  » internal_name,string,false,none,"Defines the internal name of the probe. The PEM system creates internal tables for storing probe statistics in the 'pemdata', and 'pemhistory' schema. The names of those tables are the same as the internal name."
  » is_system_probe,boolean,false,none,Determines whether this probe is user-defined. This flag is always false for a user-defined probe.
  » any_server_version,boolean,false,none,"Determines whether this probe applies to any version of a Postgres variant. For more details, please consult the documentation."
  » collection_method,string,false,none,"Defines the method of statistics collection. PEM supports three methods for custom made probes: SQL, WMI, or batch/shell script. <ul><li>'w' stands for WMI script. This type of script only applies to the Windows platform, and the target_type is <b>100</b> (for agent).</li><li>'b' stands for batch/shell script. The 'target_type' for this script is always <b>100</b> (agent). This script behaves as a batch script on Windows and a shell script on other platforms.</li><li>'s' stands for SQL script. The 'target_type' is always <b>200</b> (server), <b>300</b> (database), <b>400</b> (schema), <b>500</b> (table), <b>600</b> (index), <b>700</b> (sequence), <b>800</b> (function), or <b>900</b> (view), or <b>1000</b> (extension).</li></ul>"
  » interval,integer,false,none,Defines how frequently the probe collects statistics (in seconds).Must be greater than or equal to 10
  » lifetime,integer,false,none,Defines the history data retention time (in days). Valid range is 1-365. This value does not have any effect if 'discard_history' is set to true.
  » discard_history,boolean,false,none,"Determines whether to discard history data. When 'discard_history' is set to false, history of the data for this probe is not stored."
  » platform,string,false,none,Defines the platform where this probe can run. This value only applies to an agent-level probe.
  » probe_code,string,false,none,A <b>SQL/Batch script/Shell script/WMI script</b> to collect the statistics as per the definition of the code.
  » probe_columns,[object],false,none,none
  »» pc_id,integer,false,none,Column identifier
  »» pc_name,string,false,none,Column name
  »» pc_data_type,string,false,none,Data type of the column. Supported datatypes are:<ul><ul>bigint</ul><ul>char</ul><ul>decimal</ul><ul>double precision</ul><ul>integer</ul><ul>numeric</ul><ul>real</ul><ul>text</ul><ul>text\[]</ul><ul>timestamp</ul><ul>timestamptz</ul></ul>
  »» pc_internal_name,string,false,none,Returns the internal name of the column.
  »» pc_unit,string,false,none,Returns the unit of the column.
  »» pc_col_type,string,false,none,"Returns the column as part of the primary key of the internal table, or not. 'k' stands for a key column, and 'm' stands for a member/normal column."
  »» pc_position,integer,false,none,Returns the position of the column in the internal table.
  »» pc_graphable,boolean,false,none,Determines whether the data of the column can be graphed on a chart.
  »» pc_calc_pit,boolean,false,none,Determines whether the server calculates the point-in-time for metric data for this column.
  »» pc_pit_default,boolean,false,none,Determines whether the metric is stored by point-in-time by default. Please refer to the 'Custom Probes' section in the documentation for detailed information.
  » alternate_code,\ :ref:`Query information <Schemas>` ],false,none,none
  »» server_version_id,integer,false,none,Server version ID for the monitored server
  »» server_probe_code,string,false,none,SQL query to run on the specified server version
  »» extension_version,integer,false,none,Specifies the extension version. Valid for extension target type

Enumerated Values
'''''''''''''''''

.. csv-table::
  :header: Property,Value
  :widths: 25,25
  :align: left
  :class: longtable

  collection_method,w
  collection_method,b
  collection_method,s
  platform,unix
  platform,windows
  pc_data_type,bigint
  pc_data_type,char
  pc_data_type,decimal
  pc_data_type,double precision
  pc_data_type,integer
  pc_data_type,numeric
  pc_data_type,real
  pc_data_type,text
  pc_data_type,text\[]
  pc_data_type,timestamp
  pc_data_type,timestamptz
  pc_col_type,m
  pc_col_type,k

..  Note::
   This operation does not require authentication

post\_\ *probe*
---------------

**Code samples**

.. code:: shell


   #  You can also use wget

   curl -X POST https://PEM-SERVER-IP/api/v14/probe/ \
     -H Content-Type: application/json \
     -H X-Auth-Token: string

.. code:: python

   import requests
   headers = {
     Content-Type: application/json,
     X-Auth-Token: string
   }

   r = requests.post(https://PEM-SERVER-IP/api/v14/probe/, headers = headers)

   print(r.json())

.. code:: javascript

   const inputBody = {
     "probe_name": "string",
     "collection_method": "w",
     "enabled": true,
     "target_type": 0,
     "any_server_version": true,
     "any_extension_version": true,
     "extension_name": "string",
     "interval": 0,
     "lifetime": 0,
     "discard_history": true,
     "platform": "unix",
     "probe_code": "string",
     "probe_columns": [
       {
         "pc_name": "string",
         "pc_data_type": "bigint",
         "pc_unit": "string",
         "pc_col_type": "m",
         "pc_graphable": true,
         "pc_calc_pit": true,
         "pc_pit_default": true
       }
     ],
     "alternate_code": [
       {
         "server_version_id": 0,
         "server_probe_code": "string",
         "extension_version": 0
       }
     ]
   };
   const headers = {
     Content-Type:application/json,
     X-Auth-Token:string
   };

   fetch(https://PEM-SERVER-IP/api/v14/probe/,
   {
     method: POST,
     body: inputBody,
     headers: headers
   })
   .then(function(res) {
       return res.json();
   }).then(function(body) {
       console.log(body);
   });

``POST /probe/``

Creates a new custom probe.

**Body parameter**

.. code:: json

   {
     "probe_name": "string",
     "collection_method": "w",
     "enabled": true,
     "target_type": 0,
     "any_server_version": true,
     "any_extension_version": true,
     "extension_name": "string",
     "interval": 0,
     "lifetime": 0,
     "discard_history": true,
     "platform": "unix",
     "probe_code": "string",
     "probe_columns": [
       {
         "pc_name": "string",
         "pc_data_type": "bigint",
         "pc_unit": "string",
         "pc_col_type": "m",
         "pc_graphable": true,
         "pc_calc_pit": true,
         "pc_pit_default": true
       }
     ],
     "alternate_code": [
       {
         "server_version_id": 0,
         "server_probe_code": "string",
         "extension_version": 0
       }
     ]
   }

.. _parameters-1:

Parameters
^^^^^^^^^^

.. csv-table::
  :header: Name,In,Type,Required,Description
  :widths: 11,7,7,7,17
  :align: left
  :class: longtable

  X-Auth-Token,header,string,true,Token of authorization
  body,body,:ref:`CustomProbePostData<CustomProbePostData>` ,true,none

**Example responses**

.. _responses-1:

Responses
^^^^^^^^^

.. csv-table::
  :header: Status,Meaning,Description,Schema
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  200,:ref:`Invoking the server installer from the command line<Invoking the server installer from the command line>` ,Status 200,None

.. _response-schema-1:

Response Schema
^^^^^^^^^^^^^^^

..  Note::
   This operation does not require authentication

get\_\ *probe*\ {probe_id}
--------------------------

**Code samples**

.. code:: shell


   #  You can also use wget

   curl -X GET https://PEM-SERVER-IP/api/v14/probe/{probe_id} \
     -H Accept: application/json \
     -H X-Auth-Token: string

.. code:: python

   import requests
   headers = {
     Accept: application/json,
     X-Auth-Token: string
   }

   r = requests.get(https://PEM-SERVER-IP/api/v14/probe/{probe_id}, headers = headers)

   print(r.json())

.. code:: javascript


   const headers = {
     Accept:application/json,
     X-Auth-Token:string
   };

   fetch(https://PEM-SERVER-IP/api/v14/probe/{probe_id},
   {
     method: GET,

     headers: headers
   })
   .then(function(res) {
       return res.json();
   }).then(function(body) {
       console.log(body);
   });

``GET /probe/{probe_id}``

Gets probe information for specified probe ID.

.. _parameters-2:

Parameters
^^^^^^^^^^

.. csv-table::
  :header: Name,In,Type,Required,Description
  :widths: 11,7,7,7,17
  :align: left
  :class: longtable

  probe_id,path,integer,true,Probe ID for which probe information will be returned
  X-Auth-Token,header,string,true,Token of authorization

**Example responses**

.. raw:: html

   <Details summary="200 Response">

.. code:: json

   {
     "probe_id": 0,
     "probe_name": "string",
     "enabled": true,
     "target_type": 0,
     "internal_name": "string",
     "is_system_probe": true,
     "any_server_version": true,
     "collection_method": "w",
     "interval": 0,
     "lifetime": 0,
     "discard_history": true,
     "platform": "unix",
     "probe_code": "string",
     "probe_columns": [
       {
         "pc_id": 0,
         "pc_name": "string",
         "pc_data_type": "bigint",
         "pc_internal_name": "string",
         "pc_unit": "string",
         "pc_col_type": "m",
         "pc_position": 0,
         "pc_graphable": true,
         "pc_calc_pit": true,
         "pc_pit_default": true
       }
     ],
     "alternate_code": [
       {
         "server_version_id": 0,
         "server_probe_code": "string",
         "extension_version": 0
       }
     ]
   }

.. raw:: html

   </Details>

.. _responses-2:

Responses
^^^^^^^^^

.. csv-table::
  :header: Status,Meaning,Description,Schema
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  200,:ref:`Invoking the server installer from the command line<Invoking the server installer from the command line>` ,Successful response,:ref:`CustomProbes<CustomProbes>` 

..  Note::
   This operation does not require authentication

put\_\ *probe*\ {probe_id}
--------------------------

**Code samples**

.. code:: shell


   #  You can also use wget

   curl -X PUT https://PEM-SERVER-IP/api/v14/probe/{probe_id} \
     -H Content-Type: application/json \
     -H X-Auth-Token: string

.. code:: python

   import requests
   headers = {
     Content-Type: application/json,
     X-Auth-Token: string
   }

   r = requests.put(https://PEM-SERVER-IP/api/v14/probe/{probe_id}, headers = headers)

   print(r.json())

.. code:: javascript

   const inputBody = {
     "interval_min": 0,
     "interval_sec": 0,
     "lifetime": 0,
     "enabled": true,
     "probe_code": "string",
     "probe_columns": {
       "changed": [
         {
           "pc_id": 0,
           "pc_unit": "string",
           "pc_graphable": true
         }
       ]
     },
     "alternate_code": {
       "changed": [
         {
           "server_version_id": 0,
           "server_probe_code": "string",
           "extension_version": 0
         }
       ],
       "deleted": [
         {
           "server_version_id": 0
         }
       ],
       "added": [
         {
           "server_version_id": 0,
           "server_probe_code": "string",
           "extension_version": 0
         }
       ]
     }
   };
   const headers = {
     Content-Type:application/json,
     X-Auth-Token:string
   };

   fetch(https://PEM-SERVER-IP/api/v14/probe/{probe_id},
   {
     method: PUT,
     body: inputBody,
     headers: headers
   })
   .then(function(res) {
       return res.json();
   }).then(function(body) {
       console.log(body);
   });

``PUT /probe/{probe_id}``

Updates custom/system probe information for specified probe ID.

**Body parameter**

.. code:: json

   {
     "interval_min": 0,
     "interval_sec": 0,
     "lifetime": 0,
     "enabled": true,
     "probe_code": "string",
     "probe_columns": {
       "changed": [
         {
           "pc_id": 0,
           "pc_unit": "string",
           "pc_graphable": true
         }
       ]
     },
     "alternate_code": {
       "changed": [
         {
           "server_version_id": 0,
           "server_probe_code": "string",
           "extension_version": 0
         }
       ],
       "deleted": [
         {
           "server_version_id": 0
         }
       ],
       "added": [
         {
           "server_version_id": 0,
           "server_probe_code": "string",
           "extension_version": 0
         }
       ]
     }
   }

.. _parameters-3:

Parameters
^^^^^^^^^^

.. csv-table::
  :header: Name,In,Type,Required,Description
  :widths: 11,7,7,7,17
  :align: left
  :class: longtable

  probe_id,path,integer,true,Probe ID for which probe information will be returned
  X-Auth-Token,header,string,true,Token of authorization
  body,body,:ref:`CustomProbePutData<CustomProbePutData>` ,true,none

**Example responses**

.. _responses-3:

Responses
^^^^^^^^^

.. csv-table::
  :header: Status,Meaning,Description,Schema
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  200,:ref:`Invoking the server installer from the command line<Invoking the server installer from the command line>` ,Status 200,None

.. _response-schema-2:

Response Schema
^^^^^^^^^^^^^^^

..  Note::
   This operation does not require authentication

delete\_\ *probe*\ {probe_id}
-----------------------------

**Code samples**

.. code:: shell


   #  You can also use wget

   curl -X DELETE https://PEM-SERVER-IP/api/v14/probe/{probe_id} \
     -H X-Auth-Token: string

.. code:: python

   import requests
   headers = {
     X-Auth-Token: string
   }

   r = requests.delete(https://PEM-SERVER-IP/api/v14/probe/{probe_id}, headers = headers)

   print(r.json())

.. code:: javascript


   const headers = {
     X-Auth-Token:string
   };

   fetch(https://PEM-SERVER-IP/api/v14/probe/{probe_id},
   {
     method: DELETE,

     headers: headers
   })
   .then(function(res) {
       return res.json();
   }).then(function(body) {
       console.log(body);
   });

``DELETE /probe/{probe_id}``

Deletes the custom probe.

.. _parameters-4:

Parameters
^^^^^^^^^^

.. csv-table::
  :header: Name,In,Type,Required,Description
  :widths: 11,7,7,7,17
  :align: left
  :class: longtable

  probe_id,path,integer,true,Probe ID for which probe information will be returned
  X-Auth-Token,header,string,true,Token of authorization

**Example responses**

.. _responses-4:

Responses
^^^^^^^^^

.. csv-table::
  :header: Status,Meaning,Description,Schema
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  200,:ref:`Invoking the server installer from the command line<Invoking the server installer from the command line>` ,Successful deletion,None

.. _response-schema-3:

Response Schema
^^^^^^^^^^^^^^^

..  Note::
   This operation does not require authentication
