首先,大家应该了解一下,什么是zabbix?
Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统不能比的。相对来说,他的总体功能做得非常优秀,其界面也很简洁美观。
在国内,BAT的部分业务、豆瓣、58同城、PPTV、搜狐、Letv、人人、网易、小米、360等公司都在使用Zabbix。
Zabbix适合中小型企业、大中型企业的用户使用。单个Server节点可以支持上万台设备,每秒可以处理1.5万次请求,理论上可以支持5万台设备。
Zabbix自身的定位是中型企业和大型企业,如果在特大型环境中使用,需要解决大并发、大压力的问题,这对使用者提出了更高的要求。
Zabbix的通用架构是C/S架构,分布式架构为C/P/S或C/N/S,Zabbix-Server将采集到的数据持久地存储到数据库中,用前端的UI友好地展示给用户。
下面是Zabbix的架构图,可以更直观的帮助初学者理解Zabbix的原理及各部分的作用
下面介绍Zabbix的安装和配置
安装环境描述:Zabbix服务器的运行环境为Linux(Unix)+PHP+Web Service+Database,这里的Web Service可以为Nginx、Apache,Database可以为MySQL、Oracle、PostgreSQL等。
其次,还有一点需要注意的是时间同步。Zabbix-Server对时间的精准要求比较高,时间对数据的计算等都有影响,因此,最好设置NTP自动同步时间。也可以用crontab进行同步(实际的生产环境中不推荐这么做),如下所示,使用crontab进行时间同步。
*/30 * * * * /usr/sbin/ntpdate pool.ntp.org
最后一点,部署环境的考虑。Zabbix-Server尽量部署在核心业务所在的机房,要求到各分节点的网络稳定。另外,要考虑到网络流量的问题,做好安全策略。
(一)Zabbix-Server服务器端的安装
注意:下面以CentOS6.5_X64为例介绍如何安装Zabbix-Server服务器端。本例采用的是RPM包安装方式,这也是我比较推荐的方式,该方式较简介。源码安装的方式我会在在下次文章中介绍。
准备好CentOS6.5_X64系统,配置IP地址,确保与互联网连接正常。进入系统,测试网路,方法如下:
[root@zabbix-server ~]# ping -c 4 www.baidu.com PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data. 64 bytes from 119.75.218.70: icmp_seq=1 ttl=54 time=3.31 ms 64 bytes from 119.75.218.70: icmp_seq=2 ttl=54 time=6.31 ms 64 bytes from 119.75.218.70: icmp_seq=3 ttl=54 time=10.5 ms 64 bytes from 119.75.218.70: icmp_seq=4 ttl=54 time=4.16 ms --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 12023ms rtt min/avg/max/mdev = 3.313/6.078/10.530/2.793 ms
1. 安装Zabbix官方源和epel源,如下所示:
[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
[root@zabbix-server ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
注意:由于软件版本更新,以上链接可能会失效,请读者下载并安装相应的版本。
2. 安装服务器端(注意:由于服务器端也是需要监控的,股这里也一并安装Zabbix-Agent,如下所示。)
[root@zabbix-server ~]# yum -y install zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web zabbix-agent
安装可以看到,yum方式安装并没有自动安装mysql-server。
注意:由于RHEL系统(Cent OS不存在这个问题)缺少php-bcmath和php-mbstring这两个包,会导致Web页面的安装提示缺少组件,所以读者可以在Cent OS源中下载这两个包安装即可(注意与系统版本对应)。
http://vault.centos.org/
3. 安装MySQL数据库服务,命令如下:
[root@zabbix-server ~]# yum -y install mysql-server
修改MySQL配置文件如下(*星号标记部分很重要)
[root@zabbix-server ~]# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 * innodb_file_per_table=1 * [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
启动服务。
[root@zabbix-server ~]# chkconfig mysqld on [root@zabbix-server ~]# service mysqld start
查看服务是否启动成功,如下所示:
[root@zabbix-server ~]# ps -ef | grep mysql root 1199 1 0 09:56 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 1307 1199 0 09:56 ? 00:00:29 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 4503 2691 0 14:09 pts/4 00:00:00 grep mysql [root@zabbix-server ~]# netstat -nlput | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1307/mysqld
3.1 创建Zabbix的数据库
设置MySQL的root用户密码。
[root@zabbix-server ~]# mysqladmin -uroot password admin [root@zabbix-server ~]# mysql -uroot -padmin mysql> create database zabbix character set utf8; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql> flush privileges;
注意:这里容易出现的问题是创建Zabbix的数据库字符集不为utf,这会导致Web界面切换到中文环境时出现乱码。
3.2 导入Zabbix-Server的数据库
[root@zabbix-server ~]# mysql -uzabbix -pzabbix mysql> use zabbix; mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/schema.sql;
需要注意的是,如果安装Zabbix-Proxy,只导入schema.sql即可,无须导入下面的SQL,否则Zabbix-Proxy无法正常工作。
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/p_w_picpaths.sql; mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/data.sql; mysql> show tables;
3.3 配置 Zabbix_server.conf
配置zabbix_server.conf文件如下。
3.3.1 修改参数。
[root@zabbix-server ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost *可修改 DBName=zabbix *默认 DBUser=zabbix *默认 DBPassword=zabbix *需修改 DBSocket=/var/lib/mysql/mysql.sock DBPort=3306 *默认 StartPollers=5 * StartIPMIPollers=10 StartPollersUnreachable=10 StartTrappers=10 StartPingers=10 StartDiscoverers=10 SNMPTrapperFile=/var/log/snmptt/snmptt.log ListenIP=127.0.0.1 MaxHousekeeperDelete=500 CacheSize=256M * StartDBSyncers=40 HistoryCacheSize=128M TrendCacheSize=128M HistoryTextCacheSize=128M Timeout=30 TrapperTimeout=300 UnreachablePeriod=45 UnavailableDelay=60 UnreachableDelay=15 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts FpingLocation=/usr/sbin/fping LogSlowQueries=10000 StartProxyPollers=50 ProxyConfigFrequency=3600
以上参数只需关注*星号标记的部分,这部分为性能参数,需根据实际情况进行调整。默认只需修改DBPassword=zabbix 即可。
[root@zabbix-server ~]# mkdir /etc/zabbix/alertscripts /etc/zabbix/externalscripts
3.3.2 启动Zabbix-Server服务
[root@zabbix-server ~]# service zabbix-server start
[root@zabbix-server ~]# service httpd start
[root@zabbix-server ~]# chkconfig zabbix-server on
[root@zabbix-server ~]# chkconfig httpd on
3.4 防火墙、Selinux和权限的设置
1) 防火墙设置
[root@zabbix-server ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT #-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT [root@zabbix-server ~]# service iptables restart
上述代码中,10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口。
2) Selinux的设置
如果开启Selinux,安装时提示不能写入文件,出文件权限不是Web用户外,还有一个原因是Selinux默认不允许写入文件,设置语句如下:
[root@zabbix-server ~]# chcon -R -t httpd_sys_content_rw_t /usr/share/zabbix/conf
[root@zabbix-server ~]# setsebool -P httpd_can_network_connect=true
[root@zabbix-server ~]# semanage port -a -t http_port_t -p tcp 10051
如果读者对Selinux不是特别熟悉,可以选择关闭Selinux。在实际的生产环境中,大部分用户也是选择关闭Selinux的。
[root@zabbix-server ~]# setenforce 0 #设置为警告模式,只给出提示,不会阻止操作,不用重启 #服务器即生效
[root@zabbix-server ~]# getenforce #获取当前Selinux的运行状态
直接关闭Selinux的方法。
[root@zabbix-server ~]# vim /etc/selinux/config SELINUX=disabled
注意:此种方法需要重启服务器才能生效。
3) php.ini配置文件的设置
[root@zabbix-server ~]# vim /etc/php.ini date.timezone = Asia/Shanghai max_execution_time = 300 post_max_size = 16M max_input_time = 300 memory_limit = 128M mbstring.func_overload = 2
在LAMP环境中,也可以按下述方式配置PHP参数,比修改php.ini更方便。而在Zabbix的官方RPM中,这一步已经配置过了,所以无须修改。
[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.confOptions FollowSymLinks AllowOverride None Order allow,deny Allow from all php_value date.timezone Asia/Chongqing * php_value max_execution_time 300 * php_value memory_limit 128M * php_value post_max_size 16M * php_value upload_max_filesize 2M * php_value max_input_time 300 * [root@zabbix-server ~]# service httpd restart
如果在后面配置Web时提示任何参数不满足安装配置要求,修改对应的参数后重启Httpd即可。
3.5 配置Web界面
打开浏览器,输入“http://IP地址/zabbix ”,会出现如下图所示的界面。
PHP提示的各项参数都满足后,可以继续往下进行,单击“Next”按钮。如果提示参数不通过,修改php.ini配置文件,并重启Web(httpd)服务。
配置数据库连接的各项参数如下图所示:
测试结果为OK后,单击“Next”按钮进行下一步操作,如下图所示:
下图中的这些配置信息将会写入/${PATH}/zabbix/conf/zabbix.conf.php文件中。
进入如下图所示的登录界面,默认账户是admin,密码是zabbix,登陆成功的页面如下图。
Zabbix是支持多语言的,可以为每个用户配置不同的语言环境。单击菜单栏Administration——》Users——》User name——》Language修改用户的语言(虽然Zabbix支持中文,但本人并不推荐读者使用中文界面,原因是中文界面的翻译不准确,会误导读者,故本人使用英文界面讲解)。
另外,在个人用户设置中,可以开启声音告警的提示信息和前端消息的声音提示。
如果提示不能正常运行,分别检查zabbix_server.conf中的各项配置文件、Selinux、Iptables等。
配置文件请检查一下文件的正确配置参数。
①/etc/zabbix/zabbix_server.conf中的参数。
DBHost=X.X.X.X #数据库的IP地址 DBName=zabbix #数据库的名称 DBUser=zabbix #数据库的用户 DBPassword=zabbix #数据库的密码
②/usr/share/zabbix/conf/zabbix.conf.php中的配置。
安装成功后,请务必禁用Guset账户,防止非法访问。
另:关于zabbix-server初始配置时的几种常见故障及处理方法,我将会在下次详细列出,以及Zabbix-Agent的配置方法一同