src/go/plugin/go.d/modules/httpcheck/config_schema.json
{
"jsonSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "HTTPCheck collector configuration.",
"type": "object",
"properties": {
"update_every": {
"title": "Update every",
"description": "Data collection interval, measured in seconds.",
"type": "integer",
"minimum": 1,
"default": 5
},
"url": {
"title": "URL",
"description": "The URL of the HTTP endpoint.",
"type": "string",
"format": "uri"
},
"timeout": {
"title": "Timeout",
"description": "The timeout in seconds for the HTTP request.",
"type": "number",
"minimum": 0.5,
"default": 1
},
"not_follow_redirects": {
"title": "Not follow redirects",
"description": "If set, the client will not follow HTTP redirects automatically.",
"type": "boolean"
},
"method": {
"title": "Method",
"description": "The [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) to use for the request. An empty string means `GET`.",
"type": "string",
"default": "GET",
"examples": [
"GET",
"POST",
"PUT",
"PATCH"
]
},
"body": {
"title": "Body",
"description": "The body content to send along with the HTTP request (if applicable).",
"type": "string"
},
"status_accepted": {
"title": "Status code check",
"description": "Specifies the list of **HTTP response status codes** that are considered **acceptable**. Responses with status codes not included in this list will be categorized as 'bad status' in the status chart.",
"type": [
"array",
"null"
],
"items": {
"title": "Code",
"type": "integer",
"minimum": 100,
"default": 200
},
"minItems": 1,
"uniqueItems": true,
"default": [
200
]
},
"response_match": {
"title": "Content check",
"description": "Specifies a [regular expression](https://regex101.com/) pattern to match against the content (body) of the HTTP response. This check is performed only if the response's status code is accepted.",
"type": "string"
},
"header_match": {
"title": "Header check",
"description": "Specifies a set of rules to check for specific key-value pairs in the HTTP headers of the response.",
"type": [
"array",
"null"
],
"items": {
"type": [
"object",
"null"
],
"properties": {
"exclude": {
"title": "Exclude",
"description": "Determines whether the rule checks for the presence or absence of the specified key-value pair in the HTTP headers.",
"type": "boolean"
},
"key": {
"title": "Header key",
"description": "Specifies the exact name of the HTTP header to check for.",
"type": "string"
},
"value": {
"title": "Header value pattern",
"description": "Specifies the [matcher pattern](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/pkg/matcher#readme) to match against the value of the specified header.",
"type": "string"
}
},
"required": [
"key",
"value"
]
}
},
"username": {
"title": "Username",
"description": "The username for basic authentication.",
"type": "string",
"sensitive": true
},
"password": {
"title": "Password",
"description": "The password for basic authentication.",
"type": "string",
"sensitive": true
},
"cookie_file": {
"title": "Cookie file",
"description": "Specifies the path to the file containing cookies. For more information about the cookie file format, see [cookie file format](https://everything.curl.dev/http/cookies/fileformat).",
"type": "string"
},
"proxy_url": {
"title": "Proxy URL",
"description": "The URL of the proxy server.",
"type": "string"
},
"proxy_username": {
"title": "Proxy username",
"description": "The username for proxy authentication.",
"type": "string",
"sensitive": true
},
"proxy_password": {
"title": "Proxy password",
"description": "The password for proxy authentication.",
"type": "string",
"sensitive": true
},
"headers": {
"title": "Headers",
"description": "Additional HTTP headers to include in the request.",
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "string"
}
},
"tls_skip_verify": {
"title": "Skip TLS verification",
"description": "If set, TLS certificate verification will be skipped.",
"type": "boolean"
},
"tls_ca": {
"title": "TLS CA",
"description": "The path to the CA certificate file for TLS verification.",
"type": "string",
"pattern": "^$|^/"
},
"tls_cert": {
"title": "TLS certificate",
"description": "The path to the client certificate file for TLS authentication.",
"type": "string",
"pattern": "^$|^/"
},
"tls_key": {
"title": "TLS key",
"description": "The path to the client key file for TLS authentication.",
"type": "string",
"pattern": "^$|^/"
}
},
"required": [
"url",
"status_accepted"
],
"additionalProperties": false,
"patternProperties": {
"^name$": {}
}
},
"uiSchema": {
"ui:flavour": "tabs",
"ui:options": {
"tabs": [
{
"title": "Base",
"fields": [
"update_every",
"url",
"timeout",
"not_follow_redirects",
"method",
"body"
]
},
{
"title": "Checks",
"fields": [
"status_accepted",
"response_match",
"header_match"
]
},
{
"title": "Auth",
"fields": [
"username",
"password",
"cookie_file"
]
},
{
"title": "TLS",
"fields": [
"tls_skip_verify",
"tls_ca",
"tls_cert",
"tls_key"
]
},
{
"title": "Proxy",
"fields": [
"proxy_url",
"proxy_username",
"proxy_password"
]
},
{
"title": "Headers",
"fields": [
"headers"
]
}
]
},
"uiOptions": {
"fullPage": true
},
"url": {
"ui:placeholder": "http://127.0.0.1"
},
"timeout": {
"ui:help": "Accepts decimals for precise control (e.g., type 1.5 for 1.5 seconds)."
},
"method": {
"ui:placeholder": "GET"
},
"body": {
"ui:widget": "textarea"
},
"username": {
"ui:widget": "password"
},
"proxy_username": {
"ui:widget": "password"
},
"password": {
"ui:widget": "password"
},
"proxy_password": {
"ui:widget": "password"
}
}
}