㈠ Ubuntu 安装 zabbix-get,Command 'zabbix_get' not found 解决办法
在上回 Ubuntu 安装 nginx 版 zabbix 之后,执行 zabbix_get 提示命令不存在:
apt 安装 zabbix-get
之后就可以愉快地执行 zabbix_get 了
安装的是 zabbix-get !而不是 zabbix_get ,否则会出现以下情况
㈡ 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}
㈢ 如何用zabbix来监控磁盘IO
使用zabbix监控磁盘IO
前面的文章介绍了zabbix简单的安装,下面介绍下利用zabbix监控磁盘IO的方法
默认的 Zabbix 监控模板中,对于磁盘主要是剩余空间之类的监控,对于 IO 方面却没有,好在 Zabbix 提供了丰富的定制功能,可自行添加想要监控的任意内容。具体步骤如下:
1、 在被监控服务器的配置文件(/etc/zabbix/zabbix_agentd.conf)中添加以下内容:
###disk io
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'
可以先测试看其是否生效,使用如下命令,看是否正常返回数字。注意在命令行运行时,grep 那里的 $1 需根据自己磁盘设定修改为 sda 或 sdb,awk 那里需去除一个 $ 符号。
cat /proc/diskstats | grep sda | head -1 | awk '{print $4}'
2、被监控主机重启 agent
/etc/init.d/zabbix_agentd_ctl restart
3、在 zabbix server 上测试能否接收数据,将其中的 AgentServerIP 修改为被监控服务器的IP,注意这里是在运行 zabbix 服务端的机器上执行此操作。如果返回的是一串数字则正确,如果返回ZBX_NOTSUPPORTED ,请检查确认被监控主机的 agent 是否有重启,网络端口是否开放。
zabbix_get -s AgentServerIP -p 10050 -k custom.vfs.dev.write.ops[sda]
4、在 zabbix web 配置界面的模板中,导入这里提供的模板。并将此模板关联到要监控的服务器主机上,很快就可以在 Latest data 中看到获取的数据并可画出趋势图了。
㈣ zabbix-ssh 执行命令采集数据
1. 名称为这个监控项的名称
2. 类型选 ssh客户端
3. 键值 单独的描述short description,这个建议写,如果不写,一个主机的键值就不能重复。一个主机下多个ssh采集监控项就不能用。ip如果不是对应的主机这里就要写,端口号没变可留空,有变要填 写,enconding默认留空即可
键值例子ssh.run[ssh-test,1.1.1.1,,]
4.认证方式密码
5. ssh登录的用户名和密码
6. 登录 后执行采集数据的命令比如 free -m
㈤ centos安装了zabbix_server后,如何用命令进行启动和关闭
启动
system ctl start zabbix-server
关闭
system ctl stop zabbix-server
㈥ windows平台 zabbix远程执行命令(remote commands)
按住WINDOWS微标+R就会出来运行项开始→运行→命令集锦!winver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构(WMI)wupdmgr--------windows更新程序wscript--------windows脚本宿主设置write----------写字板winmsd---------系统信息wiaacmgr-------扫描仪和照相机向导winchat--------XP自带局域网聊天mem.exe--------显示内存使用情况Msconfig.exe---系统配置实用程序mplayer2-------简易widnowsmediaplayermspaint--------画图板mstsc----------远程桌面连接mplayer2-------媒体播放机magnify--------放大镜实用程序mmc------------打开控制台mobsync--------同步命令dxdiag---------检查DirectX信息drwtsn32------系统医生devmgmt.msc---设备管理器dfrg.msc-------磁盘碎片整理程序diskmgmt.msc---磁盘管理实用程序dcomcnfg-------打开系统组件服务ddeshare-------打开DDE共享设置dvdplay--------DVD播放器netstopmessenger-----停止信使服务netstartmessenger----开始信使服务notepad--------打开记事本nslookup-------网络管理的工具向导ntbackup-------系统备份和还原narrator-------屏幕“讲述人”ntmsmgr.msc----移动存储管理器ntmsoprq.msc---移动存储管理员操作请求netstat-an----(TC)命令检查接口syncapp--------创建一个公文包sysedit--------系统配置编辑器sigverif-------文件签名验证程序sndrec32-------录音机shrpubw--------创建共享文件夹secpol.msc-----本地安全策略syskey---------系统加密,一旦加密就不能解开,保护windowsxp系统的双重密码services.msc---本地服务设置Sndvol32-------音量控制程序sfc.exe--------系统文件检查器sfc/scannow---windows文件保护tsshutdn-------60秒倒计时关机命令tourstart------xp简介(安装完成后出现的漫游xp程序)taskmgr--------任务管理器eventvwr-------事件查看器eudcedit-------造字程序explorer-------打开资源管理器packager-------对象包装程序perfmon.msc----计算机性能监测程序progman--------程序管理器regedit.exe----注册表rsop.msc-------组策略结果集regedt32-------注册表编辑器rononce-p----15秒关机regsvr32/u*.dll----停止dll文件运行regsvr32/uzipfldr.dll------取消ZIP支持cmd.exe--------CMD命令提示符chkdsk.exe-----Chkdsk磁盘检查certmgr.msc----证书管理实用程序calc-----------启动计算器charmap--------启动字符映射表cliconfg-------SQLSERVER客户端网络实用程序Clipbrd--------剪贴板查看器conf-----------启动netmeetingcompmgmt.msc---计算机管理cleanmgr-------垃圾整理ciadv.msc------索引服务程序osk------------打开屏幕键盘odbcad32-------ODBC数据源管理器oobe/msoobe/a----检查XP是否激活lusrmgr.msc----本机用户和组logoff---------注销命令iexpress-------木马捆绑工具,系统自带Nslookup-------IP地址侦测器fsmgmt.msc-----共享文件夹管理器utilman--------辅助工具管理器gpedit.msc-----组策略假如一些命令禁用了如何更改?大家都知道开启和停止服务要用命令netstartservicename和netstopservicename吧但是怎么才能在命令行下设置一个服务的启动状态呢?比如说禁用它?系统自带的东东里可能有,但是我没研究过,我只说pstools里带的psservice命令在命令行下输入psservice/?命令可以看到使用说明:Usage:psservice[\\Computer[-uUsername[-pPassword]]]Cmdisoneofthefollowing:这是psservice命令的参数列表,但是今天我们用到的是这个列表里没有出现的一个参数:setconfig比如说要禁用UninterruptiblePowerSupply服务(UPS),我们知道它的服务名称是UPS,那么只要输入以下命令:psservicesetconfigupsdisabled就可以把这个服务禁用掉了其中的disabled可以换成auto和demand,分别是对应自动和手动
㈦ zabbix-agent 使用普通用户来运行
使用yum来安装的 zabbix-agent 默认使用zabbix运行,通常情况下这没有什么问题。近期我们有个需求,我们希望通过zabbix来监控java进程中jvm的信息。对jvm的监控我们通常使用jstat命令,这要求使用该命令的用户和java进程启动的用户为同一用户。
由于我们的java进程都是使用app用户来启动的,也就是说如果我们要使用zabbix来调用jstat命令,那么zabbix也需要使用app用户来启动。
实现的方法比较简单,就是修改zabbix-agent相关的配置文件,如果已经启动过的,那么还需要修改对应的目录属主。
使用rpm命令我们查看下安装zabbix-agent会在创建那些目录并且生成什么样的配置文件。
从上面的结果我们可以知道需要修改哪些配置文件,咱们依次来修改。
如果你的zabbix-agent在修改上述配置前已经启动过了,那么在修改配置后,在重启zabbix-agent前,你需要修改zabbix-agent的相关目录属主。
做完以上修改,咱们的zabbix-agent就能使用app用户来启动了。
㈧ 如何通过zabbix实现手动执行远程命令
不太理解你的手动执行远程命令是什么意思。
zabbix 提供了远程执行命令的功能,你可以通过配置action(动作)里的step(步骤),
来执行远程命令。前提你还需要在agent端把这个功能打开。
㈨ 通过zabbix怎么去监控服务器状态,然后自动重启
zabbix可以执行两种操作,一种是发送命令,一种是执行脚本,这两种都可以实现重启服务器的效果,如果要针对某一种情况,进行重启,这是trigger触发器,比如检测到cpu使用率超过90%,我发送reboot
㈩ 如何启动zabbix
我安装了一个zabbix监控,一直很顺利,后来不知道问什么服务起不来了,服务器总是提醒我10051端口没有打开,于是我仔细理了一遍又一遍,服务总是启动不起来:
Starting zabbix_server: /etc/init.d/functions: line 536: /etc/init.d//sbin/zabbix_server: No such file or directory
于是我打开/etc/init.d/zabbix_server配置文件中
发现
BASEDIR=/usr/local/zabbix/zabbix
路径不对
原来是我执行
sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g'/etc/init.d/zabbix_server
sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g'/etc/init.d/zabbix_agentd
的时候执行了两遍,感觉特别的手欠,后来服务死活启动不起来,然后把启动文件zabbix_server和zabbix_agentd中的BASEDIR=/usr/local/zabbix/zabbix改成BASEDIR=/usr/local/zabbix/就OK了。
vi zabbix_server
# Edit these to match your system settings
# Zabbix-Directory
BASEDIR=/usr/local/zabbix/
service zabbix_server start
Starting zabbix_server: [ OK ]
service zabbix_agentd start
Starting zabbix_agentd: [ OK ]