一.Zabbix简介   

Zabbix 是一款功能强大的分布式开源监控系统,线上用的也比较多,个人感觉是cacti和nagios的整合,又天生自带分布式监控,大批量主机运维监控优势明显

 

       zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

       zabbix由zabbix server与可选组件zabbix agent两部门组成。

       zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。

       zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

 

Zabbix 通过 C/S模式采集数据,通过B/S模式在web端展示和配置。

被监控端:主机通过安装 agent 方式采集数据,网络设备通过SNMP方式采集数据

Server 端:通过收集SNMP和agent发送的数据,写入数据库(MySQL,ORACLE等),

再通过 php+apache 在 web 前端展示

 

zabbix的主要特点:

          - 安装与配置简单,学习成本低

          - 支持多语言(包括中文)

          - 免费开源

          - 自动发现服务器与网络设备

          - 分布式监视以及WEB集中管理功能

          - 可以无agent监视

          - 用户安全认证和柔软的授权方式

          - 通过WEB界面设置或查看监视结果

          - email等通知功能

         等等

 

 

Zabbix主要功能:

         - CPU负荷

         - 内存使用

         - 磁盘使用

         - 网络状况

         - 端口监视

         - 日志监视

Zabbix运行条件:

  Server:Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。

  Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。

  SNMP:支持各类常见的网络设备

1.2 Zabbix功能

 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制) 支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。

1.3 优劣势

  优点:开源,无软件成本投入;Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强。

  缺点:中文资料较少。

 

官方也提供了安装资料:http:///wiki/howto/monitor

 

 

 

默认的用户名为 admin,密码是zabbix

使用 zabbix 进行监控之前,要理解zabbix监控的流程。

一次完整的监控流程可以简单描述为:

Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers

(触发器)->Actions(告警动作)->Medias(告警方式)->User Groups(用户组)->Users

(用户)

 

 

1.Server
zabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbix agent和zabbix proxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此。包含server、前段界面和后端DB几部分。

2.Agent
部署在被监控主机上用于监控本地资源和应用并向zabbix server汇报结果。使用本地系统调用故非常高效。

 

2.  有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数 据。主动模式下先主动由server获取监控项列表在检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。angentd 的作用就是获取 host 数据,然后将收集到的数据发送给 server(主动模式)。或者是server 主动来拿取数据(被动模式)。

3.Proxy
可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbix server。proxy需要单独的数据库。

host
需要被监控的设备,如交换机、路由器、WEB服务器、DB服务器等

host group
被监控设备的逻辑分组,如DB服务器一组、WEB服务器一组等。可包含主机和模板。用于权限控制

item
需要被监控的项,如CPU空闲率、某一块磁盘的使用率等

trigger
用于评估收到的监控值是否超出设定的阈值的逻辑表达式

event
如trigger状态改变等值得注意的事件

action
预先定义的响应event的一系列operations

escalation
执行action中的operations的定制场景;一连串的发送通知、执行远程命令

media
传递notification的方式

notification
通过media发送给用户的关于某个event的消息

remote command
在被监控机器上触发并自动执行的预定义命令

template
用于简化和加速主机上大规模监控任务的部署。包含一系列项目,如items, triggers, graphs, screens, applications, low-level discovery rules

application
逻辑组中的一组items

web scenario
一个或多个HTTP request用以检查web站点可用性

frontend
zabbix的web界面

zabbix api
允许通过JSON RPC 协议创建、更新和获取zabbix对象如,hosts, items, graphs and others。或者执行其他任务

zabbix server
zabbix核心,履行监控,与zabbix proxies、zabbix client交互、计算trigger、发送notification、存储数据等任务

zabbix agent
部署在被监控主机上用于监控本地资源和应用

zabbix proxy
可代zabbix server收集数据分担处理负载

 

zabbix的配置文件一般有三种:
 zabbixserver的配置文件zabbix_server.conf
 zabbixproxy的配置文件zabbix_proxy.conf
 zabbix_agentd的配置文件zabbix_agentd.conf 
