Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。
Zabbix 是一个企业级的分布式开源监控方案。
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。
Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。
Zabbix由几个主要的软件组件构成,这些组件的功能如下。
Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。
所有配置信息和Zabbix收集到的数据都被存储在数据库中。
为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。
Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。
Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
此外,了解Zabbix内部的数据流同样很重要。为了创建一个监控项用于采集数据,必须先创建一个主机。转换到Zabbix功能的其他部分,你必须先有一个监控项来创建触发器,你必须有一个触发器来创建动作。 因此,如果你想收到X服务器CPU负载过高的告警,你必须先为X服务器创建一个主机实体并关联一个用于对CPU进行监控的监控项,然后如果CPU负载太高便会激活触发器,接着会执行一个动作,给你发送告警邮件。虽然看起来有很多步骤,但是使用模板的话可以会很简单。同时,这个设计可以创建一个非常灵活的配置。
- 一台你想监控的网络设备,用IP或域名表示
- 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
- 你想要接收的主机的特定数据,一个度量数据。
- 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式
当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。
- 单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册
- 一个处在“异常”状态的触发器
- 一个对事件做出反应的预定义的操作。
一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成
- 一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列
- 发送告警通知的手段;告警通知的途径
- 利用已选择的媒体途径把跟事件相关的信息发送给用户
- 一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令
- 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。
- 一组监控项组成的逻辑分组
- 利用一个或多个HTTP请求来检查网站的可用性
- Zabbix提供的web界面
- Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
- Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
- 一个部署在监控对象上的,能够主动监控本地资源和应用的程序
- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
机器名称 | IP配置 | 服务角色 | 备注 |
---|---|---|---|
cairui | 120.25.255.87 | zabbix-server | 开启监控功能 |
VM_0_7_centos | 118.25.47.241 | zabbix-agent | 开启 |
环境查看:
[root@VM_0_7_centos zabbix-3.4.7]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@VM_0_7_centos zabbix-3.4.7]# uname -a
Linux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@cairui ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@cairui ~]# uname -a
Linux cairui 2.6.32-696.6.3.el6.x86_64 #1 SMP Wed Jul 12 14:17:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@VM_0_7_centos zabbix-3.4.7]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@VM_0_7_centos zabbix-3.4.7]# /usr/sbin/sestatus
SELinux status: disabled
[root@cairui ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@cairui ~]# /usr/sbin/sestatus
SELinux status: disabled
[root@cairui software]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
[root@cairui software]# yum install -y zabbix-server-mysql zabbix-web-mysql
创建数据库:
mysql> create database zabbix character set gbk collate gbk_chinese_ci;
mysql> show grants for zabbix@localhost;
+------------------------------------------------------------+
| Grants for zabbix@localhost |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zabbix'@'localhost' |
| GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' |
+------------------------------------------------------------+
导入数据:
[root@cairui software]# zcat /usr/share/doc/zabbix-server-mysql-3.0.15/create.sql.gz |mysql -uzabbix -p zabbix
Enter password:
配置zabbix-server连接mysql:
[root@cairui software]# vim /etc/zabbix/zabbix_server.conf
[root@cairui software]# grep "DB" /etc/zabbix/zabbix_server.conf | grep -v "#"
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
修改php.ini:
vim /application/php/lib/php.ini 主要为下面几个参数
post_max_size 16M
max_execution_time 300
max_input_time 300
timezone Asia/Shanghai
重启php-fpm
[root@cairui html]# /etc/init.d/zabbix-server start
[root@cairui html]# cp -rf /usr/share/zabbix/* /opt/nginx/html/
[root@cairui html]# cd /opt/nginx/html/conf/
[root@cairui conf]# cp zabbix.conf.php.example zabbix.conf.php
[root@cairui conf]# vim zabbix.conf.php
[root@cairui conf]# cat zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
出错:
FastCGI sent in stderr: "PHP message: PHP Warning: require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /app/nginx/html/zabbix/include/classes/core/ZBase.php on line 292
PHP message: PHP Fatal error: require_once(): Failed opening required '/etc/zabbix/web/mainte
”
解决办法:
chmod -R 755 /etc/zabbix/web
出错解决办法:
[root@cairui bcmath]# yum install *bcmath* --skip-broken
[root@cairui bin]# find / -name bcmath
/home/cairui/software/php-7.1.15/ext/bcmath
[root@cairui bin]# cd /home/cairui/software/php-7.1.15/ext/bcmath
[root@cairui bcmath]# /opt/php/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
[root@cairui bcmath]# ./configure --with-php-config=/opt/php/bin/php-config
make && make install
[root@cairui bcmath]# vim /opt/php/lib/php.ini
加入下面一句:
[root@cairui bcmath]# tail -1 /opt/php/lib/php.ini
extension=bcmath.so
成功!
不支持切换语言解决办法:
[root@cairui web]# yum install *gettext* --skip-broken
[root@cairui web]# find / -name gettext
/usr/lib64/perl5/vendor_perl/auto/Locale/gettext
/usr/lib64/ocaml/gettext
/usr/lib64/gettext
/usr/bin/gettext
/usr/share/doc/gettext-devel-0.17/javadoc2/gnu/gettext
/usr/share/glib-2.0/gettext
/usr/share/gettext
/usr/share/php/gettext
/bin/gettext
/home/cairui/software/php-7.1.15/ext/gettext
/opt/boost/boost_1_59_0/tools/build/example/gettext
[root@cairui web]# cd /home/cairui/software/php-7.1.15/ext/gettext
[root@cairui gettext]# /opt/php/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
[root@cairui gettext]# ./configure --with-php-config=/opt/php/bin/php-config
make && make install
[root@cairui gettext]# vim /opt/php/lib/php.ini
[root@cairui gettext]# tail -2 /opt/php/lib/php.ini
extension=bcmath.so
extension=gettext.so
[root@VM_0_7_centos ~]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
warning: /var/tmp/rpm-tmp.iT0tW6: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
[root@VM_0_7_centos ~]# yum install zabbix-agent -y
[root@VM_0_7_centos ~]# cat /etc/zabbix/zabbix_agentd.conf | grep 'Server'|grep -v "#"
Server=120.25.255.87
ServerActive=127.0.0.1
[root@VM_0_7_centos ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
服务端安装zabbix-get检测工具
[root@cairui gettext]# yum install zabbix-get
[root@cairui gettext]# zabbix_get -s 118.25.47.241 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
说明:zabbix自带的模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。
自定义的key能被server和agent认可
#正确的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.uname'
Linux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64
#没有登记的,自定义的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'
ZBX_NOTSUPPORTED: Unsupported item key.
#写错的key
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.unama'
ZBX_NOTSUPPORTED: Unsupported item key.
UserParameter=<key>,<shell command>
UserParameter=login-user,who|wc -l
UserParameter=login-user,/bin/sh /server/scripts/login.sh
[root@VM_0_7_centos zabbix_agentd.d]# vim userparameter_login.conf
[root@VM_0_7_centos zabbix_agentd.d]# cat userparameter_login.conf
UserParameter=login-user,who|wc -l
UserParameter=login-user2,who|wc -l
注意:key要唯一,多个key要以行分
[root@VM_0_7_centos zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'
1
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user2'
1
[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user3'
ZBX_NOTSUPPORTED: Unsupported item key.
创建应用集
创建监控项
触发器的作用:当监控项获取到的值达到一定数量时就触发报警(根据需求创建)
配置》主机
一个主机可以关联多个模板