设为首页 收藏本站
查看: 1279|回复: 0

[经验分享] 监控工具之——zabbix

[复制链接]

尚未签到

发表于 2019-1-26 07:03:02 | 显示全部楼层 |阅读模式
  本节我们来认识下一款比较具有代表性的监控工具——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的工作机制:在各被监控的节点上安装触发器,当某些数据超出阈值是可以触发某个事件,可以是执行某个脚本,也可以是执行报警等操作。

  注意: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:分布式监控环境中的专用组件

  zabbix 的逻辑架构

    架构讲解:通常我们的监控从添加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启动的进程

  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.30  node3
  agent:172.16.6.50   node5
  proxy:    172.16.6.40  node4
  
  server-agent模型
  zabbix 安装
  这里我使用的是rpm安装
  下载网页如下

  这里我已经下载好了
[root@node3 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  zabbix-2.4
[root@node3 ~]# cd zabbix-2.4/
[root@node3 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端
[root@node3 zabbix-2.4]# 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)  模板导入数据库
[root@node3 ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.0/create/
[root@node3 create]# ls
data.sql  images.sql  schema.sql
[root@node3 create]# mysql zabbix  grant 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;  数据库初始化
[root@node4 ~]# cd /usr/share/doc/zabbix-proxy-mysql-2.4.0/create/
[root@node4 create]# mysql zabbix_proxy < schema.sql  修改配置文件
[root@node4 ~]# 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的频率  启动服务
[root@node4 ~]# service zabbix-proxy start
Starting Zabbix proxy:                                     [  OK  ]  启动之后就可以到监控端添加了
  注意添加是的代理名称一定要与代理端配置文件中的主机名保持一致


  添加完之后修改被监控的agent端的配置文件
[root@node5 ~]# vim /etc/zabbix/zabbix_agentd.confServer=172.16.6.40                server指向proxy主机
Hostname=node5.mwj.com 修改完之后重启服务
[root@node5 ~]# service zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]  到监控端添加主机
  尤其注意的是最下面的一个选项:monitored by proxy
  这一项一定要选择刚刚的创建的那个代理主机

  创建完成之后等待一段时间后就可以看到主机监控成功了

  并且监控到的数据也可以显示了。
  好的,那么本节关于监控的内容就讲到这里,再见!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667563-1-1.html 上篇帖子: Zabbix 2.4.0 安装、配置 下篇帖子: zabbix添加Calculated items后保存页面成空白
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表