# Microsoft SharePoint by HTTP ## Overview This template is designed for the effortless deployment of Microsoft SharePoint monitoring by Zabbix via HTTP and doesn't require any external scripts. SharePoint includes a Representational State Transfer (REST) service. Developers can perform read operations from their SharePoint Add-ins, solutions, and client applications, using REST web technologies and standard Open Data Protocol (OData) syntax. Details in https://docs.microsoft.com/ru-ru/sharepoint/dev/sp-add-ins/get-to-know-the-sharepoint-rest-service?tabs=csom ## Requirements Zabbix version: 7.0 and higher. ## Tested versions This template has been tested on: - SharePoint Server 2019 ## Configuration > Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section. ## Setup Create a new host. Define macros according to your Sharepoint web portal. It is recommended to fill in the values of the filter macros to avoid getting redundant data. ### Macros used |Name|Description|Default| |----|-----------|-------| |{$SHAREPOINT.USER}||| |{$SHAREPOINT.PASSWORD}||| |{$SHAREPOINT.URL}|
Portal page URL. For example http://sharepoint.companyname.local/
|| |{$SHAREPOINT.LLD.FILTER.NAME.MATCHES}|Filter of discoverable dictionaries by name.
|`.*`| |{$SHAREPOINT.LLD.FILTER.FULL_PATH.MATCHES}|Filter of discoverable dictionaries by full path.
|`^/`| |{$SHAREPOINT.LLD.FILTER.TYPE.MATCHES}|Filter of discoverable types.
|`FOLDER`| |{$SHAREPOINT.LLD.FILTER.NAME.NOT_MATCHES}|Filter to exclude discovered dictionaries by name.
|`CHANGE_IF_NEEDED`| |{$SHAREPOINT.LLD.FILTER.FULL_PATH.NOT_MATCHES}|Filter to exclude discovered dictionaries by full path.
|`CHANGE_IF_NEEDED`| |{$SHAREPOINT.LLD.FILTER.TYPE.NOT_MATCHES}|Filter to exclude discovered types.
|`CHANGE_IF_NEEDED`| |{$SHAREPOINT.ROOT}||`/Shared Documents`| |{$SHAREPOINT.LLD_INTERVAL}||`3h`| |{$SHAREPOINT.GET_INTERVAL}||`1m`| |{$SHAREPOINT.MAX_HEALT_SCORE}|Must be in the range from 0 to 10
in details: https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wsshp/c60ddeb6-4113-4a73-9e97-26b5c3907d33
|`5`| ### Items |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Sharepoint: Get directory structure|Used to get directory structure information
|Script|sharepoint.get_dir**Preprocessing**
Check for not supported value
⛔️Custom on fail: Set value to: `{"status":520,"data":{},"time":0}`
HTTP response (status) code. Indicates whether the HTTP request was successfully completed. Additional information is available in the server log file.
|Dependent item|sharepoint.get_dir.status**Preprocessing**
JSON Path: `$.status`
⛔️Custom on fail: Set error to: `DISCARD_VALUE`
Discard unchanged with heartbeat: `3h`
The time taken to execute the script for obtaining the data structure (in ms). Less is better.
|Dependent item|sharepoint.get_dir.time**Preprocessing**
JSON Path: `$.time`
⛔️Custom on fail: Set error to: `DISCARD_VALUE`
Discard unchanged with heartbeat: `3h`
This item specifies a value between 0 and 10, where 0 represents a low load and a high ability to process requests and 10 represents a high load and that the server is throttling requests to maintain adequate throughput.
|HTTP agent|sharepoint.health_score**Preprocessing**
Regular expression: `X-SharePointHealthScore\b:\s(\d+) \1`
In range: `0 -> 10`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `3h`
Error getting directory structure. Check the Zabbix server log for more details.
|`last(/Microsoft SharePoint by HTTP/sharepoint.get_dir.status)<>200`|Warning|**Manual close**: Yes| |Sharepoint: Server responds slowly to API request||`last(/Microsoft SharePoint by HTTP/sharepoint.get_dir.time)>2000`|Warning|**Manual close**: Yes| |Sharepoint: Bad health score||`last(/Microsoft SharePoint by HTTP/sharepoint.health_score)>"{$SHAREPOINT.MAX_HEALT_SCORE}"`|Average|| ### LLD rule Directory discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Directory discovery||Script|sharepoint.directory.discovery**Preprocessing**
Discard unchanged with heartbeat: `6h`
Size of:
{#SHAREPOINT.LLD.FULL_PATH}
|Dependent item|sharepoint.size["{#SHAREPOINT.LLD.FULL_PATH}"]**Preprocessing**
JSON Path: `{{#SHAREPOINT.LLD.JSON_PATH}.regsub("(.*)", \1)}.meta.size`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `24h`
Date of change:
{#SHAREPOINT.LLD.FULL_PATH}
|Dependent item|sharepoint.modified["{#SHAREPOINT.LLD.FULL_PATH}"]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `3h`
Date of creation:
{#SHAREPOINT.LLD.FULL_PATH}
|Dependent item|sharepoint.created["{#SHAREPOINT.LLD.FULL_PATH}"]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `3h`
Updated date of modification of folder / file
|`last(/Microsoft SharePoint by HTTP/sharepoint.modified["{#SHAREPOINT.LLD.FULL_PATH}"],#1)<>last(/Microsoft SharePoint by HTTP/sharepoint.modified["{#SHAREPOINT.LLD.FULL_PATH}"],#2)`|Info|**Manual close**: Yes| ## Feedback Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com) You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)