Compiler:
- Support for C11 and C++20 standards is required. This means GCC 11 or later; Clang/LLVM is less tested but recent versions should work.
Required Libraries:
- Abseil C++ common libraries, version 20230125 or later, for Protobuf and gRPC.
- c-ares version 1.10.0+, for asynchronous DNS resolution in libcurl and gRPC.
- Concurrency Kit (libck), version 0.7.1 or later (Patch required)
- flatcc, version 0.6.0. (Patch required)
- gRPC, version 1.55 or later, for the OpenTelemetry module.
- libcircllhist
- libcircmetrics
- libcurl 7.49.0 or later (for
CURLOPT_CONNECT_TO
support) - libmtev
- LMDB
- LuaJIT version 2.1.
- NetSNMP 5.8+
- NetSNMP is required for the lua-snmp bindings that power OID lookups. The standard SNMP querying implementation is in Java and shipped with the repo. A pure-C SNMP check implementation exists, but requires patches (producing libnetsnmp-c).
- nghttp2 1.39.0+, for HTTP/2 support in libcurl.
- lz4
- JLog
- Picklingtools (Patch required)
- PostgreSQL 8.4+
- Protobuf 3.23+
- Protobuf-C 1.4+ (Patch required)
- RE2, version 2023-03-01 or later, for gRPC.
- snappy-c
- udns version 0.4
- wslay for WebSockets support.
- yajl
Optional Libraries:
- Apache Portable Runtime (libapr) is required if you want to build STOMP drivers.
- FQ is required if you want FQ drivers.
- Java JDK to build the Jezebel sidecar for certain SQL database checks, as well as the standard SNMP check support.
- SQLite 3 (for FQ)
Tested on 20.04 LTS
Install dependencies that are available as packages:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update && sudo apt-get install gcc-11 g++-11
sudo apt-get install autoconf build-essential cmake \
libapr1-dev libaprutil1-dev libc-ares-dev libcurl4-openssl-dev \
libhwloc-dev liblmdb-dev liblz4-dev libncurses-dev libnghttp2-dev \
libpcre3-dev libpq-dev librabbitmq-dev libsqlite3-dev libssl-dev \
libudns-dev libwslay-dev libxslt1-dev libyajl-dev \
openjdk-8-jdk-headless pkg-config uuid-dev xsltproc zlib1g-dev
Ensure the necessary compiler version is used:
export CC=gcc-11
export CXX=g++-11
Follow build instructions for third-party libraries that are not available as packages. Then come back here and continue below.
git clone https://github.com/circonus-labs/reconnoiter
cd reconnoiter
autoreconf -i
CPPFLAGS="-I/usr/local/include/luajit-2.1" \
CFLAGS="-Wno-stringop-overflow -Wno-stringop-overread" \
./configure
make
sudo make install
Install dependencies that are available as packages:
sudo yum groupinstall "Development Tools"
sudo yum --enablerepo=extras install centos-release-scl
sudo yum install devtoolset-11
sudo yum install autoconf apr-devel apr-util-devel c-ares-devel cmake \
hwloc-devel java-1.8.0-openjdk-devel libtermcap-devel libuuid-devel \
libxslt-devel ncurses-devel openssl openssl-devel pcre-devel \
pkgconfig postgresql-devel sqlite-devel udns-devel yajl-devel \
zlib-devel
scl enable devtoolset-11 bash
Follow build instructions for third-party libraries that are not available as packages. Then come back here and continue below.
git clone https://github.com/circonus-labs/reconnoiter
cd reconnoiter
autoreconf -i
CPPFLAGS="-I/usr/local/include/luajit-2.1" ./configure
make
sudo make install