开源监控系统------Zabbix
Zabbix简介
zabbix是一个基于web界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。
zabbix可以监控各种网络参数,保证服务器系统的安全正常运行;并提供柔软的通知机制以让系统管理员快速的定位并解决问题。zabbix由两部分组成,zabbix server与可选组件zabbixagent。
zabbix server可以通过SNMP、zabbix agent、ping、端口监视等方法 提供对远程服务器或者网络状态的监视,进行数据采集、数据存储、数据展示等功能;
zabbix可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。zabbix agent需要安装在被 的目标服务器上。它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集;zabbix server 可以单独监视远程服务器的服务状态;也可以与zabbix agent配合,可以轮询zabbix agetn 主动接受监视数据(trapping方式),同时还可以被动接受zabbix agent发送的数据(trapping方式)。另外zabbix server 还支持SNMP协议,可以与SNMP软件(如net-snmp)配合使用
Zabbix架构
以上架构中的组件描述
Zabbix Server:负责接受agent发送的报告信息的核心组件,所以配置、配置数据集操作数据均由其组织进行; Database Storage: 专用于存储所有配置信息,以及由zabbix收集的数据; Web interface: zabbix的GUI接口,通常与Server运行在同一个主机上; Proxy:可选组件,常用于分布式监控环境中,代理Server收集部分被监控端的监控数据并同一发往Server; Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Porxy端
Zabbix常用术语
主机(host) #要监控的网络设备,可由IP或DNS名称指定; 主机组(host group) #主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用; 监控项(item) #一个特定监控指标的相关数据,这些数据来自于被监控对象;对于item时zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由“key”进行标识 触发器(trigger) #一个表达式,用于评估某监控对象的某特定item内所接受到的数据时否在合理范围内,即阈值;接受到的数据量大于阈值时,触发器状态从“OK”转变为"problem",当数据量再次回归到合理范围时,其状态将从"problem"转换回“OK“ 事件(event) #即发生一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等; 动作(action) #指对特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作); 报警升级(escalation) #发送警报或执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等; 媒介(media) #发送通知的手段或通道,如Email、Jabber或SMS等; 通知(notification) #通过选定的媒介向用户发送的有关某事件的信息; 远程命令(remote command) #预定义的命令,可在被监控主机处于某特定条件下时自动执行; 模板(template) #用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机; 应用程序(application) #一组item的集合 web场景(web scennario) #用于检测web站点可用性的一个或多个HTTP请求; 前端(frontend) #Zabbix的web接口
Zabbix监控系统的核心功能
数据采集---->数据存储(根据时间序列)----->数据展示和分析----->报警 1)数据采集 #SNMP #agent #ICMP/SSH/IPMI (无agent端的) #web 2)数据存储 #cacti: rrd #nagios:只注重状态转换(并不保存数据),如果使用数据库则使用mysql #zabbix :mysql/pgsql/oracle 3)数据展示 数据展示: --------一般在其对应的web平台展示 #java #php #移动app 4)报警 # mail(smtp) # Chat Message # SMS
Zabbix的安装方式
1、编译安装zabbix
源码包下载地址
http://www.zabbix.com/download.php
(1)同时安装server和agent,并支持将数据放入mysql数据中,可使用类似如下配置命令: #./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2 (2)如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令: #./configure --enable-server --with-mysql --with-net-snmp --with-libcurl (3)如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令: # ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql --with-ssh2 (4)如果仅安装agent,可使用类似如下配置命令: # ./configure --enable-agent 然后执行 make && make install 即可
2、rpm包安装
http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/
Zabbix监控警报的实现
环境搭建
Zabbix Server服务器 | 172.16.13.2 |
rpm包安装 zabbix-2.0.8-3.el6.x86_64.rpm
zabbix-get-2.0.8-3.el6.x86_64.rpm
zabbix-server-2.0.8-3.el6.x86_64.rpm
zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm
zabbix-web-2.0.8-3.el6.noarch.rpm zabbix-web-mysql-2.0.8-3.el6.noarch.rpm httpd-2.2.15-29.el6.centos.x86_64 php-5.3.3-26.el6.x86_64 |
MySQL 服务器 | 172.16.13.13 | 编译安装 |
Zabbix agent 服务器 | 172.16.13.3 |
zabbix-agent-2.0.8-3.el6.x86_64.rpm
zabbix-sender-2.0.8-3.el6.x86_64.rpm
|
一、MySQL的编译安装
172.16.13.13服务器编译安装mysql
关于MariDB的编译安装请移步我的博客:
http://jungege.blog.51cto.com/4102814/1394924
二、Zabbix server配置
1、安装
下载rpm包 放在root家目录 zabbix-2.0.8-3.el6.x86_64.rpm zabbix-get-2.0.8-3.el6.x86_64.rpm zabbix-server-2.0.8-3.el6.x86_64.rpm zabbix-server-mysql-2.0.8-3.el6.x86_64.rpm zabbix-web-2.0.8-3.el6.noarch.rpm zabbix-web-mysql-2.0.8-3.el6.noarch.rpm zabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-sender-2.0.8-3.el6.x86_64.rpm
#mkdir agent -----将angent包先存放起来 #mv zabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-sender-2.0.8-3.el6.x86_64.rpm agent/ #yum -y localinstall *.rpm ------只安装zabbix-server ,zbbix-web,zbbix-web-mysql zbbix-get zabbix-server-mysql php httpd
2、初始化数据库
# rpm -ql zabbix-server-mysql /usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql /usr/share/doc/zabbix-server-mysql-2.0.8/create/p_w_picpaths.sql /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql 将以上三个关于zabbix的mysql文件拷贝到mysql服务器上并导入 MariaDB [(none)]> create database zabbix; MariaDB [(none)]> grant all on *.* to [email protected]'172.16.%.%' identified by 'mypass' with grant option; MariaDB [(none)]> flush privileges; 直接在zabbix server服务器上来导入 #yum -y install mysql 安装mysql客户端 # mysql -uroot -h172.16.13.13 -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql # mysql -uroot -h172.16.13.13 -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/p_w_picpaths.sql # mysql -uroot -h172.16.13.13 -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.8/create/data.sql 授权一个普通用户 对zabbix数据库的访问 MariaDB [zabbix]> grant all zabbix.* to 'zbxuser'@'172.16.%.%' identified by 'zbxpass'; MariaDB [zabbix]> flush privileges;
3、编辑zabbix配置文件
# cd /etc/zabbix # vim zabbix_server.conf DBHost=172.16.13.13 DBName=zabbix DBUser=zbxuser DBPassword=zbxpass DBPort=3306 # service zabbix-server start # ss -ntlpu 默认侦听在10051端口
4、配置zabbix-web
# vim /etc/php.ini 修改一下时区 a.timezone = Asia/Shanghai # service httpd restart Web访问路径 # cat /etc/httpd/conf.d/zabbix.conf Alias /zabbix /usr/share/zabbix--- 使用的是别名 /zabbix
5、zabbix-web访问
http://172.16.13.2/zabbix
Zabbix frontend 即Zabbix web前段接口初始化配置完成!
登录
账户:admin
密码:zabbix
三、Zabbix agent 配置
1、下载rpm包 zabbix-2.0.8-3.el6.x86_64.rpm zabbix-agent-2.0.8-3.el6.x86_64.rpm zabbix-sender-2.0.8-3.el6.x86_64.rpm 2、安装 # yum -y localinstall *.rpm 3、编辑配置文件 # cd /etc/zabbix # vim zabbix_agentd.conf Server=172.16.13.3 4、启动服务 # service zabbix-agent start # ss -ntlp 默认侦听在 10050端口
配置OK,接下来我们将Agent 添加到服务器的检测主机列表中去
四、Zabbix server通过zabbix-web接口配置
1、添加host
Configure---->hosts
Save保存
Morniting查看已添加的主机
2、为host添加Item
添加Item1
添加Item2
Save保存
3、为item创建graph
Configuriation --->Hosts--->Graph 点击Create Graph创建
####添加item后,点击Save保存
查看创建好的Graph
4、创建Screen
Configuration--->Screens 点击Create Screen创建
Save
Save 保存
查看Screen
5、创建触发器(trigger)
Configuration--->Hosts---Trigger
点击Create Trigger
保存退出
查看Triggers
Trigger设置完成后,查看各个Item的变化图
Motitoring---->Latest data --->Host----->Graph
看到触发到触发器设置的函数条件后 生成的阈值线了吧!!!
6、创建media
Administration---->Media types
7、创建action
然后配置Oprations
###Update
然后配置Conditions
Save保存,action配置完成!
8、再次查看Item状态
Montoring--->Latest data
######已经达到我们触发器trigger的触发条件conditons,接下来将执行动作oprations 发送消息
9、查看警告信息(邮件)
监控警告邮件已经过来了~~
我们已经成功实现了监控的完整的一个流程:
数据采集---->数据存储---->数据存储----->报警
PS:个人水平有限,不妥之处请指出!
转载于:https://blog.51cto.com/jungege/1411013