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

What is Zabbix


    Zabbix是一个开源软件基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

    Zabbix支持使用MySQLPostgreSQLOracleIBM 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-Server  Server1.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.rpm  zabbix-get-2.2.6-1.el6.i386.rpm zabbix-server-2.2.6-1.el6.i386.rpm  zabbix-server-mysql-2.2.6-1.el6.i386.rpm zabbix-web-2.2.6-1.el6.noarch.rpm  zabbix-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 安装包,提供了三个脚本。

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/,进入管理界面。

添加一个主机。

找到configurationhostscreate host

wKioL1QHyajgmbJzAAL2mD-CWMQ971.jpg

定义一个items 用于监控网卡流入的速率

wKiom1QHyc_ykgDTAAO7eHRMMhI765.jpg


定义一个items 用于监控网卡流出的速率

wKiom1QHyguST3r_AAJ_zxMu_D0158.jpg

定义一个items 用于监控CPU中断次数

wKioL1QHykKg9ix8AAJ2tAsaEP8817.jpg

定义一个items 用于监控CPU上下文切换的次数

wKioL1QHynXx46MOAAJ26o5eihc961.jpg

定义完成后,我们可以通过Monitoring ― latest data,查看状态以及图表。


接下来我们使用Graphs将两个相关的item图表,绘制成一张图显示。

Configuration―HostsGraphsCreate graph 

wKioL1QHysDA114kAAH_4C9GkeM435.jpg


wKioL1QHyuGyvneoAAIJXNaLbUc415.jpg


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

ConfiguratonScreensCreate screen


wKioL1QHywawAzeEAADg5d42fOg306.jpg



wKiom1QHyxjy02zBAAN-SxAT1nA183.jpg


实验二、通过监控网卡的流量,实现一次完整的触发报警。

自定义一个宏Administration-General-Macros

wKioL1QJNDLz5v6PAAK_hhKDT6w124.jpg

admin1定义一个触发器(Triggers

Configuration-Hosts-triggers-Create trigger

wKiom1QJNHOgP61VAAE-eo7SqvI758.jpg


wKioL1QJNJ_AhnUyAAHU-BV3kNk344.jpg


这时候我们再去看 monitoring-Graphs

wKiom1QJNNeR728iAAOx38o_E5I366.jpg


创建媒介用于通知功能 Administration-Media types-Create media type

wKiom1QJR7DzZOIcAADr9PHVkdM911.jpg


修改用户通信媒介 Administration-users-Admin-Media

wKioL1QJR-LCliOPAADypSlVAIk796.jpg


定义action

Configuration-Actions-Create action


Action

wKiom1QJSBbjVfVlAAJcCCHeqqc151.jpg


Conditions

wKioL1QJSFCwEpWnAAHr2ynpu4U448.jpg


Operations

wKiom1QJSH7iTusUAAMrXcQ0gaU651.jpg


添加报警升级

wKiom1QJSI7xavkHAANUaHfoNT4612.jpg


wKiom1QJSNOwevttAAHD3rhHMt0427.jpg

保存配置后,我们来到Monitoring-Graphs查看

wKiom1QJSQTSBfRsAAE3tnQSyWU555.jpg


当前流量指数是正常的,并没有过线。我们查看Monitoring-triggers,也可以看到状态OK

wKiom1QJSU6j_DrTAANm5Asz6mc608.jpg

这时我们对服务器做压力测试

wKioL1QJShyikYTcAAEkruc7ZOg325.jpg

这里我们可以看出流量已经严重超标,触发器也标红色显示有故障了。

wKioL1QJSj-QvZCoAAKP2jjDHjA845.jpg


wKiom1QJSn7S_6q-AAMmyaAQOoo510.jpg


我们把压力测试关掉,让服务器流量恢复正常。

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[MemTotal]"

zabbix_get-s 192.168.1.201 -k "memory.usage[MemFree]"

wKiom1QJS_6TjU34AAEQ0mVOaCs933.jpg


实现使用一个key通过传递不同的参数实现定义多个item,假如我们要监控主机的MemTotalMemFreeCacheBuffer

接下来定义Item  这里用MemFree做演示:


wKiom1QJTE3CgSwsAAKf7OT9v7o171.jpg


其余的定义也差不多,使用相同的key传递不同的参数即可。

memory.usage[MemTotal]

memory.usage[Cache]

memory.usage[Buffer]

将四个监控项的数据绘制到一张图上输出,方法相同使用Graphs

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:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$1}'

UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$2}'

UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$3}'


重启zabbix-agent服务

zabbix-server使用命令测试

wKiom1QJTVPQjDXZAAOMCoQSW4c089.jpg


定义item 这里我只拿一个做演示

wKiom1QJTaCj0DekAALPQ9Ghlr8740.jpg


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


你可能感兴趣的:(zabbix,系统监控,服务器监控)