1、准备
centos7 系统服务器3台、 一台监控服务器, 两台台被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。
setenforing 0 (修改配置文件关闭)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service
2、Zabbix的安装,安装server端
官网下载一个包zabbix-release-3.4-2.el7.noarch.rpm,本地安装至机器,这样,本地就有了新的yum源,可以直接安装zabbix服务:
[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
或者
[root@zabbix-server ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
#而后更新的yum仓库:
[root@zabbix-server ~]# yum repolist
安装:
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
[root@zabbix-server ~]# yum install -y zabbix-get-3.4.0-1.el7.x86_64
zabbix-server-mysql数据库是用来存放采集到的数据,而zabbix-web-mysql的作用是Zabbix的web端会通过这些数据,来展示绘图。
[root@zabbix-server ~]# yum install -y mariadb mariadb-server
[
root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
[root@zabbix-server ~]# mysqladmin -u root password 'zabbix' #设置root密码
[root@zabbix-server ~]# mysql -uroot -p'zabbix'
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; # 创建zabbix数据库
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; # 注意授权网段
MariaDB [(none)]> flush privileges; # 刷新授权
MariaDB [(none)]> \q #退出
Bye
[
root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: #输入密码‘zabbix’
或者:
[root@zabbix-server zabbix-server-mysql-3.4.15]# cd /usr/share/doc/zabbix-server-mysql-3.4.15
[root@zabbix-server zabbix-server-mysql-3.4.15]# gunzip create.sql.gz
[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -u zabbix -p zabbix < create.sql
导入以后,我们进去数据库查看一下:
[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -uzabbix -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
.....
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
+----------------------------+
140 rows in set (0.001 sec)
可以看出来,数据已经导入。
3、配置 server 端
数据库准备好后,修改server端的配置文件。
[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
DBHost=localhost #数据库对外的主机
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户
DBPassword=zabbix #数据库密码
#这里的配置文件打开后:如果有的就不用添加了。如果是注释了的也不用取消注释。直接把内容复制粘贴过去就可以 了。
以上,基本配置已经完成,可以开启服务:
[root@zabbix-server zabbix]# systemctl start zabbix-server
[root@zabbix-server zabbix]# systemctl enable zabbix-server
开启服务以后,一定要去确认一下端口有没有开启:
[root@zabbix-server zabbix]# netstat -lntp | grep 10051
如果查到的端口没有开启,检查一下配置文件是否有问题。
4、配置 web GUI
有一个/etc/httpd/conf.d/zabbix.conf文件,这个配置文件就是做映射的文件
[root@zabbix-server zabbix]# vim /etc/httpd/conf.d/zabbix.conf #设置时区
#里面基本不用动。只需要添加一行时区即可
php_value date.timezone Asia/Shanghai ---添加如下
接下来,启动httpd服务了:
[root@zabbix-server zabbix]# systemctl start httpd
[root@zabbix-server zabbix]# systemctl enable httpd
服务已经开启,接着可以用浏览器来访问了(访问失败请查看80端口netstat -anpt )
5、浏览器访问并进行初始化设置
使用浏览器访问192.168.246.228/zabbix,第一次访问时需要进行一些初始化的设置,按照提示操作即可:
登陆后持续点击下一步
此页面查看是否全部ok,高版本的zabbix对PHP版本数据库版本都有要求,具体参加官方文档。
点击Finish以后,我们就会跳转到登录页面,使用我们的账号密码登录即可:
默认用户名为:Admin ,密码为:zabbix 。
登陆进来就可以看到仪表盘了。
6、配置 agent 端
把监控端配置启动以后,需要来设置一下被监控端,在被监控的主机安装好agent,设置好server,并把它添加到server端,就能将其纳入部署的监控系统中去。
先安装zabbix。两台机器都操作
[root@zabbix-agent-none1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix-agent-none1 ~]# yum install zabbix-agent zabbix-sender -y
对配置文件做一个备份,然后去修改配置文件:
[root@zabbix-agent-none1 ~]# cd /etc/zabbix/
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-agent-none1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.conf.bak zabbix_agentd.d
[root@zabbix-agent-none1 zabbix]# vim zabbix_agentd.conf ----修改如下
Server=192.168.246.228 zabbix服务端的地址
ServerActive=192.168.246.228 主动模式 zabbix-server-ip
Hostname=zabbix-agent-none1
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=1 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
修改完成之后保存退出,启动服务:
[root@zabbix-agent-none1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent-none1 zabbix]# systemctl enable zabbix-agent
查看端口是否已开启
[root@zabbix-agent-none1 zabbix]# netstat -lntp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9369/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 9369/zabbix_agentd
开启成功,去server端添加了。
none2也进行同样的操作,唯一不同的就是配置文件中的Hostname要设为zabbix-agent-none2。
7、监控过程详解
作为一只英语不好的Linux大佬,这里悄悄改成了中文版,中文版比较适合初学者更快的学习。
修改完刷新页面即可。
为了安全起见,请修改密码:管理-用户-Admin-修改密码更新。
设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:
① 介绍
选中none1的监控项,即可创建监控项,首先创建三个应用集:
配置-主机-创建应用集
然后定义监控项:
配置-主机-监控项-创建监控项
任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为key。
下面监控的是cpu的每秒中断次数
in 每秒CPU的中断次数,包括时间中断
关于key值,可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k "system.cpu.intr"
在agent端,也可以使用命令来查看intr的速率变化:
zabbix会收集历史数据,还会收集每小时的平均数据作为趋势数据,每小时才收集一次,所以trends(趋势)暂用的资源很小。
删除监控项
如果有一个监控项,用不上了,就可以删除掉。但是如果直接删除的话,默认数据是会留下的,所以要先清除数据,然后再删除。
① 简介
当采集的值定义完了以后,就可以来定义触发器了。
触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。
一般,评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
{
<server>:<key>.<function>(<parameter>)}<operator><constant>
server:主机名称;
key:主机上关系的相应监控项的key;
function:评估采集到的数据是否在合理范围内时所使用的函数,目前触发器所支持的函数有avg(平均)、count(计数)、change(变化)、date(日期)、dayofweek(星期)、delta(增量)、diff、iregexp、last()、max(最大值)、min(最小值)、nodata(无数据)、now(现在)、sum(总和)等
parameter:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
③ 定义一个触发器
进入:配置 —> 主机 —> none1 —> 触发器 —> 创建触发器
表达式:可以自定义添加,需要本地文件先进行配置。
生成完毕后,击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转
然后去 配置–主机–触发器可以看到触发器的具体情况
吧
5)定义动作(action)
① 简介
我们需要去基于一个对应的事件为条件来指明动作,一般就是执行远程命令或者发警报。
第一要先定义一个媒介,第二,还要定义这个媒介上用户接收消息的端点(媒介)。
–定义一个媒介(media)
以Email为例,简单的定义一个媒介:
定义后更新一下即可。
媒介定义好了,设置让Admin接收邮件
进入 管理 —> 用户 —> Admin —> 报警媒介
我们来添加一条local_Email。
添加后更新即可。(一个用户可以添加多个接收的媒介类型。)
-定义一个动作(action)
动作是在某些特定条件下触发的,如某个触发器被触发了,就会触发动作。
现在基于redis来定义一个动作。
首先,在agent端使用yum安装一下redis:
[root@zabbix-agent-none1 ~]# yum -y install epel-release
[root@zabbix-agent-none1 ~]# yum install -y redis
修改一下配置文件:
[root@zabbix-agent-none1 ~]# vim /etc/redis.conf
bind 0.0.0.0 #不做任何认证操作
修改完成以后,我们启动服务,并检查端口:
[root@zabbix-agent-none1 ~]# systemctl start redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1353/redis-server 0
web GUI定义
先创建一个应用集:
配置-----主机—none1—应用集—创建应用集:
1.定义监控项
进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项
填写完毕以后添加。
检测中 —> 最新数据(查看下监控项的值)
2.定义触发器
定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器
填写完毕以后添加。
监测中 —> 最新数据(查看值、监控图)
手动关闭redis服务检测:
[root@zabbix-agent-none1 ~]# systemctl stop redis
可以看到报警问题,当服务被打开,会转为已解决状态:
[root@zabbix-agent-none1 ~]# systemctl start redis
定义action了。
进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)
下一步修改sudo配置文件使zabbix用户能够临时拥有管理员权限;第二步修改zabbix配置文件使其允许接收远程命令
[root@zabbix-agent-none1 ~]# visudo #相当于“vim /etc/sudoers”
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD:ALL #添加的一行,表示不需要输入密码
[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 #允许接收远程命令
LogRemoteCommands=1 #把接收的远程命令记入日志
[root@zabbix-agent-none1 ~]# systemctl restart zabbix-agent.service
添加完成以后:
手动停止服务来进行测试是否成功重新启动redis:
[root@zabbix-agent-none1 ~]# systemctl stop redis.service
也可去agent端查看端口是否开启:
[root@zabbix-agent-none1 ~]# systemctl stop redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1957/redis-server 0
查看邮箱是否成功
[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U 1 [email protected] Thu Oct 10 00:51 21/865 "Resolved: redis service down"
邮箱也已经成功
端口正常开启,动作触发已经完成。
补充:也可以使用脚本来发送警报,脚本存放路径在配置文件中可以找到,定义为:AlterScriptsPath=/usr/lib/zabbix/alertscripts
END