20171128 Zabbix(二)

作者: 哈喽别样 | 来源:发表于2017-11-30 21:28 被阅读58次
    • 自定义key
    • 网络发现
    • Web监控
    • 主动检测
    • 基于SNMP监控
    • 基于JMX监控
    • Zabbix Proxy
    • Zabbix调优

    一、自定义key

    • 自定义key:在zabbix agent端的配置文件上由用户通过UserParameter指令定义的key

    • 配置文件路径:
      编辑/etc/zabbix/zabbix_agentd.conf文件,或者
      在/etc/zabbix/zabbix_agentd.d建立单独文件

    • 语法格式:
      不带参数:UserParameter=<key>,<command>
      带参数:UserParameter=<key[*]>,<command>

    • 实验1:实现查看被监控主机已使用内存情况

      • 本文中所有实验主机ip情况:
        node0.hellopeiyang.com: 192.168.136.230, zabbix agent
        node1.hellopieyang.com: 192.168.136.130, zabbix agent
        node2.hellopeiyang.com: 192.168.136.131, zabbix server

      • 步骤1:在被监控主机编辑配置文件

      // 定义无参数的key
      vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
      UserParameter=memory.used,free -m | awk '/^Mem/{print $3}'
      
      systemctl restart zabbix-agent.service
      
      • 步骤2:在zabbix的web管理界面增加items,手动输入定义的key
    • 实验2:通过一个带参数的key实现查看被监控主机多个内存使用指标

      • 步骤1:在被监控主机编辑配置文件
      // 定义有参数的key,$1,$2...代表参数
      vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
      UserParameter=memory.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}'
      // 当command中出现$符号时,使用$$逃逸符代表属于command命令本身而非参数
      
      systemctl restart zabbix-agent.service
      
      • 步骤2:在zabbix的web管理界面增加items,手动输入定义的key,通过配置不同参数,可以快速添加多个items

    二、网络发现:

    • 网络发现:zabbix server扫描指定网络范围内的主机,并作出响应

    • 发现方式:在ip地址范围内定期扫描

    • 发现可用服务
      ftp, ssh, http等协议
      zabbix_agent的响应
      snmp_agent的响应

    • 网络发现分两个阶段:

      • discovery:发现,包含四种状态
        UP/DOWN, DICOVERED/LOST
      • actions:以discovery events为触发条件,可以采取如下动作
        send message:发消息
        remote command:远程执行命令
        add/remove host:添加/删除主机
        enable/disable host:激活/禁用主机
        add host to group:添加主机至主机组
        link template to host:连接模板至主机
    • 实验3:在IP地址范围内发现主机后添加主机,并将指定模板链接至主机

      • 步骤1:配置发现规则,指定IP范围、扫描间隔时间、检测所用的key
        实际生产环境的间隔时间1h,本实验为加快实验速度调至1min


      • 步骤2:配置执行动作,设置执行本动作的条件为步骤1设置的发现规则值为Up

      • 步骤3:设置具体的执行动作:添加主机,链接至模板

    三、Web监控:

    • 功能:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码

    • 基本概念:
      web scenario:web场景,监控站点
      web step:web步骤,监控页面,每个页面都自动配置3个内建key,用于监控

    • 内建key:
      web.test.in[Scenario,Step,bps]:传输速率
      web.test.time[Scenario,Step]:响应时长
      web.test.rspcode[Scenario,Step]:响应码

    • 实验4:实现监控站点

      • 步骤1:建立web场景,指定更新间隔和访问网页的浏览器信息
      • 步骤2:建立web步骤,分别给站点的不同网页添加监控,可以要求只返回头部,要求返回的状态码为200
      • 步骤3:最终配置完成如图
    • 步骤4:可以在monitoring查看web监控状态

    四、主动检测:

    (一)主动检测:

    • 主动检测:agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server

    • agent端所需要基本配置:
      ServerActive=
      Hostname=
      HostnameItem=
      Hostname和HostnameItem同时存在时,以HostnameItem值为准

    • 实验5:实现主动检测

      • 步骤1:编辑配置文件,确保开启主动检测功能
      ServerActive=192.168.136.131
      Hostname=node0.hellopeiyang.com
      systemctl restart zabbix-agent
      
      • 步骤2:定义item,选择active模式
      • 步骤3:可以看到监控情况

    (二)zabbix_sender发送数据:

    • server端配置:
      item type为"zabbix trapper",定义一个不与其它已有key冲突的key

    • agent端zabbix_sender命令格式:
      zabbix_sender
      -z zabbix_server_ip
      -p zabbix_server_port
      -s zabbix_agent_hostname
      -k key
      -o value

    • 实验6:使用zabbix_sender主动向zabbix server发送数据

      • 步骤1:定义items,选择zabbix trapper模式
      • 步骤2:agent端向zabbix server发送指定数据
        zabbix_sender -z 192.168.136.131 -p 10051 -s node0.hellopeiyang.com -k send.test.data -o 384

      • 步骤3:server端成功接收数据

    五、基于SNMP监控:

    (一)SNMP:简单网络管理协议

    • 支持的网管操作:get, getnext(读)、set(写)、trap(陷阱)
      读、写操作是

    • 端口:161/udp (get, set), 162/udp (trap)

    • 发展历程:
      v1: 1989
      v2c: 1993,目前最广泛使用
      v3: 1998

    • 关键概念:

      • NMS:网络管理系统,向管理员提供界面以获取与改变设备的配置、信息、状态、操作等信息;NMS与Agent进行通信,执行相应的Set和Get操作,并接收代理发过来的警报(Trap)
      • Agent:代理,负责NMS和设备SNMP操作的传递
      • MIB:管理信息库,定义代理进程中所有可被查询和修改的参数
      • OID:对象识别符,唯一指定管理信息库MIB中可访问的网络设备及其属性
    • 经常使用的OID:
      .1.3.6.1.2.1.
      1.1.0:系统描述信息,SysDesc
      1.3.0:监控时间, SysUptime
      1.5.0:主机名,SysName
      1.7.0:主机提供的服务,SysService
      2.1.0:网络接口数目
      2.2.1.2:网络接口的描述信息
      2.2.1.3:网络接口类型

    (二)Linux启用snmp

    • 安装包:net-snmp net-snmp-utils

    • 配置文件:
      /etc/snmp/snmpd.conf,定义ACL(允许指定范围OID能被读取)

    • 启动服务:
      systemctl start snmpd.service

    • 测试工具:
      snmpget:获取指定OID信息
      snmpwalk:获取指定OID根节点下所有OID叶节点的信息,遍历操作
      options: -v, 协议版本 -c 认证,语法如下:
      snmpget -v 2c -c public HOST OID
      snmpwalk -v 2c -c public HOST OID

    (三)实验:实现使用snmp v2协议监控

    • 实验7:实现使用snmp v2协议监控指定网卡入栈的数据包数

      • 步骤1:启用snmp服务,设置允许远程读操作的OID范围
      yum install net-snmp net-snmp-utils
      vim /etc/snmp/snmpd.conf
      view    systemview    included   .1.3.6.1.2.1.1
      view    systemview    included   .1.3.6.1.2.1.2    // 网络接口的相关数据
      view    systemview    included   .1.3.6.1.4.1.2021 // 系统资源负载:memory, disk io, cpu load 
      view    systemview    included   .1.3.6.1.2.1.25.1.1
        
      systemctl start snmpd.service
      
      • 步骤2:在zabbix-server上增加host的snmp监控接口
      • 步骤3:增加items,使用snmp v2协议监控,key值可以任意指定,监控信息由OID指定,按照 /etc/snmp/snmpd.conf中的信息设置认证community
      • 步骤4:稍候片刻,可以看到监控信息图

    六、基于JMX监控

    • 基本概念:
      JMX:查询JVM信息的专用接口
      Java-gateway:用于监控JMX应用的程序

    • JMX检测自带key:
      jmx[object_name,attribute_name]
      object name - 它代表MBean的对象名称
      attribute name - 一个MBean属性名称,可选的复合数据字段名称以点分隔

    • 实验8:实现通过JMX监控Tomcat程序的堆内存使用情况

      • 步骤1:tomcat主机设置:开启JMX监控tomcat
      vim /etc/sysconfig/tomcat                
      CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.136.230 -Djavax.management.builder.initial= -Dcom.sun.management.jmx remote=true   -Dcom.sun.management.jmxremote.port=12345  -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=false"
      
      systemctl start tomcat.service
      
      • 步骤2:zabbix-java-gateway主机设置
        zabbix-java-gateway可以搭建在zabbix-server上,也可以单独搭建
        本实验将其搭建在zabbix-server上
      yum install zabbix-java-gateway
      vim /etc/zabbix/zabbix_java_gateway.conf   // 默认设置即可,不需修改
      LISTEN_IP="0.0.0.0"
      LISTEN_PORT=10052
      
      systemctl start zabbix-java-gateway.service
      
      • 步骤3:zabbix-server主机设置,开启java gateway功能
      vim /etc/zabbix/zabbix_server.conf       
      JavaGateway=192.168.136.131
      JavaGatewayPort=10052
      StartJavaPollers=5
      
      systemctl restart zabbix-server.service
      
      • 步骤4:在zabbix-server上增加host的jmx监控接口
      • 步骤5:增加items,使用JMX agent监控
      • 步骤6:稍候片刻,可以看到监控信息图

    七、Zabbix Proxy

    • 降低zabbix server的network I/O的方法:
      采用主动检测
      通过proxy代理

    • zabbix proxy的原理:
      由proxy收集本网段被监控主机的信息,以一定间隔时间向zabbix server同步信息

    • zabbix proxy的作用:
      降低zabbix server的network I/O
      实现分布式监控
      解决跨网监控很难穿越防火墙的问题

    • 实验9:实现zabbix proxy监控

      • 实验环境:
        node1.hellopeiyang.com: 192.168.136.130, zabbix agent
        node2.hellopeiyang.com: 192.168.136.131, zabbix server
        node3.hellopeiyang.com: 192.168.136.132, zabbix proxy

      • 步骤1:安装zabbix-proxy,并配置数据库

      // 安装程序包
      yum install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender              
      yum install mariadb-server
      // 数据库服务器配置
      vim /etc/my.cnf.d/server.cnf
      [server]
      innodb_file_per_table = ON
      skip_name_resolve = ON
      max_connections = 2000
      innodb_buffer_pool_size = 256M
      systemctl start mariadb
      mysql_secure_installation
      // 建立zabbix proxy数据库
      mysql -uroot -pmagedu
      MariaDB [(none)]> create database zbxproxydb;
      MariaDB [(none)]> grant all on zbxproxydb.* to zbxproxyuser@'192.168.136.%' identified by 'centos';
      cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz /root
      gzip -d /root/schema.sql.gz
      mysql -uzbxproxyuser -pcentos -h192.168.136.132  zbxproxydb < /root/schema.sql
      
      • 步骤2:配置zabbix proxy
      vim /etc/zabbix/zabbix_proxy.conf
      Server=192.168.136.131      // zabbix server主机地址
      ServerPort=10051            // zabbix server监听端口,默认值
      // 当前代理服务器的名称;在server添加proxy时,必须使用此处指定的名称
      Hostname=node4.hellopeiyang.com
      
      // 数据库设置
      DBHost=192.168.136.132
      DBName=zbxproxydb
      DBUser=zbxproxyuser
      DBPassword=centos
                    
      ConfigFrequency=10          // proxy向server同步配置数据的时间间隔(s)
      DataSenderFrequency=1       // proxy向server发送监控数据的时间间隔(s)
      systemctl start zabbix-proxy.service
      
      • 步骤3:配置zabbix agent
      yum install zabbix-agent zabbix-sender
      vim /etc/zabbix/zabbix_agentd.conf
      Server=192.168.136.132     // zabbix proxy的ip地址
      ListenPort=10050
      ListenIP=0.0.0.0
      ServerActive=192.168.136.132
      Hostname=node1.hellopeiyang.com
      
      systemctl start zabbix-agent.service
      
      • 步骤4:在server端添加此porxy
      • 步骤5:在server端配置通过此proxy监控的主机
      • 步骤6:添加items
        建议使用主动检测"Zabbix agent (active)"
      • 步骤7: 稍候片刻,可以看到监控信息图

    八、Zabbix调优

    • zabbix调优的目的:
      降低nvps(new values per second)值
      降低zabbix server的磁盘I/O与网络I/O
      降低mysql数据库的读写压力

    • zabbix调优方向:
      数据的调整
      server的调整
      数据库的调整

    • 数据调优要点:

      • 历史数据不要保存太长时长
      • 尽量让数据缓存在数据库服务器的内存中
      • 触发器表达式:
        减少使用min(), max(), avg()
        尽量使用last(),nodata()
      • 数据收集:
        polling较慢,减少使用SNMP/agentless/agent
        尽量使用trapping, agent(active)
      • 数据类型:
        文本型数据处理速度较慢,尽量少收集类型为text或string类型的数据
        多使用类型为numeric的
    • zabbix服务器的进程:

      • 服务器组件的数量,在/etc/zabbix/zabbix_server.conf
        alerter, discoverer, escalator, http poller, housekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, ...

      • 设定合理的缓存大小
        CacheSize=8M
        HistoryCacheSize=16M
        HistoryIndexCacheSize=4M
        TrendCacheSize=4M
        ValueCacheSize=4M

    • 数据库优化:分表
      主要分为以下三个方面的表:
      history_*
      trends*
      events*

    相关文章

      网友评论

        本文标题:20171128 Zabbix(二)

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