zabbix2.2.3 Centos6.5安装

1、zabbix简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
等等

Zabbix主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
官方也提供了安装资料:http://www.zabbix.com/wiki/howto/monitor

Zabbix的架构

2、zabbix 安装

系统:CentOS release 6.5
内核:Linux agent 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
zabbix版本:zabbix-2.2.3

zabbix是有php语言开发,需要lnmp环境或者lamp

1.yum安装LAMP环境

yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstringphp-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel ja va-devel

2、配置LAMP使用环境, 编辑/etc/php.ini文件,修改以下内容

date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 32M
max_input_time = 300
memory_limit = 128M
mbstring.func_overload = 2

启动httpd、mysqld服务

# chkconfig mysqld on
# chkconfig httpd on 
# service mysqld start
# service httpd start

3.下载并安装zabbix服务端

wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz

创建zabbix用户

# groupadd zabbix
# useradd zabbix -g zabbix

安装zabbix

# tar xf zabbix-2.2.3.tar.gz
# cd zabbix-2.2.3
# ./configure --prefix=/usr --sysconfdir=/etc/zabbix --enable-server --enable-proxy --enable-agent --enable-ipv6 --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi --with-unixodbc --with-ldap --with-ssh2 --enable-java

报错如下:
checking for SSH2 support... no
configure: error: SSH2 library not found

解决办法:
yum -y install libssh2-devel

上面一个报错解决了,继续./configure,又出现如下错误:
checking for LDAP support... no
configure: error: Invalid LDAP directory - unable to find ldap.h

解决办法:
yum -y install openldap openldap-devel

make

make install

4.添加zabbix 到系统服务文件

# vi /etc/services(在rhel/centos系列中,下面的服务参数可以不用添加,默认已经有了)
zabbix-agent    10050/tcp               # Zabbix Agent
zabbix-agent    10050/udp               # Zabbix Agent
zabbix-trapper  10051/tcp               # Zabbix Trapper
zabbix-trapper  10051/udp               # Zabbix Trapper

5.导入zabbix数据库

[root@zabbix zabbix-2.2.3]# mysqladmin -uroot password 'abc123,' 
[root@zabbix zabbix-2.2.3]# mysqladmin -uroot password 'abc123,'   
[root@zabbix zabbix-2.2.3]# mysql -uroot -p
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;

测试下连接是否正常

[root@zabbix zabbix-2.2.3]# mysql -uzabbix -pzabbix zabbix
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

导入数据库文件

[root@zabbix zabbix-2.2.3]# mysql -uzabbix -pzabbix zabbix < ./database/mysql/schema.sql
[root@zabbix zabbix-2.2.3]# mysql -uzabbix -pzabbix zabbix < ./database/mysql/images.sql
[root@zabbix zabbix-2.2.3]# mysql -uzabbix -pzabbix zabbix < ./database/mysql/data.sql

6.创建zabbix日志目录

# mkdir /var/log/zabbix
# chown zabbix.zabbix /var/log/zabbix

7.设置zabbix启动脚本

[root@zabbix zabbix-2.2.3]# cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
[root@zabbix zabbix-2.2.3]# chmod 755 /etc/init.d/zabbix_*
[root@zabbix zabbix-2.2.3]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/#" /etc/init.d/zabbix_server
[root@zabbix zabbix-2.2.3]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/#" /etc/init.d/zabbix_agentd

8.编辑/etc/zabbix/zabbix_server.conf文件,修改以下参数

LogFile=/var/log/zabbix/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
StartPollers=160 (测试环境默认值即可)
StartTrappers=20 (测试环境默认值即可)
StartPingers=100 (测试环境默认值即可)
StartDiscoverers=120 (测试环境默认值即可)
MaxHousekeeperDelete=5000 (测试环境默认值即可)
CacheSize=1024M (测试环境默认值即可)
StartDBSyncers=16 (测试环境默认值即可)
HistoryCacheSize=1024M (测试环境默认值即可)
TrendCacheSize=1024M (测试环境默认值即可)
HistoryTextCacheSize=512M (测试环境默认值即可)
AlertScriptsPath=/etc/zabbix/alertscripts
LogSlowQueries=1000

修改完成后可通过以下命令进行查看:
grep -Ev "(#|^$)" /etc/zabbix/zabbix_server.conf

9.编辑/etc/zabbix/zabbix_agentd.conf文件,修改以下参数

LogFile=/var/log/zabbix/zabbix_agentd.log
EnableRemoteCommands=0
Server=127.0.0.1,172.16.10.72  #zabbix服务端IP
StartAgents=8
ServerActive=172.16.10.72:10051
Hostname=Zabbix server
Timeout=30
Include=/etc/zabbix/zabbix_agentd.conf.d/
UnsafeUserParameters=1

修改完成后可通过以下命令进行查看:
grep -Ev "(#|^$)" /etc/zabbix/zabbix_agentd.conf

10.拷贝zabbix网页文件到apache目录

