标签:icinga-web安装
Icinga-web 安装
前段时间研究了会icinga和icinga-web,他是nagios的二次开发,支持中文汉化,国内对icinga-web的研究文档貌似比较少,这里就分享给大家
一.环境需求:
相关库: yum install –y libdbi-devel libdbi libdbi-drivers libdbi-dbd-mysql
yum install -y gcc glibc glibc-common gd gd-devel openssl-devel
yum install -y libjpeg libjpeg-devel libpng libpng-devel
yum install -y rsync vim wget curl git zip unzip mlocate make spawn-fcgi
(注释: libdbi libdbi-drivers 做数据的传输, libdbi-dbd-mysql用来连接数据库的如果不安装,ido2db进程将无
法启动,如果发现数据传不到数据库,有可能是这些地方的问题,一一排查)
相关安装包:icinga-cn-web-1.5.2.tar.bz2 gnosek-fcgiwrap-4b2151e.tar.gz
系统环境: centos 5.5*64
安装环境: LNMP
NMP: Nginx version: nginx-1.4.1
Mysql version: mysql-5.5.17
Php version: PHP 5.3.8
1).注意:php编译选项:
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql\
--with-gd --with-zlib --with-xsl --with-ldap --with-gettext\
--with-pdo-mysql=/program2/mysql --enable-soap --with-xmlrpc
如果php已编译,可以选择动态拓展库的方法把缺少的动态添加进去:(列:动态拓展:soap)
# cd /download/php-5.3.1/ext/soap && /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-soap
#make && make install
看看是否已存在soap.so :
# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/soap.so
在/usr/local/php/lib/php.ini里加入extension=soap.so
重启php: # /etc/init.d/php-fpm restart
检测php是否已安装所需拓展脚本(需要先修改测试脚本的php路径):
# vim /usr/local/icinga_web/bin/testdeps.php
改成: #!/usr/local/php/bin/php
执行: # /usr/local/icinga_web/bin/testdeps.php
如果出现: All over result: PASS则表示成功,如果出现fail,则在输出中找到哪些库没有安装,
再用动态安装方法添加进去。
二.fcgiwrap的安装及配置:
1).安装fcgiwrap
# yum install fcgi-devel fcgi
# tar xvf gnosek-fcgiwrap-4b2151e.tar.gz
# cd gnosek-fcgiwrap-4b2151e
# ./configure --prefix=/usr/local/fcgiwrap
# make && make install
2).配置和启动fcgiwrap
fcgiwrap的作用是使得cgi程序像fastcgi程序一样在nginx上运行
创建fcgiwrap启动脚本:
# cp /etc/init.d/spawn-fcgi /etc/init.d/fcgiwrap
# vi /etc/init.d/fcgiwrap 修改下面红色字体的两项
exec="/usr/bin/spawn-fcgi"
prog="fcgiwrap"
config="/etc/sysconfig/fcgiwrap"
3). 创建fcgiwrap的配置文件
# mkdir -p /var/run/fcgiwrap
# chown -R icinga:icinga /var/run/fcgiwrap
# vim /etc/sysconfig/fcgiwrap
添加:
FCGI_SOCKET=/var/run/fcgiwrap/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/fcgiwrap/sbin/fcgiwrap
FCGI_PIDFILE=/var/run/fcgiwrap/fcgiwrap.pid
FCGI_USER=icinga
FCGI_GROUP=icinga
FCGI_EXTRA_OPTIONS="-M 0600"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S
$FCGI_EXTRA_OPTIONS -F 1 -P $FCGI_PIDFILE -f $FCGI_PROGRAM"
启动fcgiwrap:
# /etc/init.d/fcgiwrap start
三.Icinga-web的安装及配置:
1).解压icinga-web 并进入安装目录下
# tar -jxvf icinga-cn-web-1.5.2.tar.bz2
# cd icinga-cn-web-1.5.2
# ./configure prefix=/usr/local/icinga-web --with-app-name=Icinga\
> --with-web-user=icinga --with-web-group=icinga\
> --with-api-cmd-file=/usr/local/icinga/var/rw/icinga.cmd
# make && make install
2).配置及启动IDOUtils
# cd /usr/local/icinga/etc && mv modules/idoutils.cfg-sample modules/idoutils.cfg
<1>创建数据库和用户
# mysql –u root -p
# CREATE DATABASE icinga DEFAULT CHARACTER SET utf8;
# GRANT USAGE ON icinga.* TO ‘icinga‘@‘localhost‘
IDENTIFIED BY ‘yourpassword‘
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0;
# GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON
icinga.* TO ‘icinga‘@‘localhost‘;
# CREATE DATABASE icinga_web DEFAULT CHARACTER SET utf8;
# GRANT USAGE ON icinga_web.* TO ‘icinga_web‘@‘localhost‘
IDENTIFIED BY ‘yourpassword‘
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0;
# GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE
ON icinga_web.* TO ‘icinga_web‘@‘localhost‘;
# FLUSH PRIVILEGES;
# quit
###MAX_QUERIES_PER_HOUR 0 每小时可以查询数据库的次数0代表不限制
###MAX_CONNECTIONS_PER_HOUR 0 每小时可以连接数据库的次数
###MAX_UPDATES_PER_HOUR 0 每小时可以修改数据库的次数
<2>导入数据库
# mysql -u root -p icinga <\
/usr/local/etc/icinga-cn-1.9.3/module/idoutils/db/mysql/mysql.sql
# mysql -u root -p icinga_web < /usr/local/icinga-web/etc/schema/mysql.sql
<3>数据库连接配置
# cd /usr/local/icinga-web
# vim app/config/databases.xml 修改icinga_web表的密码
<ae:parameter
name="dsn">mysql://icinga_web:yourpassword@localhost:3306/icinga_web</ae:parameter>
<!-- Generic credentials -->
<ae:parameter name="username">icinga_web</ae:parameter>
<ae:parameter name="password">yourpassword</ae:parameter>
<!-- DB encoding type -->
<ae:parameter name="charset">utf8</ae:parameter>
...
<database xmlns="http://agavi.org/agavi/config/parts/databases/1.0" name="icinga"
class="IcingaDoctrineDatabase">
<ae:parameter name="dsn">mysql://icinga:yourpassword@localhost:3306/icinga
</ae:parameter>
<!-- Must be removed for oracle databases -->
<ae:parameter name="prefix">icinga_utf8
<4>清理缓存
修改了配置文件后需要清理缓存
# ./bin/clearcache.sh
<5>配置ido2db.cfg
#vim /usr/local/icinga/etc/ido2db.cfg
db_socket=/tmp/mysql.sock #不开启并制定好mysql.sock的位置数据将不能导入数据库
db_host=localhost
db_port=3306
db_name=icinga
db_user=icinga
db_pass=yourpassword
3).启动ido2db: /etc/init.d/ido2db start
Ido2db进程一定要在icinga进程之前启动,不然会出现数据录不到数据库的情况,关闭icinga
进程之前最好先关闭ido2db,不然有时icinga启动会有问题
正确的重启方法为:
/etc/init.d/ido2db stop && /etc/init.d/icinga stop && /etc/init.d/ido2db start & /etc/init.d/icinga start
查看日志出现idomod: Successfully connected to data sink则表示数据库配置成功
如果有大量服务在监控,查看日志发现:
idomod: Successfully connected to data sink. 6081 items lost, 5000 queued …
修改# vim /usr/local/icinga/etc/idomod.cfg
output_buffer_items=50000 (这个值看需求)
这个值是应付数据过大导致丢失而建立的缓冲区,超量的数据会放进去慢慢写入icinga数据
库,如果值舍得太小容易导致数据的不准确
四.Nginx的配置:
查看是否icinga已经做好软连接,若无则:
# ln -s /usr/local/icinga/share /data/www/icinga
1).Nginx配置
# ln -s /usr/local/icinga-web/ /data/www/icinga-web
# vim /usr/local/nginx/conf/vhosts/icinga_web.conf
server {
listen 8088;
server_name localhost;
index index.php index.html index.htm;
root /data/www/icinga-web/icinga-web/pub;
error_log logs/icinga-web_error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
expires max;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny all attempts to access hidden files such as .htaccess, .htpasswd
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location /icinga-web/styles {
alias /data/www/icinga-web/icinga-web/pub/styles;
}
location /icinga-web/images {
alias /data/www/icinga-web/icinga-web/pub/images;
}
location /icinga-web/js {
alias /data/www/icinga-web/icinga-web/lib;
}
location /icinga-web/modules {
rewrite ^/icinga-web/(.*)$ /index.php?/$1 last;
}
location /icinga-web/web {
rewrite ^/icinga-web/(.*)$ /index.php?/$1 last;
}
location / {
root /data/www/icinga-web/icinga-web/pub;
index index.php;
location ~* ^/(robots.txt|static|images) {
break;
}
if ($uri !~ "^/(favicon.ico|robots.txt|static|index.php)") {
rewrite ^/([^?]*)$ /index.php?/$1 last;
}
}
location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# classic interface
location /icinga {
alias /data/www/icinga/share;
index index.html;
auth_basic "Icinga Access";
auth_basic_user_file /usr/local/icinga/etc/htpasswd.users;
}
location ~ \.cgi$ {
# define root directory for CGIs
root /usr/local/icinga/sbin;
rewrite ^/icinga/cgi-bin/(.*)\.cgi /$1.cgi break;
rewrite ^/cgi-bin/icinga/(.*)\.cgi /$1.cgi break;
include fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
auth_basic "Icinga Access";
auth_basic_user_file /usr/local/icinga/etc/htpasswd.users;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
}
}
2).重启# nginx: /etc/init.d/nginx restart
可以登录http://ip:8088 查看,初始用户名和密码是root和password,请登录后修改
Icinga-web1.7在加载下图这个文件是会耗时很久,icinga-web1.5版本没有这个情况,如果实
在要用1.7版本,就需要使用google chrome等会缓存该文件的浏览器
五.Icinga-report的安装及配置:
默认安装需要PostgreSQL支持,速度较慢,采用Mysql,速度会快许多
1).准备工作
从icinga 1.8有一个提供一切所需的SLA信息的数据库功能。此功能需要附加到您现有
idoutils数据库的icinga报表。
下载icinga-report,我这里下载的是icinga-reports-1.9.0.tar.gz
# tar zxvf icinga-reports-1.9.0.tar.gz
# mysql –uroot –p icinga <\
/downloads/jasperserver/icinga-reports-1.9.0/db/icinga/mysql/availability.sql
2).tomcat的安装及配置
下载jdk6.0,我这里下载的是jdk-6u45-linux-x64.bin
# chomd 755 jdk-6u45-linux-x64.bin && ./jdk-6u45-linux-x64.bin
# mv jdk1.6.0_45/ /usr/local/jdk
下载tomcat, 我这里下载的是apache-tomcat-6.0.37.tar.gz
# tar zxvf apache-tomcat-6.0.37.tar.gz
# mv apache-tomcat-6.0.37 /usr/local/apache-tomcat
配置jdk环境
# vim /etc/profile
export PYTHON_EGG_CACHE=/tmp/.python-eggs
JAVA_HOME=/usr/local/jdk
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
# source /etc/profile
监控机机器是16个cpu,16g内存配置,在catalina.sh脚本里添加下面红色的语句
(由于数据量较大,jasperserver出报告的时候会导致内存溢出,icinga进程也会卡死,所以,启
动使用报告功能前,务必确认tomcat的内存分配足够)
# vim /usr/local/apache-tomcat/bin/catalina.sh
…
if [ $have_tty -eq 1 ]; then
JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=512m
-XX:MaxNewSize=512m"
echo "Using CATALINA_BASE: $CATALINA_BASE"
# /usr/local/apache-tomcat/bin/catalina.sh start
如果http://ip:8080能显示tomcat的欢迎页面,则tomcat配置成功,如有问题,查看环境变量是
否正确配置,比如看看末尾是否多个空格符(当时我就在JAVA_HOME=/usr/local/jdk这条语
句末尾多加了个空格符,导致出问题)
#echo $JAVA_HOME && echo $ CLASSPATH && echo $ PATH
看看是否都能路径出现,若无,检查环境变量,修正后重新soure /etc/profile
3).jasperserver的安装及配置
5.0以上版本的jasperserver只支持1.9版本以上的icinga-report,不然在出部分报告是会出现
如下报错
由于jasperserver5.0的默认安装只支持postgresql以及tomcat,所以我们使用自定义安装包
安装(4.1版本的jasperserver默认安装版mysql5.1也只支持mysql5.1以前的版本)
到官网下载jasperserver自定义安装包:
http://sourceforge.net/projects/jasperserver/files/JasperServer/JasperServer%205.0.0/Ja
sperReports-Server-CP-Install-Guide.pdf
我这里下载的是jasperreports-server-cp-5.0.0-bin.zip
# cd /downloads/jasperserver && unzip jasperreports-server-cp-5.0.0-bin.zip
# mv jasperreports-server-cp-5.0.0-bin /usr/local/jasperreports-server
# cd /usr/local/jasperreports-server/buildomatic
# cp sample_conf/mysql_master.properties default_master.properties
# vim default_master.properties
appServerType = tomcat6
appServerDir = /usr/local/apache-tomcat
dbType=mysql
dbHost=localhost
dbUsername=root
dbPassword=数据库的root密码
dbPort=3306
自定义安装的jasperserver需要JDBC驱动,可使用yum下载或在已下好的icinga-report安装
包里面复制一个过去,我这里是直接从icing-report安装包里复制过去
# cp /downloads/jasperserver/icinga-reports-1.9.0/jsp-server/classes/connector/mysql-co\
nnector-java-5.1.18/mysql-connector-java-5.1.18-bin.jar conf_source/db/mysql/jdbc/
执行脚本前,先关闭tomcat,并确保mysql开启
# /usr/local/apache-tomcat/bin/catalina.sh stop
# ./js-install-ce.sh
如果之前安装了jasperserver的相同版本,可跳过建表的步骤(选择n),如果安装了不同版本的,
还需要覆盖原来的表(选择y),因为不同版本的表会导致jasperserver不能顺利运行
出现如图字样则表示jasperserver安装成功,开启tomcat
# /usr/local/apache-tomcat/bin/catalina.sh start
在浏览器输入http://ip:8080/jasperserver 如果看到登录页面,则安装完成
初始用户名和密码都是jasperadmin,请进入后修改
4).icinga-report的安装及配置
<1>先做好tomcat和mysql的软连接
# ln -s /usr/local/apache-tomcat /usr/local/jasperreports-server
# ln -s /usr/local/mysql /usr/local/jasperreports-server
<2>下载icinga-report,我这里下载的是icinga-reports-1.9.0
# cd /download/icinga-reports-1.9.0
# ./configure --with-jasper-server=/usr/local/jasperreports-server
# make && make install-mysql-connector
查看JDBC的驱动是否在tomcat的lib里
# ll /usr/local/apache-tomcat/lib/mysql-connector-java-5.1.18-bin.jar
存在的话重启tomcat
# /usr/local/apache-tomcat/bin/catalina.sh stop
# /usr/local/apache-tomcat/bin/catalina.sh start
# make install
出现下图字样则安装成功
<3>修改jasperserver工程文件的JDBC链接文件
由于jasperserver默认安装的是postgres数据库,所以工程里面的js.jdbc.properties文件还是
postgres的连接参数,直接删除该文件,新建一个mysql的连接文件,如下
# cd /usr/local/apache-tomcat/webapps/jasperserver/WEB-INF/
# vim js.jdbc.properties
# Property that determines the Hibernate dialect
metadata.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
# jasperserver repo db settings
metadata.jdbc.driverClassName=com.mysql.jdbc.Driver
metadata.jdbc.url=jdbc:mysql://localhost:3306/jasperserver_ce_410?useUnicode=true&a
mp;characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=
true
metadata.jdbc.username=root
metadata.jdbc.password=EFUNFUN
metadata.jndi=jdbc/jasperserver
metadata.database.generate=true
# foodmart db settings
foodmart.jdbc.driverClassName=com.mysql.jdbc.Driver
foodmart.jdbc.url=jdbc:mysql://localhost:3306/foodmart?useUnicode=true&character
Encoding=UTF-8&autoReconnect=true&autoReconnectForPools=true
foodmart.jdbc.username=root
foodmart.jdbc.password=EFUNFUN
foodmart.jndi=jdbc/foodmart
# sugarcrm db settings
sugarcrm.jdbc.driverClassName=com.mysql.jdbc.Driver
sugarcrm.jdbc.url=jdbc:mysql://localhost:3306/sugarcrm?useUnicode=true&charact
erEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true
sugarcrm.jdbc.username=root
sugarcrm.jdbc.password=EFUNFUN
sugarcrm.jndi=jdbc/sugarcrm
# sugarcrm is also referenced as test in unit tests
test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/sugarcrm?useUnicode=true&characterEnc
oding=UTF-8&autoReconnect=true&autoReconnectForPools=true
test.jdbc.username=root
test.jdbc.password=EFUNFUN
test.jndi=jdbc/sugarcrm
# flag used to skip some unit tests or to use uppercase schema files
test.databaseFlavor=mysql
test.createMinimalData=${test.set.createMinimalData}
foodmart.upperCaseNames=false
sugarcrm.upperCaseNames=false
# used to add parms to tomcat datasource: context.xml
# todo: still used?
datasource.extra.params=
<3>给予主机和服务初始值
启动icinga-web的报告功能还需要给予服务一个默认的初始值,不然出来的报告会不准确
报告功能是基于icinga的日志出报表的
# vim /usr/local/icinga/etc/icinga.cfg
将这个值设置为1,重启icinga
(注意服务较多时,icinga的进程基本都会卡死,所以让日志有了初始状态后,kill了icinga进程,
把参数重新设置为0,再重启,icinga进程会重新开始检测,icing-report的数据也会正常)
但是目前为止中文版的icinga及时给与了初始状态,经典版本里的可用性依旧不正常,只要服
务从开始检测一直都是正常的话,它的可用性数值一直都是未决
<4>报告功能的使用
重启tomcat,登录icinga-web页面选择报告功能,打开目录
如果此处出现列表死循环(icinga-web1.7之前的版本都会出现),查看tomcat错误日志会出现
[错误] Reports: Possible security hack, try accessing jasper server on
/icinga/reports/samples without matching root path
修改该文档/usr/local/icinga-web/app/modules/Reporting/config/module.xml
把Icinga改成icinga,重启tomcat,即可解决
报告里的Timeperiod选项需要自己填写,以下是timeperidos的参数
List of defined timeperiods:
* today => Today
* last24hours => Last 24 hours
* yesterday => Yesterday
* thisweek => This week
* last7days => Last 7 days
* lastweek => Last week
* thismonth => This month
* last31days => Last 31 days
* lastmonth => Last month (default)
* thisyear => This year
* lastyear => Last year
* custum => Custom period report
六.后期维护:
1).配置开机启动
配置开机自动启动进程
# vim /etc/rc.d/rc.local
#icinga and icinga-web start
/etc/init.d/ido2db start
/etc/init.d/fcgiwrap start
/etc/init.d/php-fpm start
/etc/init.d/nginx start
/etc/init.d/icinga start
#jasperserver start
/usr/local/apache-tomcat/bin/catalina.sh start
2).编写脚本
<1>编写检测icinga和ido2db进程运行情况的脚本如果进程异常自动重启icinga和ido2db进
程,并将脚本放入crontab里面一定时间执行一次
<2>编写启动icinga和ido2db进程脚本,由于启动顺序有讲究,编写reload脚本方便更新监控
<3>编写备份监控配置的操作,备份在本机以及测试用的虚拟机上,放入crontab里每天跑一
次,防止机器故障或者操作失误导致的配置文件丢失
3).配置文件重新规范
现有的配置文件命名,监控检测间隔等方面做的不够规范,需和爱君等人一起商量如何把监
控服务的配置文件重新规范,方便以后管理监控配置,以及优化监控系统
结合以前经验对监控服务分组级别的参考
<1>P1: 核心服务级别:
严重影响业务访问人数、盈利收入、公司品牌的对外服务
网络层面:
机房某线路出口断网(丢包接近100%);
机房某线路出口严重丢包,超过40%情况;
安全层面:
P1、P2级应用遭受攻击,大量敏感信息被窃取,且数据被破坏或篡改
<2>P2: 次核心服务级别:
网络层面:
机房某线路出口丢包率不超过40%情况,丢包情况间歇发生,且尚未对核心业务的使用
造成大面积影响;
办公网出口丢包或断网情况;
安全层面:
P1、P2 级应用遭受攻击,部分敏感信息被窃取,但数据未被破坏或篡改
<3>P3: 边缘服务级别:
机房之间同一运营商线路出现局部断网和丢包的情况
第三方合作服务
非关键服务遭受攻击,但信息未被窃取
<4>P4: 运维优化级别:
除特别注明外,所有磁盘空间监控点、应用日志告警
除特别注明外,所有服务中有负载均衡的主机级别监控告警(服务端口、cpu、内存、
连接数)
除特别注明外,网络设备的流量监控告警
这个监控级别可以通过修改监控服务图片来自定义,也能通过自定义变量来对级别进行分组
对配置文件添加”parents 名称”可以对状态图进行调整
4).Web版的报警显示时间与经典版显示时间相隔4到5分钟,不过上面的报警时长一致
不过这些不影响报警邮件或短信的发送时间
七.使用介绍:
http://icinga02.efunfun.tw/
1). 管理按钮
添加删除用户,用户分组查看日志,修改了xml配置也需要在这里的任务下点击清除按钮(或者
执行clearcache.sh脚本)
2). 用户修改自己的密码以及定义自己个性化的界面,以及退出用户按钮
3).自定义用户的cronk
<1>添加自定义的分类,修改位置的数字能对分类目录的上下位置进行调整
<2>对右边的标签右击,会出现保存cronk的选项,可以选择保存在自己设置的分类目录里
<3>设置里的标签滑块功能能让右边的标签按一定时间进行右移,该时间在用户首选项设置
4).右边标签栏的功能按钮
过滤按钮能对服务下面显示的条目进行筛选
5).右上角的这个图标能显示主机/服务的主动监测/被动监测数量;主机/服务的执行时间,主
机/服务的检测延迟
6).左上角的图标
<1>搜索功能
<2>服务的整体情况展示,最右边的是实例功能,1.5 版本暂时没有个功能的cronk,暂时忽略
本文出自 “坑爹霞老板” 博客,请务必保留此出处http://xiaoking.blog.51cto.com/4024863/1408898
标签:icinga-web安装
原文地址:http://xiaoking.blog.51cto.com/4024863/1408898