zabbix多种监控功能:

    支持Zabbix Agent

    SNMP Agent

    IPMI Agent

    无代理监控

    web服务监控

    数据库监控

    zabbix内部监控

    计算以后进行监控展示

    客户自定义命令监控

    

    特性:

    数据采样:支持snmp,ssh,telnet,agent,ipmi,jmx;

        支持自定义检测机制:通过UserParameter实现;

        支持自定义指定时间间隔;历史数据保存多久,趋势数据保存多久;

    支持实时绘图:展示,通过内置绘图模板,读取数据库数据完成绘图;

        graph 绘图;

        map 绘制网络拓扑图;

        screen 定义一个屏幕展示各种图;

        slide show 支持使用幻灯片机制显示;

    告警:

        支持告警升级;

            定义脚本script

            notification发通知,发邮件通知

    数据存储:

        数据库:自动超期数据清理

            mysql

            pgsql

    支持使用模板:完成快速监控和配置;

    网络自动发现:zabbix可自动扫描网段,发现即可添加被监控主机;

    分布式监控:

        server <--> proxy代理 <--> agent/ssh/ipmi

        所有配置都在server端进行,自动推送;

    API接口:支持研发扩展;


    zabbix database负责专用于存储所有配置信息以及由Zabbix收集的数据;

    zabbix server是负责接收agnet发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行;

    zabbix server在zabbix服务器端运行一个进程就叫zabbix server;这个进程有n种子进程,对于每一种不同的监控接口,都有专用的子进程完成此类监控收集数据的实

现;例如web页面监控,通过ICMP/IPMI/SNMP等协议监控设备,通过agent监控操作系统及对JMX(j2ee)监控;因此,每一类监控,都应该启动一个或几个子进程

进行监控,启动多少个子进程,取决于监控指标的个数;

    zabbix server就是靠这些协议不断收集数据,并存储在zabbix database数据库中;

    如果想查看,就通过zabbix web GUI查看,zabbix web GUI使用php语言研发,所有的配置也在GUI接口上完成,通常与Zabbix server运行在同一台主机上;

    proxy的可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端;

    agent是部署在被监控主机上,负责收集本地数据并发往server端或proxy端;

    proxy是可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端;

    agent是部署在被监控主机上,负责收集本地数据并发往server端或proxy端;

    zabbix支持分布式监控:所有数据存储在数据库中,例如zabbix server只监控5万个指标,另外2万个指标交给代理服务器进行监控,代理监控服务器先把收集的数据放

在本地数据库,每隔一段时间,连接zabbix server后,把数据统计汇总后一次性发出;这样减轻了连接的压力;

    在大规模监控中,Zabbix server、Zabbix database、Zabbix web GUI有可能是分别的主机提供,彼此间通过socket进行通信;

            

        server1运行Zabbix sever,server2运行Zabbix web gui和apache、php(mysql或pgsql),server3运行mysql或pgsql数据库;通过server2的web页面进行配置和展示,Zabbix server把采集的数据存储在数据库中;

        Zabbix server所有运行通过Zabbix_server.conf配置文件加载,运行中的所有日志信息,记录在Zabbix_server.log文件中;

        Zabbix agent每个agent端运行一个zabbix_agentd守护进程,zabbix_agentd通过负责在本地监控各种应用,例如数据库、硬件设备、应用程序等等,把收集的数据通过zabbix协议发送给zabbix server,然后进行存储;

        对于agnt通过zabbix_agentd.conf配置文件加载自己的配置,每个zabbix agent产生的日志信息记录在zabbix_agentd.log文件中;

        zabbix proxy也需要配置文件zabbix_proxy.conf,日志文件zabbix_proxy.log;

        配置好zabbix_agentd,在zabbix server端通过使用zabbix_get命令手动获取zabbix agent端数据测试,被动监控;zabbix agent端通过使用zabbix_sender命令,手

动向zabbix server发送数据测试,主动监控;

        zabbix安装_第1张图片

            1、zabbix监控java应用时,通过java gateway组件与java应用程序通信;

            

            2、zabbix程序的构成:

                zabbix_server:服务端守护进程;

                zabbix_agentd:agent端守护进程;

                zabbix_proxy:代理服务器,可选组件;

                zabbix_get:命令行工具,通常用于手动向agent发起数据采集请求;(测试数据采集);

                zabbix_sender:命令行工具,通常运行与agent端,手动向server端发送数据;

                zabbix_java_gateway:JMX接口用到的组件,zabbix2.0引入,java网关类似于                    zabbix_agentd,但只用于监控java或JVM虚拟机相关程序;只能是单单向,

