NodeConductor Zabbix ==================== NodeConductor Zabbix /api/zabbix/ ------------ A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **name** -- ``string`` * project -- ``link to /api/projects//`` * **customer** -- ``link to /api/customers//`` * **settings** -- ``link to /api/service-settings//`` * backend_url -- ``URL`` (Zabbix API URL (e.g. http://example.com/zabbix/api_jsonrpc.php)) * username -- ``string`` (Zabbix user username (e.g. admin)) * password -- ``string`` (Zabbix user password (e.g. zabbix)) * available_for_all -- ``boolean`` (Service will be automatically added to all customers projects if it is available for all) * scope -- ``link to any: /api/zabbix-hosts//, /api/zabbix-itservices//`` (VM that contains service) * database_parameters -- ``string`` (Zabbix database parameters (default: {"user": "admin", "host": "localhost", "password": "", "port": "3306", "name": "zabbix"})) * templates_names -- ``string`` (List of Zabbix hosts templates (default: [])) * interface_parameters -- ``string`` (Default parameters for hosts interface (will be used if interface is not specified) (default: {"ip": "0.0.0.0", "useip": 1, "dns": "", "main": 1, "type": 1, "port": "10050"})) * host_group_name -- ``string`` (Zabbix host group name for registered hosts (default: "nodeconductor")) Filter fields: * ?customer = ``UUIDFilter`` * ?name = ``string`` * ?settings = ``link`` * ?project_uuid = ``UUIDFilter`` * ?project = ``link`` * ?tag = ``ModelMultipleChoiceField`` * ?rtag = ``ModelMultipleChoiceField`` * ?shared = ``boolean`` * ?type = ``ServiceTypeFilter`` To list all services without regard to its type, run **GET** against */api/services/* as an authenticated user. To list services of specific type issue **GET** to specific endpoint from a list above as a customer owner. Individual endpoint used for every service type. To create a service, issue a **POST** to specific endpoint from a list above as a customer owner. Individual endpoint used for every service type. You can create service based on shared service settings. Example: .. code-block:: http POST /api/digitalocean/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "name": "Common DigitalOcean", "customer": "http://example.com/api/customers/1040561ca9e046d2b74268600c7e1105/", "settings": "http://example.com/api/service-settings/93ba615d6111466ebe3f792669059cb4/" } Or provide your own credentials. Example: .. code-block:: http POST /api/oracle/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "name": "My Oracle", "customer": "http://example.com/api/customers/1040561ca9e046d2b74268600c7e1105/", "backend_url": "https://oracle.example.com:7802/em", "username": "admin", "password": "secret" } .. topic:: ``/api/zabbix//`` Methods: ``GET``, ``PUT``, ``PATCH``, ``DELETE`` Supported fields for update: * **name** -- ``string`` * available_for_all -- ``boolean`` (Service will be automatically added to all customers projects if it is available for all) .. topic:: ``/api/zabbix//credentials/`` Methods: ``GET``, ``POST`` On GET request - return superadmin user data. On POST - reset superuser password and return new one. .. topic:: ``/api/zabbix//link/`` Methods: ``GET``, ``POST`` To get a list of resources available for import, run **GET** against *//link/* as an authenticated user. Optionally project_uuid parameter can be supplied for services requiring it like OpenStack. To import (link with NodeConductor) resource issue **POST** against the same endpoint with resource id. .. code-block:: http POST /api/openstack/08039f01c9794efc912f1689f4530cf0/link/ HTTP/1.1 Content-Type: application/json Accept: application/json Authorization: Token c84d653b9ec92c6cbac41c706593e66f567a7fa4 Host: example.com { "backend_id": "bd5ec24d-9164-440b-a9f2-1b3c807c5df3", "project": "http://example.com/api/projects/e5f973af2eb14d2d8c38d62bcbaccb33/" } .. topic:: ``/api/zabbix//managed_resources/`` Methods: ``GET`` .. topic:: ``/api/zabbix//unlink/`` Methods: ``POST`` Unlink all related resources, service project link and service itself. /api/zabbix-users/ ------------------ A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix-users/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **alias** -- ``string`` * **name** -- ``string`` * **surname** -- ``string`` * **type** -- ``choice('admin', 'default', 'superadmin')`` * **groups** -- ``list of [{name: string, settings: link to /api/service-settings//}]`` * **settings** -- ``link to /api/service-settings//`` * phone -- ``string`` Filter fields: * ?alias = ``string`` * ?surname = ``string`` * ?name = ``string`` * ?settings_uuid = ``UUIDFilter`` * ?settings = ``link`` .. topic:: ``/api/zabbix-users//`` Methods: ``GET``, ``PUT``, ``PATCH``, ``DELETE`` Supported fields for update: * **alias** -- ``string`` * **name** -- ``string`` * **surname** -- ``string`` * **type** -- ``choice('admin', 'default', 'superadmin')`` * **groups** -- ``list of [{name: string, settings: link to /api/service-settings//}]`` * phone -- ``string`` .. topic:: ``/api/zabbix-users//password/`` Methods: ``POST`` /api/zabbix-user-groups/ ------------------------ A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix-user-groups/`` Methods: ``GET`` Filter fields: * ?name = ``string`` * ?settings_uuid = ``UUIDFilter`` * ?settings = ``link`` .. topic:: ``/api/zabbix-user-groups//`` Methods: ``GET`` /api/zabbix-triggers/ --------------------- A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix-triggers/`` Methods: ``GET`` Filter fields: * ?template_uuid = ``UUIDFilter`` * ?template = ``link`` * ?name = ``string`` * ?settings_uuid = ``UUIDFilter`` * ?settings = ``link`` .. topic:: ``/api/zabbix-triggers//`` Methods: ``GET`` /api/zabbix-templates/ ---------------------- A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix-templates/`` Methods: ``GET`` Filter fields: * ?name = ``string`` * ?settings_uuid = ``UUIDFilter`` * ?settings = ``link`` .. topic:: ``/api/zabbix-templates//`` Methods: ``GET`` /api/zabbix-service-project-link/ --------------------------------- A filter backend that uses django-filter. Supported actions and methods: .. topic:: ``/api/zabbix-service-project-link/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **project** -- ``link to /api/projects//`` * **service** -- ``link to /api/zabbix//`` Filter fields: * ?project = ``link`` * ?service_uuid = ``UUIDFilter`` * ?customer_uuid = ``UUIDFilter`` * ?project_uuid = ``UUIDFilter`` To get a list of connections between a project and an service, run **GET** against service_project_link_url as authenticated user. Note that a user can only see connections of a project where a user has a role. If service has `available_for_all` flag, project-service connections are created automatically. Otherwise, in order to be able to provision resources, service must first be linked to a project. To do that, **POST** a connection between project and a service to service_project_link_url as stuff user or customer owner. .. topic:: ``/api/zabbix-service-project-link//`` Methods: ``GET``, ``DELETE`` To remove a link, issue **DELETE** to URL of the corresponding connection as stuff user or customer owner. /api/zabbix-itservices/ ----------------------- SLA filter ^^^^^^^^^^ Allows to filter or sort resources by actual_sla Default period is current year and month. Example query parameters for filtering list of OpenStack instances: .. code-block:: http /api/openstack-instances/?actual_sla=90&period=2016-02 Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=actual_sla&period=2016-02 Monitoring filter ^^^^^^^^^^^^^^^^^ Filter and order resources by monitoring item. For example, given query dictionary .. code-block:: http { 'monitoring__installation_state': True } it produces following query .. code-block:: http { 'monitoring_item__name': 'installation_state', 'monitoring_item__value': True } Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=monitoring__installation_state Tags ordering. Filtering for complex tags. Example: ?tag__license-os=centos7 - will filter objects with tag "license-os:centos7". Allow to define next parameters in view: - tags_filter_db_field - name of tags field in database. Default: tags. - tags_filter_request_field - name of tags in request. Default: tag. In PostgreSQL NULL values come *last* with ascending sort order. In MySQL NULL values come *first* with ascending sort order. This filter provides unified sorting for both databases. Supported actions and methods: .. topic:: ``/api/zabbix-itservices/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **name** -- ``string`` * description -- ``string`` * **service_project_link** -- ``link to /api/zabbix-service-project-link//`` * **host** -- ``link to /api/zabbix-hosts//`` * **algorithm** -- ``choice('do not calculate', 'problem, if all children have problems', 'problem, if at least one child has a problem')`` * sort_order -- ``integer`` * agreed_sla -- ``float`` * **trigger** -- ``link to /api/zabbix-triggers//`` * is_main -- ``boolean`` (Main IT service SLA will be added to hosts resource as monitoring item.) .. topic:: ``/api/zabbix-itservices//`` Methods: ``GET``, ``PUT``, ``PATCH``, ``DELETE`` Supported fields for update: * **name** -- ``string`` * description -- ``string`` * **host** -- ``link to /api/zabbix-hosts//`` * **algorithm** -- ``choice('do not calculate', 'problem, if all children have problems', 'problem, if at least one child has a problem')`` * sort_order -- ``integer`` * agreed_sla -- ``float`` * **trigger** -- ``link to /api/zabbix-triggers//`` * is_main -- ``boolean`` (Main IT service SLA will be added to hosts resource as monitoring item.) .. topic:: ``/api/zabbix-itservices//events/`` Methods: ``GET`` /api/zabbix-hosts/ ------------------ Representation of Zabbix hosts and related actions. SLA filter ^^^^^^^^^^ Allows to filter or sort resources by actual_sla Default period is current year and month. Example query parameters for filtering list of OpenStack instances: .. code-block:: http /api/openstack-instances/?actual_sla=90&period=2016-02 Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=actual_sla&period=2016-02 Monitoring filter ^^^^^^^^^^^^^^^^^ Filter and order resources by monitoring item. For example, given query dictionary .. code-block:: http { 'monitoring__installation_state': True } it produces following query .. code-block:: http { 'monitoring_item__name': 'installation_state', 'monitoring_item__value': True } Example query parameters for sorting list of OpenStack instances: .. code-block:: http /api/openstack-instances/?o=monitoring__installation_state Tags ordering. Filtering for complex tags. Example: ?tag__license-os=centos7 - will filter objects with tag "license-os:centos7". Allow to define next parameters in view: - tags_filter_db_field - name of tags field in database. Default: tags. - tags_filter_request_field - name of tags in request. Default: tag. In PostgreSQL NULL values come *last* with ascending sort order. In MySQL NULL values come *first* with ascending sort order. This filter provides unified sorting for both databases. Supported actions and methods: .. topic:: ``/api/zabbix-hosts/`` Methods: ``GET``, ``POST`` Supported fields for creation: * **name** -- ``string`` * description -- ``string`` * **service_project_link** -- ``link to /api/zabbix-service-project-link//`` * visible_name -- ``string`` * host_group_name -- ``string`` * scope -- ``link to any: /api/zabbix-hosts//, /api/zabbix-itservices//`` * templates -- ``list of [{parents: list of [link to /api/zabbix-templates//], children: list of [link to /api/zabbix-templates//], name: string, settings: link to /api/service-settings//}]`` * interface_ip -- ``IP address`` (IP of host interface.) Representation of Zabbix hosts and related actions. .. topic:: ``/api/zabbix-hosts/aggregated_items_history/`` Methods: ``GET`` Representation of Zabbix hosts and related actions. Get sum of hosts historical values. Request should specify host filtering parameters, datetime points, and items. Host filtering parameters are the same as for */api/zabbix-hosts/* endpoint. Input/output format is the same as for **/api/zabbix-hosts//items_history/** endpoint. .. topic:: ``/api/zabbix-hosts/items_aggregated_values/`` Methods: ``GET`` Representation of Zabbix hosts and related actions. Get sum of aggregated hosts values. Request parameters: - ?start - start of aggregation period as timestamp. Default: 1 hour ago. - ?end - end of aggregation period as timestamp. Default: now. - ?method - aggregation method. Default: MAX. Choices: MIN, MAX. - ?item - item key. Can be list. Required. Response format: {: , ...} Endpoint will return status 400 if there are no hosts or items that match request parameters. .. topic:: ``/api/zabbix-hosts//`` Methods: ``GET``, ``POST``, ``PUT``, ``PATCH``, ``DELETE`` Representation of Zabbix hosts and related actions. .. topic:: ``/api/zabbix-hosts//items_history/`` Methods: ``GET`` Representation of Zabbix hosts and related actions. Get host items historical values. Request should specify datetime points and items. There are two ways to define datetime points for historical data. 1. Send *?point=* parameter that can list. Response will contain historical data for each given point in the same order. 2. Send *?start=*, *?end=*, *?points_count=* parameters. Result will contain points from to . Also you should specify one or more name of host template items, for example 'openstack.instance.cpu_util' Response is list of datapoints, each of which is dictionary with following fields: - 'point' - timestamp; - 'value' - values are converted from bytes to megabytes, if possible; - 'item' - key of host template item; - 'item_name' - name of host template item. .. topic:: ``/api/zabbix-hosts//items_values/`` Methods: ``GET`` Representation of Zabbix hosts and related actions. The same as items_aggregated_values, only for one host