mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-03 20:04:29 +02:00
Adds an Icinga2 object to directly interface with InfluxDB's native HTTP API. This supports optional basic authorization, and TLS transport. InfluxDB didn't appear to like having the TLS stream kept open, so instead this object buffers data points which are then flushed to InfluxDB as a batch write, either driven by a configurable timeout or threshold. As InfluxDB is a schema-less database the host and service templates are user configurable allowing both the measurement field and tags to be set by the end user via macro expansion. This allows access to tag fields from arbitrary data associated with host.vars or service.vars. If a particular value is unable to be resolved, the tag will be dropped and not transmitted to InfluxDB. Also alters URL handling to omit array brackets when only a single value is attached to a key, otherwise InfluxDB has a strop with non-standard syntax. fixes #10480 Signed-off-by: Michael Friedrich <michael.friedrich@netways.de>
78 lines
2.9 KiB
CMake
78 lines
2.9 KiB
CMake
# Icinga 2
|
|
# Copyright (C) 2012-2016 Icinga Development Team (https://www.icinga.org/)
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
mkclass_target(gelfwriter.ti gelfwriter.tcpp gelfwriter.thpp)
|
|
mkclass_target(graphitewriter.ti graphitewriter.tcpp graphitewriter.thpp)
|
|
mkclass_target(influxdbwriter.ti influxdbwriter.tcpp influxdbwriter.thpp)
|
|
mkclass_target(opentsdbwriter.ti opentsdbwriter.tcpp opentsdbwriter.thpp)
|
|
mkclass_target(perfdatawriter.ti perfdatawriter.tcpp perfdatawriter.thpp)
|
|
|
|
set(perfdata_SOURCES
|
|
gelfwriter.cpp gelfwriter.thpp graphitewriter.cpp graphitewriter.thpp influxdbwriter.cpp influxdbwriter.thpp opentsdbwriter.cpp opentsdbwriter.thpp perfdatawriter.cpp perfdatawriter.thpp
|
|
)
|
|
|
|
if(ICINGA2_UNITY_BUILD)
|
|
mkunity_target(perfdata perfdata_SOURCES)
|
|
endif()
|
|
|
|
add_library(perfdata SHARED ${perfdata_SOURCES})
|
|
|
|
target_link_libraries(perfdata ${Boost_LIBRARIES} base config icinga)
|
|
|
|
set_target_properties (
|
|
perfdata PROPERTIES
|
|
INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/icinga2
|
|
DEFINE_SYMBOL I2_PERFDATA_BUILD
|
|
FOLDER Components
|
|
)
|
|
|
|
install_if_not_exists(
|
|
${PROJECT_SOURCE_DIR}/etc/icinga2/features-available/gelf.conf
|
|
${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available
|
|
)
|
|
|
|
install_if_not_exists(
|
|
${PROJECT_SOURCE_DIR}/etc/icinga2/features-available/graphite.conf
|
|
${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available
|
|
)
|
|
|
|
install_if_not_exists(
|
|
${PROJECT_SOURCE_DIR}/etc/icinga2/features-available/influxdb.conf
|
|
${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available
|
|
)
|
|
|
|
install_if_not_exists(
|
|
${PROJECT_SOURCE_DIR}/etc/icinga2/features-available/opentsdb.conf
|
|
${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available
|
|
)
|
|
|
|
install_if_not_exists(
|
|
${PROJECT_SOURCE_DIR}/etc/icinga2/features-available/perfdata.conf
|
|
${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available
|
|
)
|
|
|
|
install(
|
|
TARGETS perfdata
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/icinga2
|
|
)
|
|
|
|
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/spool/icinga2/perfdata\")")
|
|
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/spool/icinga2/tmp\")")
|
|
|
|
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}" PARENT_SCOPE)
|