由zabbix server从JMX来取数据;

            3、zabbix常用术语:

                主机(host):要监控的网络设备;可有ip后dns名称指定;

                主机组(host group):主机的逻辑容器;可以包含主机和模板,但同一组内的主机模板不能互相连接,主机组通常给用户或用户组指派权限时使用;

                监控项(item):监控的数据指标,zabbix每一个item用一个key标识,可有用于标明的监控项,一个监控项就是一个采集指标,所以定义监控项就是定义一个key;key指明了用什么命令采集数据;这个key就是定义的采集指标或指标采集时所用到的命令的简写标识;

                触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从OK转变为Problem,当数据量再次回归到合理范围内时,其状态将从Problem转换回Ok;

                事件(event):即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agnet的自动注册等;

                动作(action):指对于特定事件事先定义的处理方法,通过包含操作(如发通知)和条件(何时执行操作);

                报警升级(escalation):发生报警或执行远程命令的自定义方案,如每隔5分钟发生一次警报,共发送5次等;

                媒介(media):发送通知的手动或通道,如email,Jabber或SMS等;

                通知(notification):通过选定的媒介向用户发送的有关某事件的信息;

                远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下自动执行;

                模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机;

                应用(application):一组item相关联的集合;

                web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;

                前端(frontend):zabbix的web接口;

    

    

    zabbix server端由zabbix poller进程从各被监控端拉取数据,例如每5分钟poller进程向zabbix agent端、snmp端或基于internal机制,向被监控项发起数据采集请求;任何poller的执行都基于items监控项进行的;定义了监控项就意味着基于某个命令来完成数据采集;

    item会采集出时间序列数据,对每个数据判断是否在有效区间内,大多数item都需要定义触发器trigger,超过阈值进行触发一个报警事件;

    触发器一旦触发一个事件,action能订阅事件,来触发某一动作;所以在trigger之上,还要定义触发事件执行的动作以便完成报警通知或执行远程脚本;

    某一个监控项都是被监控主机上的某一指标;

    可把主机定义一个组,在套用模板时方便批量监控部署操作;

    maintenance是维护模式,不让触发器报警;

            

    zabbix server端的子进程

        poller通用的,基于agent实现采集;

        httppoller执行基于http协议监控数据采集;

            还有很多poller,例如ipmipoller、snmppoller、jmxpoller;

        housekeeper进程负责清理过期数据;例如每5分钟检查一次是否有过期数据;

        pinger进程探测主机是否在线;

        nodewatcher进程监控节点是否在线;

        alerter报警器,执行报警时可分级escalator;

        可实现自动发现discoverer;

        db_config_syncer与代理通信时发送数据配置同步;

        db_data_syncer与代理通信时发送数据同步;

        watchdog进程是用来监控每个子进程是否OK;


        zabbix的安装


        一、zabbix前端软件依赖:

        要求部署apache、php;

        其中php要提供的模块:

            gb 为php gd的扩展,必须支持--with-png-dir, --with-jpeg-dir, --with-freetype-dir;

            bcmath 为php-bcmath模块,--enable-bcmath;

            ctype 为php-ctype模块,--enable-ctype;

            libXML 为php-xml或php5-dom模块;

            xmlreader 为php-xmlreader模块;

            xmlwriter 为php-xmlwriter模块;

            session 为php-session模块;

            sockets 为php-net-socket模块,--enable-sockets;

            mbstring 为多字节字符串模块,php-mbstring模块,--enable-mbstring;

            gettext 为php-gettext模块,--with-gettext;

            ibm_db2 为如果zabbix后端数据库是IBM DB2数据库所提供的模块;

            mysql 为如果zabbix后端数据库是MYSQL数据库所提供的模块;

            oci8 为如果zabbix后端数据库是Oracle数据库所提供的模块;

            pgsql 为如果zabbix后端数据库是PostgreSQL数据库所提供的模块;

            sqlite3 为如果zabbix后端数据库是SQLite数据库所提供的模块;

        二、zabbix服务器依赖的软件

            OpenIPMI为支持IPMI所依赖到的软件;

            libssh2为支持SSH所依赖到的软件;

            fping为支持ICMP所依赖到的软件;

            libcurl为支持web监控所依赖到的软件;

            libiksemel为支持Jabber即时通信协议所依赖到的软件;

            net-snmp为支持SNMP所依赖到的软件;

        三、安装

            

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm

            1、zabbix基本信息yum list all|grep zabbix

                zabbix-web-mysql 为链接mysql的组件;

                zabbix-sender 对于agent端使用的测试工具手动发送数据给服务端;

                zabbix-get 对于服务器端用到的工具手动到agent端获取数据;

            2、mysql的安装(centos7)

                yum -y install mariadb-server

                systemctl start mariadb

                ss -ntl

                vim /etc/my.cnf

                    添加

                    skip_name_resolve=on   禁止数据库反解主机名  

                    innodb_file_per_table=on  开启独立表空间

                    其中:socket=/var/lib/mysql/mysql.sock 此路径在zabbix配置文件中会用到。

                systemctl restart mariadb

                mysql 连接

                CREATE DATABASE zabbix CHARSET 'uft8';

                GRANT ALL ON zabbix.* TO zbxuser@'127.0.0.1' IDENTIFIED BY 'zbxpass';

                GRANT ALL ON zabbix.* TO zbxuser@'172.20.52.%' IDENTIFIED BY 'zbxpass'; 

                FLUSH PRIVILEGES;

            3、zabbix安装               

                
                                         [root@baby1 run]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.8
