summaryrefslogtreecommitdiff
path: root/src/pmdas/weblog/weblog.h
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/pmdas/weblog/weblog.h
downloadpcp-debian/3.9.10.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/pmdas/weblog/weblog.h')
-rw-r--r--src/pmdas/weblog/weblog.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/pmdas/weblog/weblog.h b/src/pmdas/weblog/weblog.h
new file mode 100644
index 0000000..a2c99dd
--- /dev/null
+++ b/src/pmdas/weblog/weblog.h
@@ -0,0 +1,140 @@
+
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _WEBLOG_H
+#define _WEBLOG_H
+
+#include "pmapi.h"
+#include "impl.h"
+#include "pmda.h"
+#include <regex.h>
+#include <sys/stat.h>
+
+enum HTTP_Methods {
+ wl_httpGet, wl_httpHead, wl_httpPost, wl_httpOther, wl_numMethods
+};
+
+enum HistSizes {
+ wl_zero, wl_le3k, wl_le10k, wl_le30k, wl_le100k, wl_le300k, wl_le1m,
+ wl_le3m, wl_gt3m, wl_unknownSize, wl_numSizes
+};
+
+#define FIBUFSIZE 16*1024
+#define DORMANT_WARN 86400
+
+typedef struct {
+ char* fileName;
+ int filePtr;
+ struct stat fileStat;
+ char buf[FIBUFSIZE];
+ char *bp;
+ char *bend;
+ u_int format; /* index into regex for parsing file */
+ time_t lastActive; /* time in sec when last active */
+} FileInfo;
+
+typedef struct {
+ __uint32_t methodReq[wl_numMethods];
+ __uint64_t methodBytes[wl_numMethods];
+ __uint32_t sizeReq[wl_numSizes];
+ __uint64_t sizeBytes[wl_numSizes];
+ __uint32_t cached_sizeReq[wl_numSizes];
+ __uint64_t cached_sizeBytes[wl_numSizes];
+ __uint32_t uncached_sizeReq[wl_numSizes];
+ __uint64_t uncached_sizeBytes[wl_numSizes];
+ __uint32_t sumReq;
+ __uint32_t client_sumReq;
+ __uint32_t cached_sumReq;
+ __uint32_t uncached_sumReq;
+ __uint64_t sumBytes;
+ __uint64_t cached_sumBytes;
+ __uint64_t uncached_sumBytes;
+ __uint32_t errors;
+ __uint32_t active;
+ __uint32_t numLogs;
+ __uint32_t modTime;
+ __uint32_t extendedp;
+} WebCount;
+
+typedef struct {
+ int update; /* flag for updating this server */
+ WebCount counts;
+ FileInfo access;
+ FileInfo error;
+} WebServer;
+
+typedef struct {
+ int id;
+ pid_t pid;
+ int firstServer;
+ int lastServer;
+ int inFD[2];
+ int outFD[2];
+ char *methodStr;
+ char *sizeStr;
+ char *c_statusStr;
+ char *s_statusStr;
+ int strLength;
+} WebSproc;
+
+typedef struct {
+ char* name;
+#ifdef NON_POSIX_REGEX
+ char *np_regex;
+#endif
+ regex_t* regex;
+ int methodPos;
+ int sizePos;
+ int c_statusPos;
+ int s_statusPos;
+ int posix_regexp;
+} WebRegex;
+
+extern WebServer *wl_servers;
+extern WebSproc *wl_sproc;
+extern WebRegex *wl_regexTable;
+extern pmdaInstid *wl_serverInst;
+extern pmdaIndom wl_indomTable[];
+
+extern __uint32_t wl_numServers;
+extern __uint32_t wl_numActive;
+extern __uint32_t wl_refreshDelay;
+extern __uint32_t wl_chkDelay;
+extern __uint32_t wl_sprocThresh;
+extern __uint32_t wl_numSprocs;
+extern __uint32_t wl_catchupTime;
+extern __uint32_t wl_numRegex;
+
+extern int wl_updateAll;
+extern time_t wl_timeOfProbe;
+extern char *wl_logFile;
+extern char wl_helpFile[];
+extern int wl_isDSO;
+
+int openLogFile(FileInfo*);
+void probe(void);
+void refresh(WebSproc*);
+void refreshAll(void);
+void sprocMain(void*);
+void web_init(pmdaInterface*);
+void logmessage(int, const char *, ...);
+
+#define wl_close(fd) do { if (fd >= 0) close(fd); fd = -1; } while (0)
+
+#endif /* _WEBLOG_H */