1.                  zabbix       server的配置文件:
NodeID=0 #分布式节点id号,0代表是独立服务器,默认是被注释掉的,不强制配置
 ListenPort=10051 #zabbix server的端口,默认是10051,可以自行修改,
 范围是1024-32767 ,一般默认即可
 SourceIP=  #连接的源ip地址,默认为空,默认即可
 LogFile=/tmp/zabbix_server.log #日志文件的存放位置
 LogFileSize=1 #日志文件的大小,单位为MB,当设置为0时,表示不仅行日志轮询,
 默认设置为1,默认即可
 DebugLevel=3 #指定调试级别,默认即可
 PidFile=/tmp/zabbix_server.pid #pid文件的存放位置
 DBHost=localhost #数据库主机名,当设置为localhost时,连接mysql通过sock
 DBName=zabbix #指定存放zabbix数据数据库的名字
 DBUser=zabbix #指定连接数据库的用户名
 DBPassword=123456 #用户连接数据库需要的密码
 DBSocket=/var/lib/mysql/mysql.sock #前文主机设置为localhost,用户
 连接数据库所用的sock位置,
 DBPort=3306 #数据库的端口号,当用sock连接时,无关紧要,当通过网络连接时需设置
 StartPollers=5 #默认即可
 StartIPMIPollers=0 #使用IPMI协议时,用到的参数
 StartTrappers=5 #打开的进程数,
 StartPingers=1 同上
 StartDiscoverers=1
 StartHTTPPollers=1
 JavaGateway=127.0.0.1 #JavaGateway的ip地址或主机名
 JavaGatewayPort=10052 #JavaGateway的端口号
 StartJavaPollers=5 #开启连接javagatey的进程数
 SNMPTrapperFile=/tmp/zabbix_traps.tmp
 StartSNMPTrapper=0 #如果设置为1,snmp trapper进程就会开启
 ListenIP=0.0.0.0 #监听来自trapper的ip地址
 ListenIP=127.0.0.1
 HousekeepingFrequency=1 #zabbix执行Housekeeping的频率,单位为hours
 MaxHousekeeperDelete=500 #每次最多删除历史数据的行
 SenderFrequency=30 #zabbix试图发送未发送的警报的时间,单位为秒
 CacheSize=8M #缓存的大小
 CacheUpdateFrequency=60#执行更新缓存配置的时间,单位为秒数
 StartDBSyncers=4
 HistoryCacheSize=8M
 TrendCacheSize=4M
 HistoryTextCacheSize=16M
 NodeNoEvents=0
 NodeNoHistory=0
 Timeout=3
 TrapperTimeout=300
 UnreachablePeriod=45
 UnavailableDelay=60
 UnreachableDelay=15
 AlertScriptsPath=/usr/local/zabbix/shell #脚本的存放路径
 FpingLocation=/usr/local/sbin/fping #fping指令的绝对路径
 SSHKeyLocation=
 LogSlowQueries=0
 TmpDir=/tmp
 Include=/usr/local/etc/zabbix_server.general.conf
 Include=/usr/local/etc/zabbix_server.conf.d/ #子配置文件路径
 StartProxyPollers=1 #在zabbix proxy被动模式下用此参数
 ProxyConfigFrequency=3600#同上
 ProxyDataFrequency=1 
 
 
 
 
                     Zabbix      agentd的配置文件
 PidFile=/tmp/zabbix_agentd.pid #pid文件的存放位置
 LogFile=/tmp/zabbix_agentd.log #日志文件的位置
 LogFileSize=1 #当日志文件达到多大时进行轮询操作
 DebugLevel=3 #日志信息级别
 SourceIP= #连接的源ip地址,默认为空,即可
 EnableRemoteCommands=0 #是否允许zabbix server端的远程指令,
 0表示不允许,
 1表示允许
 LogRemoteCommands=0 #是否开启日志记录shell命令作为警告0表示不允许,1表示允许
 Server=127.0.0.1 #zabbix server的ip地址或主机名,可同时列出多个,需要用逗号隔开
 ListenPort=10050 #zabbix agent监听的端口
 ListenIP=0.0.0.0 #zabbix agent监听的ip地址
 StartAgents=3 #zabbix agent开启进程数
 ServerActive=127.0.0.1 #开启主动检查
 Hostname=Zabbix server#在zabbix server前端配置时指定的主机名要相同,最重要的配置
 RefreshActiveChecks=120 #主动检查刷新的时间,单位为秒数
 BufferSend=5 #数据缓冲的时间
 BufferSize=100 #zabbix agent数据缓冲区的大小,当达到该值便会发送所有的数据到zabbix server
 MaxLinesPerSecond=100 #zabbix agent发送给zabbix server最大的数据行
 AllowRoot=0 #是否允许zabbix agent以root用户运行
 Timeout=3 #设定处理超时的时间
 Include=/usr/local/etc/zabbix_agentd.userparams.conf
 Include=/usr/local/etc/zabbix_agentd.conf.d/ #包含子配置文件的路径
 UnsafeUserParameters=0 #是否允许所有字符参数的传递
 UserParameter= #指定用户自定义参数               
 
               Zabbix         proxy的配置文件
