一、监控系统机制
1.监控工具工作机制
监控是通过传感器采集数据,在经过数据的存储加工后,进行展示。一般采集的数据为时间序列数据,即随时间变化而动态变化的数据;当采集到的数据超出阈值将会报警。监控功能的实现可基于专用agent、ssh、SNMP协议、IPMI(专业级监控接口IntelligentPlatform Management Interface,指挥平台管理接口)
2.SNMP协议
Simple Network Management Protocol,简单网络管理协议。由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
Liunx:net-snmp程序包,监听端口:NMS: 161/UDP 、agent: 162/UDP
NMS |
网络管理系统,存在监控端; 通过SNMP协议,接收处理网络中被管理的每一个设备存在的管理信息库(MIB)所收集并储存管理信息 NMS可发起操作:Get, GetNext, Set, Trap |
agent |
代理者,被管理设备上的一个网络管理软件模块; 拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。 一般为各操作系统、路由器等标准接口 |
(1)SNMP工作模式
NMS向agent采集数据、agent向NMS报告数据、NMS请求agent修改配置
(2)SNMP组件
MIB |
management information base,管理信息库;定义被管理的可实现的数据采集规范,被管理端的名称转换 |
SMI |
MIB表示符号 |
SNMP |
简单网络管理协议 |
(3)SNMP协议版本:v1, v2, v3
v1无认证;v2c基于社区管理机制,NMS --> agent 需要发起社区标识(共享密钥),明文;v3认证、加密、解密功能。实际使用中v2c为主流,也有v1,v3使用很少。
3.可监控对象
(1)设备/软件
设备:服务器、路由器、交换机、IO系统...
软件:OS、网络、应用程序...
(2)偶发性小故障:主机down机、服务不可用、主机不可达...
(3)严重故障:磁盘空间用完...
(4)主机性能指标
(5)趋势:时间序列数据
二、Zabbix架构概述
1.著名开源工具
zabbix、 zennos,、opennms、cacti、nagios(二次发行版icinga...)、 ganglia
(1) cacti
基于SNMP协议实现的开源软件, 能让监控端能每个agent做周期的数据采样 请求,cacti能将其保存在一个rrd(roundrobin database)数据库,其数据库的大小是固定的.其提供了一个php程序,(前端web界面),能够向数据库中加载数据, 并给予展示。cacti的报警系统比较弱,报警通过插件实现,如果需要好的报警系统,可与nagios系统结合。其存储所用数据库为rrd(round robin database环状数据,不能持久保持数据,初始化后不能更改大小)
(2) nagios
一个强大的内置报警系统, 不做数据采集和保存数据, 主要着眼点是报警系统,(只做状态改变监控), 如果状态不OK , 状态由OK―>PROBLEM,。不适用于大规模多数据采集情况的报警监控,数百台是可能nagios监控系统本身出现性能瓶颈。
(3) zabbix
基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由zabbix server与可选组件zabbix agent构成。zabbix server可以通过SNMP,zabbixagent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,FreeBSD,Open BSD,OS X等平台上。
zabbix专用agent端,对SNMP协议做了扩展。在zabbix2.2以前传输使用ISON格式(轻量级HTML),zabbix2.4使用换行来辨识数据,所以在完成监控同样数据带宽流量上比zabbix2.2要节约1/3以上。
(4) ganglia
强大的聚合功能,在集群将空方面有很大优势。Ganglia是UCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
2.zabbix架构组件
zabbix-server |
NMS端程序,C语言研发,可基于webpages、ICMP/IPMI/SNMP、Agent、JMX接口机制监控 |
OS: zabbix-agent |
被监控管程序,C语言研发 |
zabbix-database |
存储数据库,支持 MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite |
zabbix-web |
GUI界面,用于实现zabbix设定和展示,需要结合LAMP架构使用 |
zabbix-proxy: |
分布式监控环境中的专用组件 |
注意:
对性能要求较高的场景中,zabbix-server、zabbix-web、zabbix-database三个节点可以分开布置与不同的主机处理不同的操作。
3.zabbix专用术语
hsot主机 |
被监控的网络设备,IP或DNS名称指定 |
host group主机组 |
主机的逻辑容器。可包含主机和模板,同一个组内的主机和模板不能相互链接; 一般给用户(组)指派监控权限时使用 |
item监控项 |
特定监控指标的相关数据(来自被监控对象),由key进行标识,数据收集的核心 |
tigger触发器 |
用于评估监控对象特定item阈值的表达式。状态在OK和PROBLEM间转换 |
event事件 |
发生的一个值得关注的事情 |
action动作 |
指定对于特定事件事先定义的处理方法,动作包含操作和条件 |
escalation预警升级 |
发送报警或执行远程命令的自定义方案 |
media媒介 |
发送通知的手段或通道,如Email、Jobber、SMS、微信通知 |
notification通知 |
通过u安定的媒介向用户发送的有关于事件的信息 |
remote command |
远程命令,预定义的命令,可在被监控主机处于特定条件下自动执行 |
template模板 |
用于快速定义被监控主机的预设条目集合,通常包括item、trigger、graph、screen、application、rule… |
application应用 |
一组item的集合 |
web scennario |
web场景,用于检测web站点可以性的一个或多个HTTP请求 |
frontend前端 |
Zabbix的web接口 |
screens 屏幕 |
利用当前的屏幕, 来展示 的多个graph |
graph图表 |
用于图像化显示时间虚拟数据,item指标产生的监控数据 |
maps |
整个系统的拓扑图 |
zabbix服务启动之后会产生多个进程,如watchdog(监控进程)、housekeeper(管家,对于数据清理操作)、alerter(报警)、poller(拉去收集数据,能被启动多个)、httppoller(监控web页面信息专业poller)、discoverer(发现机制进程,相当占用资源)、pinger(屏操作监控节点在线机制)、db_config_syncer(数据库配置同步器)、db_data_syncer(数据库数据同步器)、nodewatcher(用于监控节点)、timer(计时器)、escalator(报警升级)… ...
4.硬件需求实例
注意:
zabbix产生的数据主要由四部分组成:配置数据、历史数据50Bytes、历史趋势数据:128Bytes、事件数据130Bytes;通过每个item一次需要占用的空间参标准,更具记录的频率和总保留时长,可以大致计算出所需要的存储空间
三、zabbix监控端安装部署
1.安装启动LAMP
[root@localhost~]# yum install -y httpd php php-mysql mariadb-server
[root@localhost~]# systemctl start httpd.service
[root@localhost~]# systemctl start mariadb.service
2.配置生成数据库
[root@localhost~]# mysql
MariaDB [(none)]> CREATE DATABASEzabbix CHARACTER SET utf8; # 创建支持utf8的数据库zabbix
MariaDB [(none)]> GRANT ALL onzabbix.* TO 'zbxuser'@'172.16.%.%' IDENTIFIED BY 'zbxpass'; # 授权网段用户可登陆查询库
MariaDB [(none)]> FLUSH PRIVILEGES; # 重载授权表
MariaDB [(none)]> quit # 退出
[root@localhost ~]# mysql -uzbxuser-h172.16.49.101 -p #检测授权是否可以登录
3.安装zabbix组件
[root@localhost ~]# yum installzabbix-2.4.6-1.el7.x86_64.rpm zabbix-server-2.4.6-1.el7.x86_64.rpmzabbix-server-mysql-2.4.6-1.el7.x86_64.rpm zabbix-web-2.4.6-1.el7.noarch.rpmzabbix-web-mysql-2.4.6-1.el7.noarch.rpm zabbix-agent-2.4.6-1.el7.x86_64.rpmzabbix-get-2.4.6-1.el7.x86_64.rpm zabbix-sender-2.4.6-1.el7.x86_64.rpm
注意:
1) 本次采用zabbix2.4安装,且安装在同一台主机,也可以将多个组件分开安装(一台主机提供zabbix监控以及与专用的agent接口交互采集信息、一台主机专门用于数据的存放、一台主机用于web端接口调取数据展示数据)
2) 各安装组件详细信息如下:
zabbix-2.4.6-1.el7.x86_64.rpm |
zabbix程序的主程序包,提供相关服务 |
zabbix-server-2.4.6-1.el7.x86_64.rpm |
zabbix作为监控端提供服务程序包 |
zabbix-server-mysql-2.4.6-1.el7.x86_64.rpm |
zabbix监控端和mysql数据库交互的驱动包 |
zabbix-web-2.4.6-1.el7.noarch.rpm |
zabbix的web展示接口 |
zabbix-web-mysql-2.4.6-1.el7.noarch.rpm |
zabbix的web展示接口与数据库交互的驱动包 |
zabbix-agent-2.4.6-1.el7.x86_64.rpm |
zabbix的agent用于做为客户端交互接口,本处同时将本主机当成客户端监控 |
zabbix-get-2.4.6-1.el7.x86_64.rpm |
zabbix的get工具,手动调试使用 |
zabbix-sender-2.4.6-1.el7.x86_64.rpm |
zabbix的sender工具,手动调试使用 |
3) 被依赖被安装程序
OpenIPMI-libs.x86_640:2.0.19-11.el7 OpenIPMI-modalias.x86_64 0:2.0.19-11.el7
fping.x86_640:3.10-4.el7 iksemel.x86_64 0:1.4-6.el7
net-snmp.x86_641:5.7.2-20.el7 net-snmp-agent-libs.x86_641:5.7.2-20.el7
net-snmp-libs.x86_641:5.7.2-20.el7 php-bcmath.x86_64 0:5.4.16-23.el7_0.3
php-gd.x86_640:5.4.16-23.el7_0.3 php-mbstring.x86_64 0:5.4.16-23.el7_0.3
php-xml.x86_640:5.4.16-23.el7_0.3 t1lib.x86_64 0:5.1.2-14.el7
unixODBC.x86_640:2.3.1-10.el7
4.初始化zabbix数据库
[root@localhost zabbix]# systemctlrestart httpd.service # 安装zabbix-web程序会在httpd/conf.d下生成zabbix.conf文件
初始化数据库:执行/usr/share/doc/zabbix-server-mysql-2.4.6/下三个数据库脚本,注意执行顺序
[[email protected]]# cd /usr/share/doc/zabbix-server-mysql-2.4.6/create/
[root@localhostcreate]# ls
data.sql images.sql schema.sql
[root@localhostcreate]# mysql zabbix < schema.sql
[root@localhostcreate]# mysql zabbix < images.sql
[root@localhostcreate]# mysql zabbix < data.sql
5.配置文件/etc/zabbix/zabbix_server.conf
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
该配置文件中#段表示默认的配置,如要修改则将#去除再修改为所需信息
# ListenPort=10051 |
监听端口默认10051 |
LogFile=/var/log/zabbix/zabbix_server.log |
日志文件位置 |
LogFileSize=0 |
日志文件大小,指明后会自动滚动。0不做滚动 |
# DebugLevel=3 |
调试级别 |
# DBHost=localhost |
指明数据库连接地址。 若数据库在本机建议指明路径为localhost,此方式数据传输更快 |
DBName=zabbix |
指明数据库名称 |
# DBSchema= |
可选项为IBM DB2 and PostgreSQL |
DBUser=zbxuser |
指明数据库连接访问用户 |
DBPassword=zbxpass |
指明联机而数据库用户密码 |
DBSocket=/tmp/mysqlsocket |
当之前配置为"DBHost=localhost"要指明交互的套接字位置,否则可注释 |
注意: ADVANCED PARAMETERS 配置段用于对进程的一些配置,可以使用默认配置
6.启动服务
[root@localhost ~]# yum install -y trousers-0.3.11.2-4.el7_1.x86_64.rpm
说明:CentOS7.1安装zabbix-2.4.6-1.el7,其与trousers-0.3.11.2-3不兼容,需要升级trousers至0.3.11.2-4.el7_1。
[root@localhost~]# systemctl start zabbix-server.service
7.修改php时区
[root@localhost ~]# vim /etc/php.ini 修改如下配置
date.timezone= Asia/shanghai
[root@localhostzabbix]# systemctl restart httpd.service
8.启动web页面
根据页面提醒进行网页点配置,之后会在/etc/zabbix/web/zabbix.conf.php文件内生成相应配置信息。默认登录的用户名和密码为:admin/zabbix
四、zabbix被控端安装配置
1.安装程序
[root@localhost ~]# yum installzabbix-2.4.6-1.el7.x86_64.rpm zabbix-agent-2.4.6-1.el7.x86_64.rpm zabbix-sender-2.4.6-1.el7.x86_64.rpm
2.修改配置文件
[root@localhost~]# vim /etc/zabbix/zabbix_agentd.conf
客户端默认监控在10050端口,在该配置文件中主要需要配置Server授权和Hostname,可以为对多个,对于监控端自监控需要监控127.0.0.1
Server=127.0.0.1,172.16.49.101 #服务端主机地址,指明可拉去数据主机
ServerActive=172.16.49.101 # 主动推送数据至主机地址
Hostname= # 注意全局唯一,使用DNS解析最理想
3.启动服务
[root@localhost~]# systemctl start zabbix-agent.service