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地址)

点击下一步进入以下界面:

QQ截图20180723160617

QQ截图20180723160739

如果需要更改不需要重新安装,只要去修改上面的配置文件就可以了

QQ截图20180723160809

切换中文版:

QQ截图20180723162919

QQ截图20180723162956

 监控一个独立的主机(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的主界面里添加刚才的主机:

添加新的组:

QQ截图20180723193535

添加新的主机:

QQ截图20180723192918

QQ截图20180723194705

QQ截图20180723194737

QQ截图20180723195227

创建一个新的应用级:

QQ截图20180723200643

QQ截图20180723200816

QQ截图20180723200919

创建一个监控项

QQ截图20180723201218

QQ截图20180723203028

QQ截图20180723202741

最后点击添加就可以了。

再添加一个触发器:(一个监控项可定义多个触发器来响应不同级别的警告)

QQ截图20180723212229

QQ截图20180723213018

QQ截图20180723212845

 

查看监控的状态:

QQ截图20180723205327

一旦检测中有触发器报警,就需要定义actio(动作),来对触发器的警告做相应的处理

实验:实现nginx的简单的监控和报警后的触发操作

在从被监测的主机上安装nginx服务,并添加新的监控项,定义新的触发器,并且定义action在触发器报警后做相应的处理。

在被检测的服务器上:

#yum install nginx    #装包
#nginx  #启动服务

创建一个新的监控项在nod01上

QQ截图20180724111046

在创建一个新的触发器针对nginx做警告处理的

QQ截图20180724111832

QQ截图20180724112102

添加之后查看已创建好的nginx的触发器:

QQ截图20180724112331

在监测—>最新数据—->nod01可以看到nginx监控现在处于正常状态。

QQ截图20180724112851

如果此时将nginx服务手动暂停的化,zabbix监控就会显示已经down了。

QQ截图20180724113502

在此将服务手动开启后此时监控又正常了。此时在监测—>触发器;会触发一个事件。需要点击确认一下。

QQ截图20180724113840

创建一个action(动作)来解决nginx触发器出现警告的故障:(首先让他远程自动重启,如果还是失败,就发送信息)

配置—->动作,去创建一个action:
QQ截图20180724122052

QQ截图20180724122547

QQ截图20180724124412

QQ截图20180724124333

为了测试,需要在nod01上添加zabbix的管理员权限:(只为临时测试使用,生产中是危险的)

#visudo

QQ截图20180724123948

还需要在被监测的服务器上:

#vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1  #允许agent在本机执行命令(74行)
#systemctl restart zabbix-agent  #重启服务让修改的agent配置文件生效

最后手动将被监测的nginx服务停掉,查看是否能够自己修复。(如果有问题查自定义脚本是否写错)

 

定义媒介来实现出现警告的通过邮箱的发送:(仅在本机测试使用)

在本机zabbix-server服务器上安装邮件包

#yum install mailx

管理——>报警媒介类型  ;创建一个报警媒介

QQ截图20180724145557

点击添加即可。由于是本机的邮件服务,所以只能在本机的用户之间发送。

在次:管理—->用户—->admin

QQ截图20180724150146

QQ截图20180724150513

然后添加nginx触发警报的第二步的操作:

QQ截图20180724151710

QQ截图20180724150941

QQ截图20180724151203

QQ截图20180724151324

恢复操作也给用户发送邮件信息:

QQ截图20180724153224

现在就可以实现了;当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])

 

QQ截图20180724161431

创建图形来显示数据的信息

QQ截图20180724162121

QQ截图20180724162619

定义好图形后再桌面上添加多个图形:

首先创建一个聚合图:

QQ截图20180724163129

QQ截图20180724163603

QQ截图20180724163948

QQ截图20180724164014

QQ截图20180724163833

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 . 设置全局宏的界面:

QQ截图20180724165105

QQ截图20180724165458

在设置参数的时候,有关80端口的,就可以不用写80,而是用宏替换。(好处:当需要更改多处的80端口改为8080;时不需要一个个的去修改了,只需要在此处将宏的变量更改一下就可以了)

2 .配置主机的宏的界面:

QQ截图20180724170201

QQ截图20180724170324

使用模板来构建监控选项

示例:在已有主机上添加关于linux监控的选项;(使用模板来添加)

QQ截图20180724171143

QQ截图20180724171218

QQ截图20180724171301

也可以自己创建一个新的模板然后自定义(跟配置主机一样)

使用网络上的脚本来构建监控选项

https://share.zabbix.com/   (在此网站上可以查找所需要的模板)

QQ截图20180724173020

 

要选择相对应的版本即可。

QQ截图20180724173327

QQ截图20180724173712

QQ截图20180724174401

模板文件下载完成后,导入到zabbix模板库里面。就可以调用导入的模板文件了。

QQ截图20180724174810

在下面搜索就可以查看了。

QQ截图20180724175240

在被监控的服务器上:

#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”  #手动测试在服务器端

 

posted @ 2018-08-09 21:12  琼兔  阅读(271)  评论(0编辑  收藏  举报