一、监控系统现状

此文章首发于http://www.beyond362.com/2014/11/02/zabbix系列之入门介绍(一)/

在开源监控软件中,现在使用最多的大概就是cacti、nagios和zabbix了。作为一个后起之秀,zabbix以其灵活的扩展性和丰富的功能迅速俘获了一大批运维人员的青睐,尤其以功能强大的报警机制更让人爱不释手。本文也将以zabbix作为监控系统来进行介绍。

compare

由百度、Google结果来看,cacti作为老牌开源软件以其出现时间早、配置简单、画面直观、汉化成功等的原因依然受到广大用户的青睐,但zabbix已经与nagios旗鼓相当了,相信不久的将来,zabbix必将成为运维人员首选的监控利器。

二、监控系统原理

在一个监控系统中,构成要素为监控服务器端程序、数据存储、被采集节点等模块,其告警分析和自动故障处理功能由服务器端执行。简单点说,就是采集数据–>分析处理数据–>判断是否异常–>是否属于告警条件–>发送邮件、短信进行报警。

而采集方式来说,有采集客户端(Agent)和协议(SNMP、IPMI、JMX、Telnet、SSH等)两种方式,无论使用哪种方式,都会将采集到的数据存放到数据库,然后对其进行分析整理。

从采集的工作模式来讲,又可以分为两种:主动监控和被动监控,后边会说到这两种监控方式的区别

三、Zabbix的安装与使用

当我们需要了解一个产品的时候,最好的方式就是官方介绍以及官方文档。zabbix的官方网站http://www.zabbix.com,官方文档地址http://www.zabbix.com/documentation.php,

Zabbix为PHP语言开发,所以环境平台搭建比较容易,支持监控N多操作系统,在开源软件的选择上也是多样的Linux、Apache/Nginx、MySQL/Oracle/Postgresql、PHP等。

四、编译安装zabbix

环境:

系统:CentOS release 6.4 (Final)
IP地址:192.168.101.216

准备工作:

安装LAMP环境,也就是Apache、MySQL和PHP环境,在安装之前,为了避免麻烦,首先我们需要将iptables和selinux进行关闭。两种方式如下

第一种:
关闭iptables
service iptables stop
关闭selinux
setenforce 0
不需要重启服务器,即可生效,重启服务器后失效!
第二种:
关闭防火墙
chkconfig iptables off
关闭selinux
vi /etc/selinux/config
SELINUX=enforcing  改为   SELINUX=disabled
需要重启服务器,永久禁用
由于我的主机是最小化安装的,所以首先需要安装两个开发包组“Development tools”和“Server Platform Development”,以便后边手动编译zabbix。yum -y groupinstall “Development tools” “Server Platform Development”
然后安装Apache、MySQL和PHP
yum -y install httpd mysql mysql-server mysql-devel php php-mysql php-xml php-mbstring php-gd php-bcmath 
配置MySQL数据库

打开/etc/my.cnf文件,添加以下两行信息

innodb_file_per_table = 1  #设置字符集为utf8
character-set-server=utf8  #让InnoDB的每个表文件单独存放

设置字符集为utf8很好理解,让InnoDB的每个表文件单独存放在说到MySQL数据库的存储引擎的时候会说到为什么这么做。
然后启动MySQL数据库

service mysqld start

然后启动Apache,测试lamp环境是否正常

service httpd start

添加测试页面,保存到/var/www/html/index.php

 

打开访问地址:http://192.168.101.216/index.php,出现如下页面表示配置正确,lamp环境搭建成功。 phpinfo 安装zabbix 下载zabbix源码安装

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

[Downlink href=’http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.1/zabbix-2.4.1.tar.gz’]zabbix2.4.1[/Downlink]点击左侧链接即可下载
编译安装zabbix

为了以后的方便,建议安装支持snmp协议
yum -y install net-snmp net-snmp-devel libcurl
tar xf zabbix-2.4.1.tar.gz
cd zabbix-2.4.1
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-net-snmp --with-mysql --with-libcurl
--prefix=/usr/local/zabbix 指定zabbix安装路径
--enable-server  支持zabbix-server端
--enable-agent   支持zabbix-agent端
--with-net-snmp  支持snmp协议
--with-mysql     支持mysql数据库
--with-libcurl   支持curl,用于WEB监控
出现下方信息,表示编译通过,接下来即可进行安装
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
make && make install 

zabbix安装已经完成,接下来开始配置zabbix
编辑服务器端口,添加以下两个端口

vi /etc/services
#Zabbix Trapper && Zabbix Agent
zabbix-agent    10050/tcp               #Zabbix Agent   
zabbix-agent    10050/udp               #Zabbix Agent
zabbix-trapper  10051/tcp               #Zabbix Trapper
zabbix-trapper  10051/udp               #Zabbix Trapper

安装启动脚本

