一、监控系统机制

  1.监控工具工作机制

        监控是通过传感器采集数据,在经过数据的存储加工后,进行展示。一般采集的数据为时间序列数据,即随时间变化而动态变化的数据;当采集到的数据超出阈值将会报警。监控功能的实现可基于专用agentsshSNMP协议、IPMI(专业级监控接口IntelligentPlatform Management Interface,指挥平台管理接口)

zabbix系列(一):zabbix自动化监控系统搭建详解_第1张图片

  2.SNMP协议

       Simple Network Management Protocol,简单网络管理协议。由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

Liunxnet-snmp程序包,监听端口:NMS: 161/UDP agent: 162/UDP

NMS

网络管理系统,存在监控端;

通过SNMP协议,接收处理网络中被管理的每一个设备存在的管理信息库(MIB)所收集并储存管理信息

NMS可发起操作:Get,  GetNext, Set, Trap

agent

代理者,被管理设备上的一个网络管理软件模块;

拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS

一般为各操作系统、路由器等标准接口

   (1)SNMP工作模式

NMS向agent采集数据agent向NMS报告数据NMS请求agent修改配置

   (2)SNMP组件

MIB

management  information base,管理信息库;定义被管理的可实现的数据采集规范,被管理端的名称转换

SMI

MIB表示符号

SNMP

简单网络管理协议

   (3)SNMP协议版本:v1, v2, v3

            v1无认证;v2c基于社区管理机制,NMS --> agent 需要发起社区标识(共享密钥),明文;v3认证、加密、解密功能。实际使用中v2c为主流,也有v1v3使用很少。

  3.监控对象

       (1)设备/软件

     设备:服务器、路由器、交换机、IO系统...

     软件:OS、网络、应用程序...

       (2)偶发性小故障:主机down机、服务不可用、主机不可达...

       (3)严重故障:磁盘空间用完...

       (4)主机性能指标

       (5)趋势:时间序列数据

 

 

 

二、Zabbix架构概述

  1.著名开源工具

        zabbix zennos,opennmscactinagios(二次发行版icinga...) ganglia

   (1) cacti

           基于SNMP协议实现的开源软件, 能让监控端能每个agent做周期的数据采样 请求,cacti能将其保存在一个rrd(roundrobin database)数据库,其数据库的大小是固定的.其提供了一个php程序,(前端web界面),能够向数据库中加载数据, 并给予展示cacti的报警系统比较弱,报警通过插件实现,如果需要好的报警系统,可与nagios系统结合。其存储所用数据库为rrd(round robin database环状数据,不能持久保持数据,初始化后不能更改大小)

   (2) nagios

             一个强大的内置报警系统, 不做数据采集和保存数据, 主要着眼点是报警系统,(只做状态改变监控), 如果状态不OK , 状态由OK—>PROBLEM,。不适用于大规模多数据采集情况的报警监控,数百台是可能nagios监控系统本身出现性能瓶颈。

   (3) zabbix

         基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

         zabbix由zabbix server与可选组件zabbix agent构成。zabbix server可以通过SNMP,zabbixagent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,FreeBSD,Open BSD,OS X等平台上。

        zabbix专用agent端,对SNMP协议做了扩展。在zabbix2.2以前传输使用ISON格式(轻量级HTML)zabbix2.4使用换行来辨识数据,所以在完成监控同样数据带宽流量上比zabbix2.2要节约1/3以上。

   (4) ganglia

             强大的聚合功能,在集群将空方面有很大优势。Ganglia是UCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

 

  2.zabbix架构组件

zabbix-server

NMS端程序,C语言研发,可基于webpagesICMP/IPMI/SNMPAgentJMX接口机制监控

OS: zabbix-agent

被监控管程序,C语言研发

zabbix-database

存储数据库,支持 MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite

zabbix-web

GUI界面,用于实现zabbix设定和展示,需要结合LAMP架构使用

zabbix-proxy:

分布式监控环境中的专用组件

 注意:

       对性能要求较高的场景中,zabbix-serverzabbix-webzabbix-database三个节点可以分开布置与不同的主机处理不同的操作。

 

 3.zabbix专用术语

hsot主机

被监控的网络设备,IPDNS名称指定

host group主机组

主机的逻辑容器。可包含主机和模板,同一个组内的主机和模板不能相互链接;

一般给用户()指派监控权限时使用

item监控项

特定监控指标的相关数据(来自被监控对象),由key进行标识,数据收集的核心

tigger触发器

用于评估监控对象特定item阈值的表达式。状态在OKPROBLEM间转换

event事件

发生的一个值得关注的事情

action动作

指定对于特定事件事先定义的处理方法,动作包含操作和条件

escalation预警升级

发送报警或执行远程命令的自定义方案

media媒介

发送通知的手段或通道,如EmailJobberSMS、微信通知

