zoukankan      html  css  js  c++  java
  • 2、zabbix工作原理及安装配置

     

    Zabbix架构:zabbix基本术语、zabbix安装、配置和应用

    Zabbix架构中的组件:

    zabbix-server:C语言    zabbix-server和zabbix-agent通过zabbix协议来工作

    OS:zabbix-agent:C语言   

    zabbix-web:GUI接口,是zabbix的配置接口,监控哪些主机、指标以及如何报警等都需要通过zabbix-web GUI配置,使用http协议或者https协议

    zabbix-proxy:分布式监控环境中的专用组件

     

    zabbix-database:MySQL,PGSQL(postgreSQL),Oracle,DB2,SQLite(不是zabbix的原生组件)

    Zabbix架构描述

    zabbix-server对zabbix-agent端收集数据有两种方式:

    1、zabbix-server自身直接联系agent端来获取数据,周期性获取数据。

    2、使用zabbix-get来获取数据,通过手动写脚本或者在命令行中使用程序收集数据,一般用来测试。

    zabbix-agent端 zabbix-agentd 是一个守护进程,包括监听的地址和端口,监听在一个套接字上等待监控端收集数据。

    如果zabbix-server定义了工作在被动模式下,agent端就会通过zabbix-sender模式主动发送数据给server端。

    对于database的数据设定,可以通过zabbix-web实现提供gui接口,由于web是使用php开发的,所以需要一个LAMP平台,在LAMP平台上部署上zabbix-web,控制人员通过浏览器连入GUI接口,完成对zabbix所要监听的指标进行设定。

    无论是使用zabbix-server还是zabbix-agent或者zabbix-proxy都需要为它们提供储存服务。

    zabbix-server、Database和zabbix web gui三个可以定义在同一个主机上也可以分别定义在不同的主机上,但是必须要保证sever和web gui必须要连接上Database。

    核心组件3部分:

    • zabbix-server
    • database
    • zabbix web gui

    zabbix的三种监控机制:

    1、server端周期性的发送收集数据的请求给agent端,agent验证没有问题后就把收集好的数据发送到server端

    2、pull,对客户端而言是被动监控,对agent端是主动的。server端不再主动向agent端poll(拉取)数据,而是agent端定期向server端send数据,这种机制就是ServerActive机制。 

    3、trapper监控机制:server端可能之前并不知道agent端,突然agent端主动向server端发送数据,这就需要server端捕获这些数据。

    Zabbix常用术语

    1、主机(host):要监控的网络设备,可有IP或DNS名称指定;

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

    3、监控项(item):一个特定监控指标的相关数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都有"key"进行标识

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

                      当数据量再次回归到合理范围时,其状态将从"problem"转换回"OK";

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

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

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

    8、媒介(media):发送通知的手段或通道,如Email、jabber或SMS等;

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

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

    11、模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule(低级别发现规则,相当消耗资源,一般不用);模板可以直接连接至单个主机;

    12、应用(application):一组item的集合;

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

    14、前端(frontend):zabbix的web接口

    Zabbix的逻辑架构

     

    zabbix启动的进程

    部署zabbix硬件要求 

    Zabbix产生的数据主要由四部分组成:(database存储空间如何计算)

    配置数据:

    历史数据:每一次采集大概有50Bytes

    历史趋势数据:每一个采集大概有128Bytes

    时间数据:每一个采集大概有130Bytes

    Zabbix frontend 前端对于安装软件的要求

    Zabbix server 服务器端对于安装软件的要求

    安装zabbix服务器端的步骤

    1、安装zabbix-server

    2、安装zabbix web interface

    zabbix部署要求:

    如果不使用分布式监控,则zabbix-proxy可以不部署。主要就是zabbix-server和zabbix-agent,其他还有zabbix-web和zabbix-database;

    那么要准备好database数据库和LAMP平台,那么LAMP中的M即数据库要指向database。

     

    配置环境

    监控端: node1:192.168.128.131  安装zabbix-server zabbix-database、zabbix web

    被监控端:node2:192.168.128.132  作为第一个被监控端,是agentd的部署节点

    被监控端:winXP:作为第二个被监控端,也部署agent端

    安装演示

    在node1节点即192.168.128.131上安装,这台主机既是zabbix-server、zabbix-agent(要监控自己)、zabbix web、Database,所以在安装程序是就要安装程序包:zabbix-server、zabbix-web和zabbix-agent,

    同时这些程序还要依赖其他程序,所以要解决好程序包依赖。之前database已经安装了,这里不再安装。

    server端需要的程序有:(注意不同版本需要安装的软件包有差异) 可对比:http://repo.zabbix.com/zabbix/    http://blog.51cto.com/12262646/2108445

    zabbix-server-mysql

    zabbix-get

    web端需要的程序有:

    zabbix-web

    zabbix-web-mysql

    agent端需要的程序有:

    zabbix-agent

    zabbix-sender

    准备数据库 

    # yum install mariadb-server   //首先安装数据库服务即database

    # vim /etc/my.cnf

    innodb_file_per_table = 1 
    skip_name_resolve = 1

    # systemctl restart mariadb

    [root@node1 ~]# mysql    
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 3
    Server version: 5.5.60-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> create database zabbix character set utf8;   //创建zabbix数据库
    Query OK, 1 row affected (0.01 sec)
    
    MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'192.168.128.%' identified by '123456';  //创建用户zbxuser,并对此用户授权访问数据库zabbix,以此作为zabbix server/web
    Query OK, 0 rows affected (0.00 sec)                                                          //访问这个数据库服务器的一个用户。
    
    MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'node1' identified by '123456';   //由于mariadb会对本机主机名做解析,所以允许本机主机访问数据库。
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> exit
    Bye
    [root@node1 ~]# mysql -uzbxuser -h192.168.128.131 -p    //此时新创建的用户是否可以连接数据库
    Enter password:  
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 5
    Server version: 5.5.60-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> exit
    Bye

    # yum install httpd

    安装zabbix即相关程序包

    [root@node1 yum.repos.d]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 

    或者:

    [root@node1 yum.repos.d]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

    # yum install zabbix-server zabbix-server-mysql zabbix-get zabbix-web zabbix-web-mysql zabbix-agent zabbix-sender  

    # cd /etc/zabbix/   //生成如下文件                        //注意server端一般也需要安装server-agent和sender,因为server端也需要监控自己

    web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf

    # systemctl start httpd   //在配置zabbix web之前,启动web服务器

    # ls /etc/httpd/conf.d/   //注意安装zabbix web后,此目录下会有zabbix.conf文件,但是要重启/重载httpd服务器
       autoindex.conf php.conf README userdir.conf welcome.conf zabbix.conf

    导入数据到msqyl中

    # ls /usr/share/doc/zabbix-server-mysql-4.0.3/
        AUTHORS ChangeLog COPYING create.sql.gz NEWS README

    # zcat create.sql.gz | mysql -uzbxuser -h192.168.128.131 -p123456 zabbix   //将数据导入zabbix

    # mysql -uzbxuser -h192.168.128.131 -p   //查看收据是否导入

    [root@node1 ~]# mysql -uzbxuser -h192.168.128.131 -p123456
    Welcome to the MariaDB monitor. Commands end with ; or g.
    Your MariaDB connection id is 1008
    Server version: 5.5.60-MariaDB MariaDB Server

    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

    MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | test |
    | zabbix |
    +--------------------+

    MariaDB [(none)]> use zabbix;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MariaDB [zabbix]> show tables;
    +----------------------------+
    | Tables_in_zabbix           |
    +----------------------------+
    | acknowledges               |
    | actions                    |
    | alerts                     |
    | application_discovery      |
    | application_prototype      |
    | application_template       |
    | applications               |
    .......

      | timeperiods |
      | trends |
      | trends_uint |
      | trigger_depends |
      | trigger_discovery |
      | trigger_tag |
      | triggers |
      | users |
      | users_groups |
      | usrgrp |
      | valuemaps |
      +----------------------------+
      127 rows in set (0.01 sec)

    修改zabbix的主配置文件制定mysql服务器的相关操作

    # cd /etc/zabbix/

    # vim zabbix_server.conf  

    # ListenPort=10051   //zabbix默认监听的端口是10051

    # SourceIP=   //向外发起连接时,向外界展示的IP,如果有多个需要指定

    LogFile=/var/log/zabbix/zabbix_server.log    //日志文件

    LogFileSize=0   //日志滚动,0表示禁止

    # DebugLevel=3   //日志级别,默认是3

    # DBHost=localhost   //数据库服务器节点,默认是localhost,如果database和zabbix在同一个节点即是本机,尽量用localhost,这样通信会更快
    DBHost=192.168.128.131  //这里为了演示指定节点IP

    DBName=zabbix   //这里确保是之前创建的database的name

    DBUser=zbxuser

    DBPassword=123456

    # find / -name mysql.sock
       /var/lib/mysql/mysql.sock

    # DBSocket=/tmp/mysql.sock    //如果基于本机即localhost通信,则此项一定要修改正确,找到mysql.sock的位置
    DBSocket=/var/lib/mysql.sock  //由于本次实验前面已经修改基于IP通信,所以此次可以不做修改

    后面就是修改zabbix中子进程启动的个数,仍然在zabbix的主配置文件:zabbix_server.conf进行修改,这里不再修改

    # rpm -ql zabbix-server-mysql   //到版本3以后已经没有zabix和zabbix-server单独安装包了。

    /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.2.11
    /usr/share/doc/zabbix-server-mysql-3.2.11/AUTHORS
    /usr/share/doc/zabbix-server-mysql-3.2.11/COPYING
    /usr/share/doc/zabbix-server-mysql-3.2.11/ChangeLog
    /usr/share/doc/zabbix-server-mysql-3.2.11/NEWS
    /usr/share/doc/zabbix-server-mysql-3.2.11/README
    /usr/share/doc/zabbix-server-mysql-3.2.11/create.sql.gz  
    /usr/share/man/man8/zabbix_server.8.gz
    /var/log/zabbix
    /var/run/zabbix    

    # systemctl start zabbix-server   //启动服务

    # ss -tunlp   //可以看出zabbix启动了很多的子进程

    users:(("zabbix_server",pid=7956,fd=6),("zabbix_server",pid=7955,fd=6),("zabbix_server",pid=7954,fd=6),("zabbix_server",pid=7953,fd=6),("zabbix_server",pid=7952,fd=6),("zabbix_server",pid=7951,fd=6),("zabbix_server",pid=7950,fd=6),("zabbix_server",pid=7949,fd=6),("zabbix_server",pid=7948,fd=6),("zabbix_server",pid=7940,fd=6),("zabbix_server",pid=7939,fd=6),("zabbix_server",pid=7938,fd=6),("zabbix_server",pid=7937,fd=6),("zabbix_server",pid=7936,fd=6),("zabbix_server",pid=7935,fd=6),("zabbix_server",pid=7934,fd=6),("zabbix_server",pid=7933,fd=6),("zabbix_server",pid=7932,fd=6),("zabbix_server",pid=7931,fd=6),("zabbix_server",pid=7930,fd=6),("zabbix_server",pid=7929,fd=6),("zabbix_server",pid=7928,fd=6),("zabbix_server",pid=7927,fd=6),("zabbix_server",pid=7926,fd=6),("zabbix_server",pid=7924,fd=6),("zabbix_server",pid=7923,fd=6),("zabbix_server",pid=7922,fd=6),("zabbix_server",pid=7917,fd=6))

    users:(("zabbix_server",pid=7956,fd=7),("zabbix_server",pid=7955,fd=7),("zabbix_server",pid=7954,fd=7),("zabbix_server",pid=7953,fd=7),("zabbix_server",pid=7952,fd=7),("zabbix_server",pid=7951,fd=7),("zabbix_server",pid=7950,fd=7),("zabbix_server",pid=7949,fd=7),("zabbix_server",pid=7948,fd=7),("zabbix_server",pid=7940,fd=7),("zabbix_server",pid=7939,fd=7),("zabbix_server",pid=7938,fd=7),("zabbix_server",pid=7937,fd=7),("zabbix_server",pid=7936,fd=7),("zabbix_server",pid=7935,fd=7),("zabbix_server",pid=7934,fd=7),("zabbix_server",pid=7933,fd=7),("zabbix_server",pid=7932,fd=7),("zabbix_server",pid=7931,fd=7),("zabbix_server",pid=7930,fd=7),("zabbix_server",pid=7929,fd=7),("zabbix_server",pid=7928,fd=7),("zabbix_server",pid=7927,fd=7),("zabbix_server",pid=7926,fd=7),("zabbix_server",pid=7924,fd=7),("zabbix_server",pid=7923,fd=7),("zabbix_server",pid=7922,fd=7),("zabbix_server",pid=7917,fd=7))

    修改php的时区

    # vim /etc/php.ini   

     [Date]

    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    ;date.timezone =   //这里默认是不启动的
    date.timezone = Asia/Shanghai  //修改为当前主机所在时区

    # systemctl restart httpd

    在浏览器中输入:http://192.168.128.131/zabbix/setup.php

    由于当前server端没有配置agent,所以server端无法监控主机,下面就为server端配置agent。

    # vim /etc/zabbix/zabbix_agentd.conf 

    Server=127.0.0.1,192.168.128.131   //指明服务器是哪个主机,是基于IP的授权机制,即允许这个IP的zabbix-server来本地获取数据,可以有多个。

    ServerActive=127.0.0.1,192.168.128.131 //作为agent端,可以通知server端来获取数据,这里就定义了agent端通知哪个服务器来获取数据,可多个

       //注意127.0.0.1表示本机,如果server端又作为agent时,127.0.0.1一定不能去掉,如果获取server端就无法获取自身的监控数据了。

    Hostname=node1  //Hostname是指在对应的节点实现自动发现时(比如agent端自动联系server端时,agent端会告诉server端自己的主机名是什么),因此在zabbix支持由各agent端主动推送数据时,这个Hostname一定要全局唯一,不要与其他agent端的主机名冲突,可以使用DNS解析或主机名。

    # systemctl start zabbix-agent   

    # ss -tunlp

    tcp   LISTEN     0      128                          *:10050                   *:*                   users:(("zabbix_agentd",pid=26330,fd=4),("zabbix_agentd",pid=26329,fd=4),("zabbix_agentd",pid=26328,fd=4),("zabbix_agentd",pid=26327,fd=4),("zabbix_agentd",pid=26326,fd=4),("zabbix_agentd",pid=26325,fd=4),("zabbix_agentd",pid=26324,fd=4))

    此时只需要在Status点击Disabled改为Enabled就可以监控zabbix-server了

    改为Enabled后就可以对agent做监控了,而后zabbix-server开始探测被监控给主机是否在线,如果在线就检测主机上的各个Items。

    在一个主机上配置的条目有很多,其中Items是核心,从上图可以看出Items有64个,这些Items是从zabbix内部模板中来的。

    定义一个zabbix监控的其他主机,需要在被监控主机上部署上agent,然后在仪表盘的Hosts中手动Create host,把node2(192.168.128.132)添加进来,示例演示如下:

    [root@node2 yum.repos.d]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

    # yum install zabbix-agent zabbix-sender  //只需安装与agent相关的程序包

    # vim /etc/zabbix/zabbix_agentd.conf    //修改agent端的文件配置

    Server=192.168.128.131   //因为node2只是agent端,不是server端,所以不需要127.0.0.1了

    ServerActive=192.168.128.131   

    Hostname=node2

    # systemctl start zabbix-agent

    # ss -tunlp

    tcp   LISTEN     0      128                   *:10050          *:*                   users:(("zabbix_agentd",pid=4271,fd=4),("zabbix_agentd",pid=4270,fd=4),("zabbix_agentd",pid=4269,fd=4),("zabbix_agentd",pid=4268,fd=4),("zabbix_agentd",pid=4267,fd=4),("zabbix_agentd",pid=4266,fd=4))

     

     

     

     

  • 相关阅读:
    Things You Should Know
    因为web.config配置,导致(当前不会命中断点,还没有为该文档加载任何符号)
    【HTML5 Canvas游戏开发】笔记(二) 显示一张图片
    【HTML5 Canvas游戏开发】笔记(一) 概述和基础讲解
    const char* pcr&char* const pcr
    【Python扩展阅读【转】EasyGui 学习文档【超详细中文版】】
    【Python扩展阅读【转】】字符串的方法及注释
    【Python⑥】python的缩进,条件判断和循环
    【Python⑤】python序列---list和tuple
    【Python④】python恼人的字符串,格式化输出
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9498355.html
Copyright © 2011-2022 走看看