Disclaimer: This guide is only for RedHat and CentOS 7, using the PHP SCL packages with the official icingaweb2 package.
Often when we help customers implement Icinga 2, Icinga Web 2 and Director, they use custom imports to pull in data to their monitoring config. Whenever data is in need to be pulled from a MSSQL database, this can be challenging. Their are multiple guides around the Internet, even from Microsoft.
This post should clear things how to achieve this with the official Icinga packages and their requirements.
Requirements
Basic Installation Icinga Web 2
First of all icingaweb2 and PHP needs to be installed – usually you should have this already…
# on RedHat subscription-manager repos --enable rhel-7-server-optional-rpms subscription-manager repos --enable rhel-server-rhscl-7-rpms yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # on CentOS yum install centos-release-scl epel-release yum install httpd icingaweb2 systemctl start httpd.service systemctl enable httpd.service echo "date.timezone = Europe/Berlin" > /etc/opt/rh/rh-php71/php.d/timezone.ini
systemctl start rh-php71-php-fpm.service systemctl enable rh-php71-php-fpm.service
Please also see the official documentation.
MSSQL PDO driver for PHP
Their are multiple ways to install a MSSQL compatible driver, but with icingaweb2 and the ZendFramework below in mind, we need to use pdo_dblib with FreeTDS as driver implementation. I prepared a RPM spec file for you to build and install, it is based on the php-extras packages shipped with Fedora’s EPEL, only updated for PHP 7.1 SCL.
You can setup a small RPM build environment on a RedHat or CentOS machine with the required repositories.
sudo yum install rpm-build rpmdevtools yum-utils gcc gcc-c++ scl-utils scl-utils-build rpmdev-setuptree cd ~/rpmbuild/SPEC wget https://github.com/lazyfrosch/rpm-php-extras/raw/epel7/php-extras.spec cd ../SOURCES spectool -gf ../SPECS/php-extras.spec cd ~/rpmbuild rpmbuild -bs SPECS/php-extras.spec sudo yum-builddep SRPMS/rh-php71-php-extras*.src.rpm rpmbuild --rebuild SRPMS/rh-php71-php-extras*.src.rpm
With the built RPM files under RPMS/ you are good to go to your Icinga machine. Basically you only need to copy rh-php71-php-mssql*.rpm over and install it there.
yum install rh-php71-php-mssql*.rpm scl enable rh-php71 -- php -m
After restarting php-fpm the driver has been loaded.
systemctl restart rh-php71-php-fpm.service
Patching Icinga Web 2
In Icinga Web 2.5.1 and before there is an error in detecting MSSQL correctly, detection only works in PHP 5.x. A fix has been suggested in PR#3400.
To manually patch this, you only need to fix a single line in /usr/share/php/Icinga/Application/Platform.php
--- /usr/share/php/Icinga/Application/Platform.php.orig 2018-03-27 06:02:59.454240788 -0400 +++ /usr/share/php/Icinga/Application/Platform.php 2018-03-27 00:38:15.967639651 -0400 @@ -351,7 +351,7 @@ */ public static function hasMssqlSupport() { - return static::extensionLoaded('mssql') && static::classExists('Zend_Db_Adapter_Pdo_Mssql'); + return static::extensionLoaded('pdo_dblib') && static::classExists('Zend_Db_Adapter_Pdo_Mssql'); } /**
I hope this helps you getting started, feel free to ask questions in the comments.
NETWAYS offers professional support for Icinga and other Open Source tools, check our Website about Support.
The image used in this article is from johnmartel.blogspot.de, we assume fair use by mentioning the author.
0 Kommentare