ycvodzf 发表于 2019-1-26 07:03:02

监控工具之——zabbix

  本节我们来认识下一款比较具有代表性的监控工具——zabbix。来看下摘自百度百科的介绍:
  zabbix(音同 zbix)是一个基于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等平台上。
  开源的监控工具:
  比较著名的几个
  cacti:写一些脚本到agent端采集一些数据,通过PHP(即时绘制)可以展示直观的结果
  nagios:有强大报警功能,只关心数据是否异常
  zabbix:是一个能够实现各种强大的数据采集功能,并且能够提供良好的报警功能的工具
  zabbix的介绍

  zabbix的工作机制:在各被监控的节点上安装触发器,当某些数据超出阈值是可以触发某个事件,可以是执行某个脚本,也可以是执行报警等操作。
http://s3.运维网.com/wyfs02/M02/4C/8B/wKioL1Q_e83wHBAFAAMP5QICb1M762.jpg
  注意:server端采集数据有2中方式:主动和被动
         主动模式下又分为
            server端 每个一定时间到agent端采集数据
  通过get来执行脚本或命令到agent端拉取数据
        被动模式为
  agent端通过sender发送数据给server端
  
  zabbix架构中的组件:
  zabbix-server:C语言
  zabbix-agent:C语言
  zabbix-database:MySQL,PostgreSQL(PGsql),Oracle、DB2,SQLite
  zabbix-web :GUI 用于实现设定和展示
  zabbix-proxy:分布式监控环境中的专用组件
http://s3.运维网.com/wyfs02/M00/4C/85/wKiom1Q_Lv2SerdFAAESn5VYaX4149.jpg
  zabbix 的逻辑架构
http://s3.运维网.com/wyfs02/M02/4C/85/wKiom1Q_MFuRCtu2AAF3r6eY93Q286.jpg
  架构讲解:通常我们的监控从添加host开始,而该host(主机)可以属于一个hostgroup(主机组),当然,在添加host时,我们必然要添加一些我们需要的items(监控项),而这些items上的数据肯定是从agent端的主机上采集来的数据(根据采集方式不同,因此分为了zabbix poller到agent端拉取,以及agent端直接推送到server端 ,因此有2个方向),当然host也可以直接使用template(模板),上面定义各个选项(包含graphs(数据生产的图像)、trigger(触发器)、items等等),好了下面从items往下走,定义了items之后我们必然会给这些采集到数据设定一个合理的范围值,即阈值,而这就是trigger(触发器),一旦超出了阈值之后,就会产生events(事件),而我们就可以根据这些event来定义相应的action(处理动作)了,这些动作可以是执行一些脚本、命令(例如发现数据异常可以通过命令完成远程agent服务重启等),也可以是发送信息、Email通知运维人员等。当然有些时候当服务器处于维护升级时,数据可能就会异常,而这些异常是运维人员知道的,无需报警的,因此这就是这里的maintenance(维护)的意义了,maintenance可以定义维护时间内,而在这段时间内是不发送警报。
  好了,这是我的大概理解,可能讲的不是那么好,见谅。
   zabbix常用的术语
主机(host):要监控的网络设备,可由IP或者DNS名称指定
主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能相互连接
监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控的对象
触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所收到的数据是否在合理范围内,即阈值;接收到的数据大于阈值时,触发器状态将从OK转变为problem,当数据再次回归合理范围时,状态也会相应变回OK
事件(event):即发生的一个值得关注的事情,当trigger状态发生改变时自动产生事件
动作(action):指对于某特定事件实现定义的处理方法
报警升级(escalation):发送报警或执行远程命令的自定义方案,如每隔几分钟发一次警报,总共发送几次
媒介(media):发送通知的手段,如Email、jabber、SMS等
通知(notification):通过选定的媒介向用户发送的有关某事件的信息
远程命令(remote command):预定义的命令,可以在被监控主机处于某特定条件下时自动执行
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level Discovery rule;
应用程序(application):一组item的集合
web场景(web scenario):用于检测web站点可用性的一个或多个http请求
前端(frontend):zabbix的web接口
  zabbix启动的进程
