Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:documentation:03_monitoring:06_web_monitoring [2021/04/30 15:17]
admscopia
en:documentation:03_monitoring:06_web_monitoring [2021/11/05 12:05] (current)
Line 4: Line 4:
 [[en:documentation:start|Go back to Pandora FMS documentation index]] [[en:documentation:start|Go back to Pandora FMS documentation index]]
  
-= Classic Web Monitoring =+===== Classic Web Monitoring =====
  
-====== Introduction ====== +==== Introduction ==== 
-In the Enterprise version{{wiki:icono-modulo-enterprise.png|Versión Enterprise.}}, it is possible to monitor a Web using the WEB Server component(Goliat Server).+In the Enterprise version{{wiki:icono-modulo-enterprise.png |Versión Enterprise.}}, it is possible to monitor a Web using the WEB Server component(Goliat Server).
  
-{{wiki: GoliatLogo 2.jpg ?200}}+{{ wiki: GoliatLogo 2.jpg?200}}
  
 This feature comes from an old project of the founder of Pandora FMS: Goliat F.I.S.T. It was an open source project to perform dynamic load audits on web services. You can still find the [[https://sourceforge.net/projects/goliat/|source code (from 2002)]] whose updating stopped around 2010. This feature comes from an old project of the founder of Pandora FMS: Goliat F.I.S.T. It was an open source project to perform dynamic load audits on web services. You can still find the [[https://sourceforge.net/projects/goliat/|source code (from 2002)]] whose updating stopped around 2010.
  
-In Pandora FMS, it works as an independent server, similar to the [[Pandora:Documentation_en:Architecture#The_Network_Server|Network server]], [[Pandora:Documentation_en:Architecture#The_WMI_Server|WMI Server]] or [[Pandora:Documentation_en:Architecture#The_Plugin_Server|remote plugin server]]. +In Pandora FMS, it works as an independent server, similar to the [[en:documentation:01_understanding:02_architecture#The_Network_Server|Network server]], [[en:documentation:01_understanding:02_architecture#The_WMI_Server|WMI Server]] or [[en:documentation:01_understanding:02_architecture#The_Plugin_Server|remote plugin server]]. 
 This system operates under the principle of //web transaction//, where each complete transaction against one or more WEB pages is defined by one or more consecutive steps, which must be successfully concluded in order to consider the transaction properly completed. The execution of a //web transaction// faithfully reproduces the complete browsing process that can include aspects such as authenticating yourself in a form, clicking on a menu option or filling in a form, verifying that each step returns a specific text string.  This system operates under the principle of //web transaction//, where each complete transaction against one or more WEB pages is defined by one or more consecutive steps, which must be successfully concluded in order to consider the transaction properly completed. The execution of a //web transaction// faithfully reproduces the complete browsing process that can include aspects such as authenticating yourself in a form, clicking on a menu option or filling in a form, verifying that each step returns a specific text string. 
  
Line 20: Line 20:
 Goliat is able to monitor both HTTP and HTTPS in a transparent way for the user, supports session management through cookies, parameter passage, and of course, downloading the resources associated with each page. It also has **important limitations such as the dynamic management of javascript at runtime**. For more complex web transactions, Pandora FMS has another much more powerful  (and complex) component called [[en:documentation:03_monitoring:13_user_monitorization|WUX monitoring)]]. Goliat is able to monitor both HTTP and HTTPS in a transparent way for the user, supports session management through cookies, parameter passage, and of course, downloading the resources associated with each page. It also has **important limitations such as the dynamic management of javascript at runtime**. For more complex web transactions, Pandora FMS has another much more powerful  (and complex) component called [[en:documentation:03_monitoring:13_user_monitorization|WUX monitoring)]].
  
-======Installation and Configuration====== +==== Installation and Configuration ==== 
-To be able to use Goliat, [[Pandora:Documentation_en:Configuration#Configuration_File_Elements|activate]] it in the Pandora FMS Enterprise server:+To be able to use Goliat, [[en:documentation:02_installation:04_configuration#Configuration_File_Elements|activate]] it in the Pandora FMS Enterprise server:
  
- webserver 1+  webserver 1
  
 Depending on the number of requests you want to make, you may have to increase the number of threads and the default timeout: Depending on the number of requests you want to make, you may have to increase the number of threads and the default timeout:
  
 +<code>
  web_threads 1   web_threads 1 
  web_timeout 60  web_timeout 60
 +</code>
  
 There is an advanced configuration token that will allow you to change the type of library you use under Goliat, LWP or CURL. CURL is used by default, but you can change it at any time: There is an advanced configuration token that will allow you to change the type of library you use under Goliat, LWP or CURL. CURL is used by default, but you can change it at any time:
  
- web_engine curl+  web_engine curl
  
-====== Creating Web Modules ======+==== Creating Web Modules ====
 To monitor a web page remotely, once the agent is created, click on the **modules** tab. Then, select **Create a new webserver module** and click on **Create**: To monitor a web page remotely, once the agent is created, click on the **modules** tab. Then, select **Create a new webserver module** and click on **Create**:
  
-{{ wiki:Gagita2.png ?500}}+{{ wiki:Gagita2.png?500 }}
  
 Click on **Create** to see a form where to fill out the appropriate fields to monitor a web page. Click on **Create** to see a form where to fill out the appropriate fields to monitor a web page.
  
-{{ wiki:goliat_types.jpg ?600}}+{{ wiki:goliat_types.jpg?600 }}
  
 There are several check types to choose from: There are several check types to choose from:
Line 47: Line 49:
   * **Remote HTTP module to check latency**: It obtains the total time that elapses from the first request until the last one is checked (in a WEB test there are one or more intermediate requests that complete the transaction). If it is defined in the check definition that the transaction must be carried out more than once, the average time of each request is used.   * **Remote HTTP module to check latency**: It obtains the total time that elapses from the first request until the last one is checked (in a WEB test there are one or more intermediate requests that complete the transaction). If it is defined in the check definition that the transaction must be carried out more than once, the average time of each request is used.
  
-  * **Remote HTTP module to check server response**: It shows the values 1 ( <code>OK</code> ) or 0 ( <code>CRITICAL</code> ) as a result from checking the entire transaction. If there are several attempts, but at least one of them has failed, the test as a whole is also considered to have failed. Precisely the number of attempts is sometimes used to avoid false positives. In case you may want to perform the test several times in case of a failure, use the// retries// field in advanced fields.+  * **Remote HTTP module to check server response**: It shows the values 1 ( ''OK'' ) or 0 ( ''CRITICAL'' ) as a result from checking the entire transaction. If there are several attempts, but at least one of them has failed, the test as a whole is also considered to have failed. Precisely the number of attempts is sometimes used to avoid false positives. In case you may want to perform the test several times in case of a failure, use the// retries// field in advanced fields.
  
   * **Remote HTTP module to retrieve numeric data**: It retrieves a numeric value from an HTTP response using a regular expression.   * **Remote HTTP module to retrieve numeric data**: It retrieves a numeric value from an HTTP response using a regular expression.
Line 53: Line 55:
   * **Remote HTTP module to retrieve string data**: It retrieves a string from an HTTP response using a regular expression.   * **Remote HTTP module to retrieve string data**: It retrieves a string from an HTTP response using a regular expression.
  
-  * **Remote HTTP module to check server status code:**: By means of the **curl** tool properly enabled with the <code>web_engine curl</code> configuration token, HTTP headers can be returned.+  * **Remote HTTP module to check server status code:**: By means of the **curl** tool properly enabled with the ''web_engine curl'' configuration token, HTTP headers can be returned.
  
-**Web Checks**: This essential field defines the WEB check to be performed. This is defined in one or more steps, or simple requests. These simple requests must be written in a special format in the Web checks field. Checks start with the tab page <code>task_begin</code> and end with the tab page <code>task_end</code>.+**Web Checks**: This essential field defines the WEB check to be performed. This is defined in one or more steps, or simple requests. These simple requests must be written in a special format in the Web checks field. Checks start with the tab page ''task_begin'' and end with the tab page ''task_end''.
  
 A complete example of a simple transaction would be the following: A complete example of a simple transaction would be the following:
  
 +<code>
  task_begin  task_begin
- head <nowiki>http://apache.org/</nowiki>+ head http://apache.org/
  task_end  task_end
 +</code>
  
-{{ wiki:Resources-manage_agents-modules-remote_http_module_to_check_server_status_code.png ?550}}+{{ wiki:Resources-manage_agents-modules-remote_http_module_to_check_server_status_code.png?550 }}
  
 After saving, you can force the execution of the Module and visualize its result: After saving, you can force the execution of the Module and visualize its result:
  
-{{ wiki:Resources-manage_agents-modules-remote_http_module_to_check_server_status_code-result.png ?600}}+{{ wiki:Resources-manage_agents-modules-remote_http_module_to_check_server_status_code-result.png?600 }}
  
 Another example with more commands: Another example with more commands:
  
 +<code>
  task_begin   task_begin 
  get http://apache.org/  get http://apache.org/
Line 77: Line 82:
  check_string Apache Software Foundation  check_string Apache Software Foundation
  task_end  task_end
 +</code>
  
-In this basic example, it is being checked whether there is a string in a web page. To that end, there is the variable <code>check_string</code>. This variable does not allow you to check HTML itself, it only searches for text sub-strings. If you look for "Apache Software Foundation" on the <nowiki><http://apache.org></nowiki> and if that text string exists, the check will return OK (if it is //Remote HTTP module to check server response//)+In this basic example, it is being checked whether there is a string in a web page. To that end, there is the variable ''check_string''. This variable does not allow you to check HTML itself, it only searches for text sub-strings. If you look for "Apache Software Foundation" on the <http://apache.org> and if that text string exists, the check will return OK (if it is //Remote HTTP module to check server response//)
  
-To ensure that a string does not exist on a web page, you can use the variable <code>check_not_string</code>>+To ensure that a string does not exist on a web page, you can use the variable ''check_not_string''>
  
- check_not_string Section 3+  check_not_string Section 3
  
-The arguments taken by the <code>check_string</code> syntax are not normal text strings, they are "regular expressions". That is to say, if you search for the string <code>Pandora FMS (4.0)</code> you will have to search for it with a regular expression, e.g. <code>Pandora FMS \(4.0\)</code>. This allows you to perform much more powerful researches, but you should be aware that any character other than a letter or number will have to be escaped with con <code>\</code>.+The arguments taken by the ''check_string'' syntax are not normal text strings, they are "regular expressions". That is to say, if you search for the string ''Pandora FMS (4.0)'' you will have to search for it with a regular expression, e.g. ''Pandora FMS \(4.0\)''. This allows you to perform much more powerful researches, but you should be aware that any character other than a letter or number will have to be escaped with con ''\''.
  
 There are several extra variables to check forms: There are several extra variables to check forms:
  
-***resource (1 or 0)**: It downloads all the web resources (images, videos, etc). +  * **resource (1 or 0)**: It downloads all the web resources (images, videos, etc). 
-***cookie (1 or 0)**: It keeps a cookie or an open session for later checks. +  * **cookie (1 or 0)**: It keeps a cookie or an open session for later checks. 
-***variable_name**: The name of a variable in a form. +  * **variable_name**: The name of a variable in a form. 
-***variable_value**: The value of the previous variable on the form.+  * **variable_value**: The value of the previous variable on the form.
  
 By using these variables, it is possible to send data to forms and check whether they work appropriately or not. By using these variables, it is possible to send data to forms and check whether they work appropriately or not.
  
-{{pandora:documentation_en:warning|In some specific cases, the domain redirection may **not** work. To solve this problem, create a module that uses the final domain address after all redirections are completed.}}+<WRAP center round important 60%> 
 +In some specific cases, the domain redirection may **not** work. To solve this problem, create a module that uses the final domain address after all redirections are completed. 
 +</WRAP>
  
-For the previous case, the **curl** command has the parameter <code> -L</code> in its short version and <code>--location</code> in its long version, so when it receives HTTP 3XX redirections, it executes again against the redirected domain. **However, the flexibility of Pandora FMS** allows you to use the debug button.+For the previous case, the **curl** command has the parameter '' -L'' in its short version and ''--location'' in its long version, so when it receives HTTP 3XX redirections, it executes again against the redirected domain. **However, the flexibility of Pandora FMS** allows you to use the debug button.
  
-{{ wiki:Resources-manage agents-modules-remote http debug.png ?700}}+{{ wiki:Resources-manage agents-modules-remote http debug.png?700 }}
  
 At the moment of creating the Module, it is inactive and you will be able to make use of it after you have done the first check, which you can force to run to save time. At the moment of creating the Module, it is inactive and you will be able to make use of it after you have done the first check, which you can force to run to save time.
Line 105: Line 113:
 When you modify this Module, click on the **Debug** button and you can enter debug mode to edit the **Query**: When you modify this Module, click on the **Debug** button and you can enter debug mode to edit the **Query**:
  
-{{ wiki:Resources-manage agents-modules-remote http debug-curl parameters.png ?800}}+{{ wiki:Resources-manage agents-modules-remote http debug-curl parameters.png?800 }}
  
 You can execute the query that the module has with the button **Execute query** as well as modify and re-execute it with other values until you get the desired result. You can execute the query that the module has with the button **Execute query** as well as modify and re-execute it with other values until you get the desired result.
  
-{{ wiki:Resources-manage agents-modules-remote http debug-curl parameters pfms.png ?700}}+{{ wiki:Resources-manage agents-modules-remote http debug-curl parameters pfms.png?700 }}
  
-====== Checking website loading time ====== +==== Checking website loading time ==== 
-If you want to check the latency of a website, select the module type named **Remote HTTP module to check latency**. If you want to find out the latency of the <nowiki><https://pandorafms.com></nowiki>>+If you want to check the latency of a website, select the module type named **Remote HTTP module to check latency**. If you want to find out the latency of the <https://pandorafms.com>>
  
 +<code>
  task_begin  task_begin
- get <nowiki>https://pandorafms.com</nowiki>+ get https://pandorafms.com
  task_end  task_end
 +</code>
  
-Add the <code>resource 1</code> configuration token so that the download time you calculate includes the download of all resources (javascript, CSS, images, etc.), thus calculating a more real data. +Add the ''resource 1'' configuration token so that the download time you calculate includes the download of all resources (javascript, CSS, images, etc.), thus calculating a more real data. 
  
  
-{{pandora:documentation_en:tip|The download time of the website is NOT the time it takes to see a web site in a browser, as this usually depends on the loading time of Javascript, and Goliat downloads the javascript, but does not run it.}}+<WRAP center round tip 60%> 
 +The download time of the website is NOT the time it takes to see a web site in a browser, as this usually depends on the loading time of Javascript, and Goliat downloads the javascript, but does not run it. 
 +</WRAP>
  
-====== Website Checks through a Proxy======+==== Website Checks through a Proxy ====
 You can also carry out website checks by using a proxy. To configure the proxy, add the proxy URL in the 'Proxy URL' field which is located under **Advanced options**: You can also carry out website checks by using a proxy. To configure the proxy, add the proxy URL in the 'Proxy URL' field which is located under **Advanced options**:
  
Line 129: Line 141:
 An example of the URL could be: An example of the URL could be:
  
- <nowiki>http://proxy.domain.com:8080</nowiki>+  http://proxy.domain.com:8080
  
-If the proxy requires an authentication, you may use the following where <code>my-user</code> is the username and <code>my_pwd</code> is the password:+If the proxy requires an authentication, you may use the following where ''my-user'' is the username and ''my_pwd'' is the password:
  
- <nowiki>http://my-user:[email protected]:8080</nowiki>+  http://my-user:[email protected]:8080
  
-{{ wiki:Goliat_proxy_conf.png ?700}}+{{ wiki:Goliat_proxy_conf.png?700 }}
  
-====== Retrieving data from a website ======+==== Retrieving data from a website ====
 Sometimes monitoring does not consist of finding out whether a specific Web site is working or how long it takes, but to get a real time value, such as Google's stock market value. To that end, use a **Remote HTTP module to retrieve numeric data** with the appropriate regular expression: Sometimes monitoring does not consist of finding out whether a specific Web site is working or how long it takes, but to get a real time value, such as Google's stock market value. To that end, use a **Remote HTTP module to retrieve numeric data** with the appropriate regular expression:
  
 +<code>
  task_begin  task_begin
- get <nowiki>http://finance.google.com/finance/info?client=ig&q=NASDAQ%3aGOOG</nowiki>+ get http://finance.google.com/finance/info?client=ig&q=NASDAQ%3aGOOG
  get_content \d+\.\d+  get_content \d+\.\d+
  task_end  task_end
 +</code>
  
 The output will look like this: The output will look like this:
  
-[[image:Google_stock_quote.png|center|700px]]+{{ wiki:Google_stock_quote.png?700 }}
  
  
-It is also possible to specify a more complex regular expression for collecting data from more complex HTTP responses with the <code>get_content_advanced</code> configuration token: +It is also possible to specify a more complex regular expression for collecting data from more complex HTTP responses with the ''get_content_advanced'' configuration token:
  
 +<code>
  task_begin  task_begin
- <nowiki>get http://finance.yahoo.com/q?s=GOOG</nowiki> + get http://finance.yahoo.com/q?s = GOOG 
- <nowiki>get_content_advanced <span id="yfs_l84_goog">([[\d\.]]+)</span></nowiki>+ get_content_advanced <span id ="yfs_l84_goog">([\d\.]+)</span>
  task_end  task_end
 +</code>
  
-{{pandora:documentation_en:warning|The part of the regular expression defined in <code>get_content_advanced</code> must be enclosed in brackets.}}+<WRAP center round important 60%> 
 +The part of the regular expression defined in ''get_content_advanced'' must be enclosed in brackets. 
 +</WRAP>
  
 To configure the thresholds that will trigger warning or critical status, use the module configuration to verify that the received string matches what is expected. To configure the thresholds that will trigger warning or critical status, use the module configuration to verify that the received string matches what is expected.
  
-====== Website form checking ======+==== Website form checking ====
 Web form checking is much more complex than simply checking a text on a website. This example check will use Pandora FMS Console, log in, and verify that it has been able to do it. It verifies a text in the **workspace** section where it shows the data of the user who has logged in. If it is a default console, the admin user contains the description "Admin Pandora". Web form checking is much more complex than simply checking a text on a website. This example check will use Pandora FMS Console, log in, and verify that it has been able to do it. It verifies a text in the **workspace** section where it shows the data of the user who has logged in. If it is a default console, the admin user contains the description "Admin Pandora".
  
 To be able to perform this type of checks, you must have the necessary credentials. In addition, go to the page and get the HTML code to be able to see the names of the variables. Then, it is necessary to have a basic knowledge of HTML to understand how Goliat works. To be able to perform this type of checks, you must have the necessary credentials. In addition, go to the page and get the HTML code to be able to see the names of the variables. Then, it is necessary to have a basic knowledge of HTML to understand how Goliat works.
  
-{{pandora:documentation_en:tip|The ideal procedure when designing a WEB transactional test with several steps is to test it step by step, in case something was missed in one of the steps.}}+<WRAP center round tip 60%> 
 +The ideal procedure when designing a WEB transactional test with several steps is to test it step by step, in case something was missed in one of the steps. 
 +</WRAP>
  
 The example Console is: The example Console is:
  
- <nowiki>http://192.168.70.116/pandora_console/</nowiki>+  http://192.168.70.116/pandora_console/
  
 Analyzing the HTML code, it is observed that the variables of the login form are: Analyzing the HTML code, it is observed that the variables of the login form are:
  
-  * <code>nick</code>> user name +  * ''nick''> user name 
-  * <code>pass</code>> user password+  * ''pass''> user password
  
-The variables <code>variable_name</code> and <code>variable_value</code> should be used together to validate the form. Pandora FMS Console has by default the <code>admin</code> and <code>pandora</code> values.+The variables ''variable_name'' and ''variable_value'' should be used together to validate the form. Pandora FMS Console has by default the ''admin'' and ''pandora'' values.
  
 Firstly, access the form, send the user and password and authenticate (determining the success of that authentication will be seen in the following step). Firstly, access the form, send the user and password and authenticate (determining the success of that authentication will be seen in the following step).
  
 +<code>
  task_begin  task_begin
- post <nowiki>http://192.168.70.116/pandora_console/index.php?  + post http://192.168.70.116/pandora_console/index.php?  
- login=1</nowiki>+ login =1
  variable_name nick  variable_name nick
  variable_value admin  variable_value admin
Line 192: Line 212:
  resource 1  resource 1
  task_end  task_end
 +</code>
  
-The //token// <code>cookie 1</code> is used to keep the persistence of values obtained in the previous step, after a successful authentication. Then go to the page of user details and look for the phone, which by default for the "admin" user is 555-555-555. If you can see it, it means that you have logged in correctly in the console (note the use of the <code>check_string</code> command):+The //token// ''cookie 1'' is used to keep the persistence of values obtained in the previous step, after a successful authentication. Then go to the page of user details and look for the phone, which by default for the "admin" user is 555-555-555. If you can see it, it means that you have logged in correctly in the console (note the use of the ''check_string'' command):
  
 +<code>
  task_begin  task_begin
- get <nowiki>http://192.168.70.116/pandora_console/index.php?  + get http://192.168.70.116/pandora_console/index.php?  
-sec=workspace&sec2=operation/users/user_edit</nowiki>+ sec = workspace&sec2= operation/users/user_edit
  cookie 1  cookie 1
  resource 1  resource 1
  check_string 555-555-5555  check_string 555-555-5555
  task_end  task_end
 +</code>
  
-And finally, log out from the Console and look for the logout message <code>Logged out</code>>+And finally, log out from the Console and look for the logout message ''Logged out''>
  
 +<code>
  task_begin  task_begin
- get <nowiki>http://192.168.70.116/pandora_console/index.php? bye=bye</nowiki>+ get http://192.168.70.116/pandora_console/index.php? bye = bye
  cookie 1  cookie 1
  resource 1  resource 1
  check_string Logged out  check_string Logged out
  task_end  task_end
 +</code>
  
 Total //script// check: Total //script// check:
  
-{{wiki:goliat_full_sample.jpg?800}}+{{ wiki:goliat_full_sample.jpg?800 }}
  
-====== WEB query performance ======+==== WEB query performance ====
 The fields of the advanced properties are similar to those of other types of modules, although there are some different and specific fields of WEB checks: The fields of the advanced properties are similar to those of other types of modules, although there are some different and specific fields of WEB checks:
  
-;Timeout: This is the expiry time during the request. If it is exceeded, the request for verification will be discarded.+**Timeout**
  
-;Agent browser id: This is the web browser identifier to be used, since certain pages only accept some web browsers (see https://www.zytrax.com/tech/web/browser_ids.htm for more information).+ This is the expiry time during the requestIf it is exceeded, the request for verification will be discarded.
  
-;Requests: Pandora FMS will repeat the check the amount of times indicated in this parameter. If one of the checks fails, the check will be considered erroneous. Depending on the number of checks in the module, a certain number of pages will be obtained. That means that if the module consists of three checks, three pages will be downloaded, and if some value has been set in the **Requests** field, then the number of downloads will be multiplied by it. It is important to keep this in mind to know the total time it will take for the module to complete the operations.+**Agent browser id**
  
-;Retries: The number of times it does a **Request** until getting a successful result. Examples: + This is the web browser identifier to be used, since certain pages only accept some web browsers (see https://www.zytrax.com/tech/web/browser_ids.htm for more information). 
 + 
 +**Requests** 
 + 
 + Pandora FMS will repeat the check the amount of times indicated in this parameter. If one of the checks fails, the check will be considered erroneous. Depending on the number of checks in the module, a certain number of pages will be obtained. That means that if the module consists of three checks, three pages will be downloaded, and if some value has been set in the **Requests** field, then the number of downloads will be multiplied by it. It is important to keep this in mind to know the total time it will take for the module to complete the operations. 
 + 
 +**Retries** 
 + 
 + The number of times it does a **Request** until getting a successful result. Examples: 
   * retries = 2 and Requests = 1: If the first test fails, it will retry once more and if the second one works, the check is valid.   * retries = 2 and Requests = 1: If the first test fails, it will retry once more and if the second one works, the check is valid.
   * Retries = 1 and Requests = 2: It performs two checks, but if any of them fails, it will result in a failed check.   * Retries = 1 and Requests = 2: It performs two checks, but if any of them fails, it will result in a failed check.
  
-====== Simple HTTP Authentication ====== +==== Simple HTTP Authentication ====
-Some websites might require [[https://en.wikipedia.org/wiki/Basic_access_authentication|simple HTTP authentication]]. Generaly it is used as a fast authentication, a "hi" of minimum security that allows accessing advanced security checks (encryption, data persistance, etc.)+
  
-{{wiki:conexion_http.png?650}}+Some websites might require [[wp>Basic_access_authentication|simple HTTP authentication]]. Generally, it is used as quick authentication, a "hi" of minimum security that allows accessing advanced security checks (encryption, data persistance, etc.) 
 + 
 +{{  :wiki:conexion_http.png?650  }}
  
 It can be configured in the advanced check options (or directly in the WEB task definition) with the following configuration tokens: It can be configured in the advanced check options (or directly in the WEB task definition) with the following configuration tokens:
  
-;Check typeHTTP server check type. +**Check type** 
-;http auth (login)HTTP user. + 
-;http auth (password)Password. +HTTP server check type. 
-;Proxy auth realmAuth realm's name. + 
-;Proxy auth (server)Domain and HTTP port on which to listen on. +**http auth (login)** 
-;Proxy URLProxy server url. + 
-;Proxy auth (login)Proxy connection user. +HTTP user. 
-;Proxy auth (pass)Proxy connection password.+ 
 +**http auth (password)** 
 + 
 +Password. 
 + 
 +**Proxy auth realm** 
 + 
 +Auth realm's name. 
 + 
 +**Proxy auth (server)** 
 + 
 +Domain and HTTP port on which to listen on. 
 + 
 +**Proxy URL** 
 + 
 +Proxy server url. 
 + 
 +**Proxy auth (login)** 
 + 
 +Proxy connection user. 
 + 
 +**Proxy auth (pass)** 
 + 
 +Proxy connection password.
  
 Full example: Full example:
 +<code>
  
  task_begin  task_begin
- get <nowiki>http://artica.es/pandoraupdate4/ui/</nowiki>+ get http://artica.es/pandoraupdate4/ui/
  cookie 1  cookie 1
  resource 1  resource 1
Line 258: Line 316:
  task_end  task_end
  
-====== Webservice and API Monitoring ======+</code> 
 + 
 +<WRAP center round important 60%>The use of quotation marks in the password for ''http_auth_pass'' is not supported. Avoid using single quotes '' ' ''
 + 
 +</WRAP> 
 + 
 + 
 +==== Webservice and API Monitoring ==== 
 With Pandora FMS and Goliat you may [[https://en.wikipedia.org/wiki/Representational_state_transfer|REST]] APIs, except for more complex APIs based on protocols such as SOAP or XML-RPC. With Pandora FMS and Goliat you may [[https://en.wikipedia.org/wiki/Representational_state_transfer|REST]] APIs, except for more complex APIs based on protocols such as SOAP or XML-RPC.
 +<code>
  
-To check an API with this specific call which returns a number (from '0' to 'n') if it works properly; and if not, it returns nothing, (using <code>my_user</code> and <code>my_pass</code> as credentials):+task_begin 
 +get http://artica.es/integria/include/api.php?user=my_user&pass=my_pass&op=get_stats¶ms=opened,,
 +check_string \n[0-9]+ 
 +task_end
  
- task_begin +</code>
- get <nowiki>http://artica.es/integria/include/api.php?user=my_user&pass=my_pass&op=get_stats&params=opened,,1</nowiki> +
- check_string \n[[pandora:documentation_en:0-9]]+ +
- task_end+
  
 This will return a reply similar to this one: This will return a reply similar to this one:
  
- HTTP/1.1 200 OK +<code> 
- Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 +HTTP/1.1 200 OK 
- Connection: close +Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
- Date: Mon, 13 May 2013 15:39:27 GMT +Connection: close 
- Pragma: no-cache +Date: Mon, 13 May 2013 15:39:27 GMT 
- Server: Apache +Pragma: no-cache 
- Vary: Accept-Encoding +Server: Apache 
- Content-Type: text/html +Vary: Accept-Encoding 
- Expires: Thu, 19 Nov 1981 08:52:00 GMT +Content-Type: text/html 
- Client-Date: Mon, 13 May 2013 15:39:27 GMT +Expires: Thu, 19 Nov 1981 08:52:00 GMT 
- Client-Peer: 64.90.57.215:80 +Client-Date: Mon, 13 May 2013 15:39:27 GMT 
- Client-Response-Num:+Client-Peer: 64.90.57.215:80 
- Client-Transfer-Encoding: chunked +Client-Response-Num:
- Set-Cookie: a81d4c5e530ad73e256b7729246d3d2c=pcasWqI6pZzT2x2AuWo602; path=/ +Client-Transfer-Encoding: chunked 
-  +Set-Cookie: a81d4c5e530ad73e256b7729246d3d2c=pcasWqI6pZzT2x2AuWo602; path=/ 
- 0+ 
 +0 
 + 
 +</code>
  
 By checking the output with a regular expression, you may verify that everything works properly. For more complex answers, use other regular expressions accordingly. By checking the output with a regular expression, you may verify that everything works properly. For more complex answers, use other regular expressions accordingly.
  
-More examples: +More examples:
  
 +<code>
  task_begin  task_begin
- get <nowiki>https://swapi.co/api/planets/1/</nowiki>+ get https://swapi.dev/api/planets/1/
  get_content Tatooine  get_content Tatooine
  task_end  task_end
  
-In this case, the module created to show data must be **Remote HTTP module to retrieve string data (web_content_string)**.+</code>
  
 +In this case, the module created to show data must be **Remote HTTP module to retrieve string data (web_content_string)**.
 +<code>
  task_begin  task_begin
- get <nowiki>https://pokeapi.co/api/v2/pokemon/ditto/</nowiki>+ get https://pokeapi.co/api/v2/pokemon/ditto/
  get_content imposter  get_content imposter
  task_end  task_end
 +
 +</code>
  
 Just like the previous module, the type of data defined needs to be 'Remote HTTP module to retrieve string data (web_content_string)' for the module to work properly. Just like the previous module, the type of data defined needs to be 'Remote HTTP module to retrieve string data (web_content_string)' for the module to work properly.
  
 You may perform calls with **get_content_advanced**: You may perform calls with **get_content_advanced**:
 +<code>
 +task_begin
 +get https://api.hillbillysoftware.com/Awards/ByYear/1990
 +get_content_advanced "Nominee":"([A-Za-z ]+)","Year":"1990"
 +task_end
  
 +</code>
  
- task_begin +Result:
- get <nowiki>https://api.hillbillysoftware.com/Awards/ByYear/1990</nowiki> +
- get_content_advanced "Nominee":"([[pandora:documentation_en:a-za-z]]+)","Year":"1990" +
- task_end +
- +
-Result: +
  
-{{ wiki:APIwiki1.png ?600}}+{{  :wiki:apiwiki1.png?600  }}
  
 +In Pandora FMS the result would be displayed as follows:
  
-In Pandora FMS the result would be displayed as follows+{{  :wiki:apiwiki2.png?400  }}
  
-{{ wiki:APIwiki2.png ?400}}+<WRAP center round important 60%> It is important to properly define the capture groups within the parentheses so that the call is executed correctly</WRAP>
  
 +<WRAP center round important 60%> When creating API calls, it is important to know if the destination API has the right permissions to allow calls. </WRAP>
  
-{{pandora:documentation_en:warning|It is important to properly define the capture groups within the parentheses so that the call is executed correctly.}}  
  
-{{pandora:documentation_en:warning|When creating API calls, it is important to know if the destination API has the right permissions to allow calls.}}+==== HTTPS Monitoring ====
  
-====== HTTPS Monitoring ====== 
 Goliat is able to check both HTTP and HTTPS. To carry out checks on secured websites which use HTTPS, incorporate the protocol into its URL, e.g.: Goliat is able to check both HTTP and HTTPS. To carry out checks on secured websites which use HTTPS, incorporate the protocol into its URL, e.g.:
  
-<code>[email protected]@</code>+<code> 
 +task_begin 
 +get https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&ss=1&scc=1<mpl=default<mplcache=2 
 +cookie 1 
 +resource 0 
 +check_string Google 
 +task_end
  
-====== Advanced Options ====== +</code>
-===== Modifying HTTP Headers ===== +
-With the //header// option, you are able to modify HTTP headers or create your own. The example below changes the //Host// HTTP header:+
  
 +
 +==== Advanced Options ====
 +=== Modifying HTTP Headers ===
 +
 +With the //header// option, you are able to modify HTTP headers or create your own. The example below changes the //Host// HTTP header:
 +<code>
  task_begin  task_begin
- get <nowiki>http://192.168.1.5/index.php</nowiki>+ get http://192.168.1.5/index.php
  header Host 192.168.1.1  header Host 192.168.1.1
  task_end  task_end
  
-===== Debugging Web checks ===== +</code>
-If you want to debug Web checks, add the <code>debug <log_file></code> option. The files <code>log_file.req</code> and <code>log_file.res</code> will be created along with the contents of the HTTP request and response:+
  
 +
 +=== Debugging Web checks ===
 +
 +If you want to debug Web checks, add the ''debug <log_file>'' option. The files ''log_file.req'' and ''log_file.res'' will be created along with the contents of the HTTP request and response:
 +<code>
  task_begin  task_begin
- get <nowiki>http://192.168.1.5/index.php</nowiki>+ get http://192.168.1.5/index.php
  debug /tmp/request.log  debug /tmp/request.log
  task_end  task_end
  
-===== Using CURL instead of LWP ===== +</code>
-LWP library sometimes crashes when multiple threads issue HTTPS requests simultaneously (due to an OpenSSL constraint). The alternative is to use the [[https://curl.se/dlwiz/|**curl** tool]] To solve this problem, edit the file named <code>/etc/pandora/pandora_server.conf</code> and the following line:+
  
- web_engine curl+ 
 +=== Using CURL instead of LWP === 
 + 
 +LWP library sometimes crashes when multiple threads issue HTTPS requests simultaneously (due to an OpenSSL constraint). The alternative is to use the [[https://curl.se/dlwiz/|curl tool]] To solve this problem, edit the file named ''/etc/pandora/pandora_server.conf'' and the following line: 
 +<code> 
 + 
 +web_engine curl 
 + 
 +</code>
  
 Restart Pandora FMS Server, and the CURL binary will be used to perform web checks instead of LWP. Restart Pandora FMS Server, and the CURL binary will be used to perform web checks instead of LWP.
  
-= Advanced Transactional Monitoring = 
  
-In addition to the feature offered by Goliath, there are other ways to carry out web transactional monitoring.  +===== Advanced Transactional Monitoring ===== 
-  * In a distributed way (UX), deployed as an "agent" in systems different to that of the server, even in unaccessible networks.  + 
-  * In a [[en:documentation:03_monitoring:13_user_monitorization|centralized way (WUX)]]+In addition to the feature offered by Goliath, there are other ways to carry out web transactional monitoring. 
 + 
 +  * [[:en:documentation:03_monitoring:13_user_monitorization#differences_between_ux_and_wux_monitoring|In a distributed way (UX)]], deployed as an "agent" in systems different to that of the server, even in unaccessible networks. 
 +  * In a centralized way (WUX) 
 + 
 +[[:en:documentation:start|Go back to Pandora FMS documentation index]]
  
-[[Pandora:Documentation_en|Go back to Pandora FMS documentation index]] 
  
-[[Category:Pandora FMS]] 
-[[Category:Documentation]] 
ºº