what is Zabbix?
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。支持多种采集方式和采集客户端,有专门的Agent(代理)(zabbix-agent支持linux、Unix、windows、Aix、Bsd和Solaris的监控),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统不可相比的。
监控系统的基本原理
一个监控系统往往需要对物理硬件和应用软件的性能、参数进行数据汇集,实现集中管理和统一分析。一个监控系统构成分为监控服务器端程序、数据存储、被采集节点等模块,需要对采集的数据进行分析和处理,判断是否有异常情况,是否满足报警条件。这里涉及到告警条件设置问题?通常是根据实际的经验值、业务需求来设置告警阈值。达到告警条件时,则发送告警信息给管理人员,然而,有些故障是我们希望通过自动处理的,等到程序无法判断的时候,在去通知管理人员。
监控系统的采集可以分为两种:主动监控和被动监控。一个理想的监控系统,其采集端支持的采集方式应该越多,其扩展能力越强,从而适应不同的场景需求。
两种数据采集模式介绍
在大多数监控系统中都支持这两种模式。被动模式对服务器的开销比较大,适合小规模的监控环境;主动模式对服务器的开销较小,适合大规模的监控环境。采集数据得协议方式可以分为两种:专用客户端采集和共用协议采集(其中协议包括snmp、ssh、telnet等)
常见的监控系统性能采集指标
监控项目 | 详细内容 |
主机监控 | cpu、内存、磁盘剩余空间/利用率 I/O、SWAP使用率、系统UP时间、进程数、负载 |
网卡监控 | ping的往返时间及包成功率、网卡流量,包括流入/流出量和错误的数据包数 |
文件监控 | 监控文件大小,Hash值,匹配查询、字符串存在与否 |
URL监控 | 检测指定URL访问过程中返回码、下载时间及文件大小,支持内容匹配 |
应用程序 | 端口和内存使用率、CPU使用率、服务状态、请求数、并发连接数、消息队列的字节数据、Client事物处理数、service状态等 |
数据库 | 检测数据库中指定表空间、数据库的游标数、Session数、事务数、死锁数、缓冲池命中率、库Cache命中率、当前连接数、进程的内存利用率等 |
日志 | 错误日志匹配、特定字符串匹配 |
硬件 | 温度、风扇转速、电压等 |
Zabbix安装
zabbix运行环境为LNMP环境或LAMP环境,其中数据库可以是mysql,可以是oracle、postgresql等。zabbix大体依赖两个条件:1)硬件条件 2)软件条件。其中硬件条件包括1.硬件配置;官网有推荐最低硬件配置要求,如有需要可以自行查找资料了解。2.磁盘容量大小;zabbix-server的数据库大小取决于NVPS(Number of processed values persecond),NVPS从总体上反映了处理速度,与监控项的数目、监控类型、取值间隔、History的保留时间和Trends的保留时间有直接关系。这里可以自行参照《zabbix企业级分布式监控系统》p22有详细介绍。其中软件条件包括:1.zabbix支持的操作系统平台如Linux、Unix、windows等,2.数据库和web环境等相关版本要求。3.zabbix监控中涉及的协议所用到的软件,如通过IPMI协议可以对硬件进行监控,这就需要安装OpenIPMI工具。4.时间同步。不管是监控还是做集群对时间精准度要求都很高。在监控中时间对数据的计算是有影响等。因此需要最好时间同步,如搭建时间服务器,或同步外网的时间服务器,做好时间同步。
一、yum安装LAMP
1.1安装主程序
# yum -y install httpd php mysql mysql-server php-mysql
注:目前mysql高版本已经更名为mariadb,所以安装命令变为yum install mariadb
1.2 安装apache扩展
# yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
1.3 安装php扩展
# yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath
1.4 安装mysql扩展
# yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
1.5 apache设置首页
# vim httpd.conf 增加DirectoryIndex index.php #php目录索引
1.6 开机启动
# service httpd start # chkconfig httpd on # service mysqld start # chkconfig mysqld on
1.7 设置mysql数据库root帐号密码。
# mysqladmin -u root password 'fanshine'
二、Zabbix 安装
(1)zabbix-server服务器端安装
2.1 yum安装zabbix需要的其他组件
# yum -y install net-snmp-devel curl-devel
2.2 添加zabbix用户
# groupadd zabbix 添加zabbix组 # useradd zabbix -g zabbix 新建zabbix用户并将其加入到zabbix组
2.3 下载并解压软件
#wget http://prdownloads.sourceforge.net/zabbix/zabbix-2.0.21.tar.gz # tar zxvf zabbix-2.0.21.tar.gz -C /usr/src # cd /usr/src/zabbix-2.0.21
2.4 为zabbix创建数据库并添加用户
# mysql -u root -p fanshine # mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; #新建一个数据库叫zabbix # mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123'; #给zabbix这个数据库授权,只允许zabbix这个用户通过本地登录,zabbix用户的密码为zabbix123mysql> flush privileges;
2.5 将zabbix源码包中的数据导入到新建的zabbix数据库
注:导入也要严格按照顺序来。
# shell>mysql -u zabbix -p 'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/schema.sql
#这个是zabbix的数据库表结构,要先导入。
# shell>mysql -u zabbix -p 'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/images.sql
# shell>mysql -u zabbix -p'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/data.sql
2.6 编译安装
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2
同时安装server和agent,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2
如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl
如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql --with-ssh2
如果仅安装agent,可使用类似如下配置命令:
./configure --enable-agent
注意:在编译时报错信息及解决如下:
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
而后编译安装zabbix即可:
# make && make install
2.7 为zabbix server添加端口
[root@Centos ~] vim /etc/services [zabbix默认已设置好] 添加如下信息 zabbix-agent 10050/tcp # Zabbix Agent zabbix-agent 10050/udp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper zabbix-trapper 10051/udp # Zabbix Trapper
2.8 配置文件目录软连接
# ls /usr/local/zabbix/etc zabbix_agent.conf zabbix_agentd.conf zabbix_proxy.conf zabbix_server.conf zabbix_agent.conf.d zabbix_agentd.conf.d zabbix_proxy.conf.d zabbix_server.conf.d # ln -s /usr/local/zabbix/etc /etc/zabbix
2.9 更改配置文件中数据库相关的用户名密码
# vim /etc/zabbix/zabbix_server.conf
修改以下三项:
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
注:DBPassword 默认是被注释掉的
# vim /etc/zabbix/zabbix_agentd.conf
Hostname=zabbix server
ServerActive=192.168.6.242:10051
2.10 拷贝相应的web程序到相关WEB服务目录下
# cp -r /usr/src/zabbix-2.0.21/frontends/php/ /var/www/html/zabbix/ # chown -R zabbix.zabbix /var/www/html/zabbix
2.11拷贝zabbix服务端和客户端启动脚本到/etc/init.d目录下.
# cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_server /etc/init.d # cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d
2.11 修改启动脚本
# vim /etc/init.d/zabbix_server BASEDIR=/usr/local/zabbix/ 修改zabbix_server实际位置
# service zabbix_server start Starting Zabbix Server: [ OK ]
# vim /etc/init.d/zabbix_agentd BASEDIR=/usr/local/zabbix/
# service zabbix_agentd start Starting Zabbix Agent: [ OK ]
[root@Centos zabbix-2.0.21]#chkconfig zabbix_server on [root@Centos zabbix-2.0.21]#chkconfig zabbix_agentd on
注:也可以直接启动
/usr/local/zabbix/sbin/zabbix_server #启动server服务 /usr/local/zabbix/sbin/zabbix_agentd #启动agent服务
查看zabbix服务是否启动 [root@Centos zabbix-2.0.21]# netstat -tnlp | grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2120/zabbix_agentd tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2044/zabbix_server tcp 0 0 :::10050 :::* LISTEN 2120/zabbix_agentd tcp 0 0 :::10051 :::* LISTEN 2044/zabbix_server
2.12 修改PHP配置文件php.ini内容
# vim /etc/php.ini date.timezone = Asia/Shanghai post_max_size = 32M max_execution_time = 300 max_input_time = 300 memory_limit = 128M mbstring.func_overload = 2
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
三、浏览器安装
(1)浏览器打开刚安装的zabbix http://192.168.137.100/zabbix/php
点击next,进入下一步:
点击next,进入下一步:
点击next,进入下一步:
点击next,进入下一步:
注:如果出现fail提示,下载zabbix.conf.php配置文件并copy到/var/www/html/zabbix/php/conf下.
点击Finish,进入登录:默认账号和密码为:Admin zabbix
之后登录到zabbix首页:
注意:登录后发现一个报错:zabbbix server is not running:the information displayed may not be current
解决办法:
关闭selinux,编辑selinux文件设置:
SELINUX=disabled
或临时通过命令关闭
setenforce 0
(2)zabbix-agent客户端安装
2.11 下载并解压软件
# wget http://prdownloads.sourceforge.net/zabbix/zabbix-2.0.21.tar.gz # tar zxvf zabbix-2.0.21.tar.gz -C /usr/src # cd /usr/src/zabbix-2.0.21
2.12 编译安装
编译安装只需要指定agent就可以:
# cd zabbix-2.0.21 # ./configure --enable-agent # make && make install
2.13 复制agent启动脚本
# cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
2.14 编辑配置文件
# vi /usr/local/etc/zabbix_agentd.conf 修改: Server=127.0.0.1,172.17.0.2 Hostname=zabbix-server ServerActive=172.17.0.2:10051
参数说明:
Server:被动模式,允许哪台服务器连接agent。
ServerActive:主动模式,向哪台服务器传送数据。
一个agent可以同时向多个服务器发送数据,多个ip用逗号分隔。Server=127.0.0.1,172.17.0.2,表示server的Ip为127.0.0.1和172.17.0.2,这两台zabbix-server服务器可获取agent端监控数据。
转载于:https://blog.51cto.com/bovin/1945352