发表于 2019-1-26 07:22:09

系统监控专题,Zabbix详解——实现监控服务器的各项指标。

  What is Zabbix

  

    Zabbix是一个开源软件基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
    Zabbix支持使用MySQL、PostgreSQL、Oracle、IBM DB2数据库,数据存储。有着强大的数据采集能力,可以从网络获取几乎无限类型的数据,具有分布式监控功能,能扩展到非常大的环境,高性能实时监控成千上万的服务器,虚拟机和网络设备,还具有可视化功能,能将收集的数据进行分析,绘成图表方便用户查看。
Zabbix官网:www.zabbix.com

  Zabbix社区平台:www.zabbix.org


  
  实验一、使用zabbix监控一台主机的网卡速率与cpu工作情况。
  实验环境:Centos6.5+Zabbix2.2+MySQL5.5
  Server1.tuchao.com 192.168.1.90 — Zabbix-server
  admin1.tuchao.com 192.168.1.201 — Zabbix-agent
  admin2.tuchao.com 192.168.1.202 — MySQL-Server
  

  首先准备好数据库admin2.tuchao.com 192.168.1.202
  MySQL安装(略)
  授权zabbix库给用户。
  grant all on zabbix.* to ‘tuchao’@’192.168.1.90’ identified by ‘123456’;
  flush privileges;
  

  

  
  安装配置 Zabbix-ServerServer1.tuchao.com
  

  https://www.zabbix.com/documentation/2.2/manual/installation/install//官方源码编译安装文档
  http://www.zabbix.com/download.php//官方下载页面
  

  yum install zabbix-2.2.6-1.el6.i386.rpmzabbix-get-2.2.6-1.el6.i386.rpm zabbix-server-2.2.6-1.el6.i386.rpmzabbix-server-mysql-2.2.6-1.el6.i386.rpm zabbix-web-2.2.6-1.el6.noarch.rpmzabbix-web-mysql-2.2.6-1.el6.noarch.rpm
  

  编辑主配置文件 /etc/zabbix/zabbix_server.conf
  PidFile=/var/run/zabbix/zabbix_server.pid
  DBHost=192.168.1.202
  DBName=zabbix
  DBUser=tuchao
  DBPassword=123456
  

  zabbix_web 配置文件 /etc/httpd/conf.d/zabbix.conf//里面定义了通过什么路径访问zabbix-web界面。
  初始化数据库,zabbix-server-mysql 安装包,提供了三个脚本。

http://s3.运维网.com/wyfs02/M01/48/68/wKiom1QHyTDQPih0AANrxaoikHo192.jpg
  使用mysql客户端连接到,MySQL-server,创建库,导入脚本。
  

  mysql -utuchao -p123456 -h192.168.1.202
  create database zabbix;
  use zabbix
  source /usr/share/doc/zabbix-server-mysql-2.2.6/create/schema.sql
  source /usr/share/doc/zabbix-server-mysql-2.2.6/create/images.sql
  source /usr/share/doc/zabbix-server-mysql-2.2.6/create/data.sql
  

  

  修改php默认时区
  vim /etc/php.ini
  date.timezone= Asia/Shanghai
  启动zabbix服务,启动httpd服务。
  /etc/init.d/zabbix-server start
  /etc/init.d/httpd start
  

  使用浏览器访问http://192.168.1.90/zabbix/,进入管理界面。
  添加一个主机。
  找到configuration—hosts—create host
  http://s3.运维网.com/wyfs02/M01/48/6A/wKioL1QHyajgmbJzAAL2mD-CWMQ971.jpg
  定义一个items 用于监控网卡流入的速率
  http://s3.运维网.com/wyfs02/M02/48/68/wKiom1QHyc_ykgDTAAO7eHRMMhI765.jpg
  

  定义一个items 用于监控网卡流出的速率
http://s3.运维网.com/wyfs02/M00/48/68/wKiom1QHyguST3r_AAJ_zxMu_D0158.jpg
  定义一个items 用于监控CPU中断次数
http://s3.运维网.com/wyfs02/M00/48/6A/wKioL1QHykKg9ix8AAJ2tAsaEP8817.jpg
  定义一个items 用于监控CPU上下文切换的次数
http://s3.运维网.com/wyfs02/M02/48/6A/wKioL1QHynXx46MOAAJ26o5eihc961.jpg
  定义完成后,我们可以通过Monitoring — latest data,查看状态以及图表。
  

  接下来我们使用Graphs将两个相关的item图表,绘制成一张图显示。
  Configuration—Hosts—Graphs—Create graph
http://s3.运维网.com/wyfs02/M00/48/6A/wKioL1QHysDA114kAAH_4C9GkeM435.jpg
  

http://s3.运维网.com/wyfs02/M01/48/6A/wKioL1QHyuGyvneoAAIJXNaLbUc415.jpg
  

  
  我们再使用Screen将两张定义好的图,拼在同一屏显示。
  Configuraton—Screens—Create screen
  

  http://s3.运维网.com/wyfs02/M02/48/6A/wKioL1QHywawAzeEAADg5d42fOg306.jpg

  

  

  http://s3.运维网.com/wyfs02/M02/48/68/wKiom1QHyxjy02zBAAN-SxAT1nA183.jpg
  

  实验二、通过监控网卡的流量,实现一次完整的触发报警。
  自定义一个宏Administration-General-Macros
  http://s3.运维网.com/wyfs02/M00/48/86/wKioL1QJNDLz5v6PAAK_hhKDT6w124.jpg
  给admin1定义一个触发器(Triggers)
  Configuration-Hosts-triggers-Create trigger
http://s3.运维网.com/wyfs02/M00/48/84/wKiom1QJNHOgP61VAAE-eo7SqvI758.jpg
  