notification通知

通过u安定的媒介向用户发送的有关于事件的信息

remote  command

远程命令,预定义的命令,可在被监控主机处于特定条件下自动执行

template模板

用于快速定义被监控主机的预设条目集合,通常包括itemtriggergraphscreenapplicationrule…

application应用

一组item的集合

web  scennario

web场景,用于检测web站点可以性的一个或多个HTTP请求

frontend前端

Zabbixweb接口

screens 屏幕

利用当前的屏幕, 来展示  的多个graph

graph图表

用于图像化显示时间虚拟数据,item指标产生的监控数据

maps

 整个系统的拓扑图

zabbix系列(一):zabbix自动化监控系统搭建详解_第2张图片

zabbix服务启动之后会产生多个进程,如watchdog(监控进程)housekeeper(管家,对于数据清理操作)alerter(报警)poller(拉去收集数据,能被启动多个)httppoller(监控web页面信息专业poller)discoverer(发现机制进程,相当占用资源)pinger(屏操作监控节点在线机制)db_config_syncer(数据库配置同步器)db_data_syncer(数据库数据同步器)nodewatcher(用于监控节点)timer(计时器)escalator(报警升级)… ...

 

  4.硬件需求实例

zabbix系列(一):zabbix自动化监控系统搭建详解_第3张图片

  注意:    

        zabbix产生的数据主要由四部分组成:配置数据历史数据50Bytes历史趋势数据:128Bytes事件数据130Bytes;通过每个item一次需要占用的空间参标准,更具记录的频率和总保留时长,可以大致计算出所需要的存储空间

zabbix系列(一):zabbix自动化监控系统搭建详解_第4张图片

 

 

 

三、zabbix监控端安装部署

  1.安装启动LAMP

      [root@localhost~]# yum install -y  httpd  php php-mysql mariadb-server

      [root@localhost~]# systemctl start httpd.service

       [root@localhost~]# systemctl start mariadb.service

 

  2.配置生成数据库

      [root@localhost~]# mysql

          MariaDB [(none)]> CREATE DATABASEzabbix CHARACTER SET utf8;      # 创建支持utf8的数据库zabbix

          MariaDB [(none)]> GRANT ALL onzabbix.* TO 'zbxuser'@'172.16.%.%' IDENTIFIED BY 'zbxpass';       # 授权网段用户可登陆查询库

          MariaDB [(none)]> FLUSH  PRIVILEGES;        # 重载授权表

          MariaDB [(none)]> quit    # 退出

      [root@localhost ~]# mysql -uzbxuser-h172.16.49.101 -p     #检测授权是否可以登录

 

  3.安装zabbix组件

      [root@localhost ~]# yum installzabbix-2.4.6-1.el7.x86_64.rpm zabbix-server-2.4.6-1.el7.x86_64.rpmzabbix-server-mysql-2.4.6-1.el7.x86_64.rpm zabbix-web-2.4.6-1.el7.noarch.rpmzabbix-web-mysql-2.4.6-1.el7.noarch.rpm zabbix-agent-2.4.6-1.el7.x86_64.rpmzabbix-get-2.4.6-1.el7.x86_64.rpm zabbix-sender-2.4.6-1.el7.x86_64.rpm

 注意:

    1) 本次采用zabbix2.4安装,且安装在同一台主机,也可以将多个组件分开安装(一台主机提供zabbix监控以及与专用的agent接×××互采集信息、一台主机专门用于数据的存放、一台主机用于web端接口调取数据展示数据)

    2) 各安装组件详细信息如下:

zabbix-2.4.6-1.el7.x86_64.rpm

zabbix程序的主程序包,提供相关服务

zabbix-server-2.4.6-1.el7.x86_64.rpm

zabbix作为监控端提供服务程序包

zabbix-server-mysql-2.4.6-1.el7.x86_64.rpm

zabbix监控端和mysql数据库交互的驱动包

zabbix-web-2.4.6-1.el7.noarch.rpm

zabbixweb展示接口

zabbix-web-mysql-2.4.6-1.el7.noarch.rpm

zabbixweb展示接口与数据库交互的驱动包

zabbix-agent-2.4.6-1.el7.x86_64.rpm

zabbixagent用于做为客户端交互接口,本处同时将本主机当成客户端监控

zabbix-get-2.4.6-1.el7.x86_64.rpm

zabbixget工具,手动调试使用

zabbix-sender-2.4.6-1.el7.x86_64.rpm

