zabbix
1、zabbix的定义
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
2、zabbix的主要特点:
(1)、安装与配置简单,学习成本低
(2)、支持多语言(包括中文)
(3)、免费开源
(4)、自动发现服务器与网络设备
(5)、分布式监视以及WEB集中管理功能
(6)、可以无agent监视
(7)、用户安全认证和柔软的授权方式
(8)、通过WEB界面设置或查看监视结果
(9)、email等通知功能等等
3、Zabbix的主要功能:
(1)、CPU负荷
(2)、内存使用
(3)、磁盘使用
(4)、网络状况
(5)、端口监视
(6)、日志监视
(7)、服务监控
4、zabbix工作的原理
Zabbix支持四种工作方式分别是Snmp 、 zabbix(server/agent)、JMX、IPMI(基于硬件提供的专用接口)。
Snmp 协议介绍
Agent:代理在UDP的161端口接收NMS的读写请求消息,agent:161,被监控端
Manger:管理站在UDP的162端口接收代理的事件通告消息 ,NMS:162,监控端
工作原理图如图1所示
图1
5、zabbix的协议
Zabbix 是基于zabbix协议工作的,其底层是依赖于snmp的工作方式来工作的,它的模型是Server/agent 方式。Service : 10051 :由三部分组成(zabbix-web gui[依赖lamp平台、配置接口、展示数据]、zabbix-server[周期性去agent端采集数据]、service database[负责存储数据])。Agent: 10050:收集本机数据、暂时存储、监听等待server端来采集数据部署应用场景。如图2所示
图2
6、zabbix一次监控的全过程原理图
定义监控主机,主机添加到主机组,定义item(监控主机的监控项,[监控资源]),graphs绘图[不是必须、套用用模板就不用],teiggers:定义触发器,action:定义触发器触发后要执行的动作,比如服务重启,发邮件给管理员,动作升级,发邮件给部门主管。如图3所示
图3
7、zabbix一次全监控的工作流程
数据采集、数据存储、数据展示、服务报警与升级。如图4所示
图4
开始配置
环境:CentOS 7(最小化安装)
1、搭建LNMP环境
[root@localhost ~]# yum install make httpd php mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml unixODBC-devel OpenIPMI-devel libxml2-devel mariadb mariadb-server -y
注:我这里是使用之前编译安装的LNMP环境,如果不想那么麻烦,就直接按照上面的命令搭建LNMP环境
2、创建用户
[root@localhost ~]# useradd zabbix -s /sbin/nologin
3、创建zabbix数据库,并授权
[root@localhost ~]# mysql -uroot -p Enter password: mysql> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.04 sec) mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; Query OK, 0 rows affected, 1 warning (0.02 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
4、下载zabbix,解压,并将zabbix导入数据库
[root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz [root@localhost src]# tar -xf zabbix-3.2.7.tar.gz [root@localhost src]# cd zabbix-3.2.7 [root@localhost zabbix-3.2.7]# cd database/mysql/ [root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql [root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < images.sql [root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
5、编译安装zabbix
[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7 [root@localhost zabbix-3.2.7]# ./configure --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --prefix=/usr/local/zabbix [root@localhost zabbix-3.2.7]# make && make install
注:可能会遇到的问题
问题一:configure: error: unixODBC library not found 解决方法:yum install unixODBC-devel -y 问题二:configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config 解决方法:yum install net-snmp-devel -y 问题三:configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h 解决方法:yum -y install OpenIPMI-devel 问题四:configure: error: Curl library not found 解决方法: yum install curl-devel -y
6、修改Nginx.conf使其支持index.php
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf index index.html index.htm index.php;
7、修改zabbix对应的数据库账号和密码
[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_server.conf DBName=zabbix DBUser=zabbix DBPassword=zabbix
8、配置启动脚本,并修改相关选项
[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7 [root@localhost zabbix-3.2.7]# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/ [root@localhost zabbix-3.2.7]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ [root@localhost zabbix-3.2.7]# sed -i 's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"\g' /etc/init.d/zabbix_agentd [root@localhost zabbix-3.2.7]# sed -i 's\ZABBIX_BIN="/usr/local/sbin/zabbix_server"\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"\g' /etc/init.d/zabbix_server
9、启动服务
[root@localhost ~]# /etc/init.d/zabbix_server start Reloading systemd: [ OK ] Starting zabbix_server (via systemctl): [ OK ] [root@localhost ~]# /etc/init.d/zabbix_agentd start Starting zabbix_agentd (via systemctl): [ OK ] [root@localhost ~]# chkconfig zabbix_server on [root@localhost ~]# chkconfig zabbix_agentd on
注:
当启动zabbix服务端出现下面的问题时 [root@localhost zabbix-3.2.7]# /usr/local/zabbix/sbin/zabbix_server start /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory 解决方法: [root@localhost zabbix-3.2.7]# find / -name libmysqlclient.so.20 /usr/local/src/mysql-5.7.20/libmysql/libmysqlclient.so.20 /usr/local/mysql/lib/libmysqlclient.so.20 [root@localhost zabbix-3.2.7]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf [root@localhost zabbix-3.2.7]# ldconfig [root@localhost zabbix-3.2.7]# /etc/init.d/zabbix_server start Starting zabbix_server (via systemctl): [ OK ]
10、需要修改php.ini支持的大小,不然web界面会报错
[root@localhost ~]# vim /usr/local/php/lib/php.ini max_execution_time = 300 max_input_time = 300 date.timezone =Asia/Shanghai post_max_size = 32M ##重启服务 [root@localhost ~]# systemctl restart nginx [root@localhost ~]# service php-fpm restart
11、复制zabbix的PHP目录到Nginx的目录下
[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7/frontends/ [root@localhost frontends]# cp -rf php /usr/local/nginx/html/zabbix [root@localhost ~]# chown -R nginx:nginx /usr/local/nginx/html/zabbix
12、访问web界面(http://192.168.15.11/zabbix),如图5所示,一直默认下一步
图5
13、下面的选项全部都要为OK,如图6所示
图6
注:如果是yum安装的则缺少什么就直接使用yum安装什么,我的是编译安装的,所以解决方法如下
PHP LDAP off Warning PHP gettext off Warning
ldap的解决方法: 首先查看源码安装的php模块中是否有ldap.so [root@localhost ~]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ 如果有就直接在php.ini文件里添加extension=ldap.so,如果没有,则 [root@localhost ~]# cd /usr/local/src/php-5.5.38/ext/ldap [root@localhost ldap]# /usr/local/php/bin/phpize [root@localhost ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap 如果出现configure: error: Cannot find ldap.h的报错,则执行yum install openldap-devel openldap -y 如果出现configure: error: Cannot find ldap libraries in /usr/lib.的报错,则执行cp -frp /usr/lib64/libldap* /usr/lib/ [root@localhost ldap]# make && make install [root@localhost ldap]# make test [root@localhost ldap]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ ##查看有没有模块 [root@localhost ldap]# vim /usr/local/php/lib/php.ini extension=ldap.so 然后重启服务 gettext的解决方法: 首先查看源码安装的php模块中是否有gettext.so [root@localhost ~]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ 如果有就直接在php.ini文件里添加extension=gettext.so,如果没有,则 [root@localhost ~]# cd /usr/local/src/php-5.5.38/ext/gettext/ [root@localhost gettext]# /usr/local/php/bin/phpize [root@localhost gettext]# ./configure --with-php-config=/usr/local/php/bin/php-config [root@localhost gettext]# make && make install [root@localhost gettext]# make test [root@localhost gettext]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ ##查看有没有模块 [root@localhost gettext]# vim /usr/local/php/lib/php.ini extension=gettext.so 然后重启服务
14、连接数据库的相关配置如图7所示
图7
注:
(1)、在配置数据库连接时,如果出现如图8所示的问题,解决方法如下
图8
解决方法:
[root@localhost zabbix]# vim /usr/local/zabbix/etc/zabbix_server.conf DBSocket=/usr/local/mysql/mysql.sock [root@localhost ~]# vim /usr/local/php/lib/php.ini mysqli.default_socket = /usr/local/mysql/mysql.sock 然后重启服务即可
(2)、在下一步时,如果遇到如图9所示的问题时,由于它提供了解决方法,所以我们按照它提供的解决方法来做就好了,把配置文件下载下来,然后上传并保存为/usr/local/nginx/html/zabbix/conf/zabbix.conf.php,最后刷新页面,如图10所示,则表示我们已经成功安装好zabbix了。
图9
图10
15、登录zabbix监控页面,如图11和图12所示,用户名默认为Admin,密码默认为zabbix。
图11
图12
16、修改相关选项,使zabbix页面支持中文
在我们的Windows电脑(C:\Windows\Fonts)里,如图13所示,随便找一种字体上传到网站目录里(/usr/local/nginx/html/zabbix/fonts/),并把原来的字体删除掉,把刚上传的字体名改为原本字体的名字(即DejaVuSans.ttf),如图14所示,即可支持中文。然后修改用户的属性,把语言改为中文,如图15所示,查看中文状态下的页面,如图16所示。
图13
图14
图15
图16
至此,zabbix服务端就已经搭建完成了。