http://s3.运维网.com/wyfs02/M01/48/86/wKioL1QJNJ_AhnUyAAHU-BV3kNk344.jpg
  

  这时候我们再去看monitoring-Graphs
  http://s3.运维网.com/wyfs02/M01/48/84/wKiom1QJNNeR728iAAOx38o_E5I366.jpg
  

  创建媒介用于通知功能Administration-Media types-Create media type
http://s3.运维网.com/wyfs02/M00/48/84/wKiom1QJR7DzZOIcAADr9PHVkdM911.jpg
  

  修改用户通信媒介Administration-users-Admin-Media
http://s3.运维网.com/wyfs02/M01/48/86/wKioL1QJR-LCliOPAADypSlVAIk796.jpg
  

  定义action
  Configuration-Actions-Create action
  

  Action:
http://s3.运维网.com/wyfs02/M01/48/85/wKiom1QJSBbjVfVlAAJcCCHeqqc151.jpg
  

  Conditions:
http://s3.运维网.com/wyfs02/M01/48/86/wKioL1QJSFCwEpWnAAHr2ynpu4U448.jpg
  

  Operations:
http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJSH7iTusUAAMrXcQ0gaU651.jpg
  

  添加报警升级
http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJSI7xavkHAANUaHfoNT4612.jpg
  

http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJSNOwevttAAHD3rhHMt0427.jpg
  保存配置后,我们来到Monitoring-Graphs查看
http://s3.运维网.com/wyfs02/M00/48/85/wKiom1QJSQTSBfRsAAE3tnQSyWU555.jpg
  

  当前流量指数是正常的,并没有过线。我们查看Monitoring-triggers,也可以看到状态OK。
http://s3.运维网.com/wyfs02/M01/48/85/wKiom1QJSU6j_DrTAANm5Asz6mc608.jpg
  这时我们对服务器做压力测试
  http://s3.运维网.com/wyfs02/M01/48/87/wKioL1QJShyikYTcAAEkruc7ZOg325.jpg
  
  这里我们可以看出流量已经严重超标,触发器也标红色显示有故障了。
  http://s3.运维网.com/wyfs02/M00/48/87/wKioL1QJSj-QvZCoAAKP2jjDHjA845.jpg
  

  http://s3.运维网.com/wyfs02/M00/48/85/wKiom1QJSn7S_6q-AAMmyaAQOoo510.jpg
  

  我们把压力测试关掉,让服务器流量恢复正常。
http://s3.运维网.com/wyfs02/M01/48/87/wKioL1QJSruylQiyAALyt6DOCZk064.jpg
  

  实验三、使用自定义带参数的key,监控系统状态。
  Syntax
         UserParameter=key
[*],command
  编辑/etc/zabbix/zabbix_agentd.conf。
  UserParameter=memory.usage
[*],/bin/cat/proc/meminfo |awk '/^$1:/{print $$2}'
  如果命令自身有$的话就要写成$$,不然就会认为是传递给key的参数。
  

  可以在zabbix-server端使用命令测试
  zabbix_get-s 192.168.1.201 -k "memory.usage"
  zabbix_get-s 192.168.1.201 -k "memory.usage"
http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJS_6TjU34AAEQ0mVOaCs933.jpg
  

  实现使用一个key通过传递不同的参数实现定义多个item,假如我们要监控主机的MemTotal、MemFree、Cache、Buffer。
  接下来定义Item这里用MemFree做演示:
  

  http://s3.运维网.com/wyfs02/M00/48/85/wKiom1QJTE3CgSwsAAKf7OT9v7o171.jpg
  

  其余的定义也差不多,使用相同的key传递不同的参数即可。
  memory.usage
  memory.usage
  memory.usage
  将四个监控项的数据绘制到一张图上输出,方法相同使用Graphs。
  http://s3.运维网.com/wyfs02/M02/48/87/wKioL1QJTM3gmO9hAAMbpos6f_c486.jpg
  

  实验三、使用zabbix监控Nginx输出的status状态。
  开启nginx status
  server {
  ...
  location /status {
  stub_status on;
  access_log off;
  allow 192.168.1.0/24;# 允许访问的IP
  allow 127.0.0.1;
  deny all;
  }
  }
  
  创建配置文件/etc/zabbix/zabbix_agentd.d/nginx-status.conf自定义key :
  UserParameter=Nginx.active
[*],/usr/bin/curl -s "http://$1:$2/status" |awk '/^Active/{print $NF}'
  UserParameter=Nginx.reading
[*],/usr/bin/curl -s "http://$1:$2/status" | grep Reading | cut -d " " -f2
  UserParameter=Nginx.writing
[*],/usr/bin/curl -s "http://$1:$2/status" | grep Writing | cut -d " " -f4
  UserParameter=Nginx.waiting
[*],/usr/bin/curl -s "http://$1:$2/status" | grep Waiting | cut -d " " -f6
  UserParameter=Nginx.accepted
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]++[[:space:]]++[[:space:]]++/{print $$1}'
  UserParameter=Nginx.handled
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]++[[:space:]]++[[:space:]]++/{print $$2}'
  UserParameter=Nginx.requests
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]++[[:space:]]++[[:space:]]++/{print $$3}'
  

  重启zabbix-agent服务
  在zabbix-server使用命令测试
  http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJTVPQjDXZAAOMCoQSW4c089.jpg
  
  
  定义item 这里我只拿一个做演示
  http://s3.运维网.com/wyfs02/M02/48/85/wKiom1QJTaCj0DekAALPQ9Ghlr8740.jpg

  
  
  后面绘图之类的,前面都有演示,这里就不再重复了。
  




页: [1]
查看完整版本: 系统监控专题,Zabbix详解——实现监控服务器的各项指标。