zabbix 服务
zabbix 服务器 --》 zabbix agent(被监控端)
192.168.224.10 192.168.224.11
基本准备(系统平台为centos7.3)
1,主机名
# hostnamectl set-hostname --static server.com
# vim /etc/hosts
192.168.224.10 server.com
2,时间同步
3,iptables,selinux关闭
4,配置yum(本地镜像yum源和163源.可以不用epel源)
# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo --163源
5, 配置zabbix官方yum源(版本为目前最新的版本zabbix3.2)
# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
也可以使用笔记站点提供的yum源仓库!
# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=http://192.168.2.172/zabbixyum
gpgcheck=0
enable=1
总结:一共三个yum仓库(本地iso,163,zabbix官方)
服务端操作
第一步:
安装zabbix和mariadb数据库
# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server -y
第二步:
在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)]> use zabbix;
MariaDB [(none)]> show tables;
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 --找到并确认如下参数(默认值正确的可以打开注释也可以不打开.默认值不对的,要修改正确并打开注释)
12 ListenPort=10051
81 DBHost=localhost
91 DBName=zabbix
107 DBUser=zabbix
115 DBPassword=123 --这里要对应上面的授权进行修改
122 DBSocket=/var/lib/mysql/mysql.sock --这里默认的socket路径不对,改成我这个路径
303 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
第六步:
打开浏览器输入你的IP地址,并进行安装
按照图示过程安装
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
============================================================================
例二,使用zabbix-agent方式来监控本机(在Zabbix Server执行)
# yum install zabbix-agent -y --本机安装agent包
# vim /etc/zabbix/zabbix_agentd.conf --下面几个常见选项都为默认值,不用配置
95 Server=127.0.0.1 --zabbix服务器的IP,这里是本机(被动监控方式;这里的被动是相对于客户端而言,客户端被动接收服务器的监控)
103 ListenPort=10050 --监控服务器连接被监控客户端的端口
# systemctl restart zabbix-agent
# systemctl status zabbix-agent
# systemctl enable zabbix-agent
# lsof -i:10050
回到web管理界面--》点配置--》点主机--》默认看到叫Zabbix server的本机,但状态是停用的--》点击并启用. 在可用性中ZBX开始为灰色,等待变成绿色状态,大约几分钟。
然后可以通过点图形--》选图后点预览--》看到图上有乱码
解决方法:
把原来的图形字符换成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');
做完后,不用重启服务,回到zabbix的web界面刷新查看图形就会发现没有乱码了。Zabbix基于 rrd-tool开发,所以字体有兼容性。 从cacti开始国外软件对中文的兼容性就有问题。
例三,监控远程linux
zabbix服务器 --》 zabbix agent(被监控端)
192.168.224.10 192.168.224.11
第一大步:
在被监控客户端上192.168.224.11安装zabbix-agent并配置
1,配置主机名
2,关闭iptables,selinux
3,时间同步
4,配置yum(需要zabbix官方yum源)
5,安装zabbix-agent
# yum install zabbix-agent -y
# vim /etc/zabbix/zabbix_agentd.conf
95 Server=192.168.224.10 --写上zabbix监控服务器的IP(被动监控)
103 ListenPort=10050 --被动监控的端口
147 Hostname=node1.com --写上你的被监控客户端的主机名
# systemctl restart zabbix-agent
# systemctl status zabbix-agent
# systemctl enable zabbix-agent
# lsof -i:10050
第二大步:
回到zabbix服务器的web管理界面--》点配置--》点主机 --》 点创建主机
主机名称: agent1.cluster.com
可见的名称:agent1 --这个名是优先显示在监控web页面的host页面
群组: Linux servers --或者自己新建一个群组名都可以
IP地址: 192.168.224.11
点模版,点选择,把 Template OS Linux 前面打勾(其它模版随意加) --》点选择 --》点添加 --最后点右下角的添加
OK之后,就能看到一共监控了两台机器了
=====================================================
基本概念解析:
概念二:主机和主机组
主机(hosts)代表被监控的一台机器
主机组(hostgroups)代表被监控的一组机器(主要在特别多的机器情况,方便分组区分)
操作路径:
配置->主机群组
配置->主机
题目:把前面做的agent1这个被监控端换一个新的组,组名为hostgroup1,再把linux servers组删除
概念三:
监控项(items)代表搜集数据或监控的一个最小单位
应用集(applications)代表多个监控项目合成的组
配置->主机->监控项(这里我选的是远程叫agent1的主机的监控项)->右上角点创建监控项
然后先随意创建一个监控项 例如:system.swap.size[,free]
创建完成后,在这个主机的监控项列表里就可以找到你创建的监控项
配置->主机->图形(还是选的agent1的主机的图形)->右上解点创建图形
选择图形名称,并在下面添加刚才定义好的监控项
例:自定义自己的监控项
zabbix服务器 --》 zabbix agent(被监控端)
192.168.224.10 192.168.224.11
zabbix server agent1
自定义监控agent1(192.168.224.11)上的用户登录数(默认有一个键值叫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,命令行测试自定义的测试项目是否可以工作。在服务器端执行
# yum install zabbix-get --需要zabbix-get 软件包官方yum源
# zabbix_get -s 192.168.224.11 -k loginusers --使用此命令就可以得到被监控端的结果,则测试ok
14
4,web界面创建这个监控项
配置->主机->监控项(选远程agent1的监控项)->右上角点创建监控项
创建时主要要注意的是键值要写上面定义的loginusers
创建完后,在agent1的监控项列表里就能看到创建好的监控项
然后为这个监控项创建图形
配置->主机->图形(还是选的agent1的主机的图形)->右上角点创建图形->选择图形名称,并在下面添加刚才定义好的监控项--添加后,预览图形
练习:
自定义监控系统(agent1)所有进程数量
UserParameter=totalprocs,ps -ef | awk 'NR>1 {print $0}' |wc -l
Note:
NR>1 -- 行号大于一
awk 'NR>1 {print $0}' -- 行号大于一的内容输出
自定义监控系统(agent1)mariadb的当前登录用户数
# yum install mariadb\*
# systemctl restart mariadb
# systemctl enable mariadb
UserParameter=mariadb_loginusers,echo $[`mysqladmin -u root processlist |wc -l`-4]
Notes:
mysqladmin -u root processlist 列出当前登陆mysql的用户列表。
概念八:
自动发现(discovery)
动作(action)
例:再加一台agent2远程被监控端,通过discovery+action发现它并加上相应的监控模版
zabbix server
192.168.224.10
agent1 agent2
192.168.224.11 192.168.224.12
在agent2机器上做如下相关的准备工作
1,配置主机名,并互相都要绑定主机名
# hostnamectl set-hostname --static agent2.cluster.com
# vim /etc/hosts
192.168.224.12 agent2.cluster.com
2,关闭iptables,selinux
3,时间同步 #rdate -s IPaddress.
4,配置yum(需要zabbix官方yum源)
5,安装zabbix-agent
# yum install zabbix-agent -y
# vim /etc/zabbix/zabbix_agentd.conf
95 Server=192.168.224.10 --写上zabbix监控服务器的IP
103 ListenPort=10050 --被动监控的端口
136 ServerActive=192.168.224.10 --写上zabbix监控服务器的IP
147 Hostname=agent2.cluster.com --写上你的被监控客户端的主机名
# systemctl restart zabbix-agent
# systemctl status zabbix-agent
# systemctl enable zabbix-agent
# lsof -i:10050
准备好agent2后,回到zabbix server的web界面进行操作
1. 配置->自动发现
默认有一个叫Local network的发现规则,这次就不创建新的规则了,直接修改这个Local network规则就好
主要修改了我们的试验网段为10.1.1.0/24
把"已启用打勾
修改完后点更新
2. 然后在监测中->自动发现 里查找已经发现的设备(如果使用类似172.16.0.0/16的网段,范围大,测试的速度很慢). 设置延迟为5秒,以便快速发现。
3. 继续配置动作action
配置->动作->右上角事件源选自动发现
然后会发现一个默认的叫Auto discovery. Linux servers的动作,然后需要修改IP网段。
4.最后过段时间去配置->主机里查看,会发现把discovery的主机自动加到了配置里了
*******************************************************************************
提示:如果配置完成后还是无法实现自动注册,请将“自动发现” “Auto discovery. Linux servers.” 停用,并停止zabbix-server几分钟后重启启动即可!
*******************************************************************************
概念
聚合检测,汇总检测(Aggregate checks)
zabbix server
192.168.224.10
agent1 agent2
192.168.224.11 192.168.224.12
item1 item2
监控agent1和agent2两台服务器登陆用户数之和
1,两台都要配置登陆用户数的监控项,
# vim /etc/zabbix/zabbix_agentd.conf
设置 UserParameter=loginusers,who | wc -l
systemctl restart zabbix-agent
1.5 在Client2,创建loginusers的监控项。步骤参考前面。
2.Console->配置->主机->client1->监控项
Console右上角 创建监控->
类型选择“Zabbix”整合
键值填写:grpsum["Linux servers","loginusers",last] note:确保机器都在group'Linux servers'
概念十二:
通过代理实现分布式监控
机房一 机房二
zabbix核心服务器
机房三 机房四
zabbix server ------ zabbix proxy ---- 被代理和被监控的机器(agent)
zabbix_server ---- zabbix_proxy ----- zabbix_agent1
192.168.224.10 192.168.224.12 192.168.224.11
准备:
我这里把原来的agent2用来模拟zabbix_proxy
1,先在zabbix_server的web界面把agent2的配置删除(并把先前做的自动发现规则禁用)
2,主机名改成proxy.com
3, systemctl stop zabbix-agent
第一大步:zabbix_proxy上的配置(需要本地yum源和zabbix源)(192.168.224.12)
# yum install mariadb\* zabbix-proxy zabbix-proxy-mysql zabbix-agent -y
# systemctl restart mariadb
# systemctl enable mariadb
# mysql
MariaDB [(none)]> create database zabbix_proxy default charset utf8;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;
# zcat /usr/share/doc/zabbix-proxy-mysql-3.2.7/schema.sql.gz |mysql zabbix_proxy -u zabbix -p123
# vim /etc/zabbix/zabbix_proxy.conf
13 ProxyMode=0 --zabbix_proxy的代理方式为主动(zabbix_proxy主动发数据给zabbix_server)
24 Server=192.168.224.10 --zabbix_server的ip
43 Hostname=proxy.com --这个名字一定要和你的主机名还有后面在web界面配置代理的名字保持一致
128 DBHost=localhost
139 DBName=zabbix_proxy
154 DBUser=zabbix
162 DBPassword=123
216 ConfigFrequency=60 --主动模式下zabbix_proxy多久从zabbix_server接收一次配置数据
225 DataSenderFrequency=5 --主动模式下zabbix_proxy多久发送一次收集的数据给zabbix_server
# vim /etc/zabbix/zabbix_agentd.conf
64 SourceIP=192.168.224.12 --代理服务器IP地址
95 Server=192.168.224.12 --代理服务器IP地址
136 ServerActive=192.168.224.12 --代理服务器IP地址
147 Hostname=zabbix_proxy.com
# systemctl restart zabbix-proxy
# systemctl restart zabbix-agent
# systemctl enable zabbix-agent
# systemctl enable zabbix-proxy
第二大步:zabbix_agent的配置(192.168.224.11)
# vim /etc/zabbix/zabbix_agentd.conf --把服务器的ip改成zabbix_proxy的ip,而不是zabbix_server的ip
95 Server=192.168.224.12 -- 代理服务器IP地址
136 ServerActive=192.168.224.12 -- 代理服务器IP地址
147 Hostname=agent1.cluster.com -- 代表本机器的hostname
# systemctl restart zabbix-agent
第三大步:回到zabbix_server的图形管理界面
1,代理机器zabbix proxy 加入到监控的主机中
配置-》主机-》创建主机
主机名称:proxy.com
群组: 随意加一个组
IP地址:192.168.224.12 端口:10050
2,加一个代理程序
管理-》agent代理程序-》创建代理
agent代理程序名称:proxy.com --名字要和配置里的主机名一致
系统代理程序模式: 主动式
agent代理程序的主机: agent1
加完后,agent1和proxy.com就自动被代理了
第四大步:
测试
在agent1(192.168.224.11)上找一个监控项做改变(比如登录用户数),然后在192.168.224.10上的zabbix_server的图形界面能看到这个改变,说明proxy成功
概念十三:
主动监控和被动监控
zabbix_server ------ zabbix_proxy --------- zabbix_agent1
agent被动模式(相对于agent的被动,也就是表示是server或proxy去找agent拿数据)
# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.224.12 --IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip);这个参数是被动模式相关(监控项里的类型配置为zabbix客户端就表示为被动模式)
agent主动模式(相对于agent的主动,也就是表示agent主动把数据传给server或proxy)
# vim /etc/zabbix/zabbix_agentd.conf
Serveractive=192.168.224.12 --IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip);这个参数是主动模式相关(监控项里的类型配置为zabbix客户端(主动式)就表示为主动模式)
proxy主动模式(zabbix_proxy主动发数据给zabbix_server) 可以用于被监控主机没有公网IP,而Zabbix Server无法直接访问的情况,由被监控机器直接发送数据给Zabbix Server。
# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
proxy被动模式(zabbix_server找zabbix_proxy收集数据)
# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=1