/usr/share/doc/zabbix-server-mysql-3.0.8/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.8/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.8/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.8/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.8/README
/usr/share/doc/zabbix-server-mysql-3.0.8/create.sql.gz
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

                    cd /usr/share/doc/zabbix-server-mysql-3.0.8/

                    gzip -d create.sql.gz

                    

                    mysql -h127.0.0.1 -uzbxuser -pzbxpass zabbix < create.sql

                    

                    导入zabbix库中;

                    登录数据库验证导入是否成功:

                    

                    ]# mysql

                    > use zabbix

                    > SHOW TABLES;


]# cd /etc/zabbix/

]# cp /etc/zabbix/zabbix_server.conf{,.bak}

]# vim /etc/zabbix/zabbix_server.conf

其中:

在GENERAL PARAMETERS段:

ListenPort=10051

SourceIP= 执行监控操作时,zabbix server有多个ip时,指定使用的IP,因为客户端在执行监控时要验证服务端ip的,基于ip授权;

日志设置

日志类型有三种方式:

system - syslog 写入系统日志;

file - file specified with LogFile parameter 自定义单独使用日志文件;

console - standard output 日志发往控制台,调试才使用;

LogType=file 日志类型

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

LogFileSize=0 设置日志文件大小,超过后自动滚动;0表示不滚动;

PidFile=/var/run/zabbix/zabbix_server.pid 服务端pid文件的路径;

DBHost=127.0.0.1 数据库服务器地址;如果不在当前主机此项是必须改的;

DBName=zabbix 数据库名

DBUser=zbxuser 数据库登录用户

DBPassword=zbxpass 数据库登录密码

DBSocket=/var/lib/mysql/mysql.sock 因为mysql数据库在本地,此项为本地通信

            

         rpm -q php-mysql 确保安装php-mysql程序包;因为zabbix依赖php;

        ]# yum -y install php-mysql httpd

        

        还要指明zabbix的时区,即配置php的时区指定;两种方式修改php时区,一个是全局php.ini,一个是zabbix在php中自己的配置文件/etc/httpd/conf.d/zabbix.conf;

        ]# vim /etc/httpd/conf.d/zabbix.conf

        仅修改:

        php_value date.timezone Asia/Shanghai

        其它都是定义授权项的无需修改;

        ]# systemctl start httpd.service

        ]# ss -tnl 查看80端口是否启动;

         

        浏览器输入http://172.20.52.185/zabbix

    

        

                第一次启动时,会自动跳转到setup安装操作;

                点击下一步:

                

如果 PHP option 开通的有失败,只需修改 php.ini 文件中的各项参数;

其它项目如果失败,表明没有此php的扩展模块,需要安装失败的模块即可;如果是编译安装就要把模块编译进来,如果是yum安装的php,则使用php-加上失败的名

称,即可安装;

没有问题,点下一步;

    这一步,把host/name/user/password,填写好。最好要填写127.0.0.1或者其IP地址。要填写主机名最好vim /etc/hosts查看一下。

    填好IP,进行下一步

       最后得到

     

输入zabbix默认的用户、密码登录:用户为admin,密码为zabbix;

    登录进去后,发现Zabbix is runnin 的value值为NO,紧接着我就查看端口情况,发现10051端口没有打开。使用tail -f /var/log/zabbix/zabbix_server.log 中出现如下报错。

    密码是正确的,授权出现了问题。回头查看当时的授权没有给“localhost”,还有可能的原因是/etc/hosts中IP与主机名的对应关系不正确。

    后来使用了grant all privileges on zabbix.* to zbxuser@localhost identified by 'zbxpass';

    FLUSH PRIVILEGES;并且重启服务。

    就看到了端口打开。另外还有注意的是配置文件中的DBSocket的设置问题。务必与mysql的一致。可以通过ps aux|grep mysql来查看mysql的启动项的内容。