一、zabbix简介:

zabbix是完全开源的工具,整合了cactinagios等特性

附:SNMP(udp 161  udp 162)

众多网络工具都支持此协议,比如常见路由交换,常见OS

其既可以做管理端也可以做被管理端

snmp协议大致有3个版本分别是v1 v2v3

无论是v1 v2 的安全性是比较差的,因为传输是明文的, V3的认证密码用MD5/SHA摘要算法加密

 

很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是控制端和agent架构,他们有专属的agent

Zabbix的主要功能:

具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)

支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

支持分布式,能集中展示、管理分布式的监控点,扩展性强

server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置。

数据收集,支持 snmp(包括 trapping and polling )IPMIJMXSSHTELNET

自定义的检测;自定义收集数据的频率;

服务器/代理和客户端模式;

灵活的触发器;可以定义非常灵活的问题阈值,称为触发器;

高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型。

CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等。

硬件监控:Zabbix IPMI Interface

系统监控:ZabbixAgent Interface

Java监控:Zabbix JMXInterface

网络设备监控:Zabbix SNMP Interface

应用服务监控:Zabbix Agent UserParameter 

MySQL数据库监控:percona-monitoring-plulgins  

URL监控:Zabbix Web 监控

zabbix重要组件说明:

1zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

2database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3web interfacezabbixGUI接口;

4proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

另外,zabbix serverproxyagent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

一个监控系统运行的大概的流程是这样的:

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动:serveragent请求获取监控项的数据,agent返回数据。

zabbix常用的监控架构平台

1server-agentd模式:

这个是最简单的架构了,常用于监控主机比较少的情况下。

2server-proxy-agentd模式:

这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

zabbix的系统架构:

Zabbix监控系统_第1张图片

Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。借助Zabbix,可以很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统的持续运行。下面会逐步介绍Zabbix分布式监控系统的部署及使用

配置好IPDNS 、网关,确保使用远程连接工具能够连接服务器

zabbix监控服务器:192.168.130.76  #zabbix的服务端(若要监控本机,则需要配置本机的zabbixagent)

Zabbix agent被监控主机:192.168.130.78#zabbix的客户端(被监控端,需要配置Zabbix agent

二、Zabbix部署前的LNMP环境的搭建过程:

Zabbix是基于lnmp环境搭建的,lnmp环境搭建参考前边文档这里直接做zabbix。

 

三、监控系统Zabbix-3.2.1的安装

zabbix-server端的操作

zabbix服务器端要提前安装好LNMP环境(mysqlnginxphp5的安装目录均是/usr/local

创建Zabbix运行的用户:

[root@mysqla ~]#groupadd zabbix

[root@mysqla ~]#useradd -g zabbix zabbix

安装libcurlnet-snmp:

[root@mysqla ~]#yum -y install net-snmp net-snmp-develcurl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel  libssh2-devel

注:OpenIPMI-devel libssh2-devel软件包使用centos在线yum软件源安装

安装Fping:

[root@mysqla ~]# tar zxffping-3.12.tar.gz

[root@mysqla ~]# cd fping-3.12/

[root@mysqla fping-3.12]# ./configure&& make && make install

[root@mysqla fping-3.12]# chownroot:zabbix /usr/local/sbin/fping

[root@mysqla fping-3.12]# chmod 4710/usr/local/sbin/fping

安装Zabbix Server:

[root@mysqla ~]# tar zxfzabbix-3.2.1.tar.gz

[root@mysqla ~]# cd zabbix-3.2.1/

[root@mysqla zabbix-3.2.1]# ./configure--prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java--with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl--with-openipmi

注意:编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。

--with-ssh2 是不需要在客户端服务器上面安装Zabbix agent,如果需要使用ssh检查,需要在编译的时候加上这项,最低需要libssh2 1.0.0版本,需要安装ssh开发包

--with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等

如果添加了--enable-proxy, 那么会生成getsender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

[root@mysqla zabbix-3.2.1]#make&& make install

添加系统软连接

[root@mysqla ~]# ln -s/usr/local/zabbix/bin/* /usr/local/bin/

[root@mysqla ~]# ln -s/usr/local/zabbix/sbin/* /usr/local/sbin/

Zabbix Server配置与启动
创建Zabbix数据库和MySQL用户:

mysql> create database zabbixcharacter set utf8;

Query OK, 1 row affected (0.01 sec)

 

mysql> grant all privileges onzabbix.* to zabbix@localhost identified by 'zabbix';

Query OK, 0 rows affected, 1 warning(0.00 sec)

导入Zabbix初始数据:

切换到zabbix的解压目录下

[root@mysqla zabbix-3.2.1]# cddatabase/mysql/

[root@mysqla mysql]# pwd

/root/zabbix-3.2.1/database/mysql

[root@mysqla mysql]# ls

data.sql p_w_picpaths.sql  schema.sql

进行zabbix初始数据导入

[root@mysqla mysql]# mysql -uzabbix-pzabbix -hlocalhost zabbix < schema.sql

[root@mysqla mysql]# mysql -uzabbix-pzabbix -hlocalhost zabbix < p_w_picpaths.sql

[root@mysqla mysql]# mysql -uzabbix-pzabbix -hlocalhost zabbix < data.sql

编辑/usr/local/zabbix/etc/zabbix_server.conf:

root@mysqla ~]# grep -v "^#"/usr/local/zabbix/etc/zabbix_server.conf | grep -v "^$"

