zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix的逻辑组件:
- 主机(host):被监控的网络设备,通常可以使用IP或DNS名称来指定;
- 主机组(hostgroup):主机的逻辑容器,可以包含主机和模板,但同一个主机组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时被使用;
- 监控项(item):一个特定的监控指标的相关数据,这些数据都来自于被监控设备;item是zabbix进行数据收集的核心,因此如果未定义item,就没有数据,每个item都由特定的key进行标识;
key:实现获取监控目标上的数据的命令或脚本的名称;
- 触发器(trigger):一个条件表达式,即用于评估某个监控对象的某特定item所接收到的数据是否在合理范围内,即:定于阈值;如果接收到的数据在合理范围之外,则触发器的状态将从OK转换为Problem;当接收的数据重新回归到合理范围时,触发器的状态将会从Problem转换为OK;
- 事件(event):即发生了一个值得关注的事情;
- 动作(action):指对于特定事件事先定义好的处理方法;通常是由条件和操作组成;
- 媒介(media):发送通知消息的手段或通道,如:Email,Jabber,微信,SMS等;
- 通知(notification):通过选定的媒介向相应用户发送的有关某事件的信息;
- 远程命令(remote command):预定义的命令或脚本,可以在被监控主机处于特定条件时自动执行;
- 报警升级(escalation):发送报警信息或执行远程命令的自定义方案;
- 模版(template):用于快速定义被监控主机的各项item的预设项目集合,通常可以包含:item、trigger、graph、screen、application以及low-level discover rule等;模版可以直接链接到单个主机;
- 应用(application):同一类监控项的结合;
- web场景(web scennario):用于检测web站点的可用性的一个或多个http协议的请求;
- 前端(frontend):Zabbix的web接口
- 图形(graph):用于展示历史数据或趋势数据的图像;
- 屏幕(screen):由多个graph组成;
下面进行简单的zabbix配置
--------------------------------------------------------------------
服务器端
1.安装Zabbix的web GUI及其他:
yum install httpd php php-mbstring php-gd php-mysql php-bcmath php-ldap php-xml mariadb-server -y
2.安装zabbix
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-web zabbix-agent zabbix-get -y
3.启动MariaDB并创建数据库及授权用户;
1
2
3
4
5
6
|
systemctl start mariadb
mysql
myslq> create database zabbix charset
'utf8'
;
mysql> grant all on zabbix.* to zbxuser@
'127.0.0.1'
identified by
'zbxpass'
;
mysql> grant all on zabbix.* to zbxuser@
'localhost'
identified by
'zbxpass'
;
mysql> grant all on zabbix.* to zbxuser@
'172.16.%.%'
identified by
'zbxpass'
;
|
4.数据库的初始化:
如果是2.x版本的zabbix则有三个SQL脚本,如果是3.x版本的zabbix只有1个SQL脚本,下面这个。
1
2
3
|
cp
/usr/share/doc/zabbix-server-mysql-3
.4.4
/create
.sql.gz
/root
gunzip create.sql.gz
mysql -uroot -hlocalhost -p zabbix < create.sql
|
5.Zabbix服务端的配置文件:/etc/zabbix/zabbix_server.conf
全局通用配置参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
ListenPort=10051
SourceIP=172.16.1.2
LogType=
file
LogFile=
/var/log/zabbix/zabbix_server
.log
LogFileSize=0
DebugLevel=3
PidFile=
/var/run/zabbix/zabbix_server
.pid
DBHost=172.16.1.2
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBSocket=
/tmp/mysql
.sock |
/var/lib/mysql/mysql
.sock
DBPort=3306
StartPollers=5
StartPreprocessors=3
StartPollersUnreachable=1
StartTrappers=5
StartPingers=1
StartDiscoverers=1
StartHTTPPollers=1
StartTimers=1
StartEscalators=1
StartAlerters=3
|
6.配置zabbix-web:
配置php的时区设定,下面两个任意一个即可,也可两个都配置。
1./etc/php.ini
date.timezone = Asia/Shanghai
2./etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
7.重启httpd服务,并启动zabbix-server服务
systemctl restart httpd.service
systemctl start zabbix-server.service
8.访问URL:
http://172.16.1.2/zabbix
看到php相关应用都是OK即可
输入数据库相关内容,再输入以下相关内容
输入默认用户名/密码:admin/zabbix
------------------------------------------------------------------------------------------
agent端
1.安装zabbix
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install -y zabbix-agent zabbix-sender
2.改主机的名字
hostname
hostnamectl set-hostname zrs2.zrs.com
3.配置一下配置文件:/etc/zabbix/zabbix_agentd.conf
1
2
3
4
5
6
7
8
9
10
|
[root@zrs2 ~]
# egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf
PidFile=
/var/run/zabbix/zabbix_agentd
.pid
LogFile=
/var/log/zabbix/zabbix_agentd
.log
LogFileSize=0
Server=172.16.1.2
ListenPort=10050
StartAgents=3
ServerActive=172.16.1.2
Hostname=zrs2.zrs.com
Include=
/etc/zabbix/zabbix_agentd
.d/*.conf
|
4.启动并查看,没有问题
[root@zrs2 ~]# systemctl start zabbix-agent.service
[root@zrs2 ~]# systemctl status zabbix-agent.service
----------------------------------------------------------------------------------
1.创建主机组
在Configuration中的Host groups中添加主机组,自定义主机组名字,点击add即可。
2.创建主机
在Configuration中的Host groups中找到刚才创建的test group 点击后面的Hosts,然后Create host。
第一个是主机名字,即被监控的主机的名字,务必填写正确,第二个是可视化名字,第三个是所属的主机组,右边的框中如果没有,可自己创建,最后是被监控的主机IP,也可以填写DNS name,二选一,因为是进行简单的配置,所以到这就行了,点击最下面的Add即可。
3.创建应用和监控项: Applications + Items
在Configuration中的Hosts中的zrs2后面点击Applications,进入后点击Create application,自定义Name的名字即可,创建三个如下
在Configuration中的Hosts中的zrs2后面点击Items,进入后点击Create item,自定义Name的名字,key的值从select中选择需要监测的即可,为了采集更多的样本,更新数据的时间设置短一些,applications选择对应的,点击最下面的Add。cpu的上下文切换监控就创建好了。
下面再创建两个item,监控入站流量和出站流量。可以在Preprocessing中选择Preprocessing steps:Change per second 来监控数据每秒变化量。
4.Trigger触发器
定义一个traffic too fast当入站流量达到100时,报警
触发器的表达式:
{Server:key[parameters].function(arguments)}<operator><constant>
Server:被监控的主机名称
key:选中的item对应的key;
parameters:key要求的参数,如果key需要则必须给出;
function:评估采集到的数据是否在合理范围内时所使用的函数;
评估过程:
1.可以根据采集数据的次数;
2.可以指定在一定时间范围内采集到的数据;
常用的函数:
last、avg、max、min、sum、count、change、delta、diff、iregexp、nodata、date、dayofweek、...
arguments:函数的参数
大多数的数值函数可以进行数值计算,也可以接收时间为参数进行计算;如果在数值参数之前使用"#"作为前缀,如:"#NUM"表示NUM次的取值;如果在数值参数之前不使用"#"作为前缀,如"NUM"表示NUM秒的时间内的所有数值取值;
如:
sum(100):表示在100秒内取得的所有数据的和;
sum(#100):表示在最近100次取值之和;
last(100):表示最近的100秒时间内的取值;
last(#1):表示最近一次的取值,相当于last(0)
此外,avg,count,last,max,min等函数还支持第二参数,用于指定时间;
如:max(1h,7d)
operator:操作符,表达式运算的运算符;
比较运算:>, <, =, #(Not Equal)
算术运算:+, -, *, /
逻辑运算:&, |
为了触发器被触发需要定义动作actions
执行动作后的的操作:发送一个消息给管理员
这时需要定义Administration中users下面的media
再定义media types中的email中的media type
当入站流量过大超过100时就会触发警报,发邮件给管理员。
本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/2044254,如需转载请自行联系原作者