Pages

Wednesday, 1 August 2012

安装 Zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。   zabbix由2部分构成,zabbix server与可选组件zabbix agent。   zabbix server可以通过SNMPzabbix agentping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。   zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows 2000/2003/XP/Vista)等系统之上。   zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(trapping方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。   另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。   zabbix的主要特点:   - 安装与配置简单,学习成本低   - 支持多语言(包括中文)   - 免费开源   - 自动发现服务器与网络设备   - 分布式监视以及WEB集中管理功能   - 可以无agent监视   - 用户安全认证和柔软的授权方式   - 通过WEB界面设置或查看监视结果   - email等通知功能   等等   Zabbix主要功能:   - CPU负荷   - 内存使用   - 磁盘使用   - 网络状况   - 端口监视   - 日志监视

------------------------------
版本:zabbix-2.0.1 Sources-http://www.zabbix.com/download.php
系统:CentOS 5.6 x86_64

安装步骤:
编译安装
1    mv zabbix-2.0.1.tar.gz /opt
2    cd /opt
3    tar zxf zabbix-2.0.1.tar.gz
4    groupadd zabbix
5    useradd -g zabbix zabbix
6    yum install php php-xml php-mbstring php-bcmath gd-devel libxml2 libcurl-devel net-snmp-devel php-gd php-mysql mysql-server mysql-devel httpd
7    cd /opt/zabbix-2.0.1
8    ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl
9    make install

配置数据库并创建所需的用户:
1    shell# mysql -u root -p
2    mysql> create database zabbix character set utf8;
3    shell# mysql -u root -p zabbix < /opt/zabbix-2.0.1/databases/mysql/schema.sql
4    shell# mysql -u root -p zabbix < /opt/zabbix-2.0.1/databases/mysql/images.sql
5    shell# mysql -u root -p zabbix < /opt/zabbix-2.0.1/databases/mysql/data.sql

前端配置:
1    cp -R /opt/zabbix-2.0.1/frontend/php /var/www/html/zabbix
2    chown -R apache.apache /var/www/html/zabbix
3    service httpd restart

修改 httpd.conf 配置访问信息后,通过 web 访问刚才配置的页面地址,根据提示信息,需要对 php.ini 中的一些默认设置进行更改。

注:由于编译安装的数据库与 yum 安装的一些默认地址产生冲突,比如常见的 mysql.sock 路径问题,虽然有些比如php可以通过修改配置文件中路径来解决,但还有的比如zabbix_server 程序应该是调用了系统 libmysqlclient 的默认路径,导致总出错,干脆在错误路径那里做一个链接好了,比较省事一些。

另外,在安装的过程中,这个数据库是需要自行导入的,并且需按顺序导入,切记。我之前以为 web 配置时会自动安装数据库,导致走了不少弯路。

设置为系统服务,使之开机自动运行。
1    cp misc/init.d/fedora/core5/zabbix_server /etc/rc.d/init.d/
2    vi /etc/init.d/zabbix_server
3    修改其中 ZABBIX_BIN 的路径为安装的路径,否则可能导致无法找到启动程序而报错
4    chmod 700 /etc/init.d/zabbix_server
5    chkconfig --add zabbix_server
6    chkconfig --level 345 zabbix_server on
7    service zabbix_server restart
------------------------------------------------------------------------------
 配置 Zabbix ,实现对 Mysql 的监控

1、在 zabbix server 下载并安装 appaloosa-zabbix-templates
1perl tools/gen_template.pl defs/mysql.pl mysql.xml
如果出现 Can’t locate XML/Simple.pm in @INC 这样的错误,需再安装 perl 相关模块:
1yum install perl-XML-Simple.noarch perl-DateTime.i386 perl-List-MoreUtils.i386
2、在 zabbix server 的 web 管理界面中导入模板,选择刚才的 mysql.xml 文件。如果之前系统中存在 Template MySQL 的模板,需先删除。
3、在 zabbix server 的 web 管理界面中选择需监控的主机,链接模板 Linux 与 MySQL。在添加模板时发现会存在冲突,怀疑是之前的模板在删除时存在问题,经查阅代码,最终原因是  proc.num[mysqld] 这个 key 在Linux、MySQL两个模板中都存在,导致合法性检查无法过去,修改其中之一即可。
4、在被监控主机安装 zabbix,默认安装在 /usr/local/zabbix 路径,其下再建立新的目录,/usr/local/zabbix/plugins 以及 /usr/local/zabbix/conf.d。
5、配置访问数据库的帐号,需具备 select、super、process 的权限。
1GRANT SELECT, SUPER, PROCESS ON *.* TO 'zabbix'@'localhost' identified BY 'some_password';
6、下载 percona-monitoring-plugins,从中提取出 ss_get_mysql_stats.php 并上传到被监控的主机 /usr/local/zabbix/plugins/ 目录,修改该文件中连接数据库的用户名及密码。
7、从刚才下载的 appaloosa-zabbix-templates 中提取出 mysql_agentd.conf 并上传到被监控的主机 /usr/local/zabbix/conf.d/ 目录,并使用如下指令替换 $ZABBIX_AGENT_PATH 的路径:
1sed -e 's¦$ZABBIX_AGENT_PATH¦/usr/local/zabbix/plugins¦' mysql_agentd.conf > mysql_agentd.conf
8、修改 /etc/zabbix/zabbix_agentd.conf,在文件末增加以下内容:
1Include=/usr/local/zabbix/conf.d/
9、注意 mysql_agentd.conf 与 ss_get_mysql_stats.php 中定义的 item 名称应相同,下载位置中的文件此名称并不相同,因为 percona 的插件中为了与 cacti 兼容而修改了此处,需相应修改。
参考资料:
appaloosa-zabbix-templates
install-zabbix-mysql-plugin-imported
另一种监控MySQL的方法
-----------------------------------------------------------------------------
 在Zabbix 中,增加对 mysql 监控的优化

 安装完 Zabbix 2.0.1 版本后,发现自带有 Template App MySQL 的监控,而且监控的项目比较精简,正是我所需要的。
上文中,监控的参数太多了些,在大量应用时可能对性能带来影响。

结果有数据库的服务器链接了该模板后,却没有看到其他的配置,至少在没有配置数据库用户密码之前,其他程序不可能获得 mysql 的统计信息。网上搜索了一大圈,只能看到早期版本是需要在 conf 配置中增加一些 mysql 监控的定义,可是那些定义项与现在版本又不一致,也过于简单了些。想了想,与其花费那些时间去查找,还不如自己想法优化一下,反正其中的原理也清楚,无非就是通过脚本获取一些信息,再传回给 zabbix server 而已,在进行大规模监控的时候,模板的精简应该是很有必要的。

目前的 Template App MySQL 包含以下 item,基本都是当前关注的内容:
01    MySQL begin operations per second
02    MySQL bytes received per second
03    MySQL bytes sent per second
04    MySQL commit operations per second
05    MySQL delete operations per second
06    MySQL insert operations per second
07    MySQL queries per second
08    MySQL rollback operations per second
09    MySQL select operations per second
10    MySQL slow queries
11    MySQL status
12    MySQL update
13    MySQL uptime
14    MySQL version

那么当前我需要做的,无非就是修改一下代码,只需要对这些提供支持就好了,也就是说,根据模板来倒推原始的代码。

在官网找了一份获取 MySQL 性能参数的代码,查看源文件后,觉得这些参数都还有些意义,干脆都纳入监控范畴好了。经过几天对代码的调试和修改,删减了其中一些认为不必要的内容,并且修改了一些错误之处。

在调整完 MySQL 的模板后,又对系统自带的 Linux 模板进行了修改,只取了我认为较常用的一些参数,特别是增加了对服务器的 ping 检测。这里需要用到第三方的软件 fping,使用 3.2 版,具体安装步骤如下:
1    tar zxf fping-3.2.tar.gz
2    cd fping-3.2
3    ./configure
4    make
5    make check
6    make install

完了以后还需要修改 zabbix 服务器上的 zabbix_server.conf 文件,将其中的 FpingLocation 指向当前 fping 的安装路径,默认是 /usr/local/sbin/fping,接着需要做如下修改,确保 zabbix 可用。
1    chown root:zabbix /usr/local/sbin/fping
2    chmod 4710 /usr/local/sbin/fping
-----------------------------------------------
参考链接:
Getting hard disk performance stats from zabbix
/proc/diskstats各域说明
------------------------------------------------------