Server=192.168.70.133 #指定zabbix server的ip地址或主机名
 Hostname=zabbix-proxy-1.35 #定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同
 LogFile=/tmp/zabbix_proxy.log #指定日志文件的位置
 PidFile=/tmp/zabbix_proxy.pid #pid文件的位置
 DBName=zabbix_proxy #数据库名
 DBUser=zabbix #连接数据库的用户
 DBPassword=123456#连接数据库用户的密码
 ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率
 DataSenderFrequency=60 #zabbix proxy发送监控到的数据给zabbix server的频率 
 
默认开启 ,现在关闭   server5/6
 
 
 
/etc/init.d/gmetad  stop
   chkconfig gmetad off
   /etc/init.d/gmond  stop
   chkconfig gmond off
   netstat  -antlp
 
 
Zabbix 需要 lamp环境
 
 
 
 
 
                                zabbix
 
server5   zabbix-server
 
安装套件   yum install -y fping-2.4b2-16.el6.x86_64.rpm
                 iksemel-1.4-2.el6.x86_64.rpm
iksemel-utils-1.4-2.el6.x86_64.rpm
php-bcmath-5.3.3-26.el6.x86_64.rpm
php-mbstring-5.3.3-26.el6.x86_64.rpm
zabbix-2.4.5-1.el6.x86_64.rpm
zabbix-agent-2.4.5-1.el6.x86_64.rpm
zabbix-get-2.4.5-1.el6.x86_64.rpm
zabbix-server-2.4.5-1.el6.x86_64.rpm
zabbix-server-mysql-2.4.5-1.el6.x86_64.rpm
zabbix-web-2.4.5-1.el6.noarch.rpm
zabbix-web-mysql-2.4.5-1.el6.noarch.rpm
server6     zabbix-agent
 
scp zabbix-2.4.5-1.el6.x86_64.rpm  zabbix-agent-2.4.5-1.el6.x86_64.rpm  root@172.25.19.6:/root
yum install zabbix-2.4.5-1.el6.x86_64.rpm  zabbix-agent-2.4.5-1.el6.x86_64.rpm -y
 
 
 
server5
 
/etc/init.d/mysqld  start    (失败时:  rm -f /var/lib/mysql/mysql.sock )
 cd /var/lib/mysql/
mysql -uroot  -pwestos
 
 create database zabbix character set utf8 collate utf8_bin; 创建数据表
grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';  给zabbix权限  并建立用户
  quit;
cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/
   mysql -uzabbix -pwestos zabbix < schema.sql  请耐心等待
   mysql -uzabbix -pwestos zabbix < images.sql
   mysql -uzabbix -pwestos zabbix < data.sql
cd /etc/zabbix/
 vim zabbix_server.conf
【
DBPassword=westos  107行 #指定zabbix数据库密码
】
 cd /etc/httpd/conf.d/
   vim zabbix.conf
【
 # php_value date.timezone Europe/Riga  28行   如果/etc/php.ini  改过了就不要动 。 应该Aisa/Shanghai
 
】
 
cd /etc/zabbix/
 
vim zabbix_agentd.conf
【
Hostname=server5.example.com  137 行
】
 
/etc/init.d/zabbix-server start
/etc/init.d/httpd  start
/etc/init.d/zabbix-agent start
 
server6
 cd /etc/zabbix/
   vim zabbix_agentd.conf
【
 Server=172.25.19.5  78行
ServerActive=172.25.19.5  129 行
Hostname=server6.example.com  144行
】
   /etc/init.d/zabbix-agent  start
 
server 5
cd /etc/zabbix/
 vim zabbix_server.conf
【
#ServerActive=127.0.0.1 注释掉就不用自己向主机发送,hosts没有server5.example.com
 
StartDiscoverers=5  178行
】
/etc/init.d/zabbix-server restart
 
浏览 172.25.19.5/zabbix
usrname:  Admin    
password: zabbix
 
