经过生产实践,我把zabbix手册整理了一下,希望对一些新人有帮助。

Ubuntu下zabbix 2.2部署
1. 安装基础环境
1) LAMP
sudo apt-get update
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 
2) 基础库软件
 支持库文件
sudo aptitude install make snmp libghc-hsql-mysql-dev  minicom libcurl4-openssl-dev fping gcc libcurl-dev libcurl4-openssl-dev libcurl4-nss-dev libcurl4-gnutls-dev libsnmp-dev  libxml2-dev unixODBC-dev openipmi libopenipmi-dev libssh2-1-dev
 iksemel
cd /tmp
tar zvxf iksemel-1.4.tar.gz
sudo mkdir /usr/local/iksemel -p
sudo chmod 777 iksemel -R
cd iksemel-1.4
./configure --prefix=/usr/local/iksemel
make && make install
 java gateway
jdk安装
./jdk-6u24-linux-x64.bin mv到/usr/local/
Vim /etc/profile
增加:
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export ClASSPATH=.:$JAVA_HOME/jre/lib/rt.jar
变更javac
sudo ln -s /usr/local/jdk/jre/lib/amd64/jli/libjli.so /lib64
sudo ln -s /usr/local/jdk/lib/tools.jar /lib/
sudo ln -s  /usr/local/jdk/jre /jre
sudo ln  -s /usr/local/jdk/bin/javac /bin
sudo ln  -s /usr/local/jdk/bin/jar /bin
3) 离线安装基础环境
在一台可以上网的电脑上执行上述安装,将所有的软件安装,默认软件下载在/var/cache/apt/archives,进行打包
tar -zcvf  ~/var_apt.tar.gz /var/cache/apt
复制到安装服务器上进行解包
tar -zcvf  var_apt.tar.gz–C /
安装archives下的所有软件包
sudo dpkg -i *.deb
4) Fping配置变更
以root运行
sudo  cp /usr/bin/fping /usr/sbin/
sudo cp /usr/bin/fping6 /usr/sbin/
sudo chown root.zabbix /usr/sbin/fping
sudo chmod 710 /usr/sbin/fping
sudo chmod ug+s /usr/sbin/fping
2. 安装zabbix
1) 配置数据库
建立数据库
mysql -u root -p
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
导入表结构
Cd zabbix-2.1.8
mysql -u root -p zabbix < database/mysql/schema.sql
(proxy安装只要schema就可以了)
mysql -u root -p zabbix < database/mysql/p_w_picpaths.sql
mysql -u root -p zabbix < database/mysql/data.sql