[root@zabbix zabbix-2.2.3]# cp -r ./frontends/php/ /var/www/html/zabbix
[root@zabbix zabbix-2.2.3]# chown -R apache.apache /var/www/html/zabbix

11.开启zabbix服务

root@zabbix zabbix-2.2.3]# chkconfig zabbix_server on
[root@zabbix zabbix-2.2.3]# chkconfig zabbix_agentd on
[root@zabbix zabbix-2.2.3]# service zabbix_server start
Starting zabbix_server:                                    [  OK  ]
[root@zabbix zabbix-2.2.3]# service zabbix_agentd start
Starting zabbix_agentd:                                    [  OK  ]

#查看zabbix服务是否启动
[root@zabbix zabbix-2.2.3]# netstat -antpl|grep zabbix
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      22542/zabbix_agentd 
tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      22473/zabbix_server 
tcp        0      0 :::10050                    :::*                        LISTEN      22542/zabbix_agentd 
tcp        0      0 :::10051                    :::*                        LISTEN      22473/zabbix_server

12.通过web页面配置zabbix

service iptables stop #暂时关闭防火墙

打开浏览器,访问:http://172.16.100.16/zabbix,不出意外,会看到如下页面

Paste_Image.png

点击next,进入下一步

Paste_Image.png

解决方法:

yum install php-mbstring
service httpd restart
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

到此web页面配置完毕,已经到了登陆界面,zabbix的默认登陆账号是admin,密码是zabbix

Paste_Image.png
Paste_Image.png

登录后发现一个报错:zabbbix server is not running:the information displayed may not be current

经过排查,发现是selinux惹的祸

解决办法:关闭selinux

setenforce 0
查看10051端口是否开启,如未启动

/etc/init.d/zabbix_server start

开启后10051端口又自动关闭,查看日志

cat /var/log/zabbix/zabbix_server.log 

报错连接数据库失败


Paste_Image.png

是由于连接到数据库的数量比较多,mysql 默认的连接数是100,一般设置到500~1000比较合适,我们可以调大这个值:修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=1000
然后重启mysql和zabbix_server zabbix_agent

Paste_Image.png

刷新页面

Paste_Image.png

添加中文支持,默认是没有中文选项

Paste_Image.png
Paste_Image.png

原来zabbix默认把对中文的支持给关闭了,我们需要修改zabbix的php源文件. 修改站点根目录下include/locales.inc.php文件.

Paste_Image.png
Paste_Image.png

更改为

Paste_Image.png

重启zabbix服务

Paste_Image.png

监控图形出现乱码

Paste_Image.png

1.从windows下控制面板->字体->选择一种中文字库例如“楷体” 【复制-粘贴出来,然后拷贝到zabbix服务器上】

将这个文件拷贝到zabbix的数据目录的fonts目录下

之前部署的zabbix数据目录是/var/www/html/zabbix/fonts
[root@Zabbix-server fonts]# pwd /var/www/html/zabbix/fonts
[root@Zabbix-server fonts]#ls

将上面从windows的“控制面板”----“字体”里下载下来的simkai.ttf文件拷贝到这里。并且将之前的字体文件DejaVuSans.ttf移动到别处
[root@Zabbix-server fonts]# ls simkai.ttf

然后,接着修改代码include/defines.inc.php文件中的字体配置,将里面关于字体设置从DejaVuSans替换成simkai

Paste_Image.png

———————————————分割线—————————————————
本文参考:http://www.cnblogs.com/Eivll0m/p/3807604.html
常见报错 :https://www.iyunv.com/thread-25966-1-1.html
在linux系统中,几乎所有运行的服务都会产生相对就的日志(log),所运行的程序在出错时都会有错误提示,即使没有任何提示也可以通过“echo $”来查看运行是否成功。使用zabbix已经有一段时间了,整理一下遇到过的问题和解决的方法以。

zabbix的日志存放在/tmp下,服务器端对应的日志是zabbix_server.log,被监控端对应的日志是zabbix_agentd.log.

一,zabbix服务是否已经开启成功

查看系统是否已经有zabbix进程正在运行 # ps aux |grep zabbix 查看系统是否已监听zabbix server和zabbix agent所使用的10050、10051端口 # netstat -nplut |grep zabbix 如果没有,则开启:#/etc/init.d/zabbix_server_ctl start #/etc/init.d/zabbix_agent_ctl start特别需要注意的是:每次修改完配置文件之后都需要重新启动对应的zabbix server或者zabbix agentd。

部分运行脚本在做restart时无法关闭zabbix导致服务无法重新启动,可用kill的命令把zabbix相关的进程杀掉再启动。

二、zabbix_server.log出现的提示

2009:20121023:193549.354 Sending list of active checks to [192.168.30.3] failed: host [CentOS-3] not found

这是因为zabbix_agentd.conf配置文件中的Hostname与web中的主机名对应。

三、网页中了出现的错误

(1)

Get value from agent failed: cannot connect to [[192.168.30.2]:10050]: [111] Connection refused

192.168.30.2是我的zabbix server服务器,本身也有监控自己本身的agent功能。出现这种错误是因为忘记在zabbix服务器开户zabbix_agentd。在Last 20 issues中也有提示

