commit
This commit is contained in:
668
doc/Makefile
Normal file
668
doc/Makefile
Normal file
@@ -0,0 +1,668 @@
|
||||
# Makefile.in generated by automake 1.17 from Makefile.am.
|
||||
# doc/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994-2024 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# Copyright (C) 2011 Tobias Oetiker
|
||||
#
|
||||
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
am__rm_f = rm -f $(am__rm_f_notfound)
|
||||
am__rm_rf = rm -rf $(am__rm_f_notfound)
|
||||
pkgdatadir = $(datadir)/smokeping
|
||||
pkgincludedir = $(includedir)/smokeping
|
||||
pkglibdir = $(libdir)/smokeping
|
||||
pkglibexecdir = $(libexecdir)/smokeping
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_$(V))
|
||||
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(etcdir)" "$(DESTDIR)$(iman1dir)" \
|
||||
"$(DESTDIR)$(iman3dir)" "$(DESTDIR)$(iman5dir)" \
|
||||
"$(DESTDIR)$(iman7dir)"
|
||||
DATA = $(etc_DATA) $(iman1_DATA) $(iman3_DATA) $(iman5_DATA) \
|
||||
$(iman7_DATA)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' aclocal-1.17
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AUTOCONF = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoconf
|
||||
AUTOHEADER = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoheader
|
||||
AUTOMAKE = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' automake-1.17
|
||||
AWK = mawk
|
||||
CP = /usr/bin/cp
|
||||
CSCOPE = cscope
|
||||
CTAGS = ctags
|
||||
CURL = /usr/bin/curl
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DPACKAGE_NAME=\"smokeping\" -DPACKAGE_TARNAME=\"smokeping\" -DPACKAGE_VERSION=\"2.9.0\" -DPACKAGE_STRING=\"smokeping\ 2.9.0\" -DPACKAGE_BUGREPORT=\"tobi@oetiker.ch\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smokeping\" -DVERSION=\"2.9.0\"
|
||||
ECHO = /usr/bin/echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
ETAGS = etags
|
||||
FIND = /usr/bin/find
|
||||
GMAKE = /usr/bin/gmake
|
||||
GREP = /usr/bin/grep
|
||||
HTDOCSDIR = /usr/share/smokeping/www
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
LIBOBJS =
|
||||
LIBS =
|
||||
LN = /usr/bin/ln
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' makeinfo
|
||||
MKDIR = /usr/bin/mkdir
|
||||
MKDIR_P = /usr/bin/mkdir -p
|
||||
NROFF = /usr/bin/nroff
|
||||
PACKAGE = smokeping
|
||||
PACKAGE_BUGREPORT = tobi@oetiker.ch
|
||||
PACKAGE_NAME = smokeping
|
||||
PACKAGE_STRING = smokeping 2.9.0
|
||||
PACKAGE_TARNAME = smokeping
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION = 2.9.0
|
||||
PATH_SEPARATOR = :
|
||||
PERL = /usr/bin/perl
|
||||
PERL5LIB =
|
||||
RM = /usr/bin/rm
|
||||
RMDIR = /usr/bin/rmdir
|
||||
SED = /usr/bin/sed
|
||||
SENDMAIL = /usr/sbin/sendmail
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP =
|
||||
URL_CAT = /usr/bin/curl --location
|
||||
VERSION = 2.9.0
|
||||
WGET = /usr/bin/wget
|
||||
abs_builddir = /root/smoke/smokeping-2.9.0/doc
|
||||
abs_srcdir = /root/smoke/smokeping-2.9.0/doc
|
||||
abs_top_builddir = /root/smoke/smokeping-2.9.0
|
||||
abs_top_srcdir = /root/smoke/smokeping-2.9.0
|
||||
am__leading_dot = .
|
||||
am__rm_f_notfound =
|
||||
am__tar = tar --format=ustar -chf - "$$tardir"
|
||||
am__untar = tar -xf -
|
||||
am__xargs_n = xargs -n
|
||||
bindir = /usr/sbin
|
||||
build_alias = x86_64-linux-gnu
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
enable_pkgonly =
|
||||
exec_prefix = ${prefix}
|
||||
host_alias =
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${prefix}/share/info
|
||||
install_sh = ${SHELL} /root/smoke/smokeping-2.9.0/conftools/install-sh
|
||||
libdir = /usr/share/perl5
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = /var
|
||||
mandir = ${prefix}/share/man
|
||||
mkdir_p = $(MKDIR_P)
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
runstatedir = /run
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = /usr/share/doc/smokeping
|
||||
target_alias =
|
||||
top_build_prefix = ../
|
||||
top_builddir = ..
|
||||
top_srcdir = ..
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
# section 7
|
||||
DOCS = smokeping_extend.pod smokeping_install.pod smokeping_master_slave.pod smokeping_upgrade.pod
|
||||
|
||||
# section 5
|
||||
DOCSCONFIG = smokeping_config.pod smokeping_examples.pod
|
||||
|
||||
#PM := ../lib/Smokeping.pm ../lib/Smokeping/Examples.pm ../lib/Smokeping/RRDtools.pm
|
||||
EXTRA_DIST = $(DOCS) smokeping_install.txt
|
||||
PODPROBE := $(wildcard ../lib/Smokeping/probes/*.pm)
|
||||
PODMATCH := $(wildcard ../lib/Smokeping/matchers/*.pm)
|
||||
PODSORT := $(wildcard ../lib/Smokeping/sorters/*.pm)
|
||||
DOCSBASE = $(subst .pod,,$(DOCS))
|
||||
MODBASE = $(subst .pm,,$(subst ../lib/Smokeping/probes/,Smokeping_probes_,$(PODPROBE))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/matchers/,Smokeping_matchers_,$(PODMATCH))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/sorters/,Smokeping_sorters_,$(PODSORT)))
|
||||
|
||||
PROGBASE = smokeping smokeping_cgi tSmoke smokeinfo
|
||||
DOCSCONFIGBASE = smokeping_config smokeping_examples
|
||||
MAN3 = $(addsuffix .3,$(MODBASE))
|
||||
MAN5 = $(addsuffix .5,$(DOCSCONFIGBASE))
|
||||
MAN7 = $(addsuffix .7,$(DOCSBASE))
|
||||
MAN1 = $(addsuffix .1,$(PROGBASE))
|
||||
POD2MAN = pod2man --release=$(VERSION) --center=SmokePing $<
|
||||
|
||||
# we go to this trouble to ensure that MAKEPOD only uses modules in the installation directory
|
||||
MAKEPOD = PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --makepod
|
||||
GENEX = PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --gen-examples
|
||||
CLEANFILES = *.[1357] smokeping_examples.pod smokeping_config.pod examples/*
|
||||
iman1dir = $(mandir)/man1
|
||||
iman1_DATA = $(MAN1)
|
||||
iman3dir = $(mandir)/man3
|
||||
iman3_DATA = $(MAN3)
|
||||
iman5dir = $(mandir)/man5
|
||||
iman5_DATA = $(MAN5)
|
||||
iman7dir = $(mandir)/man7
|
||||
iman7_DATA = $(MAN7)
|
||||
EXAMPLES := $(wildcard examples/config.*)
|
||||
etcdir = $(sysconfdir)/examples
|
||||
etc_DATA = $(EXAMPLES)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .1 .3 .5 .7 .txt
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
install-etcDATA: $(etc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(etcdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(etcdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(etcdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(etcdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-etcDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(etcdir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman1DATA: $(iman1_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman1_DATA)'; test -n "$(iman1dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman1dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman1dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman1dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman1dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman1DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman1_DATA)'; test -n "$(iman1dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman1dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman3DATA: $(iman3_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman3_DATA)'; test -n "$(iman3dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman3dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman3dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman3dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman3dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman3DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman3_DATA)'; test -n "$(iman3dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman3dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman5DATA: $(iman5_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman5_DATA)'; test -n "$(iman5dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman5dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman5dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman5dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman5dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman5DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman5_DATA)'; test -n "$(iman5dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman5dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman7DATA: $(iman7_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman7_DATA)'; test -n "$(iman7dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman7dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman7dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman7dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman7dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman7DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman7_DATA)'; test -n "$(iman7dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman7dir)'; $(am__uninstall_files_from_dir)
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(DATA)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(etcdir)" "$(DESTDIR)$(iman1dir)" "$(DESTDIR)$(iman3dir)" "$(DESTDIR)$(iman5dir)" "$(DESTDIR)$(iman7dir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-$(am__rm_f) $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-etcDATA install-iman1DATA install-iman3DATA \
|
||||
install-iman5DATA install-iman7DATA
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-etcDATA uninstall-iman1DATA \
|
||||
uninstall-iman3DATA uninstall-iman5DATA uninstall-iman7DATA
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
|
||||
ctags-am distclean distclean-generic distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-etcDATA \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-iman1DATA install-iman3DATA install-iman5DATA \
|
||||
install-iman7DATA install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am uninstall-etcDATA uninstall-iman1DATA \
|
||||
uninstall-iman3DATA uninstall-iman5DATA uninstall-iman7DATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
%.7: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 7 > $@
|
||||
|
||||
%.5: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 5 > $@
|
||||
|
||||
Smokeping.3: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_Examples.3: ../lib/Smokeping/Examples.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_RRDtools.3: ../lib/Smokeping/RRDtools.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_probes_%.pod: ../lib/Smokeping/probes/%.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) Smokeping::probes::$* > $@
|
||||
|
||||
Smokeping_probes_%.3: Smokeping_probes_%.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_matchers_%.3: ../lib/Smokeping/matchers/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_sorters_%.3: ../lib/Smokeping/sorters/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
smokeping.1: ../bin/smokeping
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_cgi.1: ../bin/smokeping_cgi
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
tSmoke.1: ../bin/tSmoke
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeinfo.1: ../bin/smokeinfo
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_config.pod: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) > $@
|
||||
|
||||
smokeping_examples.pod: ../lib/Smokeping/Examples.pm ../etc/config.dist
|
||||
$(AM_V_GEN)$(MKDIR) -p examples
|
||||
$(AM_V_GEN)$(GENEX)
|
||||
|
||||
.1.txt .3.txt .5.txt .7.txt:
|
||||
$(AM_V_GEN)GROFF_NO_SGR=1 /usr/bin/nroff -man -Tlp $< > $@
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
||||
# Tell GNU make to disable its built-in pattern rules.
|
||||
%:: %,v
|
||||
%:: RCS/%,v
|
||||
%:: RCS/%
|
||||
%:: s.%
|
||||
%:: SCCS/s.%
|
||||
124
doc/Makefile.am
Normal file
124
doc/Makefile.am
Normal file
@@ -0,0 +1,124 @@
|
||||
# Copyright (C) 2011 Tobias Oetiker
|
||||
#
|
||||
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
# section 7
|
||||
|
||||
DOCS = smokeping_extend.pod smokeping_install.pod smokeping_master_slave.pod smokeping_upgrade.pod
|
||||
|
||||
# section 5
|
||||
DOCSCONFIG = smokeping_config.pod smokeping_examples.pod
|
||||
|
||||
#PM := ../lib/Smokeping.pm ../lib/Smokeping/Examples.pm ../lib/Smokeping/RRDtools.pm
|
||||
|
||||
EXTRA_DIST = $(DOCS) smokeping_install.txt
|
||||
|
||||
PODPROBE := $(wildcard ../lib/Smokeping/probes/*.pm)
|
||||
PODMATCH := $(wildcard ../lib/Smokeping/matchers/*.pm)
|
||||
PODSORT := $(wildcard ../lib/Smokeping/sorters/*.pm)
|
||||
|
||||
DOCSBASE = $(subst .pod,,$(DOCS))
|
||||
|
||||
MODBASE = $(subst .pm,,$(subst ../lib/Smokeping/probes/,Smokeping_probes_,$(PODPROBE))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/matchers/,Smokeping_matchers_,$(PODMATCH))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/sorters/,Smokeping_sorters_,$(PODSORT)))
|
||||
|
||||
PROGBASE = smokeping smokeping_cgi tSmoke smokeinfo
|
||||
|
||||
DOCSCONFIGBASE = smokeping_config smokeping_examples
|
||||
|
||||
MAN3 = $(addsuffix .3,$(MODBASE))
|
||||
MAN5 = $(addsuffix .5,$(DOCSCONFIGBASE))
|
||||
MAN7 = $(addsuffix .7,$(DOCSBASE))
|
||||
MAN1 = $(addsuffix .1,$(PROGBASE))
|
||||
|
||||
POD2MAN = pod2man --release=$(VERSION) --center=SmokePing $<
|
||||
|
||||
# we go to this trouble to ensure that MAKEPOD only uses modules in the installation directory
|
||||
MAKEPOD= PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --makepod
|
||||
GENEX= PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --gen-examples
|
||||
|
||||
%.7: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 7 > $@
|
||||
|
||||
%.5: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 5 > $@
|
||||
|
||||
Smokeping.3: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_Examples.3: ../lib/Smokeping/Examples.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_RRDtools.3: ../lib/Smokeping/RRDtools.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_probes_%.pod: ../lib/Smokeping/probes/%.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) Smokeping::probes::$* > $@
|
||||
|
||||
Smokeping_probes_%.3: Smokeping_probes_%.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_matchers_%.3: ../lib/Smokeping/matchers/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_sorters_%.3: ../lib/Smokeping/sorters/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
smokeping.1: ../bin/smokeping
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_cgi.1: ../bin/smokeping_cgi
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
tSmoke.1: ../bin/tSmoke
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeinfo.1: ../bin/smokeinfo
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_config.pod: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) > $@
|
||||
|
||||
smokeping_examples.pod: ../lib/Smokeping/Examples.pm ../etc/config.dist
|
||||
$(AM_V_GEN)$(MKDIR) -p examples
|
||||
$(AM_V_GEN)$(GENEX)
|
||||
|
||||
.1.txt .3.txt .5.txt .7.txt:
|
||||
$(AM_V_GEN)GROFF_NO_SGR=1 @NROFF@ -man -Tlp $< > $@
|
||||
|
||||
|
||||
CLEANFILES = *.[1357] smokeping_examples.pod smokeping_config.pod examples/*
|
||||
|
||||
iman1dir = $(mandir)/man1
|
||||
iman1_DATA = $(MAN1)
|
||||
|
||||
iman3dir = $(mandir)/man3
|
||||
iman3_DATA = $(MAN3)
|
||||
|
||||
iman5dir = $(mandir)/man5
|
||||
iman5_DATA = $(MAN5)
|
||||
|
||||
iman7dir = $(mandir)/man7
|
||||
iman7_DATA = $(MAN7)
|
||||
|
||||
EXAMPLES := $(wildcard examples/config.*)
|
||||
|
||||
etcdir = $(sysconfdir)/examples
|
||||
etc_DATA = $(EXAMPLES)
|
||||
|
||||
668
doc/Makefile.in
Normal file
668
doc/Makefile.in
Normal file
@@ -0,0 +1,668 @@
|
||||
# Makefile.in generated by automake 1.17 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2024 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 2011 Tobias Oetiker
|
||||
#
|
||||
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
am__rm_f = rm -f $(am__rm_f_notfound)
|
||||
am__rm_rf = rm -rf $(am__rm_f_notfound)
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(etcdir)" "$(DESTDIR)$(iman1dir)" \
|
||||
"$(DESTDIR)$(iman3dir)" "$(DESTDIR)$(iman5dir)" \
|
||||
"$(DESTDIR)$(iman7dir)"
|
||||
DATA = $(etc_DATA) $(iman1_DATA) $(iman3_DATA) $(iman5_DATA) \
|
||||
$(iman7_DATA)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CP = @CP@
|
||||
CSCOPE = @CSCOPE@
|
||||
CTAGS = @CTAGS@
|
||||
CURL = @CURL@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
ETAGS = @ETAGS@
|
||||
FIND = @FIND@
|
||||
GMAKE = @GMAKE@
|
||||
GREP = @GREP@
|
||||
HTDOCSDIR = @HTDOCSDIR@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN = @LN@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR = @MKDIR@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NROFF = @NROFF@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PERL5LIB = @PERL5LIB@
|
||||
RM = @RM@
|
||||
RMDIR = @RMDIR@
|
||||
SED = @SED@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
URL_CAT = @URL_CAT@
|
||||
VERSION = @VERSION@
|
||||
WGET = @WGET@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__rm_f_notfound = @am__rm_f_notfound@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
am__xargs_n = @am__xargs_n@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
enable_pkgonly = @enable_pkgonly@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
# section 7
|
||||
DOCS = smokeping_extend.pod smokeping_install.pod smokeping_master_slave.pod smokeping_upgrade.pod
|
||||
|
||||
# section 5
|
||||
DOCSCONFIG = smokeping_config.pod smokeping_examples.pod
|
||||
|
||||
#PM := ../lib/Smokeping.pm ../lib/Smokeping/Examples.pm ../lib/Smokeping/RRDtools.pm
|
||||
EXTRA_DIST = $(DOCS) smokeping_install.txt
|
||||
PODPROBE := $(wildcard ../lib/Smokeping/probes/*.pm)
|
||||
PODMATCH := $(wildcard ../lib/Smokeping/matchers/*.pm)
|
||||
PODSORT := $(wildcard ../lib/Smokeping/sorters/*.pm)
|
||||
DOCSBASE = $(subst .pod,,$(DOCS))
|
||||
MODBASE = $(subst .pm,,$(subst ../lib/Smokeping/probes/,Smokeping_probes_,$(PODPROBE))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/matchers/,Smokeping_matchers_,$(PODMATCH))) \
|
||||
$(subst .pm,,$(subst ../lib/Smokeping/sorters/,Smokeping_sorters_,$(PODSORT)))
|
||||
|
||||
PROGBASE = smokeping smokeping_cgi tSmoke smokeinfo
|
||||
DOCSCONFIGBASE = smokeping_config smokeping_examples
|
||||
MAN3 = $(addsuffix .3,$(MODBASE))
|
||||
MAN5 = $(addsuffix .5,$(DOCSCONFIGBASE))
|
||||
MAN7 = $(addsuffix .7,$(DOCSBASE))
|
||||
MAN1 = $(addsuffix .1,$(PROGBASE))
|
||||
POD2MAN = pod2man --release=$(VERSION) --center=SmokePing $<
|
||||
|
||||
# we go to this trouble to ensure that MAKEPOD only uses modules in the installation directory
|
||||
MAKEPOD = PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --makepod
|
||||
GENEX = PERL5LIB=$(PERL5LIB) $(PERL) -I../thirdparty/lib/perl5 -I../lib -mSmokeping -e 'Smokeping::main()' -- --gen-examples
|
||||
CLEANFILES = *.[1357] smokeping_examples.pod smokeping_config.pod examples/*
|
||||
iman1dir = $(mandir)/man1
|
||||
iman1_DATA = $(MAN1)
|
||||
iman3dir = $(mandir)/man3
|
||||
iman3_DATA = $(MAN3)
|
||||
iman5dir = $(mandir)/man5
|
||||
iman5_DATA = $(MAN5)
|
||||
iman7dir = $(mandir)/man7
|
||||
iman7_DATA = $(MAN7)
|
||||
EXAMPLES := $(wildcard examples/config.*)
|
||||
etcdir = $(sysconfdir)/examples
|
||||
etc_DATA = $(EXAMPLES)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .1 .3 .5 .7 .txt
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
install-etcDATA: $(etc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(etcdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(etcdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(etcdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(etcdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-etcDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(etc_DATA)'; test -n "$(etcdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(etcdir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman1DATA: $(iman1_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman1_DATA)'; test -n "$(iman1dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman1dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman1dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman1dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman1dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman1DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman1_DATA)'; test -n "$(iman1dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman1dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman3DATA: $(iman3_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman3_DATA)'; test -n "$(iman3dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman3dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman3dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman3dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman3dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman3DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman3_DATA)'; test -n "$(iman3dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman3dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman5DATA: $(iman5_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman5_DATA)'; test -n "$(iman5dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman5dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman5dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman5dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman5dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman5DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman5_DATA)'; test -n "$(iman5dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman5dir)'; $(am__uninstall_files_from_dir)
|
||||
install-iman7DATA: $(iman7_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(iman7_DATA)'; test -n "$(iman7dir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(iman7dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(iman7dir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iman7dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(iman7dir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-iman7DATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(iman7_DATA)'; test -n "$(iman7dir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(iman7dir)'; $(am__uninstall_files_from_dir)
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(DATA)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(etcdir)" "$(DESTDIR)$(iman1dir)" "$(DESTDIR)$(iman3dir)" "$(DESTDIR)$(iman5dir)" "$(DESTDIR)$(iman7dir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-$(am__rm_f) $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-etcDATA install-iman1DATA install-iman3DATA \
|
||||
install-iman5DATA install-iman7DATA
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-etcDATA uninstall-iman1DATA \
|
||||
uninstall-iman3DATA uninstall-iman5DATA uninstall-iman7DATA
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
|
||||
ctags-am distclean distclean-generic distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-etcDATA \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-iman1DATA install-iman3DATA install-iman5DATA \
|
||||
install-iman7DATA install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am uninstall-etcDATA uninstall-iman1DATA \
|
||||
uninstall-iman3DATA uninstall-iman5DATA uninstall-iman7DATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
%.7: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 7 > $@
|
||||
|
||||
%.5: %.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 5 > $@
|
||||
|
||||
Smokeping.3: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_Examples.3: ../lib/Smokeping/Examples.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_RRDtools.3: ../lib/Smokeping/RRDtools.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_probes_%.pod: ../lib/Smokeping/probes/%.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) Smokeping::probes::$* > $@
|
||||
|
||||
Smokeping_probes_%.3: Smokeping_probes_%.pod
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_matchers_%.3: ../lib/Smokeping/matchers/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
Smokeping_sorters_%.3: ../lib/Smokeping/sorters/%.pm
|
||||
$(AM_V_GEN)$(POD2MAN) --section 3 > $@
|
||||
|
||||
smokeping.1: ../bin/smokeping
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_cgi.1: ../bin/smokeping_cgi
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
tSmoke.1: ../bin/tSmoke
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeinfo.1: ../bin/smokeinfo
|
||||
$(AM_V_GEN)$(POD2MAN) --section 1 > $@
|
||||
|
||||
smokeping_config.pod: ../lib/Smokeping.pm
|
||||
$(AM_V_GEN)$(MAKEPOD) > $@
|
||||
|
||||
smokeping_examples.pod: ../lib/Smokeping/Examples.pm ../etc/config.dist
|
||||
$(AM_V_GEN)$(MKDIR) -p examples
|
||||
$(AM_V_GEN)$(GENEX)
|
||||
|
||||
.1.txt .3.txt .5.txt .7.txt:
|
||||
$(AM_V_GEN)GROFF_NO_SGR=1 @NROFF@ -man -Tlp $< > $@
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
||||
# Tell GNU make to disable its built-in pattern rules.
|
||||
%:: %,v
|
||||
%:: RCS/%,v
|
||||
%:: RCS/%
|
||||
%:: s.%
|
||||
%:: SCCS/s.%
|
||||
263
doc/smokeping_extend.pod
Normal file
263
doc/smokeping_extend.pod
Normal file
@@ -0,0 +1,263 @@
|
||||
=head1 NAME
|
||||
|
||||
smokeping_extend - Notes on extending Smokeping
|
||||
|
||||
=head1 OVERVIEW
|
||||
|
||||
This document is intended to guide prospective authors in writing new
|
||||
Smokeping probes. It mostly describes the interface between Smokeping
|
||||
and its probe modules. If it seems too complicated to understand, look
|
||||
at the existing modules for examples.
|
||||
|
||||
Comments and proposed changes or additions are welcome. Please send
|
||||
them to the smokeping-users mailing list. Patches against the POD
|
||||
source of this document are most appreciated.
|
||||
|
||||
=head1 CHOOSING A BASE CLASS
|
||||
|
||||
The first thing you should decide is which base class you should use for
|
||||
your probe. For most (if not all) uses it's a choice between
|
||||
L<Smokeping::probes::base|Smokeping::probes::base> and
|
||||
L<Smokeping::probes::basefork|Smokeping::probes::basefork>. The former is
|
||||
intended for probes that can measure their targets all in one go, while the
|
||||
latter is for probing them one at a time, possibly in several concurrent
|
||||
subprocesses.
|
||||
|
||||
At the moment, the only probes that use C<Smokeping::probes::base> are the FPing
|
||||
derivatives. All the others use C<Smokeping::probes::basefork>, and chances are
|
||||
you should too. This document will thus concentrate on the latter case.
|
||||
|
||||
=head1 SKELETON FILE
|
||||
|
||||
The L<Smokeping::probes::skel|Smokeping::probes::skel> module is a non-functional probe that is intended
|
||||
to make a good basis for a new probe module. Copy the file,
|
||||
C<lib/probes/skel.pm>, to a new name and just fill out the blanks :)
|
||||
Note that the names of real probe modules must start with a capital letter.
|
||||
|
||||
=head1 PROBE DOCUMENTATION
|
||||
|
||||
The probe documentation is generated from the source code with the
|
||||
L<smokeping|smokeping> arguments C<--man> or C<--makepod>. The embedded
|
||||
POD documentation should point to this real documentation, so
|
||||
that curious users of the C<perldoc> command see what's going on.
|
||||
All the current probes do this.
|
||||
|
||||
You should provide the method C<pod_hash> that returns a reference to
|
||||
a hash with keys corresponding to the section names you want in the
|
||||
manpage. The supported section names are
|
||||
C<name>, C<overview>, C<description>, C<authors>, C<notes>, C<bugs>, and
|
||||
C<see_also>. If you don't need a particular section, just leave it out.
|
||||
|
||||
The special sections C<synopsis> and C<variables> are automatically
|
||||
generated from the description of your variables. See below.
|
||||
|
||||
Note that if you use 'here documents' ('<<') that have POD markup inside,
|
||||
you should escape the markup so that it doesn't show up in the embedded
|
||||
POD documentation. Most probes do it like this:
|
||||
|
||||
my $e = "=";
|
||||
my $doc = <<DOC;
|
||||
${e}head1 SECTION TITLE
|
||||
DOC
|
||||
|
||||
=head1 PROBE DESCRIPTION
|
||||
|
||||
The probe should offer the C<ProbeDesc> method that returns a short
|
||||
description of what it does. This will be used in the graphs produced
|
||||
by the web frontend.
|
||||
|
||||
=head1 VARIABLES
|
||||
|
||||
All Smokeping probes must define their variables by implementing a
|
||||
C<probevars> method for probe-specific variables and a C<targetvars>
|
||||
method for target-specific variables. If you don't know the difference
|
||||
between these yet, see L<smokeping_examples>.
|
||||
|
||||
(The probes that are derived from C<Smokeping::probes::base> don't support
|
||||
target-specific variables, so they only use the C<probevars> method.)
|
||||
|
||||
The base classes offer these methods too to provide the variables that
|
||||
are common to all the probes (eg. the probe-specific C<step> variable
|
||||
and the target-specific C<pings> variable. If you don't want to add
|
||||
anything to the base class variables (perhaps because all your variables
|
||||
are of a target-specific nature, so you don't need new probe-specific
|
||||
variables at all), you can leave the corresponding method out and it
|
||||
will be inherited from the base class.
|
||||
|
||||
When you do supply your own C<probevars> or C<targetvars> method, you should
|
||||
combine your variables with those coming from the superclass. There is a
|
||||
convenience method called C<_makevars> that does this, and the common idiom is
|
||||
|
||||
sub probevars {
|
||||
my $class = shift;
|
||||
return $class->_makevars($class->SUPER::probevars, {
|
||||
# your variables go here
|
||||
}
|
||||
}
|
||||
|
||||
The variables are declared in a syntax that comes from the module used
|
||||
for parsing the configuration file, C<Config::Grammar>. Each variable
|
||||
should be a hash that uses the "special variable keys" documented in
|
||||
L<Config::Grammar>. See C<Smokeping::probes::skel> and the other
|
||||
probes for examples.
|
||||
|
||||
For reference, here are the keys the hash should have. Much of this
|
||||
is taken straight from the C<Config::Grammar> manual.
|
||||
|
||||
=over
|
||||
|
||||
=item Keys you B<must> provide
|
||||
|
||||
=over
|
||||
|
||||
=item _doc
|
||||
|
||||
Description of the variable.
|
||||
|
||||
=item _example
|
||||
|
||||
An example value. This will be used in the SYNOPSIS section in the
|
||||
probe manual.
|
||||
|
||||
=back
|
||||
|
||||
=item Optional keys
|
||||
|
||||
=over
|
||||
|
||||
=item _default
|
||||
|
||||
A default value that will be assigned to the variable if none is specified or inherited.
|
||||
|
||||
=item _re
|
||||
|
||||
Regular expression upon which the value will be checked.
|
||||
|
||||
=item _re_error
|
||||
|
||||
String containing the returned error in case the regular expression
|
||||
doesn't match (if not specified, a generic 'syntax error' message will
|
||||
be returned).
|
||||
|
||||
=item _sub
|
||||
|
||||
A function pointer. It is called for every value, with the value passed
|
||||
as its first argument. If the function returns a defined value it is
|
||||
assumed that the test was not successful and an error is generated with
|
||||
the returned string as content.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
The C<probevars> and C<targetvars> methods should return hash references
|
||||
that contain the variable names as keys and the hashes described above
|
||||
as values. In addition the C<Config::Grammar> special section key
|
||||
C<_mandatory> is supported and should contain a reference to a list of
|
||||
mandatory variables. The C<_makevars> method is aware of this special
|
||||
key and merges the mandatory lists in its arguments. Note that no other
|
||||
C<Config::Grammar> special section keys are supported.
|
||||
|
||||
=head1 INITIALIZATION
|
||||
|
||||
If you must do something at probe initialization time, like check that
|
||||
the external program you're going to use behaves as you expect, you should
|
||||
do it in the C<new> method. You should probably also take care that
|
||||
you don't run the tests needlessly while in CGI mode. The usual way to
|
||||
do this is to test for $ENV{SERVER_SOFTWARE}. See the C<Smokeping::probes::skel>
|
||||
module for an example.
|
||||
|
||||
=head1 PINGING
|
||||
|
||||
All the real action happens in the C<pingone> method (or, for
|
||||
C<Smokeping::probes::base>-derived probes, in the C<ping> method.) The arguments
|
||||
for C<pingone> are C<$self>, the module instance (since this is a method)
|
||||
and C<$target>, the target to be probed.
|
||||
|
||||
You can access the probe-specific variables here via the
|
||||
C<$self-E<gt>{properties}> hash and the target-specific ones via the
|
||||
C<$target-E<gt>{vars}> hash. You get the number of pings needed for
|
||||
the target via the C<pings> method: C<my $count = $self-E<gt>pings($target)>.
|
||||
|
||||
You should return a sorted array of the latency times measured. If a ping
|
||||
fails, don't put anything in the array.
|
||||
|
||||
That's it, you're done!
|
||||
|
||||
=head1 EXAMPLE CONFIGURATIONS
|
||||
|
||||
If you would like to provide a documented example configuration for your
|
||||
probe (in addition to the automatically generated SYNOPSIS section in
|
||||
the probe manual), you can do so by adding it to the L<Smokeping::Examples|Smokeping::Examples>
|
||||
module. Look for the 'examples' subroutine and add your example there.
|
||||
|
||||
Future versions of Smokeping might provide a way to embed examples in
|
||||
the probe modules too. The author's motivation for implementing this
|
||||
would be greatly increased by even a single demand for it, so please
|
||||
speak up if you think you'd use it.
|
||||
|
||||
=head1 TIMEOUT HANDLING
|
||||
|
||||
If you deal with timeouts (for example because your program offers a parameter
|
||||
for specifying the timeout for the pings), you should know a few things.
|
||||
|
||||
First, there's timeout logic in C<Smokeping::probes::basefork> that kills the probe
|
||||
when the timeout is reached. By default the timeout is (# of pings *
|
||||
5 seconds) + 1 second. If you expect that your pings can take longer,
|
||||
you should modify the default value of the probe-specific variable C<timeout>.
|
||||
This would be done like this:
|
||||
|
||||
sub probevars {
|
||||
my $class = shift;
|
||||
my $h = $class->SUPER::probevars;
|
||||
$h->{timeout}{_default} = 10; # override the superclass default
|
||||
return $class->_makevars($h, {
|
||||
# your variables go here
|
||||
}
|
||||
}
|
||||
|
||||
If you want to provide a target-specific C<timeout> setting, you should
|
||||
delete the probe-specific variable and be sure to provide a default for
|
||||
your target-specific one. See eg. C<Smokeping::probes::AnotherDNS> for an example of
|
||||
how this is done.
|
||||
|
||||
Providing a target-specific C<timeout> will make the timeout in
|
||||
C<Smokeping::probes::basefork> be (# of pings * the maximum timeout of all targets)
|
||||
+ 1 second. The 1 second is added so that the own timeout logic of the
|
||||
probe has time to kick in even in the worst case (ie. all pings are lost)
|
||||
before C<Smokeping::probes::basefork> starts killing the processes.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2005 by Niko Tyni.
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
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., 675 Mass Ave, Cambridge, MA
|
||||
02139, USA.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Niko Tyni <ntyni@iki.fi>
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
This document makes writing new probes look much harder than it really is.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
The other Smokeping documents, especially L<smokeping_config>.
|
||||
188
doc/smokeping_install.pod
Normal file
188
doc/smokeping_install.pod
Normal file
@@ -0,0 +1,188 @@
|
||||
=head1 NAME
|
||||
|
||||
smokeping_install - How to install SmokePing
|
||||
|
||||
=head1 OVERVIEW
|
||||
|
||||
This document explains how to setup SmokePing at your site.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
=head2 Prerequisites
|
||||
|
||||
SmokePing does not stand alone. It relies on various other tools and
|
||||
services being present. Apart from a Unix OS and a working Perl installation
|
||||
you need the following components:
|
||||
|
||||
=over
|
||||
|
||||
=item RRDtool 1.2.x or later
|
||||
|
||||
Smokeping uses RRDtool for logging and graphing. If your linux distro provides
|
||||
an rrdtool package with perl support, use this. If you want to get the latest
|
||||
and greatest version, compile your own: L<http://oss.oetiker.ch/rrdtool/>
|
||||
|
||||
Ubuntu:
|
||||
|
||||
sudo apt install rrdtool librrds-perl libssl-dev
|
||||
|
||||
RedHat:
|
||||
|
||||
sudo yum install rrdtool perl-rrdtool openssl-devel
|
||||
|
||||
=item FPing (optional)
|
||||
|
||||
Go to L<http://www.fping.org/> to grab a copy.
|
||||
|
||||
Note that fping must be installed setuid root. It seems that older versions
|
||||
of fping report round trip times in 0.1 milliseconds instead of 1 milliseconds
|
||||
as advertised ... SmokePing tries to figure this out. It tells
|
||||
you when it starts ... let me know if it gets it wrong.
|
||||
|
||||
=item EchoPing (Optional)
|
||||
|
||||
L<https://github.com/bortzmeyer/echoping/>
|
||||
|
||||
You need this to run the EchoPing probes
|
||||
|
||||
=item Curl (Optional)
|
||||
|
||||
L<http://curl.haxx.se/>
|
||||
|
||||
You need this for the Curl probe.
|
||||
|
||||
=item dig (Optional)
|
||||
|
||||
L<http://www.isc.org/sw/bind/>
|
||||
|
||||
You need this for the DNS probe.
|
||||
|
||||
=item SSH (Optional)
|
||||
|
||||
L<http://www.openssh.org/>
|
||||
|
||||
You need this for the SSH probe.
|
||||
|
||||
=item Webserver
|
||||
|
||||
L<http://httpd.apache.org/>
|
||||
|
||||
Well I won't get much into this. The important thing is, to have a webserver
|
||||
which allows you to run CGI and preferably FastCGI scripts. If you are using
|
||||
Apache I strongly recommend using the F<suexec> system for running CGI
|
||||
scripts as a particular user.
|
||||
|
||||
See L<http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html> and
|
||||
L<http://httpd.apache.org/docs/2.2/mod/mod_suexec.html> for more information
|
||||
on this.
|
||||
|
||||
=item Perl 5.10.1 or later.
|
||||
|
||||
If you still have an older version, maybe have a look at perlbrew.
|
||||
|
||||
Ubuntu:
|
||||
|
||||
sudo apt install perl
|
||||
|
||||
RedHat:
|
||||
|
||||
sudo yum install perl-core
|
||||
|
||||
=back
|
||||
|
||||
=head2 Installation
|
||||
|
||||
Once the tools listed above are in place, you can start setting up SmokePing
|
||||
itself. Unpack the tar archive and run the included configure script:
|
||||
|
||||
./configure --prefix=/opt/smokeping
|
||||
|
||||
Configure will verify that all the required perl modules are available.
|
||||
If some are missing it will tell you to run the module build script.
|
||||
Just follow the instructions on screen and then run configure again.
|
||||
Once it completes, you can run
|
||||
|
||||
make install
|
||||
|
||||
to finish your setup.
|
||||
|
||||
=head2 Configuration
|
||||
|
||||
Use the F<etc/config.dist> file as a template to create your own smokeping configuration file.
|
||||
See L<smokeping_config> for details.
|
||||
|
||||
=over
|
||||
|
||||
=item Installing the webinterface
|
||||
|
||||
Copy the content of the F<PREFIX/htdocs> directory to the place where your webserver
|
||||
expects its data. Maybe to F</var/www/smokeping>.
|
||||
|
||||
Edit the F<smokeping.fcgi> script to point to your smokeping_cgi script.
|
||||
|
||||
If you have no FastCGI support in your webserver, you may want to use the
|
||||
F<smokeping.cgi> script.
|
||||
|
||||
=item F<etc/basepage.html>
|
||||
|
||||
Edit the html template to your liking. Please do not remove the link to the
|
||||
SmokePing counter and my name from the template. The content of the
|
||||
template will be rendered by smokeping.cgi. This means that all embedded
|
||||
links must be relative to smokeping.cgi.
|
||||
If you are using HTTP authentication, then the template variable C<authuser> will be populated
|
||||
from the C<$ENV{REMOTE_USER}> environment variable.
|
||||
|
||||
=item F<etc/smokemail>
|
||||
|
||||
If you are going to use the B<DYNAMIC> IP support, customize the contents of this file.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Starting the Smokeping Daemon
|
||||
|
||||
With all the scaffolding in place, you can now launch the smokeping daemon and
|
||||
have it gather data for you. First you may want to run it in debug mode to see what
|
||||
it is doing
|
||||
|
||||
./bin/smokeping --config=/opt/smokeping/etc/config --debug
|
||||
|
||||
once all is well, start it up as a daemon. I would recommend you enable the
|
||||
logfile option so that you can see if it runs into trouble.
|
||||
|
||||
./bin/smokeping --config=/opt/smokeping/etc/config --logfile=smoke.log
|
||||
|
||||
Once the system works, you may want to put a SmokePing startup script into
|
||||
your F</etc/init.d> tree. Check out L<smokeping> for further information.
|
||||
|
||||
You can now open the smokeping.cgi webpage to look at your data.
|
||||
|
||||
See the L<smokeping_cgi> documentation on how to setup the smokeping web interface.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2001, 2011 by Tobias Oetiker. All right reserved.
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
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., 675 Mass Ave, Cambridge, MA
|
||||
02139, USA.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Tobias Oetiker E<lt>tobi@oetiker.chE<gt>
|
||||
|
||||
=cut
|
||||
166
doc/smokeping_install.txt
Normal file
166
doc/smokeping_install.txt
Normal file
@@ -0,0 +1,166 @@
|
||||
_S_M_O_K_E_P_I_N_G___I_N_S_T_A_L_L(7) SmokePing _S_M_O_K_E_P_I_N_G___I_N_S_T_A_L_L(7)
|
||||
|
||||
NNAAMMEE
|
||||
smokeping_install - How to install SmokePing
|
||||
|
||||
OOVVEERRVVIIEEWW
|
||||
This document explains how to setup SmokePing at your site.
|
||||
|
||||
DDEESSCCRRIIPPTTIIOONN
|
||||
PPrreerreeqquuiissiitteess
|
||||
SmokePing does not stand alone. It relies on various other tools and
|
||||
services being present. Apart from a Unix OS and a working Perl
|
||||
installation you need the following components:
|
||||
|
||||
RRDtool 1.2.x or later
|
||||
Smokeping uses RRDtool for logging and graphing. If your linux
|
||||
distro provides an rrdtool package with perl support, use this. If
|
||||
you want to get the latest and greatest version, compile your own:
|
||||
<http://oss.oetiker.ch/rrdtool/>
|
||||
|
||||
Ubuntu:
|
||||
|
||||
sudo apt install rrdtool librrds-perl libssl-dev
|
||||
|
||||
RedHat:
|
||||
|
||||
sudo yum install rrdtool perl-rrdtool openssl-devel
|
||||
|
||||
FPing (optional)
|
||||
Go to <http://www.fping.org/> to grab a copy.
|
||||
|
||||
Note that fping must be installed setuid root. It seems that older
|
||||
versions of fping report round trip times in 0.1 milliseconds
|
||||
instead of 1 milliseconds as advertised ... SmokePing tries to
|
||||
figure this out. It tells you when it starts ... let me know if it
|
||||
gets it wrong.
|
||||
|
||||
EchoPing (Optional)
|
||||
<https://github.com/bortzmeyer/echoping/>
|
||||
|
||||
You need this to run the EchoPing probes
|
||||
|
||||
Curl (Optional)
|
||||
<http://curl.haxx.se/>
|
||||
|
||||
You need this for the Curl probe.
|
||||
|
||||
dig (Optional)
|
||||
<http://www.isc.org/sw/bind/>
|
||||
|
||||
You need this for the DNS probe.
|
||||
|
||||
SSH (Optional)
|
||||
<http://www.openssh.org/>
|
||||
|
||||
You need this for the SSH probe.
|
||||
|
||||
Webserver
|
||||
<http://httpd.apache.org/>
|
||||
|
||||
Well I won't get much into this. The important thing is, to have a
|
||||
webserver which allows you to run CGI and preferably FastCGI
|
||||
scripts. If you are using Apache I strongly recommend using the
|
||||
_s_u_e_x_e_c system for running CGI scripts as a particular user.
|
||||
|
||||
See <http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html> and
|
||||
<http://httpd.apache.org/docs/2.2/mod/mod_suexec.html> for more
|
||||
information on this.
|
||||
|
||||
Perl 5.10.1 or later.
|
||||
If you still have an older version, maybe have a look at perlbrew.
|
||||
|
||||
Ubuntu:
|
||||
|
||||
sudo apt install perl
|
||||
|
||||
RedHat:
|
||||
|
||||
sudo yum install perl-core
|
||||
|
||||
IInnssttaallllaattiioonn
|
||||
Once the tools listed above are in place, you can start setting up
|
||||
SmokePing itself. Unpack the tar archive and run the included configure
|
||||
script:
|
||||
|
||||
./configure --prefix=/opt/smokeping
|
||||
|
||||
Configure will verify that all the required perl modules are available.
|
||||
If some are missing it will tell you to run the module build script.
|
||||
Just follow the instructions on screen and then run configure again.
|
||||
Once it completes, you can run
|
||||
|
||||
make install
|
||||
|
||||
to finish your setup.
|
||||
|
||||
CCoonnffiigguurraattiioonn
|
||||
Use the _e_t_c_/_c_o_n_f_i_g_._d_i_s_t file as a template to create your own smokeping
|
||||
configuration file. See smokeping_config for details.
|
||||
|
||||
Installing the webinterface
|
||||
Copy the content of the _P_R_E_F_I_X_/_h_t_d_o_c_s directory to the place where
|
||||
your webserver expects its data. Maybe to _/_v_a_r_/_w_w_w_/_s_m_o_k_e_p_i_n_g.
|
||||
|
||||
Edit the _s_m_o_k_e_p_i_n_g_._f_c_g_i script to point to your smokeping_cgi
|
||||
script.
|
||||
|
||||
If you have no FastCGI support in your webserver, you may want to
|
||||
use the _s_m_o_k_e_p_i_n_g_._c_g_i script.
|
||||
|
||||
_e_t_c_/_b_a_s_e_p_a_g_e_._h_t_m_l
|
||||
Edit the html template to your liking. Please do not remove the
|
||||
link to the SmokePing counter and my name from the template. The
|
||||
content of the template will be rendered by smokeping.cgi. This
|
||||
means that all embedded links must be relative to smokeping.cgi.
|
||||
If you are using HTTP authentication, then the template variable
|
||||
"authuser" will be populated from the $ENV{REMOTE_USER} environment
|
||||
variable.
|
||||
|
||||
_e_t_c_/_s_m_o_k_e_m_a_i_l
|
||||
If you are going to use the DDYYNNAAMMIICC IP support, customize the
|
||||
contents of this file.
|
||||
|
||||
SSttaarrttiinngg tthhee SSmmookkeeppiinngg DDaaeemmoonn
|
||||
With all the scaffolding in place, you can now launch the smokeping
|
||||
daemon and have it gather data for you. First you may want to run it in
|
||||
debug mode to see what it is doing
|
||||
|
||||
./bin/smokeping --config=/opt/smokeping/etc/config --debug
|
||||
|
||||
once all is well, start it up as a daemon. I would recommend you enable
|
||||
the logfile option so that you can see if it runs into trouble.
|
||||
|
||||
./bin/smokeping --config=/opt/smokeping/etc/config --logfile=smoke.log
|
||||
|
||||
Once the system works, you may want to put a SmokePing startup script
|
||||
into your _/_e_t_c_/_i_n_i_t_._d tree. Check out smokeping for further
|
||||
information.
|
||||
|
||||
You can now open the smokeping.cgi webpage to look at your data.
|
||||
|
||||
See the smokeping_cgi documentation on how to setup the smokeping web
|
||||
interface.
|
||||
|
||||
CCOOPPYYRRIIGGHHTT
|
||||
Copyright (c) 2001, 2011 by Tobias Oetiker. All right reserved.
|
||||
|
||||
LLIICCEENNSSEE
|
||||
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.,
|
||||
675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
AAUUTTHHOORR
|
||||
Tobias Oetiker <tobi@oetiker.ch>
|
||||
|
||||
2.9.0 2025-02-19 _S_M_O_K_E_P_I_N_G___I_N_S_T_A_L_L(7)
|
||||
171
doc/smokeping_master_slave.pod
Normal file
171
doc/smokeping_master_slave.pod
Normal file
@@ -0,0 +1,171 @@
|
||||
=head1 NAME
|
||||
|
||||
smokeping_master_slave - How to run multiple distributed instances of SmokePing
|
||||
|
||||
=head1 OVERVIEW
|
||||
|
||||
Normally smokeping probes run their tests from the host where smokeping runs
|
||||
to some target host and monitor the latency of the connection between the
|
||||
two.
|
||||
|
||||
The Master/Slave concept enables all smokeping probes to run remotely. The
|
||||
use case for this is to measure the overall connectivity in a network. If
|
||||
you are interested in checking that your central DNS server or your file
|
||||
server works for everyone, you could setup several smokeping instances
|
||||
checking up on on the two servers from multiple locations within your
|
||||
network. With the Master/Slave smokeping configuration this process becomes
|
||||
much simpler, as one smokeping master server can control multiple slaves.
|
||||
|
||||
All monitoring data is stored and presented on the server, but collected by
|
||||
the slaves. The slaves will also get their configuration information from
|
||||
the master, so that you just have to maintain the master server
|
||||
configuration file and the rest is taken care of automatically.
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
=head2 Architecture
|
||||
|
||||
The slaves communicate with the master smokeping server via the normal
|
||||
smokeping web interface. On initial startup each slave connects to the
|
||||
master server and asks for its assignments. When the slave has done a round
|
||||
of probing it connects to the master again to deliver the results.
|
||||
|
||||
If the assignment for a slave changes, the master will tell the slave after
|
||||
the slave has delivered its results.
|
||||
|
||||
The master and the slaves sign their messages by supplying an HMAC-MD5
|
||||
code (RFC 2104) of the message and a shared secret. Optionally the whole
|
||||
communication can run over ssl.
|
||||
|
||||
[slave 1] [slave 2] [slave 3]
|
||||
| | |
|
||||
+-------+ | +--------+
|
||||
| | |
|
||||
v v v
|
||||
+---------------+
|
||||
| master |
|
||||
+---------------+
|
||||
|
||||
The slave is a normal smokeping instance setup where the configuration comes
|
||||
from the master instead of a local configuration file. The slave tries to
|
||||
contact the master server after every round of probing, supplying its
|
||||
results. If the master server can not be reached, the results will be sent
|
||||
to the server together with the next round of results. Results will be
|
||||
stored in a file in Perl storable form so that they survive a restart of the
|
||||
smokeping instance.
|
||||
|
||||
=head2 Master Configuration
|
||||
|
||||
To configure a master/slave setup, add a slaves section to your smokeping
|
||||
configuration file. Each slave has a section in the slaves part of the
|
||||
master configuration file. The section name must match the hostname of the
|
||||
slave. If some configuration parameter must be set to a special value for
|
||||
the slave, use an override section to configure this.
|
||||
|
||||
The slave names must be the names the hosts think they have, not their
|
||||
outside hostnames or ip addresses or anything like that. When the slave
|
||||
calls the master to get its config or report its measurements it will tell
|
||||
the master its 'hostname'. This together with the shared secret is used to
|
||||
authenticate and identify who is who.
|
||||
|
||||
*** Slaves ***
|
||||
secrets=/etc/smokeping/slavesecrets.conf
|
||||
|
||||
+slave1
|
||||
display_name=erul22
|
||||
location=India
|
||||
color=ff0000
|
||||
|
||||
++override
|
||||
Probes.FPing.binary = /usr/bin/fping
|
||||
...
|
||||
|
||||
Then in the targets section you can define slaves at every level. Again the
|
||||
settings get inherited by lower order targets and can be overwritten
|
||||
anywhere in the tree.
|
||||
|
||||
A slave will then get the appropriate configuration assigned by the server.
|
||||
|
||||
*** Targets ***
|
||||
slaves = slave1 slave2
|
||||
...
|
||||
+dest1
|
||||
slaves =
|
||||
...
|
||||
+dest2
|
||||
slaves = slave1
|
||||
...
|
||||
+dest3
|
||||
...
|
||||
|
||||
The data from the slaves will be stored in F<TargetName~SlaveName.rrd>. So
|
||||
the example above would create the following files:
|
||||
|
||||
dest1.rrd
|
||||
dest2.rrd
|
||||
dest2~slave1.rrd
|
||||
dest3.rrd
|
||||
dest3~slave1.rrd
|
||||
dest3~slave2.rrd
|
||||
|
||||
The F<slavesecrets.conf> file contains a colon separated list of hostnames
|
||||
and secrets.
|
||||
|
||||
host1:secret1
|
||||
host2:secret2
|
||||
|
||||
=head2 Slave Configuration
|
||||
|
||||
A smokeping slave setup has no configuration file. It just needs to know
|
||||
that it runs in slave-mode and its secret. The secret is stored in a file for
|
||||
optimal protection. By default the persistent data cache will be located in
|
||||
F</tmp/smokeping.$USER.cache>.
|
||||
|
||||
./smokeping --master-url=http://smokeping/smokeping.cgi \
|
||||
--cache-dir=/var/smokeping/ \
|
||||
--shared-secret=/var/smokeping/secret.txt
|
||||
|
||||
The F<secret.txt> file contains a single word, the secret of this slave. It
|
||||
is NOT the same as the F<slavesecrets.conf> file the master uses.
|
||||
|
||||
=head1 SECURITY CONSIDERATIONS
|
||||
|
||||
The master effectively has full access to slave hosts as the user running
|
||||
the slave smokeping instance. The configuration is transferred as Perl code
|
||||
that is evaluated on the slave. While this is done inside a restricted
|
||||
C<Safe> compartment, there are various ways that a malicious master could
|
||||
embed arbitrary commands in the configuration and get them to run when the
|
||||
slave probes its targets.
|
||||
|
||||
The strength of the shared secret is thus of paramount importance. Brute
|
||||
forcing the secret would enable a man-in-the-middle to inject a malicious
|
||||
new configuration and compromise the slave.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (c) 2007 by Tobias Oetiker, OETIKER+PARTNER AG. All right reserved.
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
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., 675 Mass Ave, Cambridge, MA
|
||||
02139, USA.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Tobias Oetiker E<lt>tobi@oetiker.chE<gt>
|
||||
|
||||
=cut
|
||||
419
doc/smokeping_upgrade.pod
Normal file
419
doc/smokeping_upgrade.pod
Normal file
@@ -0,0 +1,419 @@
|
||||
=head1 NAME
|
||||
|
||||
smokeping_upgrade - Notes on upgrading Smokeping
|
||||
|
||||
=head1 OVERVIEW
|
||||
|
||||
This document tries to list incompatible or otherwise user-visible changes
|
||||
in Smokeping versions, with instructions on how to fix any possible
|
||||
problems. It also sporadically mentions new features and the like.
|
||||
|
||||
The document currently starts with changes from 1.34 to 1.37. If you
|
||||
run into problems with upgrading from earlier versions, please send
|
||||
a description of the problems, preferably with notes on how to fix
|
||||
them, to the C<smokeping-users> mailing list, so they can be added to
|
||||
this document. The same applies to any problems you find with current
|
||||
versions that are not documented here, of course. Patch submissions
|
||||
against the POD source of this file are most appreciated.
|
||||
|
||||
If a version is not listed, there are no known problems in upgrading
|
||||
to it from the previous release.
|
||||
|
||||
An official list of changes with each release can be found in the CHANGES
|
||||
file in the Smokeping distribution. This document tries to complement
|
||||
that with upgrading instructions etc.
|
||||
|
||||
=head1 2.4.2 to 2.4.3
|
||||
|
||||
To fix zooming for FF3.5 I prototype and scriptaculous have been updated. To
|
||||
complete the fix you have to update your basepage.html too and include
|
||||
effects in the scriptaculous load line
|
||||
|
||||
cropper/lib/scriptaculous.js?load=builder,effects,dragdrop
|
||||
|
||||
=head1 2.3.6 to 2.4.0
|
||||
|
||||
The new SmokeTrace tool was added to SmokePing. For setup instructions
|
||||
read the L<smoketrace> manual page.
|
||||
|
||||
=head1 2.3.3 to 2.3.4
|
||||
|
||||
The communication protocol between master and slave has been made more
|
||||
secure. This requires that BOTH master and slave are upgraded to continue
|
||||
working.
|
||||
|
||||
=head1 2.2.x to 2.3.x
|
||||
|
||||
2.3.0 is mainly about new features. Check out the reference documentation on
|
||||
F<hierarchies> and the target properties F<parents>, F<hidden> and
|
||||
F<nomasterpoll>.
|
||||
|
||||
The only thing you have to take a look at, is the file F<basepage.html.dist>
|
||||
which got some new css properties. Without them the results of the new
|
||||
filter function will look quite bad.
|
||||
|
||||
|
||||
=head1 2.1.x to 2.2.0
|
||||
|
||||
=head2 LWP Dependency
|
||||
|
||||
The new master/slave functionality needs the LWP::UserAgent module from
|
||||
CPAN. Currently the dependency is not optional; you'll need the module
|
||||
even if you are only running one Smokeping instance.
|
||||
|
||||
=head1 2.0.9 to 2.1.0
|
||||
|
||||
=head2 Echoping 6 support
|
||||
|
||||
This is the first Smokeping version that fully supports echoping 6. Earlier
|
||||
versions of the EchoPingHttp probes don't work with echoping 6 because
|
||||
of a command line incompatibility. (Echoping 5 is still supported, of course.)
|
||||
|
||||
This version also introduces three new probes using the new echoping plugin
|
||||
interface introduced in version 6:
|
||||
|
||||
=over
|
||||
|
||||
=item *
|
||||
|
||||
L<EchoPingDNS|Smokeping::probes::EchoPingDNS>
|
||||
|
||||
=item *
|
||||
|
||||
L<EchoPingLDAP|Smokeping::probes::EchoPingLDAP>
|
||||
|
||||
=item *
|
||||
|
||||
L<EchoPingWhois|Smokeping::probes::EchoPingWhois>
|
||||
|
||||
=back
|
||||
|
||||
See the L<smokeping_examples> document for simple examples of using
|
||||
these probes.
|
||||
|
||||
=head2 New method in base.pm (if you write your own probes)
|
||||
|
||||
The F<base.pm> module defines the method ProbeUnit. Override this if your
|
||||
Probe does not return 'Seconds'. See the F<FTPtransfer.pm> for inspiration.
|
||||
|
||||
=head1 2.0.8 to 2.0.9
|
||||
|
||||
=head2 L<FPing|Smokeping::probes::FPing>
|
||||
|
||||
The 'timeout' variable removed in 2.0.5 has been brought back.
|
||||
It is used to give the C<fping> command the C<-t> parameter,
|
||||
which apparently affects the timeout of the last ping in the
|
||||
counting (C<-C>) mode used by Smokeping.
|
||||
|
||||
=head1 2.0.5 to 2.0.6
|
||||
|
||||
=head2 CGI self-referring links (again)
|
||||
|
||||
The way Smokeping creates the self-referring links was changed once more.
|
||||
See the section under '2.0.4 to 2.0.5' for a description of the previous
|
||||
change.
|
||||
|
||||
The behaviour is now customizable via the C<linkstyle> variable in the
|
||||
C<General> section of the configuration file. The default is now C<relative>,
|
||||
creating links like S<<a href="?foo=bar">>. I hope this works for everybody,
|
||||
but if it doesn't, see L<smokeping_config> for the alternatives.
|
||||
|
||||
=head1 2.0.4 to 2.0.5
|
||||
|
||||
=head2 L<FPing|Smokeping::probes::FPing>
|
||||
|
||||
The 'timeout' variable has been removed.
|
||||
It was used to give the C<fping> command the C<-t> parameter,
|
||||
but as this parameter is only effective in C<fping>'s I<default> mode,
|
||||
while Smokeping uses the I<counting> mode (C<-c>), it never actually
|
||||
did anything.
|
||||
|
||||
=head2 CGI self-referring links
|
||||
|
||||
The way Smokeping creates the self-referring links was changed. The old
|
||||
behaviour used the script name but not the host part, resulting in links
|
||||
like S<<a href="/path/smokeping.cgi?foo=bar">>. The new behaviour uses the
|
||||
C<cgiurl> variable: the links are always absolute like
|
||||
S<<a href="http://some.host/path/smokeping.cgi?foo=bar">>.
|
||||
|
||||
=head1 2.0.1 to 2.0.2
|
||||
|
||||
=head2 Edge-triggered alerts
|
||||
|
||||
The alert notifications can now optionally be sent only when the state of
|
||||
the alert changes. This means that only the first match of the alert
|
||||
generates a notification, subsequent matches don't. When the alert is
|
||||
cleared, ie. there's no match anymore, another notification is sent.
|
||||
|
||||
This behaviour is enabled by the C<edgetrigger> variable in the C<Alerts>
|
||||
section. The old behaviour (which sends a notification on each match)
|
||||
is the default.
|
||||
|
||||
=head1 1.40 to 2.0
|
||||
|
||||
The biggest change with the 2.0 release is that the configuration file
|
||||
is now parsed much more strictly. This should result in (hopefully
|
||||
understandable) error messages making the configuration less of the
|
||||
trial-and-error variety than it used to be. It also automates the
|
||||
generation of the configuration documentation from the source code,
|
||||
so the docs are now more accurate.
|
||||
|
||||
A smaller change worth mentioning is the inclusion of the tSmoke script
|
||||
(contributed by Dan McGinn-Combs) for sending summary emails on daily
|
||||
and weekly system status. Note that it needs the new 'tmail' variable
|
||||
to be defined in the config file.
|
||||
|
||||
=head2 CONFIGURATION
|
||||
|
||||
The configuration syntax has stayed mostly the same, except for the
|
||||
issues below.
|
||||
|
||||
=over
|
||||
|
||||
=item PROBE_CONF
|
||||
|
||||
The PROBE_CONF subsections have been deprecated. All the target-specific
|
||||
variables are now configured in the same section as the target is. Just
|
||||
deleting the
|
||||
|
||||
++ PROBE_CONF
|
||||
|
||||
lines should fix this (for any number of '+', obviously.)
|
||||
|
||||
The existence of a PROBE_CONF section makes smokeping exit with an error
|
||||
message at parse time.
|
||||
|
||||
Note for distributors: these lines could easily be removed automatically
|
||||
during upgrade.
|
||||
|
||||
=item Variable order
|
||||
|
||||
The C<probe> variable must now be set before any variables that depend on
|
||||
the selected probe. This is because setting C<probe> modifies the grammar
|
||||
of the rest of the section dynamically at parse time.
|
||||
|
||||
Additionally, C<probe> must now precede C<host>, for reasons that have
|
||||
to do with the current implementation of mandatory variable checking.
|
||||
|
||||
Both of these errors are recognized at parse time and produce error messages
|
||||
accordingly.
|
||||
|
||||
Note for distributors: the C<smokeping> command now has a new '--check'
|
||||
option that can be used to verify the syntax of the configuration
|
||||
file. It might be a good idea to do this on upgrade and give the user
|
||||
an explanatory note if the verification fails.
|
||||
|
||||
=item Target-specific variables in the Probes section
|
||||
|
||||
This is not an incompatible change, but it is mentioned here nevertheless.
|
||||
Target-specific variables can now be specified in the Probes section as well,
|
||||
and the values given become defaults for all the targets.
|
||||
|
||||
=item Timeouts
|
||||
|
||||
The C<timeout> variable in the Probes section is now the maximum time
|
||||
expected for B<one> ping to take. Previously it was the maximum time
|
||||
allowed for all the pings to one target. This is an incompatible change,
|
||||
but the code now works in the way it was documented to work even in 1.38.
|
||||
|
||||
Those probes offering a target-specific C<timeout> variable will get a
|
||||
default for it from the Probes section, as noted in the previous item.
|
||||
This should ensure that probes that enforce the ping timeout themselves
|
||||
(most do) will not get killed due to timeout before they have a chance
|
||||
to do it.
|
||||
|
||||
=item Matchers
|
||||
|
||||
The matcher modules have been renamed to start with a capital letter,
|
||||
to differentiate the actual modules from the base classes. You have to
|
||||
capitalize the matcher name in the pattern definition accordingly.
|
||||
|
||||
=item Minimum number of pings
|
||||
|
||||
The C<pings> variable now has an enforced minimum value of 3, as the
|
||||
whole design of Smokeping is based on the idea of sending several probes
|
||||
and measuring and visualizing the variation between them.
|
||||
|
||||
=item RRD parameter checking
|
||||
|
||||
Smokeping now checks at startup that the parameters of any existing RRD files
|
||||
match those specified in the configuration file. If there is a discrepancy,
|
||||
it will try to fix the situation and refuse to start if it can't.
|
||||
|
||||
This situation is most likely to happen if you have modified the
|
||||
C<pings> variable in your configuration file. You'll then have to
|
||||
delete the old RRD file or somehow convert it to use the new parameters.
|
||||
The C<rrdtune> command might be helpful here.
|
||||
|
||||
=item Configurable location for DYNAMIC-related files
|
||||
|
||||
There is now a new configuration variable, C<dyndir>, that can be used
|
||||
to specify the location of the DYNAMIC-related files (.adr and .snmp).
|
||||
These files used to be kept under C<datadir> along with the RRD files,
|
||||
but since they need to be writable by the web server, it may be useful
|
||||
to separate these.
|
||||
|
||||
If C<dyndir> is not specified, Smokeping will use the C<datadir> value
|
||||
as the default. This should ensure that no existing setups will break.
|
||||
|
||||
=back
|
||||
|
||||
In addition to this, some probes have had minor incompatible changes to
|
||||
their configuration.
|
||||
|
||||
=over
|
||||
|
||||
=item L<RemoteFPing|Smokeping::probes::RemoteFPing>
|
||||
|
||||
The C<rbinary> variable is now mandatory. This is a side effect from a bigger change:
|
||||
the probe is now derived from the FPing probe and supports all the variables
|
||||
FPing does.
|
||||
|
||||
=item L<FPing6|Smokeping::probes::FPing6>
|
||||
|
||||
This probe is also now derived from FPing and supports all the variables FPing does.
|
||||
|
||||
=item L<Curl|Smokeping::probes::Curl>
|
||||
|
||||
The URL that will be used is now specified with the variable C<urlformat> instead
|
||||
of C<url>. The new variable can (and usually should) include a placeholder
|
||||
for the C<host> variable of each target as C<%host%>, eg. C<urlformat = http://%host%/>.
|
||||
The new variable is mandatory.
|
||||
|
||||
The change was made to fix the confusing situation where the C<host> variable
|
||||
was required for each actual target, but it didn't actually have any effect
|
||||
(as the server to be probed came from the C<url> variable.)
|
||||
|
||||
Timeouts are now recognized properly by looking at the curl exit code.
|
||||
The default timeout of this probe has been raised to 10 seconds.
|
||||
|
||||
The command line is now executed without an intervening /bin/sh, and so
|
||||
quotes are not needed anymore around the User-Agent string (the C<agent>
|
||||
parameter). Smokeping will complain if it notices quotes around the
|
||||
string.
|
||||
|
||||
Any extra arguments for C<curl> can now be specified in the C<extraargs> variable.
|
||||
|
||||
=item L<EchoPingHttp|Smokeping::probes::EchoPingHttp>
|
||||
|
||||
The default timeout of this probe has been raised to 10 seconds.
|
||||
|
||||
=item L<EchoPingHttps|Smokeping::probes::EchoPingHttps>
|
||||
|
||||
The default timeout of this probe has been raised to 10 seconds.
|
||||
|
||||
=item L<EchoPingIcp|Smokeping::probes::EchoPingIcp>
|
||||
|
||||
The C<url> variable is now mandatory, as the old default "/" didn't make
|
||||
sense because it's relative rather than absolute.
|
||||
|
||||
=item L<LDAP|Smokeping::probes::LDAP>
|
||||
|
||||
The C<filter> variable is now mandatory, as Net::LDAP bails out without it.
|
||||
|
||||
The C<sleeptime> variable was changed to C<mininterval> and its semantics
|
||||
were changed accordingly (it's now the minimum time between two queries
|
||||
rather than the time slept between the end of one and the start of the
|
||||
another.)
|
||||
|
||||
=item L<Radius|Smokeping::probes::Radius>
|
||||
|
||||
The C<sleeptime> variable was changed to C<mininterval> and its semantics
|
||||
were changed accordingly. See the LDAP explanation above.
|
||||
|
||||
=item L<AnotherDNS|Smokeping::probes::AnotherDNS>
|
||||
|
||||
The C<sleeptime> variable was changed to C<mininterval> and its semantics
|
||||
were changed accordingly. See the LDAP explanation above. Additionally,
|
||||
the time is now specified in seconds rather than microseconds.
|
||||
|
||||
=item L<AnotherSSH|Smokeping::probes::AnotherSSH>
|
||||
|
||||
The C<sleeptime> variable was changed to C<mininterval> and its semantics
|
||||
were changed accordingly. See the LDAP explanation above. Additionally,
|
||||
the time is now specified in seconds rather than microseconds.
|
||||
|
||||
=item L<TelnetIOSPing|Smokeping::probes::TelnetIOSPing>
|
||||
|
||||
The name of this probe was changed: it now starts with a capital letter
|
||||
like all the others do.
|
||||
|
||||
The C<target> variable was removed. The target should now be specified
|
||||
in the C<host> variable, like it is with all the other probes.
|
||||
|
||||
=back
|
||||
|
||||
=head2 CGI::Carp module version
|
||||
|
||||
The recommended version for CGI::Carp is now at least 1.24, included in
|
||||
CGI.pm-2.82 and the Perl standard distribution starting from 5.8.1.
|
||||
See L<the smokeping_install document|smokeping_install>.
|
||||
|
||||
=head1 1.38 to 1.40
|
||||
|
||||
=over
|
||||
|
||||
=item The new navigation feature
|
||||
|
||||
The big visible difference between 1.38 and 1.40 is the new browser navigation
|
||||
feature: when clicking on the graphs in detail view you can select
|
||||
different time ranges for the graph. The creation of this
|
||||
feature has been sponsored by BeverlyCorp.com.
|
||||
|
||||
=back
|
||||
|
||||
=head1 1.34 to 1.37
|
||||
|
||||
=over
|
||||
|
||||
=item The L<RemoteFPing|Smokeping::probes::RemoteFPing> probe
|
||||
|
||||
The configuration of this probe was moved from the Targets section to the
|
||||
Probes section, as all the variables are really probe-specific. The moved
|
||||
variables were C<rhost>, C<rbinary> and C<rhost>.
|
||||
|
||||
=item Logging changes
|
||||
|
||||
The C<smokeping> daemon now warns at startup if syslog support is not turned on
|
||||
in the config file. This is because many diagnostic messages will otherwise
|
||||
get lost.
|
||||
|
||||
=item Concurrent probes
|
||||
|
||||
Each probe now runs in its own process, instead of them all running
|
||||
sequentially in one process. This makes it possible to specify different
|
||||
step lengths for different probes. You can get the old behaviour back
|
||||
by setting 'concurrentprobes = no'.
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2005 by Niko Tyni.
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
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., 675 Mass Ave, Cambridge, MA
|
||||
02139, USA.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Niko Tyni <ntyni@iki.fi>
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
The other Smokeping documents, especially L<smokeping_config>.
|
||||
Reference in New Issue
Block a user