1、监控系统基础 2、zabbix程序架构及安装部署 ================================================================================================================================================ 监控系统基础 1、监控系统工作方式 数据采集 --> 数据存储 --> 报警 --> 数据展示 2、NMS 网络监控系统,(Network Management System) 3、SNMP协议 SNMP:(Simple Network Management Protocol),在Linux上实现SNMP协议的包是net-snmp 1、SNMP工作模式 NMS端向agent端发起采集数据的请求 agent端将收集到本地系统的状态信息向NMS端发送报告 NMS端还可以向agent端发起修改配置的请求 2、SNMP组件:基于TCP/IP实现的网络监控三个组件: MIB:(management information base)管理信息库----监控端或被监控端可以实现的数据采集规范。因为SNMP协议过于简单,所以需要MIB来规定 具体的规范来告知NMS要获取什么指标。{MIB试图,MIB树状结构} SMI:MIB的表示符号。 SNMP:SNMP协议 3、NMS端可发起的操作: GET:获取数据 GETNEXT:获取下一个参数 SET:请求Agent修改配置 TRAP:等待agent发送会报告 4、监听端口: NMS:162 agent:161 5、SNMP协议版本: v1 v2:v2c,实现了认证功能 v3:实现是认证、加密、解密的功能 5、监控工具 cacti:基于SNMP协议实现的监控工具,周期性的采集数据并及时展示数据,但报警能力弱。 Nagios:强大的报警机制,不适合大规则网络系统,不能实现分布式监控,仅关注数据转换状态。 zabbix:有强大的报警功能,同时能够完成调用脚本实现自动修复功能。 zennos opennms ganglia openfalcon 注意:事实上监控工具之间的agent都是专用的agent,所以NMS和agent之间的交互是使用了专用的协议,但很多监控工具都支持 SNMP、ssh协议。 6、监控系统的高可用性: 将一网络划分为层或者区域,然后部署多套监控系统 对统一网络部署多套监控系统 7、监控功能的实现 agent ssh SNMP IPMI:智慧平台管理接口 (Intelligent Platform Management Interface),是一种Intel架构的企业系统的周边设备所采用的一种工业标准, IPMI是一个开放的免费标准,使用者可免费使用此标准。能够在硬件级别触发管理功能。 8、监控对象 设备: 服务器 路由器 交换机 IO系统 软件: 操作系统 网络监控系统 应用程序 故障监控 主机性能指标 ================================================================================================================================================ zabbix程序架构及安装部署 1、组件 zabbix-server # 使用C语言开发 zabbix-agent # 使用C语言开发,与server通信的协议有zabbix协议、ICMP/IPMI/SNMP、HTTP等协议 zabbix web GUI # 使用PHP开发。能够通过数据库提取数据,实现数据可视化,同时zabbix web GUI也是zabbix-server的配置接口 zabbix proxy # 分布式监控环境中的组件 zabbix database # MySQL、PGSQL、Oracle、DB2、SQLite 2、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、SMS等。 通过(motificaton):通过选定的媒介向用户发送的有关某事件的信息。 远程命令(remote command):预定义的命令,可在被监控的主机处于某特定条件下自动执行。 模板(template):用于快速定义被监控主机的预设条目集合,通常包含item、grigger、graph、screen、application以及low-level discovery rule(发现规则)。 模板可以直接链接至单个主机。 应用(application):一组item的集合。 web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求。 前端(frontend):zabbix的web gui接口。 3、zabbix-server端启动的进程 poller # 去被监控节点上拉取数据 httppoller # 监控web页面的进程 discoverer # 发现网络内的主机的进程 alerter # 负责报警机制的进程 housekeeper # 清理过期的数据 watchdog # 监控各进程的运行状态 escalator # 报警升级 timer # 计时器 nodewather # 监控各节点 pinger # 通过ping监控各节点 db_config_syncer # 同步数据 db_data_syncer # 数据库同步 4、安装部署zabbix 1、安装数据库 # yum install mariadb mariadb-server 3、创建数据库并授权 mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT ALL ON zabbix.* TO 'ZabbixUser'@'172.18.26.%' IDENTIFIED BY '123'; mysql> GRANT ALL ON zabbix.* TO 'ZabbixUser'@'node0' IDENTIFIED BY '123'; mysql> FLUSH PRIVILEGES; 4、安装apache # yum install httpd 5、zabbix服务器端安装 # wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm 安装Zabbix部署包。以下是使用Mysql数据库安装Zabbix server、WEB前端的示例 # yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender 6、agent端安装 # yum install zabbix-agent 7、安装初始化数据库 # cd /usr/share/doc/zabbix-server-mysql-3.4.0 # zcat create.sql.gz | mysql -uroot zabbix 8、修改配置并启动zabbix进程 # vim /etc/zabbix/zabbix_server.conf ListenPort=10051 # 监听端口 LogFileSize=1 # 指定日志文件大小,当到了此大小后,进行日志滚动 DBHost=localhost # 指定数据库主机 DBName=zabbix DBUser=zabbix DBPassword=zabbix # systemctl start zabbix-server 9、编辑Zabbix前端的PHP配置 # vim /etc/httpd/conf.d/zabbix.conf php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Europe/Riga # 修改时区 # systemctl start httpd 10、Zabbix前端可以在浏览器中通过 http://zabbix-frontend-hostname/zabbix 进行访问。默认的用户名/密码为 Admin/zabbix 5、配置zabbix监控自身节点 1、修改agent配置文件 # vim zabbix_agentd.conf Server=127.0.0.1,172.18.26.1 ListenIP=10050 ServerActive=127.0.0.1,172.18.26.1 Hostname=node0 2、启动agent服务 # systemctl status zabbix-agent 6、配置zabbix其他节点 1、被监控节点安装包 # yum install zabbix-agent zabbix-sender 2、修改agent配置文件 # vim zabbix_agentd.conf Server=172.18.26.1 ListenIP=10050 ServerActive=172.18.26.1 Hostname=node1 3、启动agent服务 # systemctl status zabbix-agent ================================================================================================================================================ 趋势数据 历史数据 rrd数据库 round-robin database。将数据组织成一个固定大小,将这个size组织成一个环状的数据结构,每个数据项保存在环上的一个槽位上, 当数据超过指定大小时,之前的旧数据将会被覆盖。 监控方案 1、statsd(数据采集) + influxcdb(保存数据) + grafana(图形展示) 2、promethues + grafana(图形展示) 3、graphite(数据采集) + grafana(图形展示) 默认情况下,报警信息是发送给zabbix中的某一个用户。报警流程通常为如下步骤: Triggers --> Action --> User --> Media ================================================================================================================================================