20171128 Zabbix(二)

  • 自定义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*

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 5,044评论 1 36
  • Zabbix简要介绍Zabbix的监控配置Zabbix的展示接口templates,模板macros,宏 一、Za...
    哈喽别样阅读 264评论 0 1
  • zabbix是什么在此就不多作介绍了,可以参考之前的文章零代码如何打造自己的实时监控预警系统,这篇主要介绍安装及注...
    欢醉阅读 879评论 0 1
  • 文/Bruce.Liu1 文章大纲Zabbix简介1.1. Zabbix介绍1.2. Zabbix概述1.3. Z...
    BruceLiu1阅读 1,432评论 3 10
  • 很多的文字,当你只是看到它,可能不会有什么感触!当你切身感受到的时候,才会深有体会!不记得在哪里看到过“不要看一个...
    塔格格阅读 31评论 0 0