Icinga2 on solaris 11
wordpress meta
title: 'Icinga2 on Solaris 11'
date: '2015-11-11T07:44:21-06:00'
status: publish
permalink: /icinga2-on-solaris-11
author: admin
excerpt: ''
type: post
id: 900
category:
- Icinga2
- Solaris
tag: []
post_format: []
title: 'Icinga2 on Solaris 11'
date: '2015-11-11T07:44:21-06:00'
status: publish
permalink: /icinga2-on-solaris-11
author: admin
excerpt: ''
type: post
id: 900
category:
- Icinga2
- Solaris
tag: []
post_format: []
I typically prefer using Nagios for network monitoring. Nagios itself is tricky to get going on Solaris and I have had a long running issue with Nagios on Solaris. Despite the issue around Nagios Core Worker timing out I still use Nagios on Solaris. If Linux is an option in a particular environment it would be preferable to use a packaged up Nagios from any of the popular distributions.
Having said that I have recently tried Icinga2 on Solaris and here is some notes around getting it running. Consider yourself warned this is not pretty but it runs surprisingly well and lightweight compared to Nagios. At least on Solaris SPARC.
There is a few hoops to jump through before compiling icinga2 like the compile environment and boost is particularly nasty. I will document that separate at some point in future. As I said you are on your own to get the compile environment and pre-requisites in order.
Stage and compile:
# pwd
/usr/src
# wget https://github.com/Icinga/icinga2/archive/v2.3.11.tar.gz
# gzip -d v2.3.11.tar.gz
# tar xf v2.3.11.tar
# mv v2.3.11.tar icinga-v2.3.11.tar
# cd icinga2-2.3.11/
# mkdir build && cd build
# cmake -D MYSQL_INCLUDE_DIR=/usr/mysql/5.1/include -D MYSQL_LIB=/usr/mysql/5.1/lib -DICINGA2_WITH_PGSQL=OFF ..
Issue 1 -- cmake:
# pwd
/usr/src/icinga2-2.3.11
# diff CMakeLists.txt CMakeLists.txt.orig
135,136c135,136
< set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -pthread -lm")
< set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -pthread -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS")
---
> set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
139,140c139,140
< set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl")
< set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl")
---
> set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
> set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections")
** rerun cmake after fixing CMakeLists.txt
Compile issue 2 -- INFINITY:
# cd build/
# gmake VERBOSE=1
[..]
/usr/src/icinga2-2.3.11/lib/base/math-script.cpp:85:18: error: ‘INFINITY’ was not declared in this scope
# diff /usr/src/icinga2-2.3.11/lib/base/math-script.cpp /usr/src/icinga2-2.3.11/lib/base/math-script.cpp.orig
30,31d29
< #define INFINITY (__builtin_huge_val ())
<
# gmake VERBOSE=1
** takes a very long time
Compile issue 3 -- mysql.h:
/usr/src/icinga2-2.3.11/lib/db_ido_mysql/idomysqlconnection.hpp:27:19: fatal error: mysql.h: No such file or directory
# find / -name mysql.h
/usr/mysql/5.1/include/mysql/mysql.h
/usr/mysql/5.5/include/mysql.h
# cmake -D MYSQL_INCLUDE_DIR=/usr/mysql/5.5/include -D MYSQL_LIB=/usr/mysql/5.1/lib -DICINGA2_WITH_PGSQL=OFF ..
-- Could NOT find yajl (missing: YAJL_LIBRARY YAJL_INCLUDE_DIR)
running /usr/bin/cmake -E copy_if_different "/usr/src/icinga2-2.3.11/third-party/yajl/src/api/yajl_parse.h" "/usr/src/icinga2-2.3.11/build/third-party/yajl/src/../include/yajl" 2>&1
running /usr/bin/cmake -E copy_if_different "/usr/src/icinga2-2.3.11/third-party/yajl/src/api/yajl_gen.h" "/usr/src/icinga2-2.3.11/build/third-party/yajl/src/../include/yajl" 2>&1
running /usr/bin/cmake -E copy_if_different "/usr/src/icinga2-2.3.11/third-party/yajl/src/api/yajl_common.h" "/usr/src/icinga2-2.3.11/build/third-party/yajl/src/../include/yajl" 2>&1
running /usr/bin/cmake -E copy_if_different "/usr/src/icinga2-2.3.11/third-party/yajl/src/api/yajl_tree.h" "/usr/src/icinga2-2.3.11/build/third-party/yajl/src/../include/yajl" 2>&1
-- MySQL Include dir: /usr/mysql/5.5/include library dir: /usr/mysql/5.1
-- MySQL client libraries: mysqlclient_r
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/icinga2-2.3.11/build
** of course rerun gmake
Install:
# gmake install
[ 1%] Built target mmatch
[ 10%] Built target yajl
[..]
-- Installing: /usr/local/share/doc/icinga2/markdown/21-debug.md
-- Installing: /usr/local/share/doc/icinga2/markdown/12-distributed-monitoring-ha.md
Attempt first run:
# LD_LIBRARY_PATH=/usr/local/lib/:/usr/mysql/5.1/lib/mysql
# echo $LD_LIBRARY_PATH
/usr/local/lib/:/usr/mysql/5.1/lib/mysql
# /usr/local/sbin/icinga2 daemon
[2015-11-10 06:59:17 -0800] information/cli: Icinga application loader (version: r2.3.11-1)
[2015-11-10 06:59:17 -0800] information/cli: Loading application type: icinga/IcingaApplication
[..]
[2015-11-10 06:59:17 -0800] information/ConfigItem: Checked 1 UserGroup(s).
[2015-11-10 06:59:17 -0800] information/ConfigItem: Checked 1 IcingaApplication(s).
[2015-11-10 06:59:17 -0800] information/ConfigItem: Checked 1 ScheduledDowntime(s).
[2015-11-10 06:59:17 -0800] information/ScriptGlobal: Dumping variables to file '/usr/local/var/cache/icinga2/icinga2.vars'
[2015-11-10 06:59:17 -0800] information/DynamicObject: Restoring program state from file '/usr/local/var/lib/icinga2/icinga2.state'
[2015-11-10 06:59:17 -0800] information/DynamicObject: Restored 157 objects. Loaded 5 new objects without state.
[2015-11-10 06:59:17 -0800] information/ConfigItem: Triggering Start signal for config items
[2015-11-10 06:59:17 -0800] information/DbConnection: Resuming IDO connection: ido-mysql
[2015-11-10 06:59:17 -0800] information/ConfigItem: Activated all objects.
[2015-11-10 06:59:17 -0800] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.13.0')
Web front-end:
Definitely read:
https://github.com/Icinga/icingaweb2
https://github.com/Icinga/icingaweb2/blob/master/doc/installation.md
# pwd
/var/apache2/2.2/htdocs
# mv master.zip icinga2_master_old.zip
# wget https://github.com/Icinga/icingaweb2/archive/master.zip
# unzip icinga2_master_20151110.zip
[..]
inflating: icingaweb2-master/test/php/res/status/icinga.objects.cache
inflating: icingaweb2-master/test/php/res/status/icinga.status.dat
Since I am upgrading in my case I followed header "Upgrading Icinga Web 2"
Before upgrade version.
# pwd
/var/apache2/2.2/htdocs/icingaweb2
# more VERSION
v2.0.0-rc1
# mv icingaweb2 icingaweb2.20151110
# mv icingaweb2-master/ icingaweb2
Not sure if my upgrade actually needed the schema change(did not verify) this but I ran it just in case.
# pwd
/var/apache2/2.2/htdocs/icingaweb2.new/etc/schema/mysql-upgrades#
# mysql -u root -p icinga < 2.0.0beta3-2.0.0rc1.sql
** In addition although the v2.0.0-rc1 web front-end is working fine for me the latest (v2.0.0) is not. I have a problem on the dashboard I have not had time to track down. The error is: The filter column "view" is not allowed here.