zabbixsender工具,手动调试使用

    3) 依赖被安装程序

  OpenIPMI-libs.x86_640:2.0.19-11.el7                OpenIPMI-modalias.x86_64 0:2.0.19-11.el7              

  fping.x86_640:3.10-4.el7                                      iksemel.x86_64 0:1.4-6.el7                            

  net-snmp.x86_641:5.7.2-20.el7                          net-snmp-agent-libs.x86_641:5.7.2-20.el7             

  net-snmp-libs.x86_641:5.7.2-20.el7                  php-bcmath.x86_64 0:5.4.16-23.el7_0.3                 

  php-gd.x86_640:5.4.16-23.el7_0.3                    php-mbstring.x86_64 0:5.4.16-23.el7_0.3               

  php-xml.x86_640:5.4.16-23.el7_0.3                  t1lib.x86_64 0:5.1.2-14.el7                           

  unixODBC.x86_640:2.3.1-10.el7

zabbix系列(一):zabbix自动化监控系统搭建详解_第5张图片

 

 4.初始化zabbix数据库

      [root@localhost zabbix]# systemctlrestart httpd.service  # 安装zabbix-web程序会在httpd/conf.d下生成zabbix.conf文件

 初始化数据库:执行/usr/share/doc/zabbix-server-mysql-2.4.6/下三个数据库脚本,注意执行顺序

      [[email protected]]# cd /usr/share/doc/zabbix-server-mysql-2.4.6/create/

      [root@localhostcreate]# ls

            data.sql  p_w_picpaths.sql schema.sql

      [root@localhostcreate]# mysql zabbix < schema.sql

      [root@localhostcreate]# mysql zabbix < p_w_picpaths.sql

      [root@localhostcreate]# mysql zabbix < data.sql

zabbix系列(一):zabbix自动化监控系统搭建详解_第6张图片

 

  5.配置文件/etc/zabbix/zabbix_server.conf

      [root@localhost ~]# vim /etc/zabbix/zabbix_server.conf

       该配置文件中#段表示默认的配置,如要修改则将#去除再修改为所需信息

# ListenPort=10051

监听端口默认10051

LogFile=/var/log/zabbix/zabbix_server.log

日志文件位置

LogFileSize=0

日志文件大小,指明后会自动滚动。0不做滚动

# DebugLevel=3

调试级别

# DBHost=localhost

指明数据库连接地址。

若数据库在本机建议指明路径为localhost,此方式数据传输更快

DBName=zabbix

指明数据库名称

# DBSchema=

可选项为IBM DB2 and PostgreSQL

DBUser=zbxuser

指明数据库连接访问用户

DBPassword=zbxpass

指明联机而数据库用户密码

DBSocket=/tmp/mysqlsocket

当之前配置为"DBHost=localhost"要指明交互的套接字位置,否则可注释

       注意: ADVANCED PARAMETERS 配置段用于对进程的一些配置,可以使用默认配置

 

  6.启动服务

      [root@localhost ~]# yum install  -y trousers-0.3.11.2-4.el7_1.x86_64.rpm

说明:CentOS7.1安装zabbix-2.4.6-1.el7,其与trousers-0.3.11.2-3不兼容,需要升级trousers至0.3.11.2-4.el7_1。

      [root@localhost~]# systemctl start zabbix-server.service

zabbix系列(一):zabbix自动化监控系统搭建详解_第7张图片

 

7.修改php时区

      [root@localhost ~]# vim /etc/php.ini  修改如下配置

                   date.timezone= Asia/shanghai

      [root@localhostzabbix]# systemctl restart httpd.service

 

8.启动web页面

       根据页面提醒进行网页点配置,之后会在/etc/zabbix/web/zabbix.conf.php文件内生成相应配置信息。默认登录的用户名和密码为:admin/zabbix

zabbix系列(一):zabbix自动化监控系统搭建详解_第8张图片

zabbix系列(一):zabbix自动化监控系统搭建详解_第9张图片

zabbix系列(一):zabbix自动化监控系统搭建详解_第10张图片

zabbix系列(一):zabbix自动化监控系统搭建详解_第11张图片

zabbix系列(一):zabbix自动化监控系统搭建详解_第12张图片

zabbix系列(一):zabbix自动化监控系统搭建详解_第13张图片


 

四、zabbix被控端安装配置

  1.安装程序

     [root@localhost ~]# yum installzabbix-2.4.6-1.el7.x86_64.rpm zabbix-agent-2.4.6-1.el7.x86_64.rpm  zabbix-sender-2.4.6-1.el7.x86_64.rpm

  2.修改配置文件

        [root@localhost~]# vim  /etc/zabbix/zabbix_agentd.conf

        客户端默认监控在10050端口,在该配置文件中主要需要配置Server授权和Hostname,可以为对多个,对于监控端自监控需要监控127.0.0.1

               Server=127.0.0.1,172.16.49.101   #服务端主机地址,指明可拉去数据主机

    ServerActive=172.16.49.101  # 主动推送数据至主机地址

                Hostname=             # 注意全局唯一,使用DNS解析最理想

  3.启动服务

       [root@localhost~]# systemctl start zabbix-agent.service