从零开始搭建zabbix以及简单实例(based on 官方文档)

来源:互联网 发布:关键词排名优化小技巧 编辑:程序博客网 时间:2024/05/17 12:06
宿主机为172.16.25.1zabbix服务器--》 zabbix agent(被监控端)172.16.25.2172.16.25.3基本准备(系统平台为centos7.3)1,主机名# hostnamectl set-hostname --static zabbixserver.cluster.com# vim /etc/hosts172.16.25.2  zabbixserver.cluster.com2,时间同步3,iptables,selinux关闭4,配置yum(本地镜像yum源和163源.可以不用epel源)5, 配置zabbix官方yum源# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm因为这样需要连接公网,并且它的版本也可能会更新,我的宿主机也下载了zabbix3.2.7版本的所有软件包配置如下一段yum就可以了[zabbix]name=zabbixbaseurl=http://172.16.25.1/zabbixenabled=1gpgcheck=0总结:一个三个yum仓库(本地iso,163,zabbix官方)第一步:安装zabbix和mariadb数据库# yum install  zabbix-server-mysql  zabbix-web-mysql   mariadb-server第二步:在mysql里建立存放数据的库并授权,然后导入zabbix所需要用的表和数据# systemctl restart mariadb.service# systemctl status mariadb.service# systemctl enable mariadb.service# mysqlMariaDB [(none)]> create database zabbix default charset utf8;MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123';MariaDB [(none)]> flush privileges;MariaDB [(none)]> quit第三步:导入表数据# zcat /usr/share/doc/zabbix-server-mysql-3.2.7/create.sql.gz |mysql -u zabbix -p123 zabbix第四步:配置zabbix主配置文件,并启动服务# vim /etc/zabbix/zabbix_server.conf --找到并确认如下参数(默认值正确的可以打开注释也可以不打开.默认值不对的,要修改正确并打开注释)ListenPort=10051DBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=123--这里要对应上面的授权进行修改DBSocket=/var/lib/mysql/mysql.sock --这里默认的socket路径不对,改成我这个路径ListenIP=0.0.0.0# systemctl restart zabbix-server.service # systemctl status zabbix-server.service # systemctl enable zabbix-server.service # lsof -i:10051第五步:配置zabbix的httpd子配置文件,并启动httpd# vim /etc/httpd/conf.d/zabbix.conf --打开时区注释,并修改成你的时区php_value date.timezone Asia/Shanghai# systemctl restart httpd.service # systemctl status httpd.service # systemctl enable httpd.service 第六步:然后使用firefox访问,并进行安装http://IP(zabbix服务器的IP)/zabbix按照图示过程安装1,welcome2,Check of pre-requisites3,Configure DB connection数据库用户名填zabbix,密码填123(前面授权过的)4,Zabbix server details在name选项填上你zabbix服务器的IP或者主机名5,Pre-Installation summary6,install完成后登陆用户名为:admin登陆密码为:zabbix=========================================================================例一,转换成中文界面(用英文的花这一步可以省略)右上角点一个类似小人的图标--》 语言选 中文zh-cn --》 点 update例二,使用zabbix-agent方式来监控本机# yum install zabbix-agent--本机安装agent包# vim /etc/zabbix/zabbix_agentd.conf--下面几个常见选项都为默认值,不用配置Server=127.0.0.1--zabbix服务器的IP,这里是本机ServerActive=127.0.0.1--zabbix服务器active check相关ListenPort=10050--监控服务器连接被监控客户端的端口(默认是注释的,可以打开或者不打开注释)Hostname=Zabbix server--设定被监控客户端的名称标识# systemctl restart zabbix-agent# systemctl status  zabbix-agent# systemctl enable  zabbix-agent# lsof -i:10050回到web管理界面--》点配置--》点主机--》默认看到叫Zabbix server的本机,但状态是停用的--》点击并启用然后可以通过点图形--》选图后点预览--》看到图上有乱码解决方法:把原来的图形字符换成ukai字体软件包为ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz# tar xf ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz -C /usr/share/zabbix/fonts/# mv /usr/share/zabbix/fonts/ukai.ttc /usr/share/zabbix/fonts/ukai.ttf  # vim /usr/share/zabbix/include/defines.inc.php45 define('ZBX_GRAPH_FONT_NAME',           'ukai'); --修改原来的graphfont字体改成ukai做完后,不用重启服务,回到zabbix的web界面刷新查看图形就会发现没有乱码了例三,监控远程linuxzabbix服务器--》 zabbix agent(被监控端)172.16.25.2172.16.25.3在被监控客户端上172.16.25.3安装zabbix-agent1,配置主机名# hostnamectl set-hostname --static agent1.cluster.com# vim /etc/hosts172.16.25.3agent1.cluster.com2,关闭iptables,selinux3,时间同步4,配置yum(需要zabbix官方yum源)5,安装zabbix-agent# yum install zabbix-agent# vim /etc/zabbix/zabbix_agentd.confServer=172.16.25.2--写上zabbix监控服务器的IPServerActive=172.16.25.2--也是写上zabbix监控服务器的IPHostname=agent1.cluster.com--写上你的被监控客户端的主机名# systemctl restart zabbix-agent# systemctl status zabbix-agent# systemctl enable zabbix-agent# lsof -i:10050回到web管理界面--》点配置--》点主机 --》 点创建主机主机名称: agent1.cluster.com可见的名称:agent1 --这个名是优先显示在监控web页面的host页面群组: Linux servers--或者自己新建一个群组名都可以IP地址: 172.16.25.3--见图zabbix01.png点模版,点选择,把 Template OS Linux 前面打勾(其它模版随意加) --》点选择 --》点添加 --最后点右下角的添加OK之后,就能看到一共监控了两台机器了================================================================================ 
--基本概念解析:概念一:  用户(user)  用户群组(group)管理->用户管理->用户群组题目:添加一个用户群组叫usergroup1,再添加一个用户叫张三,加入usergroup1组和Zabbix administrators组概念二:主机和主机组  主机(hosts)代表被监控的一台机器  主机组(hostgroups)代表被监控的一组机器(主要在特别多的机器情况,方便分组区分)操作路径:配置->主机群组配置->主机概念三:  监控项(items)和应用集(applications)  监控项(items)代表搜集数据或监控的一个最小单位  应用集(applications)代表多个监控项目合成的组例:自定义自己的监控项zabbix服务器--》 zabbix agent(被监控端)172.16.25.2172.16.25.3zabbix serveragent1自定义监控agent1(172.16.25.3)上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)1,在被监控端agent1上,随意多打开几个终端# who |wc -l142,在被监控端agent1上,定义用户参数# vim /etc/zabbix/zabbix_agentd.conf --加上下面这名定义的参数UserParameter=loginusers,who | wc -l--loginusers是我自定义的一个键值名称(会在创建监控项时用到),后面的who |wc -l就要被监控的命令# systemctl restart zabbix-agent--重启服务让其生效3,在监控服务器上(172.16.25.2)先测试是否能得到被监控端的结果# yum install zabbix-get--需要zabbix官方yum源# zabbix_get -s 172.16.25.3 -k loginusers--使用此命令就可以得到被监控端的结果,则测试ok144,web界面创建这个监控项配置->主机->监控项(选远程agent1的监控项)->右上角点创建监控项创建时主要要注意的是键值要写上面定义的loginusers创建完后,在agent1的监控项列表里就能看到创建好的监控项然后会这个监控项创建图形配置->主机->图形(还是选的agent1的主机的图形)->右上角点创建图形->选择图形名称,并在下面添加刚才定义好的监控项--添加后,预览图形例:自定义监控系统(agent1)所有进程数量UserParameter=procs,ps -ef | awk 'NR>1 {print $0}' |wc -l自定义监控系统(agent1)mariadb的登录用户数# yum install mariadb\*# systemctl restart mariadb# systemctl enable mariadbUserParameter=mariadb_loginusers,echo $[`mysqladmin -u root processlist |wc -l`-5]概念四:可视化图形 Visualisation指图形和图形里的定义(高,宽,坐标,X,Y的单位,颜色)的综合 我们使用监控项已经创建过相关的图形概念五:触发器trigger    定义监控项到达一个临界值或者满足一个条件,就会发现状态变化列:把上面做的远程agent1的监控登录用户数做一个触发器(大于20个登录用户就警告)配置->主机->触发器(选远程agent1的触发器)->右上角点创建触发器->填触发器名称->在表达式的右边点添加选择上面做的监控agent1的登录用户数的监控项,并设置当前T值> N (N设为20)添加完表达式后,就可以添加这个触发器了最后可以把agent1的用户数调整大于20后,去web界面->监控中->触发器 界面可以查看到触发了练习:监控系统(agent1)所有进程数量,当大于250就警告,当大于400就一般严重
--基本概念解析:概念一:  用户(user)  用户群组(group)管理->用户管理->用户群组题目:添加一个用户群组叫usergroup1,再添加一个用户叫张三,加入usergroup1组和Zabbix administrators组概念二:主机和主机组  主机(hosts)代表被监控的一台机器  主机组(hostgroups)代表被监控的一组机器(主要在特别多的机器情况,方便分组区分)操作路径:配置->主机群组配置->主机题目:把前面做的agent1这个被监控端换一个新的组,组名为hostgroup1,再把linux servers组删除概念三:  监控项(items)和应用集(applications)  监控项(items)代表搜集数据或监控的一个最小单位  应用集(applications)代表多个监控项目合成的组配置->主机->监控项(这里我选的是远程叫agent1的主机的监控项)->右上角点创建监控项然后先随意创建一个监控项(我这里是创建一个监控free内存的监控项)创建完成后,在这个主机的监控项列表里就可以找到你创建的监控项配置->主机->图形(还是选的agent1的主机的图形)->右上解点创建图形选择图形名称,并在下面添加刚才定义好的监控项例:自定义自己的监控项zabbix服务器--》 zabbix agent(被监控端)172.16.25.2172.16.25.3zabbix serveragent1自定义监控agent1(172.16.25.3)上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)1,在被监控端agent1上,随意多打开几个终端# who |wc -l142,在被监控端agent1上,定义用户参数# vim /etc/zabbix/zabbix_agentd.conf --加上下面这名定义的参数UserParameter=loginusers,who | wc -l--loginusers是我自定义的一个键值名称(会在创建监控项时用到),后面的who |wc -l就要被监控的命令# systemctl restart zabbix-agent--重启服务让其生效3,在监控服务器上(172.16.25.2)先测试是否能得到被监控端的结果# yum install zabbix-get--需要zabbix官方yum源# zabbix_get -s 172.16.25.3 -k loginusers--使用此命令就可以得到被监控端的结果,则测试ok144,web界面创建这个监控项配置->主机->监控项(选远程agent1的监控项)->右上角点创建监控项创建时主要要注意的是键值要写上面定义的loginusers创建完后,在agent1的监控项列表里就能看到创建好的监控项然后会这个监控项创建图形配置->主机->图形(还是选的agent1的主机的图形)->右上角点创建图形->选择图形名称,并在下面添加刚才定义好的监控项--添加后,预览图形练习:自定义监控系统(agent1)所有进程数量UserParameter=procs,ps -ef | awk 'NR>1 {print $0}' |wc -l自定义监控系统(agent1)mariadb的登录用户数# yum install mariadb\*# systemctl restart mariadb# systemctl enable mariadbUserParameter=mariadb_loginusers,echo $[`mysqladmin -u root processlist |wc -l`-4]概念四:可视化图形 Visualisation指图形和图形里的定义(高,宽,坐标,X,Y的单位,颜色)的综合 我们使用监控项已经创建过相关的图形概念五:触发器trigger    定义监控项到达一个临界值或者满足一个条件,就会发现状态变化列:把上面做的远程agent1的监控登录用户数做一个触发器(大于20个登录用户就警告)配置->主机->触发器(选远程agent1的触发器)->右上角点创建触发器->填触发器名称->在表达式的右边点添加选择上面做的监控agent1的登录用户数的监控项,并设置当前T值> N (N设为20)添加完表达式后,就可以添加这个触发器了最后可以把agent1的用户数调整大于20后,去web界面->监控中->触发器 界面可以查看到触发了练习:监控系统(agent1)所有进程数量,当大于250就警告,当大于400就一般严重监控系统(agent1)mariadb的登录用户数,当大于50个就警告,当大于100就一般严重概念六:  web监测(类似一个监控项) 可以对一个url页面进行监测例:监测agent1的主页配置->主机->web监测(选远程agent1的web监测)->右上角点创建web场景->填写名称和加入一个应用集点步骤,然后填写名称,URL(监控的页面的路径),要求的状态码(我这里写的200,表示http协议的200状态码)点添加后,就能看到agent1这台机器的这个web监测场景监测中->web监测,会看到此监测有问题(原因是agent1没有安装httpd)在agent1上安装并启动httpd服务,做好主页,再回到监测中->web监测查看,监测就ok了,说明此监测有效扩展:为此web监测配置触发器概念七:事件events   各种需要管理员知悉或处理的事情(触发器事件,discovery事件,网络事件)概念八:自动发现(discovery)动作(action)例:再加一台agent2远程被监控端,通过discovery+action发现它并加上相应的监控模版zabbix server172.16.25.2agent1agent2172.16.25.3172.16.25.4在agent2机器上做如下相关的准备工作1,配置主机名,并互相都要绑定主机名# hostnamectl set-hostname --static agent2.cluster.com# vim /etc/hosts172.16.25.4agent2.cluster.com2,关闭iptables,selinux3,时间同步4,配置yum(需要zabbix官方yum源)5,安装zabbix-agent# yum install zabbix-agent# vim /etc/zabbix/zabbix_agentd.confServer=172.16.25.2--写上zabbix监控服务器的IPServerActive=172.16.25.2--也是写上zabbix监控服务器的IPHostname=agent2.cluster.com--写上你的被监控客户端的主机名# systemctl restart zabbix-agent# systemctl status zabbix-agent# systemctl enable zabbix-agent# lsof -i:10050准备好agent2后,回到zabbix server的web界面进行操作配置->自动发现默认有一个叫Local network的发现规则,这次就不创建新的规则了,直接修改这个Local network规则就好主要修改了我们的试验网段为172.16.0.0/16开把  已启用  打勾--见图zabbix22.png修改完后点更新然后在监测中->自动发现 里查找已经发现的设备(我这里使用172.16.0.0/16的网段,范围大,测试的速度很慢)--见图zabbix23.png继续配置动作action配置->动作->右上角事件源选自动发现然后会发现一个默认的叫Auto discovery. Linux servers的动作,直接启用就好--见图zabbix24.png最后过段时间去配置->主机 里查看,会发现把discovery的主机自动加到了配置里了--见图zabbix25.png概念九:宏,巨集(macros)类似于传参数的变量 概念十:通知(notification)       出现报警事件或者触发器触发,进行通知       通知类型默认有:email,jabber,短信(sms).其它方式比如微信,需要自行开发接口;还可以定义shell脚本报警例:定义脚本报警类型,并分配给admin用户使用# vim /usr/lib/zabbix/alertscripts/notification.sh--写一个简单的通知脚本,路径要放在此目录下(由主配置文件里的AlertScriptsPath参数决定)#!/bin/bashto=$1subject=$2body=$3cat <<EOF | mail -s "$subject" "$to"$bodyEOF# chmod 755 /usr/lib/zabbix/alertscripts/notification.sh管理->报警媒介类型->创建媒体类型 (名称写脚本报警,类型选脚本,脚本名称写notification.sh,加三个参数分别写上三个宏变量,见图),最后点添加加好后,结果如下分配这个报警类型给用户admin管理->用户-> admin->报警媒介->添加  概念十一:模版(templates)代表监控项,应用集,触发器,图形,自动发现规则,web监测等的组合用于在监控时直接应用到一台被监控的主机配置->模版概念十二:批量更新配置->主机->选取要批量更新的主机(前面打勾)->选择下面的批量更新选项->执行相应的更新动作导入导出配置->主机->选取要导出的主机(前面打勾)->下面选择导出->默认会导出到你使用浏览器的机器的/root/Downloads/配置->模版->选取要导出的模版(前面打勾)->下面选择导出->默认会导出到你使用浏览器的机器的/root/Downloads/练习:把本机的一个模版删除,然后从同桌的zabbix服务器那导出成xml文件,并拷贝过来导入概念十三:虚拟机监控概念十四:通过代理实现分布式监控zabbix server   ------   zabbix proxy   ---- 被代理和被监控的机器(agent)