zabbix server 上激活 zabbix agent自动注册功能
点击 Configuration -> Actions -> Create action按下图所示设置
 
自定义 Action 的名字。
Conditions 选项卡保持默认即可。
Operations 选项卡添加如下:
 
 
Add host:自动注册主机添加到 hosts列表
Add to host groups:自动注册主机加入 linux servers组(组名可以自定义)
Link to templates:自动注册主机应用模板 Template OS linux
点击 Configuration -> Hosts 可以看到新加的主机:
 
Zabbix 的更多功能值得大家一起研究和分享。
来看看 zabbix 是怎样添加服务监控项的,利用zabbix自带的监控模版,以http服务为例:
添加httpd
 
 
1. 点击 Configuration -> Templates 选择需要链接的模版
2. 
3. 选择需要链接的主机 server6example.com
4. 也可以在 Configuration -> Hosts -> server2.example.com -> Templates选择需要的模版
5. 
 
 
  yum install httpd -y
cd /var/www/html/
vim index.html
【
server6
】
 
/etc/init.d/httpd start
 
去图形界面添加该模块
 
 
 
添加 mysql
yum install -y mysql-server
/etc/init.d/mysqld start
 mysql -uroot  -pwestos
grant select on nagbd.* to fanan@localhost  identified by 'westos';
flush  privileges;
 
在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf文件中指定了zabbix agent如何获取mysql
服务的各种信息,并在/var/lib/zabbix目录中新建“.my.cnf”文件,用以指定zabbix agent 如何登陆数据库,默认使用的是zabbix用户,可以在zabbix_server.conf文件中找到密码。
mkdir /var/lib/zabbix
 cd /var/lib/zabbix/
vim .my.cnf
【
[mysql]
host = localhost
user = fanan
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = fanan
password = westos
socket = /var/lib/mysql/mysql.sock
 
】
 /etc/init.d/zabbix-agent restart
 
去图形界面添加该模块
链接 mysql 监控模版
 
 
点击 Configuration -> Hosts -> zabbix server Graphs可以看到两个新的监控图形
 
 
 
 
 
 
 
 
 
Email 报警
图形界面
 
点击 administration -> Media types -> Email
 
点击 Administration -> Users 进入 Admin 管理员Media选项卡
 
点击configuration -> Actions 点击Triggers  Enabled
 
QQ 邮箱做的实验,由于server5.example.com是没有域名解析的,会被QQ
邮箱挡掉,所以你需要设置 QQ 邮箱反垃圾白名单,把zabbix@server5.example.com发件地址加
入白名单。
 
关掉 httpd mysql ,看是否发短信
 
 
 
110monitor
tar zxf alert-agent-4.1.3.1-linux-x64.tar.gz -C /usr/lib/zabbix/alertscripts/
cd /usr/lib/zabbix/alertscripts/
 cp  alert-agent/plugin/zabbix-plugin/110monitor .
chown  -R zabbix.zabbix *
 
图形界面
点击 administration -> Media types ->create media types
 
点击 Administration -> Users 进入 Admin 管理员Media选项卡
 
点击configuration -> Actions 点击Triggers  create
关掉 httpd mysql ,看是否发短信
 
打开网页:110monitor.com
 
登陆  XXXXXX@qq.com    
      redhat007
 
 
OneAlert 文档 ->集成方法-> zabbix  ->通用性安装
 
 Server 7   zabbix-proxy
zabbix  proxy
Yum install  -y      zabbix-2.4.5-1.el6.x86_64
zabbix-proxy-2.4.5-1.el6.x86_64
zabbix-proxy-mysql-2.4.5-1.el6.x86_64
fping-2.4b2-16.el6.x86_64.rpm
yum install -y  mysql-server
 cd /etc/zabbix/
vim zabbix_proxy.conf
 [   server = 172.25.9.5
Hostname = server7.example.com
DBPassword=westos
 
Configfrequency=600
]
 
 
 
Mysql
create database zabbix_proxy  character set utf8 collate  utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos';
 mysql -uzabbix  -pwestos zabbix_proxy < schema.sql
/etc/init.d/zabbix-proxy start
 
 
Server6
Vim  /etc/zabbix/zabbix_agentd.conf
#severactive=172.25.9.5
Server=172.25.9.7
/etc/init.d/zabbix_agent restart