LogFile=/usr/local/zabbix/logs/zabbix_server.log

PidFile=/usr/local/zabbix/logs/zabbix_server.pid

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

DBPort=3306

FpingLocation=/usr/local/sbin/fping

#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix

启动Zabbix Server:

# /usr/local/zabbix/sbin/zabbix_server-c /usr/local/zabbix/etc/zabbix_server.conf

/usr/local/zabbix/sbin/zabbix_server:error while loading shared libraries: libmysqlclient.so.20: cannot open sharedobject file: No such file or directory

解决方法:

ld.so.conf中加入/usr/local/mysql/lib

[root@mysqla zabbix-3.2.1]# cat/etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/mysql/lib

/usr/local/lib

[root@mysqla zabbix-3.2.1]# ldconfig

再次执行zabbix_server启动

# /usr/local/zabbix/sbin/zabbix_server-c /usr/local/zabbix/etc/zabbix_server.conf

[root@mysqla init.d]# netstat -anpt|grep zabbix_server

tcp   0  0 0.0.0.0:10051    0.0.0.0:*      LISTEN      27199/zabbix_server

添加开机启动脚本

[root@mysqla ~]# cd zabbix-3.2.1/

# cpmisc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server

# cpmisc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd

[root@mysqla zabbix-3.2.1]# chmod +x/etc/rc.d/init.d/zabbix_server

[root@mysqla zabbix-3.2.1]# chmod +x/etc/rc.d/init.d/zabbix_agentd

[root@mysqla zabbix-3.2.1]# chkconfig--add zabbix_server

[root@mysqla zabbix-3.2.1]# chkconfig--add zabbix_agentd

[root@mysqla zabbix-3.2.1]# chkconfigzabbix_server on

[root@mysqla zabbix-3.2.1]# chkconfigzabbix_agentd on

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路径

:wq! #保存退出

vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径

:wq! #保存退出

[root@mysqla zabbix-3.2.1]# systemctldaemon-reload

[root@mysqla zabbix-3.2.1]#/etc/init.d/zabbix_server stop

Stopping zabbix_server (viasystemctl):                    [  OK  ]

[root@mysqla zabbix-3.2.1]# netstat-anpt | grep zabbix

[root@mysqla zabbix-3.2.1]#/etc/init.d/zabbix_server start

Starting zabbix_server (viasystemctl):                    [  OK  ]

[root@mysqla zabbix-3.2.1]# netstat-anpt | grep zabbix

tcp 0    0 0.0.0.0:10051   0.0.0.0:* LISTEN      28106/zabbix_server

设置防火墙规则

[root@mysqla zabbix-3.2.1]# firewall-cmd--permanent --add-port=10051/tcp

success

[root@mysqla zabbix-3.2.1]# firewall-cmd--reload

success

配置zabbix web页面

在安装目录将frontends拷贝到指定的web root:

[root@mysqla ~]# cd /root/zabbix-3.2.1/

[root@mysqla zabbix-3.2.1]# cp -rfrontends/php/ /usr/local/nginx1.10/html/zabbix

[root@mysqla zabbix-3.2.1]# chown  -R  www:www /usr/local/nginx1.10/html/zabbix/

注:/usr/local/nginx/htmlNginx默认站点目录 wwwNginx运行账户

:PHP需要至少开启扩展:

gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
如下,查看是否包括了上面所提到的扩展模块

[root@mysqla ~]# /usr/local/php5.6/bin/php-m

[PHP Modules]

bcmath

bz2

Core

ctype

curl

date

dom

ereg

fileinfo

filter

ftp

gd

gettext

hash

iconv

json

libxml

mbstring

mcrypt

mhash

mysql

mysqli

openssl

pcntl

pcre

PDO

pdo_sqlite

Phar

posix

Reflection

session

shmop

SimpleXML

soap

sockets

SPL

sqlite3

standard

sysvsem

tokenizer

xml

xmlreader

xmlrpc

xmlwriter

zip

zlib

安装web

访问Web界面http://192.168.31.225/zabbix,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可

进入ZABBIX WEB安装画面

Zabbix监控系统_第2张图片

进入ZABBIX检测画面

Zabbix监控系统_第3张图片

对数据库进行设置,这里如果数据库在本地的话端口可以使用0

 

Zabbix监控系统_第4张图片

点击Next step 一下步进行zabbix server 细节的设置  这一步可以默认

Zabbix监控系统_第5张图片

完成画面有设置文件放在服务器的位置,请记下来

Zabbix监控系统_第6张图片

Zabbix监控系统_第7张图片

点击Finish 完成 

使用Admin  用默认密码 zabbix 登录

Zabbix监控系统_第8张图片

登录后画面如下

Zabbix监控系统_第9张图片

 

 

至此 ZABBIX的基础安装完成