Last 20 issues

Host
Issue
Last change
Age
Ack
Actions

Zabbix server

Server Zabbix server is unreachable
23 Oct 2012 18:42:14

6m 57s
No

解决方法:开启zabbix_agentd即可。

(2)

Get value from agent failed: cannot connect to [[192.168.30.3]:10050]: [113] No route to host

看提示“No route to host”,与网络连接有关。排除的方法如下:

a)查看192.168.30.3这台机器是否已开机

b)在zabbix server端向这台机器ping,看网络是否通

c)用telnet 登录10050和10051端口,看该主机是否允许这两个端口通讯

d)查看iptables防火墙规则是否拦截10050、10051端口

(3)

网页中不停地有以下红色提示:

zabbix server is not running: the information displayed may not be current.

zabbix 遇到上面的问题

可以从以下几个方面入手检查,当然先查日志,如果不想查日志,先检查下面几项是否正常

  1. selinux是否关闭。

  2. zabbix web目录下面 $ZBX_SERVER 是否为ip,如果是localhost,ping下localhost是否能解析。

3.查看php的fsockopen模块是否启用。

zabbix server is running | No.

查看/tmp/zabbix_server.log和/tmp/zabbix_agent.log无任何异常。看zabbix_server和zabbix_agent进程、端口都正常……几翻google以后并尝试,终于得到了解决!

http://www.zabbix.com/forum/showthread.php?t=23878&page=3 这里面有说到zabbix受selinux的影响而已有这种错误提示。

http://www.zabbix.com/forum/showthread.php?t=25321 这里面说到了修改hostname为IP的做法。

我具体的做法是:

①查看selinux产生的log,确实有错误提示:

tail -f /var/log/audit/audit.log

type=AVC msg=audit(1351863204.990:32): avc: denied { name_connect } for pid=1575 comm="httpd" dest=10051 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket

type=SYSCALL msg=audit(1351863204.990:32): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bfd494b0 a2=b76b0ad8 a3=d items=0 ppid=1434 pid=1575 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)

②然后让selinux允许它通过

setsebool -P httpd_can_network_connect on③编辑zabbix.conf.php文件,把$ZBX_SERVER的值改为本机的IP地址

$ZBX_SERVER = '192.168.30.2'; #######用IP代替hostname

④OK

四、

tail /tmp/zabbix_server.log 显示

50952:20141012:195519.884 One child process died (PID:51233,exitcode/signal:255). Exiting ...

表示一个子进程死掉,是一个zabbix内存溢出错误 (此错误同样会造成上面红色的闪烁)

更正:

vim /etc/zabbix/zabbix_server.conf

CacheSize=512M

修改此值后OK

五、 tail /tmp/zabbix_server.log 显示

2552:20141012:211700.552 [Z3001] connection to database 'zabbix' failed: [1040] Too many connections

是由于连接到数据库的数量比较多,mysql 默认的连接数是100,一般设置到500~1000比较合适,我们可以调大这个值:修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=1000

然后重启mysql和zabbix_server zabbix_agent

用户自定义脚本监控:

a)

有时候用户自定义的脚本运行的时间可能比较长,如超过10秒的20秒的。这时在执行zabbix_agentd -p 或者zabbix_agentd -t时就可能出现“Alarm clock”,从而得不到想要的结果。这是因为zabbix agentd配置文件中定义Timeout时间默认为3秒,脚本运行取结果的时间超过了3秒就会出现这种情况。

解决方法:编辑配置文件/etc/zabbix/zabbix_agentd.conf,找到"Timeout"把它定义为30秒或小于30秒。

b)

对a中的情况还需要注意对zabbix服务器端的配置,如我自己定义的脚本

UserParameter=ping.avgtime,ping 192.168.30.2 -c 10 -w 29 |grep 'avg' |awk -F "/" '{print $5}' 对192.168.30.2 ping 10取平均值,-w参数是对ping限定时间为29秒这个脚本运行的大概时间为10秒左右,此时在agent端虽然可以用zabbix_agentd -t得到结果,但是在zabbix服务器端日志会不断的出现

1762:20121023:191941.360 resuming Zabbix agent checks on host [Zabbix server]: connection restored

1761:20121023:191952.149 Zabbix agent item [ping.avgtime] on host [CentOS-3] failed: first network error, wait for 15 seconds

1762:20121023:192010.610 Zabbix agent item [ping.avgtime] on host [CentOS-3] failed: another network error, wait for 15 seconds

1762:20121023:192028.628 Zabbix agent item [ping.avgtime] on host [CentOS-3] failed: another network error, wait for 15 seconds

这样的错误日志,并且在web端也没有画出图来。

解决方法:

①编辑zabbix服务器端的配置文件/etc/zabbix/zabbix_server.conf找到"Timeout"把它定义为30秒或小于30秒。

②如果还有类似提示则应该是zabbix服务器的内存设置得太小了,加大服务器内存便可。

推荐阅读更多精彩内容