2) 配置编译
tar zxf zabbix-2.8.tar.gz
cd zabbix-2.8
sudo ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --enable-java --enable-ipv6 --with-jabber=/usr/local/iksemel/ --with-libcurl --with-ldap  --with-libxml2 --with-unixodbc  --with-ssh2  --with-openipmi
sudo make install
sudo ln -s /usr/local/iksemel/lib/libiksemel.so.3 /lib
3) 服务端口定义
编辑 /etc/services,在后面追加:
zabbix-agent 10050/tcp  #Zabbix Agent
zabbix-agent 10050/udp  #Zabbix Agent
zabbix-trapper 10051/tcp  #Zabbix Trapper
zabbix-trapper 10051/udp  #Zabbix Trapper
4) 修改配置文件
sudo vim /usr/local/zabbix/etc/zabbix_server.conf
修改内容:
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
sudo  vi /usr/local/zabbix/etc/zabbix_agentd.conf
加入如下内容:
Server=127.0.0.1
#ServerPort=11051
Hostname=zabbix
5) 配置启动脚本
复制启动脚本:
sudo cp misc/init.d/debian/zabbix-server  /etc/init.d/zabbix-server
sudo cp misc/init.d/debian/zabbix-agent  /etc/init.d/zabbix-agent
sudo chmod 700 /etc/init.d/zabbix-*
修改服务端启动脚本:
sudo vi /etc/init.d/zabbix-server
DAEMON=/usr/local/sbin/${NAME} 改为DAEMON=/usr/local/zabbix/sbin/${NAME}
修改客户端启动脚本:同上
启动服务并设置开机启动
sudo /etc/init.d/zabbix-server start
sudo /etc/init.d/zabbix-agentd start
sudo update-rc.d zabbix-server defaults 
sudo update-rc.d zabbix-agent defaults
6) 配置Web Interface
* 复制 Web Interface 到 web 目录:
sudo mkdir /var/www/zabbix 
sudo chown -R zabbix.zabbix  /var/www/zabbix
cp -r frontends/php/*  /var/www/zabbix
编辑php.ini文件: 
sudo vi /etc/php5/apache2/php.ini 
max_execution_time = 600 
max_input_time = 600
memory_limit = 256M 
post_max_size =32M 
upload_max_filesize = 16M
;date.timezone = ==>去掉注释在=后添加 Asia/Shanghai
sudo vi /etc/apache2/apache2.conf 
加入下列一行 ServerName 127.0.0.1 
最后重启apache,访问方式http://ip/zabbix,按提示进行初始化配置
7) 安装中文语言包
Vi /var/lib/locales/supported.d/local
加入如下内容
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312
en_US.UTF-8 UTF-8
继续用命令:
sudo dpkg-reconfigure locales
sudo /usr/share/locales/install-language-pack zh_CN
3. 分布式部署
1) NODE配置
一个zabbix 服务器安装完之后是没有配置任何节点分布式的,需要自己去更改zabbix_server.conf 文件;首先,停止zabbix_server,并确保其没有运行;
然后,指定一个唯一的节点ID,这个值可以是0-999;之后,修改数据库为分布式设置,执行命令:zabbix_server –n 
注:该命令在一个server 上只能执行一次,不能重复执行,且执行该命令之前最后先备份下数据库
主节点和从节点执行完上面的命令之后,开始在web界面进行添加:
分别打开主从节点的web管理界面,Administration-àDM-àNodes ,之后你会看到一个本机的节点,下面在主节点的web界面添加从节点的信息,选择Create node ,

Name : 设置要显示的节点名字
ID : 配置文件中所写的node 值
Type: 选择当前节点为的类型,可选择Master、Child。
Ip : 填写要与当前节点管理的IP
之后会在节点配置界面看到如下图的结果:

接下来再在从节点的web 中添加主节点的信息。
之后我们就可以通过一个界面来管理所有的节点客户端了,在web界面的右上角有显示Current node , 可以通过”Select Nodes” 选择要显示的节点,之后对该节点进行管理。
2) Proxy配置

4. 免编译客户端(linux)
Linux、UX上的agent是编译好了的,不用安装
# mkdir /usr/local/zabbix
上传agent包sbin目录下面的zabbix_agentd
mkdir /etc/zabbix
上传zabbix_agentd.conf
Useradd zabbix
修改配置文件
注解Hostname=
修改:Server=Zabbix Server IP
修改完成后,运行/usr/local/zabbix/zabbix_agentd
#ps –avx |grep zabbix
加入开机运行
vi /etc/rc.local
增加
su zabbix "-c /usr/local/zabbix/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf"
5. AIX客户端
上传agent包sbin目录下面的zabbix_agentd到AIX服务器的/sbin目录下
Mkdir /etc/zabbix
上传zabbix_agentd.conf到AIX服务器/etc/zabbix
Useradd zabbix
修改配置文件
注解Hostname= 
修改:Server=Zabbix Server IP
修改:Server=Zabbix Server IP
修改完成后,运行/etc/zabbix/zabbix_agentd
加入进程保护
Vi  /etc/inittab
最后加入一行:
Zabbix:2:respawn:/sbin/zabbix_agentd
重新载入配置
Telinit q
6. 客户端(windows)
Windows客户端程序安装文件和配置文件分别在zabbix-1.8.2.tar.gz压缩包(使用winrar打开)的bin\win32和misc\conf下。
安装
1.copy bin\win32\zabbix_agentd.exe misc\conf\zabbix_agentd.win.conf 到c:\下。
修改zabbix_agentd.win.conf(重命名为zabbix_agentd.conf)
Server=192.168.1.1                             <------zabbix服务器ip地址
Hostname=sale server                         <------客户端机器名
StartAgents=5 
DebugLevel=3 
PidFile=c:\zabbix_agentd.pid                <------保存PidFile的路径
LogFile=c:\zabbix_agentd.log               <------保存LogFile的路径
Timeout=3
2.使用命令安装zabbix_agentd
cd c:\
zabbix_agentd.exe -i                            <------安装                            
zabbix_agentd.exe -s                           <------启动服务
7. 问题解决
1) 图片中文显示筹码
增加监控主机名为中文名时,画出来的图形显示的汉字是乱码,这是由于zabbix用的字体p_w_picpathttftext的问题,可以用以下方法解决.
1.上传本地系统的C:\WINDOWS\Fonts\simhei.ttf文件到zabbixweb目录的zabbix/fonts下
2.vi zabbix/include/defines.inc.php把所有的DejaVuSans替换成simhei
2) Zabbix-server服务无法开机启动
在/etc/rc.local下面加入 su zabbix “-c /etc/init.d/zabbix-server start”
8. Zabbix服务器迁移
1、 原zabbix服务器的mysql数据库的备份
mysqldump -u root -p --default-character-set=UTF8 --opt zabbix > zabbix.sql
2、 新服务器上全新总署zabbix,zabbix服务必须在运行,web interface可在最后配置
3、 备份原zabbix的配置(不需要历史数据)
使用工具SQLyog,备份zabbix的表(acknowledges、alerts、auditlog、auditlog_details、events、history*、trends、trends_uint)
4、 新服务器安装好zabbix后,导入数据库
mysql -u root -p zabbix < zabbix.sql
5、 修改服务端配置文件:
vi /etc/zabbix/zabbix_server.conf
DBUser=root #这里改成你的mysql用户
DBPassword=cnczabbix #这里是密码,明文的。如果没有,注释掉就可以了
修改客户端配置文件:
Vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.101 #改成你的服务器的ip,如果是监控自己,用127.0.0.1
6、 重启服务
完成之后重启一下zabbix_server,zabbix_agentd
9. Zabbix 升级
升级服务端安装程序 

03.# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --enable-java --enable-ipv6 --with-jabber=/usr/local/iksemel/ --with-libcurl --with-ldap
vi /usr/local/zabbix/etc/zabbix_server.conf
服务端配置文件如下: 
01.# cat /usr/local/zabbix/etc/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock

sudo ln -s /usr/local/iksemel/lib/libiksemel.so.3 /lib

2、升级数据库 
01.# cd zabbix-2.0.1/upgrades/dbpatches/2.0/mysql/
02.# mysql -u root -p zabbix < patch.sql
备注: 升级数据库前请备份数据库,然后清空zabbix的历史记录,不然升级时间会很长;
Truncate table history
分布式部署可在一起配置
3、升级PHP程序 
01.# mv /var/www/zabbix /var/www/zabbix_bak
02.# cp -r zabbix-2.0.1/frontends/php /var/www/zabbix
在浏览器输入:http://IP/setup.php
中方支持
Vi /var/lib/locales/supported.d/local
加入如下内容
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312
en_US.UTF-8 UTF-8
继续用命令:
sudo dpkg-reconfigure locales
sudo /usr/share/locales/install-language-pack zh_CN
10. 飞信报警
# uname -a 
Linux Crob 2.6.34-gentoo #1 SMP Mon May 31 15:45:25 CST 2010 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux
# emerge -pv zabbix 
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   R   ] net-analyzer/zabbix-1.8.2   USE="agent curl frontend jabber mysql openipmi proxy server snmp -ipv6 -ldap -oracle -postgres -sqlite3" 0 kB
2、下载飞信机器人 
http://www.it-adv.net/
# wget http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
3、安装测试飞信机器人 
安装
# tar -zxvf fetion20091117-linux.tar.gz -C /usr/local/ 
测试
# /usr/local/fx/fetion --mobile=159009XXXXX --pwd=XXXXX --to=15900959XXXXX --msg-utf8="这是一条测试消息"
检查手机是否收到消息
4、创建sendsms.sh短信发送脚本 
#vim /usr/bin/sendsms.sh 
文件内容为如下:
#!/bin/sh
#send sms by fetion
#$1, $2, $3 mean Recipient, Subject and Message
/usr/local/fx/fetion --mobile=138176XXXXX --pwd=risghdhdn1 --to=$1 --msg-utf8="$2, $3" 
保存后测试脚本:
# chmod +x /usr/bin/sendsms.sh 
# /usr/bin/sendsms.sh 138176XXXXX hello world 
检查手机是否收到消息
5、新增zabbix的Media Type 
登录到zabbix,进入“Administration" >> ”Media types",点击右上角“Create Media Type"。
Description填"Fetion"或其它名称,Type选择"Script",Script填”sendsms.sh"。
点击"Save"保存配置。
# vim /etc/zabbix/zabbix_server.conf 
找到AlertScriptsPath参数并修改成 AlertScriptsPath=/usr/bin/ 
重启zabbix-server服务
6、新增zabbix的Actions配置 
登录到zabbix,进入"Configation" >> "Actions",点击右上角"Create Actions"。
输入”Name",其它都默认
点击右侧“Action Operations"下的"New"按钮,"Operation Type"选择"Send message","Send Message to"选择一个或多个要发送消息的用户组,”Send only to"选择我们之前新增的Fetion。
点击"Save"保存配置。
7、zabbix用户配置 
登录到zabbix, 进入"Adimistration" >> "Users",在之前选定要发送消息的组里的Members栏位里选择一个用户,例如选择Admin用户。
在用户信息修改界面最下方的”Media"处点击"Add"按钮。
Type选择"Fetion",Send to填入收信手机号码,其它参数按需修改,点击Add添加。
点击"Save"保存配置。
至此配置完成,触发一个警报试下手机是否收到讯息。
11. 日志文件监控
zabbbix可以用于支持/不支持翻转的日志文件的集中监控与分析。
当一个日志文件包含特定的字符或者字符模式时,zabbix向用户发送报警信息。
要进行日志文件监控,以下是必须的
zabbix客户端代理(Zabbix agent)
设置日志文件监控的监控项,被监控日志文件的大小取决于大文件支持。
配置确认客户端代理参数
确保在客户端代理文件中:
‘Hostname’这个参数的值跟前端定义的主机名是一样的
‘ServerActive’ 这个参数值中的主机必须指定为主动检测
监控项配置
创建一个日志文件监控的监控项:
要进行日志监控,你必须输入以下内容:
类型(type) 这里选择 Zabbix agent (active)
关键字(Key) 设置为下面两个之一
log[文件名格式:日志文件路径,,,,]
or
logrt[文件名个格式:日志文件路径,,,,]
举个例子:
log[/var/log/syslog]
log[/var/log/syslog,error]
logrt[”/home/user/filelog_.*_[0-9]{1,3}”,”pattern_to_match”,”UTF-8”,100].
最后一个将从文件“filelog_abc_1”或者“filelog__001”中收集信息.
要获得更多细节信息,参考log 和 logrt 全部信息,在 支持的客户端代理监控项关键字
确保zabbix用户对该文件有读权限否则监控项状态将被设置为’unsupported’.
如果正则表达式存在,zabbix客户端代理将用它来过滤整个日志文件。
信息类型(Type of information) 这里选择Log。
检查更新时间间隔,以秒计(Update interval) (in sec) 这个参数定义了zabbix客户度代理多久检查一次日志文件中的变化。将它设置为1秒确保你尽可能快的获得日志文件改变的新记录。
登录时间格式
(Log time format 支持的占位符:
* y: 年 (0001-9999)
* M: 月 (01-12)
* d: 日 (01-31)
* h: 小时 (00-23)
* m: 分钟 (00-59)
* s: 秒 (00-59)
如果留空时间戳不会被解析
举个例子,分析下面一行来自zabbix客户端代理的日志文件:
” 23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2 (revision 11211).”
以六个字符开始,作为PID,后面更这日期,时间和其他部分。
这一行的日志文件时间格式将是 “pppppp:yyyyMMdd:hhmmss”.
注意: “p” 和 ”:” 这两个字符仅仅是占位符,它可以是任何字符除“yMdhms”. 
重要提醒
服务器端和客户端代理在两次监控之间记录被监控文件大小和最新修改时间(logrt支持)。
客户端代理从它之前停止监控的地方开始监控日志。
已经分析的字节数(大小计数器)和最新修改时间(时间计数器)被存储在zabbix数据库中并发送到客户端代理以确保从该点开始读取日志文件。
一旦日志文件大小小于客户端代理的日志文件计数器中的记录,计数器会被清零。客户端代理从头读取日志文件,并且考虑重设计数器。
在给定的目录中,匹配参数filename格式的所有文件,在zabbix 客户端代理试图从日志文件中获得访问时间时都会被分析。 (logrt支持).
如果目录下面有几个文件明都匹配从参数中指定的并且拥有相同的最后修改时间,那么客户端代理将分析按字典排序排在前面的那个。
zabbix客户端代理(Zabbix agent)在每个更新时间间隔(Update interval seconds)分析一次一个日志文件中的新增记录。
客户端代理(Zabbix agent)一秒内发送的日志条目不会超过maxlines这个参数指定的值。这个限制预防了网络和CPU资源过载以及在客户端代理配置文件中参数MaxLinesPerSecond提供的默认值。
特别注意路径分隔符”\” :如果文件格式是 “file\.log”, 那么路径里面不能有目录存在, 因为不能明确定义 ”.” 被转义了或者是文件名的第一个字符。
logrt 的正则表达式只支持文件名,目录的正则匹配还不支持
12. Mysql远程访问
Vi /etc/mysql/my.cnf   127.0.0.1 注
Use mysql;
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '111111' WITH GRANT OPTION;
13. Zabbix java gateway
14. Snmp-trap监控
1、 工作原理
(SNMP Trap) -> snmptrapd -> snmptrap.sh -> zabbix_sender -> (Zabbix)
2、 zabbix SNMP trap接收器和脚本
zabbix_trap_receiver.pl、snmptrap.sh
3、 修改配置文件
cp  misc/snmptrap/snmptrap.sh /usr/local/zabbix/sbin/snmptrap.sh
cp  misc/zabbix_trap_receiver.pl /usr/local/zabbix/etc/zabbix_trap_receiver.pl
Vim  /usr/local/zabbix/sbin/snmptrap.sh

ZABBIX_SERVER="localhost";
ZABBIX_PORT="10051";
ZABBIX_SENDER="/usr/local/zabbix/sbin/zabbix_sender"; (zabbix_sender的路径)
KEY="cmbchina";(snmp trap Key)
HOST="snmptraps";
vim /etc/snmp/snmptrapd.conf
disableAuthorization yes
perl NetSNMP::TrapReceiver::register("trapOID", \&myfunc)
traphandle default /bin/bash /usr/local/zabbix/sbin/snmptrap.sh
perl do "/usr/local/zabbix/etc/zabbix_trap_receiver.pl
启动服务
snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lf /tmp/net-snmptrap.log
4、 Configuring Zabbix server/proxy
Vim /usr/local/zabbix/etc/zabbix_server.conf
StartSNMPTrapper=1
SNMPTrapperFile=[TRAP FILE]
重启服务
5、 zabbix item配置
新建Host->SNMP接口(目标IP、端口162)->snmp trap->key(snmptrap[IP])
15. Jmx tomcat监控
Linux 系统
修改catalina.sh,增加如下


 CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10031 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
保存后,启动startup.sh
Windows 系统
配置参考: 
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false"; 
windows环境:修改catalina.bat 在:doRun和:doStart后一行添加上述配置
运行startup.bat
16. WebSphere监控
服务器——》应用服务器——》server1——》java和进程管理——》进程定义——》java虚拟机,通用JVM参数里面填入:
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1099