zabbix是基于web界面提供的分布式系统监控,以及网络监控的企业级开源方案php
zabbix有两部分组成:zabbix-server 和zabbix-agenthtml
zabbix server能够经过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。java
sensor:传感器针对监控指标进行采样,采样的数据分为:存储数据,历史数据,趋势数据。mysql
展现:经过web监控窗口进行展现ios
报警:当超过监控指标时会进行报警。web
工做方式分为:sql
主动、被动模式都是相对于proxy来讲的。proxy主动发送数据就是主动模式;proxy等待server的请求,再发送数据就是被动模式。数据库
主动监控:vim
被动监控:centos
监控系统采集的方式有:
ssh/telent
agent: 基于master/agent 架构,构建的
IPMI接口:硬件层面的接口能够直接采样硬件指标
snmp:主要针对网络设备如交换机,路由器等是一种比较老的网络管理协议
工做是在被监控的主机上启动一个snmp程序叫snmpagent
jmx:是java的一个特定的接口
存储系统:
历史数据: 每次采样结构通常保存半年或3个月
趋势数据:去一段时间内的最大值,最小值,平均值造成趋势图保存时间长
存储系统有:
关系型数据库:mysql oracle
rrd 循环数据库:它是一个环,会按照固定的数据曹位,重复的放入数据,如内环数据能够保存趋势数据,外环保存历史数据
时间序列数据库:专门用来存储时间序列
报警方式:
邮件 短信 微信 触发报警脚本
开源的监控项目:
cacti(没有报警功能 ,如今我用这个)
cactiEZ :是基于centos6 包含了cacti的监控系统具备报警功能
nagios(具备采样,报警) 通常能够将这两种结合使用
zabbix(功能较全)
zabbix的报警能够实现报警升级:
1 首先当触发器触发时会先本身去执行命令解决,
2 若不行,就进行邮件通知
3 向管理级发送通知
支持模板监控:能够实行快速部署主机监控
支持网络自动监控;在一个网络段内会自动扫描
支持分布式监控:能够按不一样的业务,功能进行分组,每组有一个代理主机来负责收集数据在发生后将采样的数据发给监控系统
zabbix架构
zabbix-server:负责经过各类接口去采集数据
zabbix-proxy:当server监控的太多能够将一部分委托给proxy代理(分布式监控方式)
zabbix-database:存储
zabbix-web: web展现
zabbix-get:是用来测试向监控端发一次若能返回采样数据,说明能够监控而后由zabbix-server 开始监控
第二节
zabbix程序组件:
zabbix-server 服务端守护进程
zabbix-agent agent守护进程
zabbix-proxy 代理服务器组件
zabbix-database 存储系统
zabbix-web web展现接口
zabbix-get 命令行工具用于测试
zabbix-sender 命令行工具 测试向server端发送数据
逻辑组件:
主机组: hosts groups
主机: hosts
监控项:items
应用:applications
触发器:triggers
事件:events
action动件: 有条件conditions 和操做operations 完成
媒介:发送通知的通道
通知:notification
远程命令:remote command
报警升级:escalation
模板:template
图形:graph
屏幕:screens
幻灯:slide show
zabbix安装配置:
1 安装mysql :yum install mariadb-server –y
vim /etc/my.cnf
systemctl start mariadb.service 启动服务
systemctl enable mariadb.service 开机自启服务
链接到mysql 建立用户
# mysql
>create database zabbix CHARSET 'utf8'; 建立字符集
> grant all on zabbix.* to 'zbxuser'@'192.168.1.%' identified by 'zbxpass'; 建立一个用户受权
> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
> flush PRIVILEGES;
zabbix服务端:
安装zabbix的yum源
rpm –I https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
web依赖的包
# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent 安装包
# rpm -ql zabbix-server-mysql
/etc/zabbix/zabbix_server.conf 配置文件
/usr/lib/systemd/system/zabbix-server.service 程序
导入数据可脚本, 已生成数据库环境
脚本:/usr/share/doc/zabbix-server-mysql-3.0.20/create.sql.gz 须要解压
gzip -d create.sql.gz
链接数据库导入sql:
# mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < ./create.sql
注意在2版本会有3个sql脚本需依次导入
vim /etc/zabbix/zabbix_server.conf 配置文件
GENERAL PARAMETERS 通用端参数有:
ListenPort 端口
Option: SourceIP 用来采集的ip地址
Option: LogType 日志格式
Option: LogFile 日志文件
Option: LogFileSize 0表示禁止滚动
Option: DebugLevel 通常3表示正常级别
Option: DBHost ; 指明存储地址
Option: DBName 数据库名
setenforce 0
systemctl start zabbix-server.service 启动
配置web
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/shanghai
systemctl start httpd.service 启动服务
访问;第一次访问须要页面配置
在被监控的主机配置agent
rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent zabbix-sender
# rpm -ql zabbix-agent
/etc/zabbix/zabbix_agentd.conf 配置文件
/usr/lib/systemd/system/zabbix-agent.service 程序
vim 配置文件
##### Active checks related 主动监控相关配置
ServerActive=192.168.1.105 服务器地址
Hostname=localhost 本地主机名
##### Passive checks related 被动监控
systemctl start zabbix-agent.service 启动服务
第三节页面配置
一个采集系统具备几样功能:采集 存储 展现 报警
相关的安装包:
服务器包:zbbix-server-mysql zabbix-get
被监控端:zabbix-agent zabbix-sender
web: zabbix-web zabbix-web-mysql
proxy(代理): zabbix-proxy
采集存储的数据类型:
数值型:整数,浮点数
字符型:字符串
存储值的格式:
as is :不对数据作任何的处理 保留数据自己
delta:本次采集减去前一次采集的差
delta(speed per second) 本次采集减去前一次采集再除以通过的时长
快速定义一个监控项过程:
hostgroup – host—application—item—triggers(event) ---action
有一个默认组: zabbix-servers
定义主机:
item定义
item的类型:
zabbix内建key用的:zabbix agent (是被动)
zabbix agent (active) 主动
SNMP 使用snmp方式来监控时用的
2 内建key的选择
zabbix_get -s 192.168.1.101 -k "net.if.in[ens33,packets]"
列如在命令行传一个key值 监控项:
配trigger触发器 (合理的区间内)它定义的是超过区间的阈值
定义好监控后查看主机
这里item是针对触发区域定义
如>100 当定义item >10 , 当item> 10 为ture PROBLEM 状态 而item< 10 为 false ok
PROBLEM (故障) OK(正常)
通常状态之间的转化,要进行屡次的采集才会触发
每个触发器关联着一个item,但一个item能够有多个触发器
能够根据不一样的触发器实现不一样级别的报警
一 个触发器有一个表达式构成,当超过一个阈值时状态转为PROBLEM
触发器表达式格式:通常能够在页面自动生成也能够手动编写
{<server>:<key>.<fumction>(<parameter>)} <operator><constant>
server:主机名称
key:主机上相应监控项的key
function: 是评估采集的数据是否在合理的范围内
目前触发器所支持的函数有avg,count,chunge,date,falofweek,delta, diff ,pregexp,last, max , min , now, sum, nodata
parameter:为函数参数,大多数参数能够接受秒数为其参数,若是在数值参数前面使用#作为前缀,则表示为最近几回的取值如sum(300)表300s内的取值之和,而sum(#10)表示最近10次取值之和
此为avg, count ,last , min ,max 还支持使用第二个参数如max(1h,7d)表返回一周以前的最大值
列: {192.168.1.104:systemctl.cup.load[all,avg1] last(0)} > 3
定义 trigger:
触发后会在monitoring ---events 会记录事件
action动做
conditions 条件
operations 动做
定义email的定义,
报警信息方式: email
script 自定义脚本
administration—media types –email
定义条件能够定义多个条件之间使用逻辑关系
触发器之间存在依赖关系:
定义类型 默认是send 发送邮件
IPMI 是命令
custom script 自定义脚本
ssh
telnet
grobal script:
定义mail服务器:
定义个user
问题启动zabbix-server服务器动成功,可是查不到10051端口
解决:查看/var/log/zabbix/zabbix-server.log 日志
添加用户权限:
grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zbxpass';
flush PRIVILEGES;