host groups –> host –> application –> item –> trigger –> action (conditions, operations)
监控主机
可以基于单个主机和主机组进行管理
items:监控项,可以分组。
application:分组的监控项
trigers:触发器,定义的items的状态:OK和PROBLEM,一旦状态转换为PROBLEM就会生成vents(时间)。
actions:condition、operation
items: key+parameter
key: 获取监控数据的
zabbix内建:
type:
agent
agent(active)
snmp v1
Simple check 简单检测
用户自定义(UserParameter)
采集到的数据的类型:
数值:
整数
浮点数
字符串:
字符串
文本
Log
历史数据保存时间:
趋势历史保存时间:采集的数据平均值,最大值,最小值
存储的值:3.4版本之前
As is:不对数据做任何处理
Delta:(simple change),本次采样减去前一次采样的值的结果
Delta:(speed per second),本次采样减去前一次采样的值,再除以经过的时长;
time:时间格式
储存的值:3.4
text
structured data
arithmetic
change
numeral systems
界定特定的item采集到的数据的非合理区间或非合理状态
逻辑表达式,阈值;通常用于定义数据的不合理区间;
OK:正常 状态 --> 较老的zabbix版本,其为FALSE;
PROBLEM:非正常 状态 --> 较老的zabbix版本,其为TRUE
支持正则表达式
触发器表达式:
{hostname:key[paramters].function(arguments)
>, <, =, #(not equal)...
+, -, *, /
&, |
表达式示例
{n1.magedu.com:net.if.in[eno16777736,packets].last(#1)}>15
触发器存在可调用的函数:
nodata() 没有数据
last() 最近几次/时间的采集
date()
time()
now()
dayofmonth()
...
Severity;严重性
Not classified 未分类
Information 一般信息
Warning 警告
Average 一般严重,橙色
High 严重
Disaster 特别严重
trigger间存在依赖关系
Trigger 触发器
discovery 自动发现规则
auto registration 主机自动注册
internal 内部事件
触发条件
conditions:
多个条件之间存在逻辑关系;
operations:
条件满足时触发的操作;
RECOVERY OPERATIONS
状态恢复时的状态
触发后的动作
send message:
告警信息的传递通道类型:
Email:邮件
Script:自定义脚本
Script:报警脚本;
脚本放置路径:
zabbix_server.conf配置文件中AlertScriptsPath参数定义的路径下;
zabbix服务器在调用脚本时,会向其传递三个参数:
$1:经由此信道接收信息的目标;
$2:subject
$3:body
zabbix 3.0之后的版本,此三个变量定义为内部宏:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
SMS:短信
Jabber:社交平台,中国不支持
Ez Texting:社交平台,中国不支持
接收信息的目标为zabbix用户,需要用户配置中定义对应各种媒介通道的接收方式;
Python邮件报警脚本示例:
#!/usr/bin/env python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
import sys
def formatAddr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def send_mail(to_list,subject,content):
mail_host = 'smtp.exmail.qq.com'
mail_user = '[email protected]'
mail_pass = 'YOUR_PASSWORD'
#以上内容根据你的实际情况进行修改
msg = MIMEText(content,'','utf-8')
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = formatAddr('zabbix监控 <%s>' % mail_user).encode()
msg['to'] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(mail_user,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
远程执行命令 remote command
功能:在agent所在的主机上运行用户指定的命令或脚本;例如:
重启服务;
通过IPMI重启服务器;
任何用户自定义脚本中定义的操作;
可执行的命令类型:
IPMI
ssh
telnet
Custom Script
Global Script
前提:在agent需要完成的配置:
(1) zabbix用户拥有所需要的管理权限;
编辑/etc/sudoers文件
注释如下行;
Defaults requiretty
添加如下行:
zabbix ALL=(ALL) NOPASSWD: ALL
(2) agent进程要允许执行远程命令;
编辑/etc/zabbix/zabbix_agentd.conf,设置如下配置:
EnableRemoteCommands=1
重启服务生效;
graph: simple, custom
screen:把多个graph整合于同一屏幕进行展示;
slide show:把多个screen以slide show的方式进行展示
map
主机配置模板:用于链接至目标主机实现快速监控管理;
link, unlink, unlink and clear
模板可继承;
宏:macro,预设的文本替换模式;
级别:
全局:Administration --> General --> Macros
模板:编辑模板 --> Macros
主机:编辑主机 --> Macros
类型:
内建:{MACRO_NAME}
自定义:{$MACRO_NAME}
命名方式:大写字母、数字和下划线;
zabbix server扫描指定网络范围内的主机;
发现方式:
ip地址范围;
可用服务(ftp, ssh, http, ...)
zabbix_agent的响应;
snmp_agent的响应;
分两个阶段:
discovery
actions:把discvery events当作前提条件
发现:--> discovery events
Service, Host
UP/DOWN, DICOVERED/LOST
可采取的动作:
send message, remote command
add/remove host
enable/disable host
add host to group
link template to host
...
item type:不同的类型适用的接口有可能不同;有些key仅能用在指定的接口之上;
agent
agent(active)
simple
snmpv1
snmpv2
snmpv3
ssh
...
接口类型:agent, ipmi, snmp, jmx
示例
自定义key:在zabbix agent端的配置文件上由用户通过UserParameter指令定义的key;zabbix_agentd.conf文件中
UserParameter=,<command>
UserParameter=nginx.requests,curl -s http://localhost/status | awk '/^[[:space:]]*[0-9]/{print $3}'