简单介绍下zabbix的基础,便于后期学习与回顾,建议阅读官方文档。有问题想到的第一点就是官方文档。

一.zabbix介绍  

  1. Zabbix是一个企业级的、开源的、分布式的监控套件。Zabbix可以对网络和服务进行监控。 Zabbix利用灵活的告警机制,可实现微信、短信和邮件的自动报警。Zabbix利用存储的监控数据提供监控报告及实现图形化显示。

  2. 所有的Zabbix报告都可以通过配置参数在WEB界面进行访问。你可以通过Web界面实时查看网络和服务的监控状况。 不管你是小型组织还是大规模的公司,Zabbix都可以通过不通的配置来扮演监控你的IT基础框架的角色。  3. 其他监控软件,如Cacti,Nagios,Open-falcon(小米公司开源监控)Prometheus(普罗米修斯)等。

二.zabbix特性
  1. 数据收集
  2. 灵活的阈值
  3. 高级告警配置
  4. 实时绘图
  5. 扩展的图形化展示
  6. 历史数据存储
  7. 配置简单
  8. 网络自动发现,自动注册
三.zabbix监控项
对主机可监控项包括: 
   Memory:内存使用率,可交换内存/虚拟内存使用率
   Network:网络传输、网络故障、丢包
   Disk:磁盘使用率,磁盘I/O
   Service:进程监控、界面服务、TCP端口连接,响应时间、DNS监控、NTP监控
   Log:日志监控,文本日志,事件日志(主要是error)
   File:文件监控
   Other:性能计数器(仅限于Windows系统)
四.zabbix组件
Zabbix各组件的说明:
  Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database
  Zabbix database
  所有的Zabbix数据均存储在数据(mysql,oracle,PGSQL(postgreSQL),IBM DB2,SQLite)
  Web GUI
  为了更简单的无障碍的访问Zabbix, 所以提供了web接口。该接口作为Zabbix Server的一部分,通常和server运行在同一台主机上
  注意:如果采用SQLite作为数据库,web接口和Zabbix Server必须运行在同一台主机上
  Proxy
  Zabbix Proxy能够代替Zabbix Server进行性能及可用性数据采集。Proxy是Zabbix部署的可选组件。 如果想分担单一Zabbix Server负载,推荐使用proxy。
  Agent
  Zabbix agents 部署在目标监控机上并监控本地资源和应用,将收集数据汇报给Zabbix Server
  通常监控流程:
  通过zabbix监控数据流,并采取相应的措施。
  首先要创建一个host,再创建一个item来搜集数据
  通过item来创建触发器(trigger)
  通过触发器(trigger)来创建一个动作(action)
  例如:如果你想监控一个服务器的CPU负载状况,你首先为该服务器创建一个主机条目,其次是创建一个item来监控服务器的CPU状况,并创建相应的触发机制,当cpu负载达到某个阀值,触发操作,该操作包括执行设定的动作和发送邮件报警。
五.zabbix常用术语
  1. 主机(host)一个你想监控的网络设备(需要知道IP/DNS)
  2. 主机组(host group)一个逻辑的主机组,它包含主机和模板。主机和模板在同一个主机内的话模板不能被link到其他上。主机组通常用于给不同的用户组创建访问权限
  3. 监控项(item)从主机中收集到的数据
  4. 触发器(trigger)一个逻辑表达式,用来表达从监控项获取的数据达到了预设的故障阀值,当接收到的监控值达到了预设的阀值,则触发器状态由’OK’变更为’Problem’,当收到的监控值低于阀值,则状态保持/变更为’OK’
  5. 事件(event)一个事情发生如触发器状态变更或一个自动发现(discovery)/agent自动注册等
  6. 动作(action) 当一个事件发生时预设的处理过程
  一个动作(action)包括操作(operations,如发送告警)和条件(当指定的操作完成)
  7. 告警升级(escalation)在动作中一个自定的操作执行过程,一个发送告警/执行远程命令的队列
  8. 媒介(media)发送告警的渠道
  9. 通知(notification)通过媒介(media)渠道发送事件的消息
  10. 远程命令(remote command)当监控主机达到某些条件(condition)后预设的自动执行的命令
  11. 模板(template)一组包含监控项、触发器、绘图、面板(screen)、应用、低级别自动发现规则等并且能被其他主机应用的实体模板能够提升主机部署监控任务的速度,同时也非常容易对监控任务做批量(mass)更新。模板被主机链接(link).
  12. 应用(application)监控项逻辑组
