配置方式:
1. 完成自定义监控脚本的编写(windows或linux脚本)
脚本要求:(1)既然是监控,那必然要有输出结果值(字符串,数字皆可)
(2)必须要求zabbix用户有执行权限,当然可以直接设置所有用户都有执行权限(chmod 777 脚本文件)
(3)若脚本需要传入参数,按照参数传入的顺序,在脚本中可用$1-$9来引用传入的参数
2 找到zabbix agent的配置文件zabbix_agentd.conf,修改如下两个参数
UnsafeUserParameters=0 => UnsafeUserParameters=1并去掉前面的注释符
UserParameter= => UserParameter=aaa.bbb[*], /usr/local/script/monitor.sh $1 $2 ...
说明:aaa.bbb[*] ---zabbix服务器添加监控信息时需要用到的key值,
格式:aaa.bbb[*](例:system.file.size[*])
/usr/local/script/monitor.sh ----监控脚本绝对路径
为了便于灵活监控,有时脚本需要传入参数,此参数可从zabbix服务器端传入,所有参数按顺序分别从$1-$9表示
注:(1)若无需传入参数,则红色部分可省略
(2)该自定义脚本可由zabbix服务器控制收集数据的频率(如:每30s运行一次),无需再添加计划任务
(3)以上参数请根据实际情况填写,并注意去除参数前注释符(#)
(4)注意在key值和后面的脚本之间有个逗号隔开
至此,自定义监控脚本zabbix agent端配置结束
3. 测试
测试命令: /usr/local/bin/zabbix_agentd -t key[参数]
示例:/usr/local/bin/zabbix_agentd -t system.file.size[/etc/a.txt,abc,...]
4. 监控脚本举例:
脚本名称:/usr/local/script/monitor.sh
脚本内容:echo `date +"%F %T"`
脚本要求:必须在控制台输出值,该值将作为返回值返回给zabbix服务器端
B. 配置zabbix时zabbix_server [24834]: /etc/zabbix/zabbix_server.conf.d: [2]No such file or directory
默认Zabbix配置文件会自动生成到/etc下面的,如果没有,就有可能默认安装到其他目录了,如/opt下面。
具体参考配置教程
1、zabbix server端的配置在进行源码安装zabbix时已经配置好了,具体要配置的参数如下:
ListenPort=10051
server服务的监听端口,默认是10051
DBHost=localhost 数据库IP地址
DBName=zabbix 数据库名称
DBUser=zabbix 数据库用户名
DBPassword=zabbix 数据库密码
DBPort=3306 数据库端口,默认是3306
ListenIP=127.0.0.1,192.168.10.10
zabbix server ip地址复制代码
vim /etc/zabbix/zabbix_server.conf
ListenPort=10051DBHost=localhost 数据库ip地址
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
ListenIP=127.0.0.1,192.168.10.10
zabbix server ip地址复制代码刚刚开始需要关注的是这些,后面再补充。
还有个:zabbix运行脚本存放路径,这个也在/etc/zabbix/zabbix_server.conf
配置文件里配置,默认地址是:AlertScriptsPath=${datadir}/zabbix/alertscripts
zabbix_agent 客户端配置,服务端在源码安装时已经进行了,批量部署的话不建议客户端使用源码安装,推荐使用rpm包安装,可以使用zabbix官方提供的rpm路径:
repo.zabbix.com/zabbix/3.0/修改Agent配置文件 zabbix agent的配置很简单,只需要修改zabbix agent配置文件中的Server、ServerActive和Hostname这三项即可。
其中Server、ServerActive是zabbix server服务器的IP地址,Hostname是被监控端的IP地址,如下:复制代码#
sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,192.168.30.130/g" /etc/zabbix/zabbix_agentd.conf
# sed -i "s/ServerActive\=127.0.0.1/ServerActive\=192.168.30.130:10051/g" /etc/zabbix/zabbix_agentd.conf
# sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/zabbix_agentd.conf
# sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix/zabbix_agentd.conf
复制代码拷贝 Agent 启动脚本复制代码
# mkdir /var/log/zabbix
# chown zabbix.zabbix /var/log/zabbix # cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# chmod 755/etc/init.d/zabbix_agentd # sed -i "s#BASEDIR=/usr/local
#BASEDIR=/usr/#g" /etc/init.d/zabbix_agentd
复制代码设置Agent开机启动
# chkconfig zabbix_agentd on
# servicezabbix_agentdstart在Server端使用以下命令测试是否能连接到Agent端:[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.217.139 -p 10050 -k "system.uptime"17340
C. zabbix3.0.4邮件报警 脚本参数怎么设置
不需要设置脚本呀,,只要在web端配置填上email就可以了。 。
D. CentOS 7安装Zabbix 3.4-Linux过程
Zabbix 3.4 支持Centos 7。貌似不支持6.9.
虚拟机配置 双核 8G内存
01、最小化安装操作系统
02、升级系统组件到最新版本
03、关闭 SELinux
04、关闭防火墙
完成3、4两步,重启一下。
05、获取sql源
可以从https://dev.mysql.com/downloads/file/?id=470281下载
06、安装 Zabbix 所需软件支持包
先装mysql
安装Apache
安装php
安装php扩展
07、设置 MySQL 参数(8GB 内存为例)
在文件最后添加以下内容:
注:原则上 innodb_buffer_pool_size 需要设置为主机内存的 80%,如果主机内存不是 8GB,以上参数可依据相应比例进行调整,例如主机内存为 16GB,则 innodb_buffer_pool_size 建议设置为 12GB,innodb_log_buffer_size 建议设置为 32M,innodb_log_file_size 建议设置为 128M,以此类推。请注意innodb_buffer_pool_size的值必须是整数,例如主机内存是4G,那么innodb_buffer_pool_size可以设置为3G,而不能设置为3.2G
08、启动 MySQL
09、获取 MySQL 的 root 初始密码
JtZizq!Rl6E+
10、进行 MySQL 安全配置
配置开始时会用到第 09获取的初始密码,建议修改为自定义密码,其它选项选择 y 即可
密码改为:Aa123456,.
11、重启 MySQL
12、配置 MySQL 中 zabbix要的库和账号权限
13、安装 Zabbix源
http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
14、安装zabbix
15、导入 zabbix 所需信息
16、配置 zabbix 参数
主要是以下几个选项参数需要设置(8GB 内存为例):
DBPassword 配置为第 12 步第 3 行中设置的自定义密码
(Timeout在432
其它参数保持默认值即可
如果需要监控VMware虚拟机,则还需要设置以下选项参数:
17、配置 Apache 中的 PHP 参数(8GB 内存为例)
18、重启系统
19、启动 zbx
20、在浏览器中输入 http://zbx监控服务器的IP地址/zabbix,进行 zabbix 的页面初始化配置
这个页面PHP设置要求全部OK
如果密码输错,是跳转不到下一步的。密码是前面设置的 Qing@2017
注:第4步的”Zabbix server detail”页面中,”Name”处可填写对此监控系统的描述性文字,支持中文,有点像网站的名称。
21、第一次登录zbx监控系统,默认用户名 admin,默认密码 zabbix,确认可正常登录系统。
22、登录进入系统后,确认 Zabbix server is running 的值是 Yes。
然后选择 Administrator –> Users –> Admin
23、回到”监测中” –> “仪表板”,就可以看到监控系统已设置为中文界面了。
E. 怎么在zabbix里面使用python脚本
1.修改zabbix server端的配置文件,启用AlertScriptsPath,使其支持脚本功能
1.编辑zabbix server端的配置文件,并重启服务
# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/alertscripts
# /etc/init.d/zabbix_server restart
2.在服务端添加邮件报警的python脚本,并给脚本执行权限
邮件报警,并记录日志
# vim /usr/local/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pdb
import smtplib
import string
import time
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
#pdb.set_trace()
#HOST = "mail.gw.com.cn"
def S_Mail():
HOST = "smtp.exmail.qq.com" #邮件服务器
SUBJECT = sys.argv[2].decode(‘utf-8‘).encode(‘gbk‘) #主题
TO =sys.argv[1] #收件邮箱
FROM = "[email protected]"
text = sys.argv[3].decode(‘utf-8‘).encode(‘gbk‘) #发件内容
BODY = string.join((
"FROM: %s" % FROM,
"To: %s" % TO,
"Subject: %s" %SUBJECT,
"",
text
),"\r\n")
server = smtplib.SMTP()
server.connect(HOST,25)
#server.starttls()
server.login("发件邮箱","密码")
server.sendmail(FROM,[TO],BODY)
server.quit()
# email log 记录日志
with open(‘/data/logs/zabbix/Email.log‘, ‘a‘) as f:
date=time.strftime("%y-%m-%d %H:%M:%S")
str = date + " " + TO +" " + SUBJECT + "\r\n" + "\n"
str1 = str.decode(‘gbk‘).encode(‘utf-8‘)
# print("%s" %str1)
f.write(str1)
if __name__==‘__main__‘:
S_Mail()
F. zabbix监控windows mysql脚本报错
你需要再看看你的建表语句,是不是5个字段,2个int 3个varchar var/varchar 那是必须要加引号的,对的话就看看主键,自增设置是否正确,没处理好的话就把sql语句放到mysql里运行,会反馈错误号,按理说你这个也应该有,然后根据错误号唉网络里查询,这样就可以有针对行得处理了
G. zabbix自定义键值脚本如下如何传入多个$1参数
具体示例和格式就是这样的:system.cpu.util[0,user,avg5]默认的参数是这样的system.cpu.util[,,]cpu具体编号就是CPU的具体核心,为空就代笔CPU所以核心type就是CPU的不同状态值idle,nice,user(default),system(defaultforWindows),iowait,interrupt,softirq,steal其中idle表示空闲,user表示用户使用最后的avg5表示平均每5分钟的值,为空表示当前值,要改成平均每15分钟只需要写成avg15当前CPU使用率写成system.cpu.util[,user]即可,同理system.cpu.util[,idle]
H. zabbix告警配置
概述
假设我们配置了一些监控项和触发器,现在当触发器状态改变时会获取一些发生的事件,是时候考虑下一步行动了。
我们不可能一直盯着触发器或者事件列表,当发生一些标志性的事件时发送警告再好不过。当问题发生,关注这些的用户都会被通知。
zabbix提供主要的功能就是发送告警就是这个原因。哪些人?在什么时候?应该收到哪些信息是可以被定义的。
为了发送和接收来自zabbix的告警,你必须:
定义媒介
配置发送信息到定义媒介的动作
动作由 触发条件 和 操作 组成。基本上当条件符合时,操作被执行。两个主要的操作是 发送消息 和 执行远程命令
为了发现和自动注册创建的事件,一些额外的操作是可用的,包含添加或者删除主机,链接模板等
一、媒介(Media types)
概述
Media 是用于发送zabbix的消息与告警的递送通道
可以定义一下媒介类型
E-mail
SMS
Jabber
Ez Texting
Custom alertscripts
1、 E-mail
为消息定义E-mail发送通道,需要配置e-mail 作为媒介类型并且传递指定的地址给用户
配置
依次点击 管理——>报警媒介类型,点击创建媒介类型(或者点击预先定义的媒介类型 E-mail)
媒介类型表包含通常的媒介类型属性
所有重要的字段都会标记红星
Name 媒介类型名字
Type 选择Email作为类型
SMTP server 设置stmp服务器作为处理信息的出口
SMTP server port 设置smtp服务的端口,这个参数从zabbix3.0开始支持
SMTP helo 这是正确的stmp链接值,通常为域名
SMTP email 这个地址会被用于信息发送者,用来发送消息,添加发送者的显示名 如 Zabbix_info则zabbix_info<[email protected]>
几个可以生效的配置:
[email protected] 只有邮箱地址,不需要尖括号
zabbix_info<[email protected]> 显示名与邮件地址,地址写在尖括号中
监控系统<[email protected]> 使用UTF-8格式的显示名
Connection security 选择链接安全级别,None为不使用ssl选项,starttls 使用 CURLOPT_USE_SSL参数,SSL/TLS则CURLOPT_USE_SSL可选
SSL verify peer 标记checkbox同步SMTP服务的SSL证书,
Authentication 认证方法
Username 用户名
Password 密码
Enabled 启用媒介
注意 : 为了使SMTP中的authentication 选项可用,zabbix在编译时,需要带--with-libcurl参数 使用cURL7.20.0或更高版本
第二个选项卡options
第二个选项卡options配置了告警的处理流程。同样的options配置在其他的媒介类型中也存在。
所有媒介都是并行处理的,当前最大会话每个媒介自己定义,但是zabbix服务的告警处理总数被参数(zabbix_sever.conf)StartAlerters所限制。同一触发器生成的告警会序列化的处理
options表
concurrent sessions 并发会话数,三个选项,one(一个),unlimited(不限制),custom(自定义)
Attempts 尝试发送告警的次数,如果设置为1,则zabbix会发送以此通知,并且失败时不会重发
Attempts interval 重发通知的频率,发送失败时重发的间隔
配置用户的媒介
依次点击 Administration(管理)--->Users(用户)
点击用户的属性表,在Media(媒介)表中点击add
type 选择Email作为类型
send to 指定email地址,可以点击add添加多个地址,同理此地址也可设置显示名如Zabbix_admin<[email protected]>或者[email protected]
when active 设置发送时间如工作日(1-5,09:00-18:00)可以使用宏
Use if severity 指定想要接受的告警等级
status 启用与否
2、SMS
zabbix发送短信,使用串行GSM调试解调器连接到zabbix server的serial port
先决条件:
串行设备(正常情况下在linux的/dev/ttyS0)的速度取决于modem。zabbix不设置串行链接的速度。
zabbix user拥有对串行设备的读写权限,运行ls -l /dev/ttyS0查看当前权限
GSM调试解调器拥有PIN码,PIN也可以禁用使用命令 AT+CPIN="NNNN"输入PIN, 必须有双引号。
已经测试好的modem Siemens MC35 Teltonika ModemCOM/G10
配置SMS作为发送通道,需要配置SMS作为媒介类型并且在用户界面配置接收手机号
配置
依次点击 Administration--->Media types,点击创建media type或使用预先的配置
sms的Media type表属性
Description media type名
Type 选择SMS
GSM modem 选择设备如 /dev/ttyS0
options选项卡见E-mail
配置用户媒介
依次点击 Administration(管理)--->Users(用户)
点击用户的属性表,在Media(媒介)表中点击add
types 选择SMS作为媒介
Send to 输入用户手机号
When active 设置发送时间如工作日(1-5,09:00-18:00)可以使用宏
Use if severity 指定想要接受的告警等级
status 启用与否
3、Jabber (略)
4、Ez Texing(略)
5、Custom alertscripts
如果不满足于存在的媒介来发送警告,可以自定义脚本进行发送
警告脚本在zabbix server上执行,这些脚本位于server配置文件AlertScriptsPath变量(默认/usr/local/share/zabbix/alertscripts)
脚本示例:
#!/bin/bash
to=$1
subject=$2
body=$3
cat <<EOF |mail -s "$subject" "$to"
$bodyEOF
从3.4开始zabbix会检查exit code(shell执行返回码,0为成功),若exit code 不等于0,则认为执行失败,zabbix会重复执行
script不保存环境变量,所以环境变量要精确指定
配置
依次点击 Administration--->Media types,点击创建media type
mediatype表属性
Name 输入媒介的名字
Type 选择Script作为类型
Script name 输入脚本的名字(zabbix server中的脚本文件)
Script parameters 添加命令行参数到脚本
可支持ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}等宏,
{ALERT.SENDTO} 用户媒介中的send to(收件人)的值
{ALERT.SUBJECT} 动作配置中的Default subject(默认标题)
{ALERT.MESSAGE} 动作配置中的Default message(消息内容)
options表中定义了处理流程,见E-mail的说明
配置用户媒介User media
依次点击 Administration(管理)--->Users(用户)
点击用户的属性表,在Media(媒介)表中点击add
用户媒介属性
Type 选择自定义脚本的媒介类型
Send to 指定告警接收人
When active 设置发送时间如工作日(1-5,09:00-18:00)可以使用宏
Use if serverity 指定想要接受的告警等级
status 启用与否
二、动作
如果你希望发生事件时会触发一些操作,那么你需要配置action
动作可以定义回应所有支持的事件类型,
事件类型:
Trigger events触发器事件,当触发器状态从ok改变到problem或相反。
Discovery events 当自动发现产生
Auto registration events当新的agent自动注册时,或者经注册过的主机元数据改变
Internal events当监控项变为不支持或触发器状态变为unknown时
配置一个动作
依次 Configuration ——>Actions
从event source中选择需要的源(分为:触发器源,自动发现源,自动注册源,事件源)
点击创建动作
选择操作执行的条件
选择具体操作
选择恢复操作
动作表的属性
Name 唯一动作名
Type of calcaulation 选择条件触发的计算方法
And 必须符合所有条件
Or 只要一个条件符合即可
And/Or 结合二者,不同类型的条件用And,同一类型的条件用Or
Custom expression 用户自定义
Conditions 触发动作的一系列条件、
New condition 选择新的动作触发条件
Enabled 启用动作
条件设置
基于触发器的条件
Application 应用集
Host group 主机组
Template 模板
Host 主机
Tag 标签(串)
tag value 标签值
Trigger 触发器
Trigger name 触发器名字
Trigger severity 触发器等级
Time period 触发时间
Problem is suppressed 触发问题是否意料之中,如主机维护
基于自动发现的条件
Host IP 指定主机ip地址自动发现范围 格式: 单独的ip:192.168.1.33 范围ip: 192.168.1-101.1-254 Ip mask: 192.168.4。0/24
Service type 服务类型
service port 服务端口
Discovery rule 指定自动发现规则
Discovery check
Discovery object
Discovery status
Uptime/Downtime
Received value
Proxy
基于自动注册的条件
Host metadata 由zabbix_agentd.conf 文件中的HostMetadata变量定义
Host name
Proxy
基于内部事件的条件
Application
Event type
Host group
Template
Host
条件匹配后,就需要执行响应的动作了
可以支持以下动作
send a message
execute a remote command
add host
remove host
enable host
disable host
add to host group
remove from host group
link to template
unlink from template
set host inventory mode
执行远程命令
确保配置文件中(zabbix_agentd.conf)EnableRemoteCommands 参数设置为1
加入zabbix用户到sudo,vim /etc/sudoer
zabbix ALL=NOPASS: ALL #所有命令不需密码
zabbix ALL=NOPASS: /etc/init.d/apache restart #指定某一命令不需要密码
触发操作后,使用宏 编辑信息
如 告警信息模板
标题 服务器:{HOST.NAME} - 发生: {TRIGGER.NAME}故障
信息 告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
恢复信息
标题 服务器:{HOST.NAME} - {TRIGGER.NAME} 已恢复
信息 告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
I. zabbix运维系统怎么编写脚本
1.修改zabbix server端配置文件启用AlertScriptsPath使其支持脚本功能
1.编辑zabbix server端配置文件并重启服务
# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/alertscripts
# /etc/init.d/zabbix_server restart
2.服务端添加邮件报警python脚本并给脚本执行权限
邮件报警并记录志
# vim /usr/local/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pdb
import smtplib
import string
import time
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
#pdb.set_trace()
#HOST = "mail.gw.com.cn"
def S_Mail():
HOST = "smtp.exmail.qq.com" #邮件服务器
SUBJECT = sys.argv[2].decode(‘utf-8‘).encode(‘gbk‘) #主题
TO =sys.argv[1] #收件邮箱
FROM = "[email protected]"
text = sys.argv[3].decode(‘utf-8‘).encode(‘gbk‘) #发件内容
BODY = string.join((
"FROM: %s" % FROM,
"To: %s" % TO,
"Subject: %s" %SUBJECT,
"",
text
),"\r\n")
server = smtplib.SMTP()
server.connect(HOST,25)
#server.starttls()
server.login("发件邮箱","密码")
server.sendmail(FROM,[TO],BODY)
server.quit()
# email log 记录志
with open(‘/data/logs/zabbix/Email.log‘, ‘a‘) as f:
date=time.strftime("%y-%m-%d %H:%M:%S")
str = date + " " + TO +" " + SUBJECT + "\r\n" + "\n"
str1 = str.decode(‘gbk‘).encode(‘utf-8‘)
# print("%s" %str1)
f.write(str1)
if __name__==‘__main__‘:
S_Mail()
J. zabbix监控项用脚本怎么配置
zabbix怎么使用自动发现添加新监控项1.Serverzabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbixagent和zabbixproxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此。包含server、前段界面和后端DB几部分。2.Agent部署在被监控主机上用于监控本地资源和应用并向zabbixserver汇报结果。使用本地系统调用故非常高效。有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数据。主动模式下先主动由server获取监控项列表在检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。3.Proxy可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbixserver。proxy需要单独的数据库。