http://s3.运维网.com/wyfs02/M01/4C/8B/wKioL1Q_en7CDeheAAIxKq0yVFo822.jpg
  housekeeper:负责清理过期的数据
  poller:拉去数据
  httppoller:监控web页面的专业拉取数据用的
  discoverer:发现资源的
  alerter:报警用的
  watchdog:负责监视所有的进程的状态的,一旦某个进程关闭,watchdog将会通知zabbix重新启动该进程
  pinger:使用ping探测主机是否在线用的
  timer:计时器
  secalator:报警升级
  nodewatcher:监控各节点的
  db_config_syncer:数据库配置同步
  db_data_syncer:数据库数据同步
  
  实验:利用zabbix实现agent主机监控
  实验中我们会通过2种模型来演示:
   server-agent模型
  server-proxy-agent模型
  实验前提:
  已经安装好lamp环境
  server:172.16.6.30node3
  agent:172.16.6.50   node5
  proxy:    172.16.6.40node4
  
  server-agent模型
  zabbix 安装
  这里我使用的是rpm安装
  下载网页如下
http://s3.运维网.com/wyfs02/M02/4C/86/wKioL1Q_LQLwe0fcAAN22VZwKh8999.jpg
  这里我已经下载好了
# ls
anaconda-ks.cfginstall.loginstall.log.syslogzabbix-2.4
# cd zabbix-2.4/
# ls
zabbix-2.4.0-1.el6.x86_64.rpm
zabbix-agent-2.4.0-1.el6.x86_64.rpm
zabbix-get-2.4.0-1.el6.x86_64.rpm
zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm
zabbix-release-2.4-1.el6.noarch.rpm
zabbix-sender-2.4.0-1.el6.x86_64.rpm
zabbix-server-2.4.0-1.el6.x86_64.rpm
zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm
zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-web-2.4.0-1.el6.noarch.rpm
zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
这里我用node3当做server端
# yum -y install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-server-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm  创建数据库并授权
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'172.16.%.%' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'node3.mwj.com' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)  模板导入数据库
# cd /usr/share/doc/zabbix-server-mysql-2.4.0/create/
# ls
data.sqlimages.sqlschema.sql
# mysql zabbixgrant all on zabbix_proxy.* to 'zabbix'@'node4.mwj.com' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;  数据库初始化
# cd /usr/share/doc/zabbix-proxy-mysql-2.4.0/create/
# mysql zabbix_proxy < schema.sql  修改配置文件
# vim /etc/zabbix/zabbix_proxy.conf  注意:在代理模式下也分为主动模式和被动模式
### Option: ProxyMode
#       Proxy operating mode
#       0 - proxy in the active mode
#       1 - proxy in the passive mode
#
# Mandatory: no
# Default:
# ProxyMode=0               默认工作为主动模式
Server=172.16.6.30            注意服务器指向监控端
Hostname=node4.mwj.com
DBName=zabbix_proxy         注意,这里的数据库并不是server端的数据库
DBUser=zabbix               而是在proxy端暂时存储数据的数据库
DBPassword=123456
ConfigFrequency=60         zabbix proxy 想服务器检索配置数据信息的频率,在被动模式下该参数将被忽略
DataSenderFrequency=5         zabbix proxy发送收集的数据给zabbix server的频率  启动服务
# service zabbix-proxy start
Starting Zabbix proxy:                                       启动之后就可以到监控端添加了
  注意添加是的代理名称一定要与代理端配置文件中的主机名保持一致
http://s3.运维网.com/wyfs02/M00/4C/A8/wKioL1RDYmKAEcL_AAIMUD0m2Fc539.jpg
http://s3.运维网.com/wyfs02/M00/4C/A7/wKiom1RDYhvB8vp2AAIq5zWL4Wc963.jpg
  添加完之后修改被监控的agent端的配置文件
# vim /etc/zabbix/zabbix_agentd.confServer=172.16.6.40                server指向proxy主机
Hostname=node5.mwj.com 修改完之后重启服务
# service zabbix-agent restart
Shutting down Zabbix agent:                              
Starting Zabbix agent:                                       到监控端添加主机
  尤其注意的是最下面的一个选项:monitored by proxy
  这一项一定要选择刚刚的创建的那个代理主机
http://s3.运维网.com/wyfs02/M02/4C/A7/wKiom1RDYqbjsXLwAAHITfLxPTM725.jpg
  创建完成之后等待一段时间后就可以看到主机监控成功了
http://s3.运维网.com/wyfs02/M01/4C/A7/wKiom1RDY0jRpq4pAALpBxLSFDI427.jpg
  并且监控到的数据也可以显示了。
  好的,那么本节关于监控的内容就讲到这里,再见!



页: [1]
查看完整版本: 监控工具之——zabbix