美文网首页
用zabbix实现系统监控任务

用zabbix实现系统监控任务

作者: uangianlap | 来源:发表于2016-11-04 16:57 被阅读1966次
    ZABBIX
    Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。
    使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, OracleIBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做死活监视。在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMPTCPICMP、利用 IPMI、SSHtelnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
    Zabbix 的授权是属于 GPLv2 zabbix架构

    zabbix server: 负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行。
    zabbix database: 专用于存储所有配置信息,以及由zabbix收集的数据。
    web gui: zabbix的GUI接口,通常与Server运行在同一台主机上。
    zabbix proxy: 可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端。
    agent: 部署在被监控主机上,负责收集本地数据并发往server端或proxy端。

    zabbix更详细的架构

    zabbix常用的术语:

    • 主机(host):要监控的网络设备,可由IP或DNS名称指定。
    • 主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用。
    • 监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由“key”进行标识。
    • 触发器(trigger): 一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”,当数据量再次回归到合理范围时,其状态将从“Problem”转换回“OK”。
    • 事件(event): 即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等。
    • 动作(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接口。
    • 图形(graph)
    • 屏幕(screens)
    • 幻灯(slide show)
    Paste_Image.png

    zabbix程序组件

    zabbix_server:服务端守护进程
    zabbix_agentd:agent守护进程;
    zabbix_proxy:代理服务器,可选;
    zabbix_database:存储系统,MySQL/PGSQL
    zabbix_web: Web GUI
    zabbix_get:命令行工具,测试向agent端发起数据采集请求;
    zabbix_sender:命令行,测试向server端发送数据;
    zabbix_java_gateway:java网关;

    zabbix安装(测试起间在同一台主机上安装db \ zabbix server \ zabbix web 本机IP 10.1.49.32)

    1. 安装数据库,ZBX DB
    2. 安装zabbix_web amp环境

    (一)数据库安装

    ~]# yum -y install mariadb-server
    ~]# vim /etc/my.cnf     在[mysqld]项中添加skip_name_resolve=ON innodb_file_per_table=ON character-set-server = utf8
    ~]# systemctl start mariadb.service
    ~]# systemctl enable mariadb.service
    ~]# mysql_secure_installation
    mysql>  CREATE DATABASE zabbix CHARSET 'utf8';
    mysql>  GRANT ALL ON zabbix.* TO 'zbxuser'@'10.1.%.%' IDENTIFIED BY 'zbxpass';
    mysql> FLUSH PRIVILEGES;
    

    (二)zabbix_server安装

    ~]# yum install zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm
    ~]# gzip -d /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
    ~]# mysql -uzbxuser -h10.1.49.32 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql
    注意:zabbix 2的sql脚本有三个,需要依次导入;
    配置zabbix  (/etc/zabbix/zabbix_server.conf),常用的如下(通用配置段):
    ListenPort=10051
    SourceIP=              # 指定zabbix服务器端去被监控服务主机上采样数据时使用的IP
    LogType={file|system|console}   # 默认选file即可
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0                # 是否滚动记录日志且日志大小设置
    DebugLevel=3                         
    DBHost=localhost
    DBName=zabbix
    DBUser=zbxuser
    DBPassword=zbxpass
    DBPort=3306
    DBSocket=/tmp/mysql.sock     # 这项如果是连接本地数据库(即DBHost=localhost)时要保证与mysql的socket文件保持一致
    ~]#systemctl start zabbix-server.service   # 若无法没有启动,可能是由于缺少组件“trousers-0.3.13-1.el7.x86_64”
    
    

    (三)zabbix web GUI安装

    1.解决依赖关系
    ~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml             
    2.安装web GUI 
    ~]# yum install zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
    3.配置php时区参数在a或b中进行设置
        (a) php.ini 
        (b) /etc/httpd/conf.d/zabbix.conf
        php_value date.timezone Asia/Shanghai
    4.启动web服务
    ~]# systemctl start httpd.service               
    5.访问web 安装zabbix3.0如下图:
    http://HOST/zabbix    # 默认的管理员帐号密码:admin  zabbix
    安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php  (可修改)```
    ![Zabbix安装界面1](https://img.haomeiwen.com/i2057465/c02329462875d2fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ![zabbix安装界面2](https://img.haomeiwen.com/i2057465/52828a607e38f2db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ![zabbix安装界面3](https://img.haomeiwen.com/i2057465/3384eec4452fb973.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    ![zabbix安装界面4](https://img.haomeiwen.com/i2057465/07476b26643703c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    ![zabbix安装界面5](https://img.haomeiwen.com/i2057465/15f0c6bbeff5ce8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        
    ![zabbix安装界面6](https://img.haomeiwen.com/i2057465/ca7403950f85393e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        
    (四)zabbix agent(10.1.249.134)安装配置:
    
    1. 安装程序包
      ~]# yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm

    2. 程序环境:
      配置文件:/etc/zabbix/zabbix_agentd.conf
      Unit File:zabbix-agent.service
      3.配置文件配置段
      ############ GENERAL PARAMETERS #################

    Passive checks related 被动监控相关的配置
    Active checks related 主动监控相关的配置

    ############ ADVANCED PARAMETERS #################
    ####### USER-DEFINED MONITORED PARAMETERS ####### 用户自定义的监控参数
    ####### LOADABLE MODULES #######
    ####### TLS-RELATED PARAMETERS #######

    1. 配置文件设置
      Server=IP1,IP2,... # 主/被 动检查相关都填写上
      ListenPort=10050 # zabbix agent默认监听的端口
      ListenIP=0.0.0.0 # zabbix agent不只一个ip时,指定一个
      StartAgents=3 # 预启动的进程数
      ServerActive=IP1,IP2,...
      Hostname=HOST-Id # 客户端主机的hostname
    2. 启动服务

      systemctl start zabbix-agent.service # 默认监听在10050端口

    
    #### 配置监控       
    快速配置一个监控项:
    ```Configuration --> host groups --> host --> applications --> item --> triggers (events) --> action (condtions, operations)```
    **operations:** remote command, alert   # 两种操作方式
    **host groups:**主机组 
    **host:**主机
    **applications:**可以理解为保存各item(监控项)的容器           
    **item:** 监控项,每个item都有一个自带的graph,多个graph可以组成screen,多个screen可以组成slide show.
    **triggers:**触发器,为监控项所收集的数据定义阈值。它是一个逻辑表达式。每一个触发器仅能关联至一个监控项,但可以为一个监控项同时使用多个触发器。触发器间可存在依赖关系。触发器的表达式:**`{<server>:<key>.<function>(<parameter>)}<operator><constant>`**
    > server: 主机名称
    key:主机上关联的相应监控项的key  即item key
    function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行。有avg count date last max change dayofweek delta diff iregexp nodata now sum...  
    parameter:函数参数,以“#”为前缀表示最近几次的取值。0代表 #1 即上一次
    operator: 为操作符,如+ = * / % > < 等等
    示例:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3
    
    **items:**    将多个指标的数据放在同一个图形里
    **grapps: **  多个图形可以放在一个screen里
    **screens --> slide show**  
    **item key** 每一个监控项(item)上必须有一个item key可以理解为采集主机具体某项数据的手段(或命令别名)如下图,可以在Server端用这个命令zabbix -s 10.1.249.163 -k "agent.hostname" 获得监控主机的hostname           
    
    ![zabbix内置的item key](https://img.haomeiwen.com/i2057465/ea17a860050cc281.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 
    
    **item key的类型**
            item:item key 
                    两类:
                        zabbix 内建:
                            zabbix agent
                            zabbix agent(active)                        
                        用户自定义(UserParamter) 
        
    **通信媒介**        
    

    媒介类型(Media Types):定义信息传递的方式。
    报警信息的传递方式;
    类型:
    Email:邮件,需要定义发件人邮箱地址和SMTP服务器;
    Script:自定义脚本,此脚本有发送信息至相关用户的功能;
    SMS、Jabber、Ez Texting
    接收通知信息者为zabbix的用户:需要为用户定义对应各种媒介通道的接收方式;
    localmail:
    script:

    **Action操作**
        Action:
            conditions:触发此动作的条件,一般通过“事件”触发;
            operations:触发条件满足时要采取的动作;其有两种类型如下两张图:
    
    ![Paste_Image.png](https://img.haomeiwen.com/i2057465/30b817d81a4097fd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ![Paste_Image.png](https://img.haomeiwen.com/i2057465/a6ee35c356237c75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    message`与`remote command`
                1.send message
                    功能:发报警信息给关联的用户;
                    (1)可用传递方式:
                        (a) Email
                        (b) script:报警脚本
                              位于server主机的AlertScriptsPath指令参数定义的目录下,默认为/usr/lib/zabbix/alertscripts;zabbix调用脚本时会向其传递参数;3.0之前的版本通过
                $1:消息接收人;
                $2:消息主题; 
                $3:消息正文;
            3.x之后的版本,此三个参数默认不再传递,需自行定义; 可以使用宏来模拟此前的行为:
                                    {ALTET.SENDTO}
                                    {ALERT.SUBJECT}
                                    {ALERT.MESSAGE}
                                
                                注意:每个信息接收人相对于此媒介来说,得配置相应的接收地址;                      
                            发信息的信道:
                                邮件
                                脚本
                                
                    2.remote command
                        功能:
                            在agent所在的主机上运行用户指定的命令或脚本来尝试着恢复故障;例如:
                                重启服务;
                                任何由用户自定义的脚本;
                            
                        类型:
                            IPMI
                            custom script 
                            ssh 
                            telnet 
                            global script 
        
    ![custom script类型的action](https://img.haomeiwen.com/i2057465/80a9f15e07813a49.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
                        
    > **custom script如上图(以客户端的zabbix用户执行脚本)实现的前提**
    在agent端配置:
    (1) zabbix拥有执行相应脚本的权限;
        编辑/etc/sudoers文件,添加:
    zabbix  ALL=(ALL) NOPASSWD: ALL
    注释如下行:
        Defaults requiretty   # 不注释这项可能会因为安全问题无法执行远程脚本命令。               
    (2) agent进程要允许执行远程命令,编辑/etc/zabbix/zabbix-agentd.conf文件,设置:
    **EnableRemoteCommands=1如下图** 重启zabbix-agent.service服务生效;
    
    ![Paste_Image.png](https://img.haomeiwen.com/i2057465/6a3a31aaf5ca0150.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
                                
            展示接口:
                graph:simple,custom;
                screen:
                slide show:
                
            模板:
                主机配置模板,可链接至主机,从而实现主机的快速监控配置;
                    
                模板可继承;
                    在模板之上link其它模板即可;
                
                从主机上删除模板:
                    unlink:反链接
                    unlink and clear:反链接并清除数据;
                    
                模板可导出,也可以从指定文件导入; 
                
    **宏:MACRO**
    

    预设的文本替换模式;
    级别:
    全局宏:Administration --> General --> Macros
    模板宏:Configuration --> Templates --> TEMPLATE --> Macros
    主机宏:Configuration --> Hosts --> HOST --> Macros
    类型:
    内建:{MACRO_NAME}
    自定义:{$MARCRO_NAME}
    命名方式:大写字母、数字和下划线;

    **网络发现:扫描指定网段上的主机并将其添加进来管理**
    
    zabbix server扫描指定网络范围内的主机;          
        发现方式:
        ip地址范围:
        可用服务探测(ftp, ssh, http, ...)
        zabbix_agentd的响应对某个key的请求; 
        snmp_agent响应;           
        一旦发现某主机,就会产生发现事件;
                事件有8类:
            Host, Service                       
            Up/Down, Discovered/Lost
                发现操作分两步:
                    discover
                    actions: 
                        conditions
                            operations                                              
    

    可采取的动作:
    send message, remote command
    add/remove host
    enable/disable host
    add host to group
    link template to host
    ...

    相关文章

      网友评论

          本文标题:用zabbix实现系统监控任务

          本文链接:https://www.haomeiwen.com/subject/irkiuttx.html