宿主机为172.16.25.1	
		zabbix服务器	--》 zabbix agent(被监控端)

			172.16.25.2		172.16.25.3

基本准备(系统平台为centos7.3)
1,主机名
# hostnamectl set-hostname --static zabbixserver.cluster.com

# vim /etc/hosts
172.16.25.2  zabbixserver.cluster.com


2,时间同步
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=zabbix
baseurl=http://172.16.25.1/zabbix
enabled=1
gpgcheck=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

# mysql

MariaDB [(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=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=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,welcome
2,Check of pre-requisites
3,Configure DB connection
数据库用户名填zabbix,密码填123(前面授权过的)
4,Zabbix server details
在name选项填上你zabbix服务器的IP或者主机名
5,Pre-Installation summary
6,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.php

45 define('ZBX_GRAPH_FONT_NAME',           'ukai'); --修改原来的graphfont字体改成ukai


做完后,不用重启服务,回到zabbix的web界面刷新查看图形就会发现没有乱码了




例三,监控远程linux

			zabbix服务器	--》 zabbix agent(被监控端)

			172.16.25.2		172.16.25.3


在被监控客户端上172.16.25.3安装zabbix-agent

1,配置主机名
# hostnamectl set-hostname --static agent1.cluster.com
# vim /etc/hosts
172.16.25.3	agent1.cluster.com
2,关闭iptables,selinux
3,时间同步
4,配置yum(需要zabbix官方yum源)
5,安装zabbix-agent
# yum install zabbix-agent

# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.25.2		--写上zabbix监控服务器的IP
ServerActive=172.16.25.2	--也是写上zabbix监控服务器的IP
Hostname=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.2		172.16.25.3

			zabbix server		agent1



自定义监控agent1(172.16.25.3)上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)
1,在被监控端agent1上,随意多打开几个终端
# who |wc -l
14

2,在被监控端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	--使用此命令就可以得到被监控端的结果,则测试ok
14


4,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 mariadb


UserParameter=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.2		172.16.25.3

			zabbix server		agent1



自定义监控agent1(172.16.25.3)上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)
1,在被监控端agent1上,随意多打开几个终端
# who |wc -l
14

2,在被监控端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	--使用此命令就可以得到被监控端的结果,则测试ok
14


4,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 mariadb


UserParameter=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 server
				172.16.25.2



		agent1				agent2
		172.16.25.3			172.16.25.4


在agent2机器上做如下相关的准备工作
1,配置主机名,并互相都要绑定主机名
# hostnamectl set-hostname --static agent2.cluster.com
# vim /etc/hosts
172.16.25.4	agent2.cluster.com
2,关闭iptables,selinux
3,时间同步
4,配置yum(需要zabbix官方yum源)
5,安装zabbix-agent
# yum install zabbix-agent

# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.25.2		--写上zabbix监控服务器的IP
ServerActive=172.16.25.2	--也是写上zabbix监控服务器的IP
Hostname=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/bash

to=$1
subject=$2
body=$3

cat <<EOF | mail -s "$subject" "$to"
$body
EOF

# 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)