zabbix
zabbix
官网:https://www.zabbix.com/download
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server:zabbix的监控服务器,负责接收agent端发送过来的数据,并做处理。端口:10051 zabbix agent:安装在各个需要监控主机上,负责收集本地数据并发往server端。端口:10050
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
监控系统具备的四种功能
采集:根据用户的要求,周期性的采集数据 存储:对采集到的各种数据进行预约存储。 可视化:对采集到的数据,进行可视化。 报警:报警系统,在特定的条件下被触发(超出合理的区间)
监控数据采集通道
SNMP:Simple Network Management Protocol ssh/telnet IPMI agent: (master/agent)
zabbix的安装和监控配置
zabbix程序的组件:
zabbix_server:服务端守护进程;
zabbix_agentd:agent守护进程;
zabbix_proxy:代理服务器,可选组件;
zabbix_get:命令行工具,手动测试向agent发起数据采集请求;
zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据;
zabbix_java_gateway: java网关;
zabbix_database:MySQL或PostgreSQL;
zabbix_web:Web GUI
zabbix的安装
参照zabbix官网进行安装 :https://www.zabbix.com/download?zabbix=3.4&os_distribution=centos&os_version=7&db=MySQL
#wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm #下载包 #yum install zabbix-release-3.4-2.el7.noarch.rpm #安装下载下来的包 #yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent #安装程序包 #yum install mariadb-server httpd #安装数据库 #systemctl start mariadb #mysql -uroot -pcentos #进入数据库 MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@192.168.130.8 identified by 'centos'; Query OK, 0 rows affected (0.00 sec) #zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -h192.168.130.8 -pcentos zabbix #查看压缩文件并导入数据库 #mysql -uzabbix -h192.168.130.8 -pcentos #进入数据库产看zabbix数据库里已经有内容了 MariaDB [(none)]> use zabbix; Database changed MariaDB [zabbix]> show tables; #vim /etc/zabbix/zabbix_server.conf #修改配置文件 DBName=zabbix #数据库的名字 DBHost=192.168.130.8 #数据库的地址 DBPassword=centos #登陆数据库的密码 #vim /etc/httpd/conf.d/zabbix.conf #修改配置文件 php_value date.timezone Asia/Shanghai #修改时区 #systemctl start zabbix-server #启动zabbix服务(10051端口) #systemctl start httpd #启动服务
http://192.168.130.8/zabbix/(在浏览器上访问此路径并安装zabbix;此IP地址为zabbix主服务的IP地址)
点击下一步进入以下界面:
如果需要更改不需要重新安装,只要去修改上面的配置文件就可以了
切换中文版:
监控一个独立的主机(zabbix-agent):简单的手动添加监控选项和参数
阿里云官网:https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/
#wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-sender-3.4.11-1.el7.x86_64.rpm # wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.11-1.el7.x86_64.rpm #rpm -ivh zabbix-agent-3.4.11-1.el7.x86_64.rpm #rpm -ivh zabbix-sender-3.4.11-1.el7.x86_64.rpm #vim /etc/zabbix/zabbix_agentd.conf #修改配置文件 Server=192.168.60.20 #更改为 zabbix-server服务器的地址(97行) ServerActive=192.168.60.20 #更改为 zabbix-server服务器的地址(138行) Hostname=nod01 #设定本机的主机名(149行) #systemctl start zabbix-agent #启动服务 #ss -nult #查看端口号;10050
然后再浏览器上的zabbix的主界面里添加刚才的主机:
添加新的组:
添加新的主机:
创建一个新的应用级:
创建一个监控项
最后点击添加就可以了。
再添加一个触发器:(一个监控项可定义多个触发器来响应不同级别的警告)
查看监控的状态:
一旦检测中有触发器报警,就需要定义actio(动作),来对触发器的警告做相应的处理
实验:实现nginx的简单的监控和报警后的触发操作
在从被监测的主机上安装nginx服务,并添加新的监控项,定义新的触发器,并且定义action在触发器报警后做相应的处理。
在被检测的服务器上:
#yum install nginx #装包
#nginx #启动服务
创建一个新的监控项在nod01上
在创建一个新的触发器针对nginx做警告处理的
添加之后查看已创建好的nginx的触发器:
在监测—>最新数据—->nod01可以看到nginx监控现在处于正常状态。
如果此时将nginx服务手动暂停的化,zabbix监控就会显示已经down了。
在此将服务手动开启后此时监控又正常了。此时在监测—>触发器;会触发一个事件。需要点击确认一下。
创建一个action(动作)来解决nginx触发器出现警告的故障:(首先让他远程自动重启,如果还是失败,就发送信息)
配置—->动作,去创建一个action:
为了测试,需要在nod01上添加zabbix的管理员权限:(只为临时测试使用,生产中是危险的)
#visudo
还需要在被监测的服务器上:
#vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #允许agent在本机执行命令(74行) #systemctl restart zabbix-agent #重启服务让修改的agent配置文件生效
最后手动将被监测的nginx服务停掉,查看是否能够自己修复。(如果有问题查自定义脚本是否写错)
定义媒介来实现出现警告的通过邮箱的发送:(仅在本机测试使用)
在本机zabbix-server服务器上安装邮件包
#yum install mailx
管理——>报警媒介类型 ;创建一个报警媒介
点击添加即可。由于是本机的邮件服务,所以只能在本机的用户之间发送。
在次:管理—->用户—->admin
然后添加nginx触发警报的第二步的操作:
恢复操作也给用户发送邮件信息:
现在就可以实现了;当nginx执行动作里的脚本没有将nginx服务重新启动起来,就会执行第二步的操作,发送邮件给定义的用户通知消息。
使用脚本来创建脚本报警的方式
脚本放置路径:zabbix_server.conf配置文件中AlertScriptsPath参数定义的路径下;
/usr/lib/zabbix/alertscripts/ (只要将脚本放在此目录下,直接调用脚本名称就可以了)
zabbix 3.0之后的版本,此三个变量定义为内部宏:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
Python报警脚本可以在互联网上查找。(安装好python的执行环境)
脚本示例:给与执行权限,测试执行成功就可以。
#!/usr/bin/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 = ‘973366980@qq.com’ mail_pass = ‘密码’ #以上内容根据你的实际情况进行修改 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])
创建图形来显示数据的信息
定义好图形后再桌面上添加多个图形:
首先创建一个聚合图:
zabbix的宏的定义
宏:macro,预设的文本替换模式;变量
级别:
全局:Administration –> General –> Macros
模板:编辑模板 –> Macros
主机:编辑主机 –> Macros (仅对当前主机一个有效的)
假如在三个级别都定义了宏,则主机级别的生效
类型:
内建宏:{MACRO_NAME}
文档参考:
https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location
自定义:{$MACRO_NAME}
命名方式:大写字母、数字和下划线;不能以数字开头
1 . 设置全局宏的界面:
在设置参数的时候,有关80端口的,就可以不用写80,而是用宏替换。(好处:当需要更改多处的80端口改为8080;时不需要一个个的去修改了,只需要在此处将宏的变量更改一下就可以了)
2 .配置主机的宏的界面:
使用模板来构建监控选项
示例:在已有主机上添加关于linux监控的选项;(使用模板来添加)
也可以自己创建一个新的模板然后自定义(跟配置主机一样)
使用网络上的脚本来构建监控选项
https://share.zabbix.com/ (在此网站上可以查找所需要的模板)
要选择相对应的版本即可。
模板文件下载完成后,导入到zabbix模板库里面。就可以调用导入的模板文件了。
在下面搜索就可以查看了。
在被监控的服务器上:
#vim /etc/zabbix/zabbix_agentd.d/test.conf #新建配置文件 定义一个key,然后在监控端就可以看到此key的值。 UserParameter=memory.used,/usr/bin/free |/usr/bin/awk’/^Mem/{print $3}’ (内容) #systemctl restart zabbix-agent #重启服务,然后让key值生效 #yum install zabbix-get -y #在服务器端下载手动测试的工具 zabbix_get -s 192.168.60.21 -p 10050 -k “memory.used” #手动测试在服务器端