cp /root/zabbix-2.4.1/misc/init.d/fedora/core/* /etc/init.d -p

编辑启动脚本,修改以下项

vi /etc/init.d/zabbix_server
BASEDIR=/usr/local   ==>  BASEDIR=/usr/local/zabbix
vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local   ==>  BASEDIR=/usr/local/zabbix

添加zabbix_server和zabbix_agentd为服务

chkconfig --add zabbix_server
chkconfig --add zabbix_agentd

编辑/usr/local/zabbix/etc/zabbix_server.conf文件

cat zabbix_server.conf | grep -v "^#" | grep -v "^$"
LogFile=/tmp/zabbix_server.log     #zabbix_server 日志文件
DBHost=localhost                   #数据库地址
DBName=zabbix                      #zabbix数据库
DBUser=zabbix                      #zabbix数据库账号
DBPassword=123.com#                #zabbix数据库密码

复制Web应用到Web目录下

cp -R ~/zabbix-2.4.1/frontends/php  /var/www/html/zabbix

创建数据库,导入zabbix数据库

[root@localhost ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
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> CREATE DATABASE zabbix1;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON zabbix1.* TO zabbix@localhost IDENTIFIED BY '123.com#';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> source /root/zabbix-2.4.1/database/mysql/schema.sql;
mysql> source /root/zabbix-2.4.1/database/mysql/data.sql;
mysql> source /root/zabbix-2.4.1/database/mysql/p_w_picpaths.sql;

添加zabbix用户,启动zabbix_server和zabbix_agentd服务

groupadd zabbix
useradd -g zabbix zabbix

启动zabbix_server和zabbix_agentd

[root@localhost ~]# service zabbix_server start
Starting zabbix_server:                                    [  OK  ]
[root@localhost ~]# service zabbix_agentd start
Starting zabbix_agentd:                                    [  OK  ]
[root@localhost ~]# ss -tunl
Netid  State      Recv-Q Send-Q               Local Address:Port                 Peer Address:Port 
udp    UNCONN     0      0                                *:161                             *:*     
tcp    LISTEN     0      128                             :::80                             :::*     
tcp    LISTEN     0      128                             :::22                             :::*     
tcp    LISTEN     0      128                              *:22                              *:*     
tcp    LISTEN     0      100                            ::1:25                             :::*     
tcp    LISTEN     0      100                      127.0.0.1:25                              *:*     
tcp    LISTEN     0      128                              *:10050                           *:*     
tcp    LISTEN     0      128                              *:10051                           *:*     
tcp    LISTEN     0      128                      127.0.0.1:199                             *:*     
tcp    LISTEN     0      50                               *:3306                            *:*     
[root@localhost ~]# 

10050和10051端口已经启动,证明服务启动成功

五、页面安装

访问http://192.168.101.216/zabbix进行zabbix的最后安装步骤
setup1
点击下一步,进行安装
setup2-1
setup2-2
红色部分是报错部分,我用①标注出来的问题可以通过修改/etc/php.ini文件搞定,搜索option后边的关键字即可找到修改位置;用②标注出来的问题可以通过安装相关php包解决,例如 PHP bcmath 显示off,那么就只需要yum -y install php-bcmath即可,其他同理
修改报错信息

 cat /etc/php.ini |grep -E "max_input_time|max_execution_time"
; max_input_time
max_execution_time = 300     
max_input_time = 300

然后需要重新启动Apache来重新加载php.ini文件,重启之后,点击Retry按钮重试即可。

service httpd restart

setup3
这里填写数据库的相关信息,数据库主机、数据库名称、数据库用户、数据库密码。然后一定要先点击【Test connection】进行测试,不然无法点击【Next】
setup4
这一步,只需要填写zabbix的名称,可根据自己意愿随意填写
setup5
继续下一步
setup6
这一步又报错了,报错信息是①,给出的解决方法是②和③,其实Linux下很多报错信息我们都可以很直观的得到的。
报错信息是由于权限不够无法在/var/www/html/zabbix/conf/目录下创建文件zabbix.conf.php文件
解决方法一:修改/var/www/html/zabbix/conf/目录的权限 chmod 777 /var/www/html/zabbix/conf
解决方法二:点击【Download configuration file】下载zabbix.conf.php文件,利用scp等工具传到/var/www/html/zabbix/conf目录下。
上面哪种解决办法都可以,然后点击【Retry】测试
setup7
安装完成
默认用户名为Admin,密码为zabbix
login
到这里,zabbix的安装就结束了,接下来就是zabbix的使用了。总的来说还是挺简单的,zabbix2.4默认是不支持中文的,可以通过修改后台配置文件/var/www/html/zabbix/include/locales.inc.php,修改display的false为true,然后在首页【Profile】的【language】选择中文即可。

cat /var/www/html/zabbix/include/locales.inc.php | grep "zh_CN"
'zh_CN' => array('name' => _('Chinese (zh_CN)'),	'display' => false),