zabbix的安装
简述:
本章介绍Zabbix的安装和配置,这是在一个Server/Agent的架构环境中进行部署的,采用RPM包进行安装(推荐使用此种方法)
环境:
Zabbix服务器运行的环境为Linux+PHP+WebService+DataBase,这里的WebService可以是Nginx、Apache;DataBase可以为MySQL、Oracle、PostgreSQL等。
硬件要求:
环境 | 平台 | CPU/内存 | 数 据 库 | 硬盘 | 监控主机数量 |
小型 | Linux | PII 350MHz 256MB | SQLite | 普通 | 20 |
中型 | Linux 64 bit | AMD Athlon 3200 2GB | MySQL InnoDB | 普通 | 500 |
大型 | Linux 64 bit | Intel Dual Core 6400 4GB | MySQL InnoDB | SAS或SSD | > 1000 |
超大型 | Linux 64 bit | Intel Xeon 2xCPU 8GB | MySQL InnoDB | SAS或SSD | > 10000 |
准备工作:
时间同步:
Zabbix-Server对时间的精准要求比较高,时间对数据的计算等都有影响,因此,最好设置ntp自动同步时间。也可以用crontab 进行同步(在实际的生产环境中不推荐这么做),如下所示,使用crontab 进行时间同步,如:
*/30 * * * * /usr/sbin/ntpdate pool.ntp.org
部署:
服务端配置:(centos6.5)
zabbix server安装:
采用RPM包安装方式(推荐)
安装Zabbix官方源和epel源:
rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
注意:由于软件版本的更新,以上链接可能会失效,请读者下载并安装相应的版本。
yum install -y zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web zabbix-agent (注意:由于服务器端也是需要监控的,故这里也一并安装Zabbix-Agent)
注意:yum安装时,epel源可能会报错,如下:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解决方法:vi /etc/yum.repos.d/epel.repo
将所有baseurl行注释去掉
将所有mirrorlist行注释掉
注意:安装zabbix的官方yum源后,在执行yum install -y zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web zabbix-agent这个命令时会把httpd,mysql,php等相关的软件一并安装(若之前已经安装了httpd,先把之前安装的httpd卸载了: rpm -e httpd --nodeps,不然后面httpd的配置文件会有问题)
mysql的配置:
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 #设置字符集为utf8
innodb_file_per_table=1 #让innodb的每个表文件单独存储
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
###和上面mysql配置文件的数据是一样的:[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0character-set-server=utf8innodb_file_per_table=1[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
chkconfig mysqld on (启动服务)
service mysqld start
ps -ef | grep mysql (看是否启动)
创建zabbix库:
mysqladmin -uroot password "xxxxx" (设置密码)
mysql -uroot -pxxxxx (登录mysql)
create database zabbix character set utf8;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; (创建zabbix用户并授权)
flush privileges;
注意:这里容易出现的问题是创建Zabbix的数据库字符集不为utf8,这会导致Web界面切换到中文环境时出现乱码。
导入Zabbix Server的数据库:
mysql -uzabbix -pzabbix (以zabbix用户登录mysql)
use zabbix
source /usr/share/doc/zabbix-server-mysql-X.X.X/create/schema.sql;
注意:如果安装Zabbix-Proxy,只导入schema.sql即可,无须导入下面的SQL,否则Zabbix-Proxy 无法正常工作。
source /usr/share/doc/zabbix-server-mysql-X.X.X/create/p_w_picpaths.sql;
source /usr/share/doc/zabbix-server-mysql-X.X.X/create/data.sql;
show tables;
配置zabbix_server.conf:
mv /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.old (备份原配置文件)
vi /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
VMwareFrequency=60
VMwareCacheSize=8M
SNMPTrapperFile=/var/log/snmptt/snmptt.log
ListenIP=127.0.0.1
MaxHousekeeperDelete=500
CacheSize=256M
StartDBSyncers=40
HistoryCacheSize=128M
TrendCacheSize=128M
HistoryTextCacheSize=128M
ValueCacheSize=128M
Timeout=30
TrapperTimeout=300
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/etc/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=10000
StartProxyPollers=50
ProxyConfigFrequency=3600
###和上面zabbix配置文件数据一样:LogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/var/run/zabbix/zabbix_server.pidDBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=zabbixDBSocket=/var/lib/mysql/mysql.sockDBPort=3306 StartPollers=5StartIPMIPollers=10StartPollersUnreachable=10StartTrappers=10StartPingers=10StartDiscoverers=10VMwareFrequency=60VMwareCacheSize=8MSNMPTrapperFile=/var/log/snmptt/snmptt.logListenIP=127.0.0.1MaxHousekeeperDelete=500CacheSize=256MStartDBSyncers=40HistoryCacheSize=128MTrendCacheSize=128MHistoryTextCacheSize=128MValueCacheSize=128MTimeout=30TrapperTimeout=300UnreachablePeriod=45UnavailableDelay=60UnreachableDelay=15AlertScriptsPath=/etc/zabbix/alertscriptsExternalScripts=/etc/zabbix/externalscriptsFpingLocation=/usr/sbin/fpingLogSlowQueries=10000StartProxyPollers=50ProxyConfigFrequency=3600
注意:只需关注红色字部分,这部分为性能参数,需根据实际情况进行调整。默认只需修改DBPassword=zabbix即可
mkdir -p /etc/zabbix/{alertscripts,externalscripts} (创建两个脚本目录,邮件报警和短信报警的脚本都放在这个目录里)
service zabbix-server start (启动zabbix server)
service httpd start
chkconfig zabbix-server on
chkconfig httpd on
防火墙,Selinux和权限的设置:
iptables -P INPUT ACCEPT (注意顺序,设置INPUT链默认为全接受)
iptables -F
chkconfig iptables on
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (很重要,确保可以连接外网)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT (非常重要,确保可以远程登录)
iptables -P INPUT DROP (设置INPUT链默认为全拒绝)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 10050 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables status
注意:10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口
selinux:直接关闭
php.ini配置文件的设置:
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中,这一步已经配置过了,所以无须修改。如:
vim /etc/httpd/conf.d/zabbix.conf
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
php_value date.timezone Asia/Shanghai
php_value max_execution_time 300
php_value post_max_size 16M
php_value max_input_time 300
php_value memory_limit 128M
php_value upload_max_filesize 2M
</Directory>
service httpd restart (重启httpd即可)
注意:如果在后面配置Web时提示任何参数不满足安装配置要求,修改/etc/php.ini文件里对应的参数后重启Httpd即可
配置web界面:
打开浏览器,输入“http://IP地址/zabbix”
可能会有如下报错:
解决办法:
vi /etc/php.ini
找到date.timezone参数
添加一行
date.timezone = Asia/Shanghai
/etc/init.d/httpd restart (OK)
刷新后如下图:
点击next下一步后,出现如图:
根据上图所示,填写各参数的值
点击Test connection,无错误后,点击next下一步,出现如下图:
如上图:填写相应的值
注意:name参数的值的含义:zabbix在web界面的名称,如下图:
点击next--->next---->finish完成,如下图:
点击finish后,出现登录界面,如下图:
默认的账号是:admin,密码是zabbix
登录后进入zabbix,如下图:
注意:登录后,可能会出现如下图所示的错误:
解决方法:由上图画圈中发现,localhost的10051端口可能有问题,用telnet进行测试,如下:
由上图发现localhost的10051端口是不通的,而127.0.0.1的10051是通的,修改配置文件zabbix.conf.php
[root@scj ~]# find / -name zabbix.conf.php
/etc/zabbix/web/zabbix.conf.php (找到文件路径)
vi /etc/zabbix/web/zabbix.conf.php
找到下面几行:
将localhost改为127.0.0.1
/etc/init.d/httpd restart (重启httpd)
注意:刚安装完zabbix后,web界面默认会有installation选项,重新安装zabbix的web界面,如下图:
为了安全我们需要将其去掉,方法如下:
[root@scj ~]# find / -name menu.inc.php
/usr/share/zabbix/include/menu.inc.php (找到文件位置)
vi /usr/share/zabbix/include/menu.inc.php
找到Installation,如下图:
将其注释掉,如下图:
/etc/init.d/httpd restart (重启httpd)
刷新下浏览器,发现没了,如下图:
将web界面的英文改为中文:
对于初学者或者英语水平不是很好的运维人员来说,英文界面可能不是很好,那如何将英文界面改为中文界面呢?方法如下:
1、 在web界面的右上角有个profile选项,如下图:
2、 点击profile,进入如下图所示:
3、 选择Chinese,点击save保存即可
注意:对于zabbix-2.2版本来说,默认没有Chinese这个选项 (被隐藏了),解决方法如下:
[root@scj ~]# find / -name locales.inc.php
/usr/share/zabbix/include/locales.inc.php (找到文件路径)
vi /usr/share/zabbix/include/locales.inc.php
找到zh_CN,如下图:
将false改为true即可
/etc/init.d/httpd restart (重启httpd)
如下图:
解决中文乱码:
参考:
客户端配置:
注意:Zabbix可以采用Agent/Server的架构,客户端的采集方式分为Agent、SNMP等,这里采用Agent方式对客户端服务器进行监控采集数据(推荐)
Zabbix-Agent客户端的安装 :
这里依然采用RPM方式安装(安装Zabbix官方的yum源)
rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
yum -y install zabbix zabbix-agent
防火墙的设置:
iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 10050 -j ACCEPT
selinux:直接关闭
配置zabbix_agentd.conf:
mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.old (备份下原配置文件)
vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1,192.168.186.130 #被动模式
ServerActive=192.168.186.130:10051 #主动模式
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1
###和上面zabbix客户端配置文件数据一样PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=127.0.0.1,192.168.186.130ServerActive=192.168.186.130:10051Hostname=Zabbix serverInclude=/etc/zabbix/zabbix_agentd.d/UnsafeUserParameters=1
注意:获取数据的方式分为主动模式(ServerActive)和被动模式(Server),(主动,被动是以agent为中心的),如上:server端ip是192.168.186.130,agent端ip是192.168.186.128;主动模式是指:agent端会主动把数据推送给server端,因此要指定server端ip和监听端口;被动模式是指:agent端搜集本机相应数据,server端会到agent端获取agent端搜集的数据,所以要指定server端ip(允许哪台机器能连接agent端)
chkconfig zabbix-agent on (启动zabbix agent)
service zabbix-agent start
配置SNMP监控方式:
注意:因为我们上面已经采用了agent方式监控采集数据,所以snmp这步不需要安装,忽略即可
yum -y install net-snmp
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old
vi /etc/snmp/snmpd.conf
com2sec mynetwork 192.168.186.130 public_monitor
com2sec mynetwork 127.0.0.1 public
group MyROGroup v2c mynetwork
access MyROGroup "" any noauth prefix all none none
view all included .1 80
chkconfig snmpd on (启动snmpd)
service snmpd restart