zabbix简介
zabbix(http://www.zabbix.com/)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在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等通知功能 宋体黑色
其实网上已有很多的文章说明怎么搭建监控系统,其中最多的要属cacti其次就属zabbix了。个人对这两个软件都体验了一把,感觉zabbix最大的优势是简单、高效;而cacti虽然图然很好看但监控出来的数据不准确(和现实系统表现出来的有出入下面是cacai的图,大家可对比一下)。
最后决定发现zabbix是正确的选择。网上看上去有很多参考资料,但当你参考时发现仍会出现不同的问题:系统环境不一样;zabbix的版本不一致;相关的PHP模块找不到;相关的MySQL版本不一致;找不到合适的监控模板等等,本文的目的是尽量解决这些问题同时将自己的做法及想法贡献出来大家一起参考。其中有些部份的内容可能用不到放在这里的原因仅做参考用。
可以看到上述指令执行后可以正常获取系统相关的服务请求。证明iptables执行了正确的拦截操作。
结构如上述测试一样,其中test1主机开放所有服务,而test2主机(173.16.0.200)上做以下设定,当执行traceroute指令时无法返回正确的数据包:
现在开放RELATED状态后看结果,如下图所示:
可以看到设定后traceroute可以正确返回,但是ping和ssh操作是不成功的,这也就是RELATED的特色。
关于iptables的四种状态其实有着各种各样的应用,这里只是简单地说明各状态所适用的环境,具体的应用有机会再放上来。
网络设定相关
1.增加路由
route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.0.22
2.系统启动后网卡需手动激活
原因是最小化安装CentOS6.2后,网卡是没有默认启动的(onboot=“no”),并且设置了依赖NetworkManager 的选项(NM_CONTROLLED=”yes”),但是minimal的情况下并没有安装系统默认提供的网络管理工具NetworkManger。我们需要修改/etc/sysconfig/network-script/ifcfg-eth0文件
3.安装传输文件协方式
yum install lrzsz
时间设定
1.时间设定
hwclock –set –date=“07/07/06 10:19”
hwclock –hctosys
时间的正确设定很重要,时间不同步将导致监控的数据不一致,有可能出现监控了一周却始终只有三五天数据或是无法得到当前时间数据的情况。其中第一条语句是设定硬件时钟,第二条语句是设定系统时钟和硬件时钟同步。
2.时区设定
tzselect
时区的设定也很重要,如果系统及硬件时钟正确而时区设定不正确的话会导致图形显示出来的数据相关几个小时,因些调整好时区也是一个重要的步骤。
查找系统文件etc/sysconfig/clock并修改为:
ZONE=“Asia/Shanghai”
UTC=true
ARC=false
找到系统文件/usr/share/zoneinfo/Asia/Shanghai用这个文件替换当前的/etc/localtime文件
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改php.ini
date.timezone = Asia/Shanghai
字体设定
zabbix自带的中文字体不太好看,你可以将自己替换喜欢的字体。常用的字体windows其实已经自带了(系统字体的存放位置位于c:\windows\font中,如下图所示),你可以直接用windows中的字体进行替换。
650) this.width=650;” border=0>
wget http://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.0/zabbix-2.0.0.tar.gz
tar zxvf zabbix-2.0.0.tar.gz
cp -r /root/zabbix-2.0.0/frontends/php /var/www/html/
mv /var/www/html/php/ /var/www/html/zabbix
cd /var/www/html/zabbix/fonts/
cp -frp DejaVuSans.ttf DejaVuSans.ttf.old
mv simsunb.ttf DejaVusans.ttf
XDMCP设定
对于在windows下想用xmanager连接linux进行图形化远程操作的人员来说,设定好XDMCP是必不可少的步骤。这里仅仅介绍linux端的设定,对于该方式和该软件不了解的可以自己google下。
vi /etc/gdm/custom.conf
修改配置文件。
[daemon]
[security]
AllowRemoteRoot=true
[xdmcp]
Enable=true
[greeter]
IncludeAll=true
[chooser]
[debug]
iptables设定
iptables的作用及它的重要性不需做太多解释,这里只列出必要开放的端口,对于语句或内容有疑问的请自行google或和我联系。
vi /etc/sysconfig/iptables
修改iptables配置文件
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
–A INPUT –m state —state ESTABLISHED,RELATED –j ACCEPT
–A INPUT –p icmp –j ACCEPT
–A INPUT –i lo –j ACCEPT
–A INPUT –m state —state NEW –m tcp –p tcp —dport 22 –j ACCEPT
–A INPUT –m state —state NEW –m udp –p udp —dport 177 –j ACCEPT
–A INPUT –m state —state NEW –m tcp –p tcp —dport 6000:6010 –j ACCEPT
–A INPUT –m state —state NEW –m tcp –p tcp —dport 10050:10051 –j ACCEPT
–A INPUT –m state —state NEW –m udp –p udp —dport 10050:10051 –j ACCEPT
–A INPUT –m state —state NEW –m tcp –p tcp —dport 80 –j ACCEPT
–A INPUT –j REJECT —reject–with icmp–host–prohibited
–A FORWARD –j REJECT —reject–with icmp–host–prohibited
COMMIT
HTTPD设定
HTTPD的作用也无需太多介结大家都能明白,这里需要说明的是HTTPD的设定可能是在安装了HTTP和PHP组件后,这里仅做参考用并不代表安装一定按些步骤。实在不明白的google吧。
vi /etc/httpd/conf.d/zabbix.conf
增加配置文件
<VirtualHost *:80>
ServerAdmin zabbix
DocumentRoot /var/www/html/zabbix
ErrorLog /var/log/httpd/zabbix.log
HostnameLookups Off
UseCanonicalName Off
ServerSignature Off
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory “/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
禁用selinux
selinux确实提高了系统的安全性,但另一方面也给应用程序增加了很多的不确定性。我在安装配置完zabbix后曾出现过始终无法打开浏览页面无法进入web安装界面的情况,后来禁用selinux后问题解决。对于selinux的启用与否个人见仁见智可以根据自已的需求决定是否开启。
vi /etc/selinux/config
禁用selinux
SELINUX=disabled
SELINUXTYPE=targeted
禁用ctrl+alt+del
禁用ctrl+alt+del的作用是防止机房管理人员误操作导致系统重启的问题。需注意的是在centos6之前的版本中该设置文件是/etc/inittab,而到了centos6以后被放到了/etc/init/control-alt-delete.conf中。
vi /etc/init/control-alt-delete.conf
禁用ctrl+alt+del
#start on control–alt–delete
#exec /sbin/shutdown –r now “Control-Alt-Delete pressed”
1.增加用户组
主要是增加zabbix用户组,如果不增加该用户和组,在后面的编译安装时将会有相关提示。
groupadd -g 130 zabbix
useradd -u 130 -g zabbix -c “Zabbix Monitoring” zabbix
2.增加软件源
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo /etc/yum.repos.d/
wget http://mirrors.ustc.edu.cn/Fedora/epel//6/i386/epel-release-6–7.noarch.rpm
rpm -ivh epel-release-6–7.noarch.rpm
3.安装相关软件
yum –enablerepo=epel install iksemel iksemel-devel
yum install MySQL-server httpd php mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml postfix zlib-devel glibc-devel automake mysql libidn-devel openssl-devel rpm-devel OpenIPMI-devel
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
yum install net-snmp*
4.配置数据库
service mysqld start
mysqladmin -u root password ‘password’
mysql_secure_installation
mysql -uroot -p
create database zabbix default character set utf8;
grant all privileges on zabbix.* to ‘zabbix’@‘localhost’ identified by ‘password’;
quit;
tar zxvf zabbix-2.0.0.tar.gz
cd database/mysql
cat schema.sql |mysql -u zabbix -p zabbix
cat images.sql |mysql -u zabbix -p zabbix
cat data.sql |mysql -u zabbix -p zabbix
5.编译zabbix
./configure –prefix=/usr/local/zabbix –enable-server –with-mysql –with-net-snmp –with-jabber –with-libcurl –with-openipmi –enable-proxy –enable-agent
make
make install
cp misc/init.d/RedHat/8.0/zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*
chown -R zabbix:zabbix /usr/local/zabbix
chkconfig –add zabbix_server
chkconfig –add zabbix_agentd
chkconfig –level 35 zabbix_server on
chkconfig –level 35 zabbix_agentd on
6.配置zabbix
vi /usr/local/zabbix/etc/zabbix_server.conf
配置zabbix_server.conf文件
SourceIP=192.168.0.189
DBName=zabbix
DBUser=zabbix
DBPassword=password
vi /usr/loca/zabbix/etc/zabbix_agent.conf
hostname=myj–jk
Server=192.168.0.189
启动zabbix服务
service zabbix_server start
service zabbix_agentd start
7.配置php.ini
memory_limit = 256M
date.timezone = Asia/Shanghai
post_max_size = 32M
max_execution_time = 600
upload_max_filesize = 16M
max_input_time = 600
8.启动httpd服务
service httpd start
到这里就可以启动web服务进行zabbix的安装了,httpd服务启动后直接在浏览器中输入服务器的IP地址开始安装,按照图形的方式一步一步安装完成吧。后面就如何自定义监控模板(IIS6、IIS7、SQL2005、SQL2008),如自定义MAP图标以及zabbix简单的性能优化写出我自己的理解。
zabbix配置.pdf版下载:
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2012年资料/7月/28日/企业应用监控利器-ZABBIX/