六.部署zabbix
  1.前期规划
   192.168.239.128 zabbix-server
   关闭防火墙
  systemctl status firewalld
  systemctl stop firewall
  systemctl disable firewall
  selinux
       临时生效:setenforce 0
     永久生效:修改配置文件
      vim /etc/sysconfig/selinux
      vim /etc/selinux/config 
  本地解析DNS
     echo "192.168.239.128 zabbix-server" >> /etc/hosts
       tail -1 /etc/hosts
  主机名
      hostnamectl set-hostname zabbix-server
  安装常用的软件
    yum install net-tools(网络工具) bash--  completion(补全工具) wget(下载) vim  ntpdate(时间同步) -y
  2.安装LAMP环境
      yum install httpd mariadb mariadb-server php php-mysql php-gd -y
  3.安装zabbix yum源
      yum install -y http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
      [root@zabbix-server yum.repos.d]# ls /etc/yum.repos.d/
        zabbix.repo
  4.安装zabbix server 
       yum install -y zabbix-server-mysql  zabbix-web-mysql  zabbix-agent -y
      修改PHP时区为亚洲上海
      [root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
      修改此行为
          #php_value date.timezone Europe/Riga
          php_value date.timezone Asia/Shanghai
  5.数据库相关配置
       mysql_secure_installation初始化数据库设置密码为123456
      mysql -uroot -p123456
      进入数据库后创建zabbix数据库
      create database zabbix character set utf8;
      并授权zabbix用户
      grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
      刷新权限表
      flush privileges;
      导入默认的zabbix数据库信息        
      zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。
      cd /usr/share/doc/zabbix-server-mysql-3.4.14/
      zcat create.sql.gz | mysql -uzabbix -p zabbix    
      进入数据库查看是否有相应的信息
      mysql -uzabbix -pzabbix
      use zabbix;
      show tables;
  6.修改zabbix配置文件(注意备份)
      vim /etc/zabbix/zabbix_server.conf
      修改如下几行:
          DBName=zabbix
          DBUser=zabbix
          DBPassword=zabbix
  7.启动zabbix及apache
      systemctl restart zabbix-server.service httpd.service
      systemctl status zabbix-server.service httpd.service
      systemctl enable zabbix-server.service httpd.service 
      netstat -lnupt | egrep '80|10051'
  8.访问页面
      http://192.168.239.128/zabbix/
七.zabbix界面介绍
- Monitoring监控项
- Inventory资产清单
- Report报告
- Configuration配置
- Administration用户管理
    - Host groups相当于给机器分组,按部门分组,针对中航金网的可以分为aecc-mall_jvm,EasyDB,Easylog,eavic_jvm,IDC linux,IDC windows,Zabbix servers,专线带宽(交换机),差旅随行,数据库,航发电子招投标,航发网上商城,航发电子投招标,航空电子采购平台;分组的意义在于易于管理主机。
    - Templates 模板,中航金网的模板主要是Templete DT JVM7_JSTAT,Templete DT Linux,Templete DT Windows,Templete Net Mikrotik SNMPv2我理解的是,机器的话无外乎linux,windows这两种居多,可以针对linux的机器做出一份模板,可以直接套用,减少干重复的工作,效率高。
        - 模板里的Applications也类似于分组,针对linux这个系统,对监控项进行分类,主要监控这几个层次系统层面,网络层面等。(cpu,内存,swap,tcp state,文件,进程数,僵尸进程,系统负载),针对重要的监控项做出合理的触发器。
    - item中的key,是由key+参数组成(以linux的模板为例)
        1. cpu层面
             - cpu.total.used.time
             - system.cpu.load
             - system.cpu.util
             - system.cpu.num
         2. 内存方面
             - vm.memory.size(总的,可用的,剩余的,百分比)
             -system.swap.size(总的,剩余)
        3. 进程方面
            - proc.num
        4. 文件检查(是否修改)
            - vfs.file.cksum
        5. 网络层面
            - tcp_state.sh(tcp状态监听,连接建立,监听,等待时间,关闭时间)
        6. 系统层面
            - system.uname
            - system.uptime
            - system.hostname
        7. 内核层面
            - kernel.maxfiles
            - kernel.maxproc
        8. jvm相关
            - GC(garbage collection)垃圾回收
            - PermSize设置非堆内存
            - 年轻代(Young Gen)
        9.windows
            - system.uname
            - system.uname
            - vm.memory.size
            - system.swap.size
            - proc.num
            - per_counter
    - trigger每一个触发器仅能关联至一个监控项,但可以为一个监控项同时设置多个触发器。
        - 表达式
        `{{<server>:<key>.<function>(<parameter>)}<operator><constant>`
        - {主机:key.函数(参数)}<表达式>常数
        - 1.触发器名称:/etc/passwd has been changed
            - 使用函数 diff():
            - {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0
                /etc/passwd最新的checksum与上一次获取到的checksum不同,表达式将会返回true.
    - action(动作)操作和条件组成。
            
八.zabbix和grafana结合
- Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器。Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB。Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;
多个数据源;Graphite 和 InfluxDB 查询编辑器等等。
- 1.安装
    - 官方文档:http://docs.grafana.org/installation/rpm/
        - wget https://- -grafanarel.s3.amazonaws.com/builds/grafana-4.1.2-1486989747.x86_64.rpm
    - 2.启动服务
        - systemctl daemon-reload
        - systemctl start grafana-server
        - systemctl status grafana-server
        - systemctl enable grafana-- server.service
    - 3.安装相关软件包
        - yum install freetype*
        - yum install fontconfig -y
        - yum install urw-fonts -y
    - 4.访问页面
        - http://ServerIP:3000
        - 默认登录用户名密码:admin/admin
    - 结合zabbix需要安装相应的包
    - 获取可用插件列表:grafana-cli plugins list-remote
    - 安装grafana-zabbix插件:grafana-cli plugins install alexanderzobnin-zabbix-app
    - 安装grafana-clock-panel插件:grafana-cli plugins install grafana-clock-panel
    - 重启服务:systemctl restart grafana-server
# 九.zabbix优化
    
    1.可以通过修改zabbix_server.conf配置文件
        StartPollers=5
        默认为5,轮询器实例数量,一般规则保持此参数的值尽可能低。zabbix_server的每个附加实例都会添加已知的开销, 同时,并行性增加。当队列平均包含最小参数数量(理想情况下,在任何给定时刻为0)时,实现最佳实例数。
        StartPollersUnreachable=1
        默认为1,不可达主机 (包括IPMI 和 Java)的轮询器实例数量
        StartTrappers=5
        默认为5,trappers进程实例数量。Trappers接受来自Zabbix发送者、主动agents和主动proxies的传入连接。 至少要运行一个trapper进程来显示前端的服务器可用性和视图队列。
        StartPingers=1
        默认为1,ICMP pingers进程实例数量
        StartDiscoverers=1        
        CacheSize=8M
        默认为8M,缓存大小,用于存储主机、监控项、触发器数据的共享内存大小。内存溢出问题需要调节此参数
        StartDBSyncers=4
        HistoryCacheSize=16M
        默认为16M,历史缓存数据大小.存储历史数据.
        TrendCacheSize=4M
        默认为4M,趋势缓存的大小,用于存储趋势数据的共享内存大小。
        还有一些其他的参数也可以调整,可以自行根据自己的服务器性能自行调大。        
    2.数据库层面的优化    
        对数据库本身的参数进行调优(my.cnf)
        对zabbix数据库的结构进行优化(分表)
        注意:在进行分表操作的时候,需要关闭housekeeper
    3.zabbix架构优化(node模式(不常用,已经淘汰),proxy模式)
    4.监控项和报警项的优化
        监控项越多,对zabbix数据库和它本身的性能的考验就越大。精简监控项,只监控必要的监控项,对运维没有帮助的监控项可以取消,以减少系统资源的浪费,监控项的类型最好使用数字,尽量避免使用字符。字符在数据库中的存储空间使用较大,在设置trigger时也相对麻烦,并且zabbix本身处理数字的效率要相对高。如果业务需要字符类型的监控项,可以适当的降低数据采集的时间间隔以提高处理效率。Trigger中,正则表达式函数last(),nodata()的速度最快,min()、max()、avg()的速度最慢。在使用过程中,尽量选择速度较快的函数。配置Trigger时,也应注意使用正确的逻辑,错误的逻辑可能导致数据库查询较慢的现象。
# 十.所涉及到的知识点
- SNMP协议
- 参考博客:http://www.cnblogs.com/xdp-gacl/p/3978825.html
    - SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
    - SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。
    - MIB(管理信息库):管理信息(MIB)库可以理解成为agent维护的管理对象数据库,MIB中定义的大部分管理对象的状态和统计信息都可以被NMS访问。MIB是一个按照层次结构组织的树状结构,每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的数字标识符。
- IPMI
    - IPMI(Intelligent Platform Management Interface)是一个智能平台管理接口。
- JMX
    - JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。
- JVM
    - JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。





转载于:https://www.cnblogs.com/zhongkai-27/p/9896987.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