diff options
-rw-r--r-- | plugins/check_curl.c | 84 |
1 files changed, 61 insertions, 23 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c index 26be33c1..63c07e3e 100644 --- a/plugins/check_curl.c +++ b/plugins/check_curl.c | |||
@@ -207,6 +207,13 @@ int process_arguments (int, char**); | |||
207 | void handle_curl_option_return_code (CURLcode res, const char* option); | 207 | void handle_curl_option_return_code (CURLcode res, const char* option); |
208 | int check_http (void); | 208 | int check_http (void); |
209 | void redir (curlhelp_write_curlbuf*); | 209 | void redir (curlhelp_write_curlbuf*); |
210 | char *perfd_time (double microsec); | ||
211 | char *perfd_time_connect (double microsec); | ||
212 | char *perfd_time_ssl (double microsec); | ||
213 | char *perfd_time_firstbyte (double microsec); | ||
214 | char *perfd_time_headers (double microsec); | ||
215 | char *perfd_time_transfer (double microsec); | ||
216 | char *perfd_size (int page_len); | ||
210 | void print_help (void); | 217 | void print_help (void); |
211 | void print_usage (void); | 218 | void print_usage (void); |
212 | void print_curl_version (void); | 219 | void print_curl_version (void); |
@@ -222,7 +229,6 @@ int net_noopenssl_check_certificate (cert_ptr_union*, int, int); | |||
222 | 229 | ||
223 | int curlhelp_parse_statusline (const char*, curlhelp_statusline *); | 230 | int curlhelp_parse_statusline (const char*, curlhelp_statusline *); |
224 | void curlhelp_free_statusline (curlhelp_statusline *); | 231 | void curlhelp_free_statusline (curlhelp_statusline *); |
225 | char *perfd_time_ssl (double microsec); | ||
226 | char *get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header); | 232 | char *get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header); |
227 | int check_document_dates (const curlhelp_write_curlbuf *, char (*msg)[DEFAULT_BUFFER_SIZE]); | 233 | int check_document_dates (const curlhelp_write_curlbuf *, char (*msg)[DEFAULT_BUFFER_SIZE]); |
228 | int get_content_length (const curlhelp_write_curlbuf* header_buf, const curlhelp_write_curlbuf* body_buf); | 234 | int get_content_length (const curlhelp_write_curlbuf* header_buf, const curlhelp_write_curlbuf* body_buf); |
@@ -710,23 +716,20 @@ GOT_FIRST_CERT: | |||
710 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME, &time_appconnect), "CURLINFO_APPCONNECT_TIME"); | 716 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME, &time_appconnect), "CURLINFO_APPCONNECT_TIME"); |
711 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &time_headers), "CURLINFO_PRETRANSFER_TIME"); | 717 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &time_headers), "CURLINFO_PRETRANSFER_TIME"); |
712 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &time_firstbyte), "CURLINFO_STARTTRANSFER_TIME"); | 718 | handle_curl_option_return_code (curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &time_firstbyte), "CURLINFO_STARTTRANSFER_TIME"); |
713 | snprintf(perfstring, DEFAULT_BUFFER_SIZE, "time=%.6gs;%.6g;%.6g;; size=%dB;;; time_connect=%.6gs;;;; %s time_headers=%.6gs;;;; time_firstbyte=%.6gs;;;; time_transfer=%.6gs;;;;", | 719 | snprintf(perfstring, DEFAULT_BUFFER_SIZE, "%s %s %s %s %s %s %s", |
714 | total_time, | 720 | perfd_time(total_time), |
715 | warning_thresholds != NULL ? (double)thlds->warning->end : 0.0, | 721 | perfd_size(page_len), |
716 | critical_thresholds != NULL ? (double)thlds->critical->end : 0.0, | 722 | perfd_time_connect(time_connect), |
717 | page_len, | 723 | use_ssl == TRUE ? perfd_time_ssl (time_appconnect-time_connect) : "", |
718 | time_connect, | 724 | perfd_time_headers(time_headers - time_appconnect), |
719 | use_ssl == TRUE ? perfd_time_ssl(time_appconnect-time_connect) : "", | 725 | perfd_time_firstbyte(time_firstbyte - time_headers), |
720 | (time_headers - time_appconnect), | 726 | perfd_time_transfer(total_time-time_firstbyte) |
721 | (time_firstbyte - time_headers), | 727 | ); |
722 | (total_time-time_firstbyte) | ||
723 | ); | ||
724 | } else { | 728 | } else { |
725 | snprintf(perfstring, DEFAULT_BUFFER_SIZE, "time=%.6gs;%.6g;%.6g;; size=%dB;;;", | 729 | snprintf(perfstring, DEFAULT_BUFFER_SIZE, "%s %s", |
726 | total_time, | 730 | perfd_time(total_time), |
727 | warning_thresholds != NULL ? (double)thlds->warning->end : 0.0, | 731 | perfd_size(page_len) |
728 | critical_thresholds != NULL ? (double)thlds->critical->end : 0.0, | 732 | ); |
729 | page_len); | ||
730 | } | 733 | } |
731 | 734 | ||
732 | /* return a CRITICAL status if we couldn't read any data */ | 735 | /* return a CRITICAL status if we couldn't read any data */ |
@@ -1547,6 +1550,47 @@ process_arguments (int argc, char **argv) | |||
1547 | return TRUE; | 1550 | return TRUE; |
1548 | } | 1551 | } |
1549 | 1552 | ||
1553 | char *perfd_time (double elapsed_time) | ||
1554 | { | ||
1555 | return fperfdata ("time", elapsed_time, "s", | ||
1556 | thlds->warning?TRUE:FALSE, thlds->warning?thlds->warning->end:0, | ||
1557 | thlds->critical?TRUE:FALSE, thlds->critical?thlds->critical->end:0, | ||
1558 | TRUE, 0, TRUE, socket_timeout); | ||
1559 | } | ||
1560 | |||
1561 | char *perfd_time_connect (double elapsed_time_connect) | ||
1562 | { | ||
1563 | return fperfdata ("time_connect", elapsed_time_connect, "s", FALSE, 0, FALSE, 0, FALSE, 0, TRUE, socket_timeout); | ||
1564 | } | ||
1565 | |||
1566 | char *perfd_time_ssl (double elapsed_time_ssl) | ||
1567 | { | ||
1568 | return fperfdata ("time_ssl", elapsed_time_ssl, "s", FALSE, 0, FALSE, 0, FALSE, 0, TRUE, socket_timeout); | ||
1569 | } | ||
1570 | |||
1571 | char *perfd_time_headers (double elapsed_time_headers) | ||
1572 | { | ||
1573 | return fperfdata ("time_headers", elapsed_time_headers, "s", FALSE, 0, FALSE, 0, FALSE, 0, TRUE, socket_timeout); | ||
1574 | } | ||
1575 | |||
1576 | char *perfd_time_firstbyte (double elapsed_time_firstbyte) | ||
1577 | { | ||
1578 | return fperfdata ("time_firstbyte", elapsed_time_firstbyte, "s", FALSE, 0, FALSE, 0, FALSE, 0, TRUE, socket_timeout); | ||
1579 | } | ||
1580 | |||
1581 | char *perfd_time_transfer (double elapsed_time_transfer) | ||
1582 | { | ||
1583 | return fperfdata ("time_transfer", elapsed_time_transfer, "s", FALSE, 0, FALSE, 0, FALSE, 0, TRUE, socket_timeout); | ||
1584 | } | ||
1585 | |||
1586 | char *perfd_size (int page_len) | ||
1587 | { | ||
1588 | return perfdata ("size", page_len, "B", | ||
1589 | (min_page_len>0?TRUE:FALSE), min_page_len, | ||
1590 | (min_page_len>0?TRUE:FALSE), 0, | ||
1591 | TRUE, 0, FALSE, 0); | ||
1592 | } | ||
1593 | |||
1550 | void | 1594 | void |
1551 | print_help (void) | 1595 | print_help (void) |
1552 | { | 1596 | { |
@@ -1946,12 +1990,6 @@ remove_newlines (char *s) | |||
1946 | } | 1990 | } |
1947 | 1991 | ||
1948 | char * | 1992 | char * |
1949 | perfd_time_ssl (double elapsed_time_ssl) | ||
1950 | { | ||
1951 | return fperfdata ("time_ssl", elapsed_time_ssl, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); | ||
1952 | } | ||
1953 | |||
1954 | char * | ||
1955 | get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header) | 1993 | get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header) |
1956 | { | 1994 | { |
1957 | int i; | 1995 | int i; |