zabbix监控系统

zabbix监控系统

一、zabbix 简介: 

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

zabbix是一个基于web界面的提供分布式系统监控以及网络监控的企业级开源运维平台,也是目前国内互联网后用户使用最广泛的监控软件,大概85%以上企业在使用zabbix做监控方案,借助 Zabbix,可以很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统的持续运行

zabbix的入门容易、上手简单,功能强大且开源免费,zabbix易于管理和配置,能生成比较漂亮的数据图,其自动发现功能大大减轻日常管理的工作量,丰富的数据采集方式和API接口可以让用户更灵活进行数据在即,而分布式系统架构可以支持监控更多的设备,理论上,通过zabbix提供的插件式架构,可以满足企业的任何需求(部分插件功能会收费)

zabbix只要由2部分构成zabbix server和zabbix agent,可以组件zabbix proxy

zabbix server可以通过SNMp(简单网络管理协议),zabbix agent,fping端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持Linux以及Unix平台,Windows平台只能安装客户端

zabbix的优点:

  1. 支持多平台的企业级分布式开源监控软件(redhat、centons、Ubuntu、Debian)
  2. 安装部署简单,多种数据采集插件灵活集成
  3. 功能强大、可实现复杂多条件告警
  4. 自带画图功能,得到的数据可以绘成图形,以图像更直观的展示
  5. 提供多种api接口,支持调用脚本
  6. 出现问题时可以自动远程执行命令(需要agent设置权限)

缺点:

  1. 项目批量修改不方便
  2. 系统级别报警设置相对比较多,如果筛选的话报警邮件比较多,并且自定义的项目需要自己设置,过程不比较繁琐(可以去网上导入别人的模板来进行修改)
  3. 缺少数据汇总功能,如果无法查看一组服务器平均值,需要二次开发
  4. 客户端需要安装zabbix agent程序

Nagios:

Nagios是一款开源的企业级监控系统,能够实现对系统cpu、磁盘、网络硬件方面 参数的基本监控缪及smtp、pop3等各种基本的服务类型,另外通过安装插件和编写监控脚本,用户可以实现应用监控(功能比zabbix弱)

优点:

  1. 出错的服务器、应用和设备会自动重启,自动日志滚动
  2. 配置灵活,可以自定义shell脚本,通过分布式监控模式
  3. 支持以冗余方式进行主机监控,报警设置多样
  4. 命令重新加载配置文件无需打扰Nagios的运行

缺点:

  1. 事件控制台功能很弱,插件易用性差
  2. 对性能、流量等指标的处理不给力
  3. 看不到历史数据,只能看到报警事件,很难追查故障原因
  4. 配置复杂,初学者投入的时间、精力和成本比较大

Cacti:

近几年cacti和nagios已经基本被zabbix代替

Zabbix 的主要功能:

  1. 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
  2. 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现) 
  3. 支持分布式,能集中展示、管理分布式的监控点,扩展性强 
  4. server 提供通用接口(api 功能) ,可以自己开发完善各类监控(根据相关接口编写程序实 现),编写插件容易,可以自定义监控项,报警级别的设置
  5. 数据收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET自定义的检测;自定义收集数据的频率
  6. 灵活的触发器;可以定义非常灵活的问题阈值,称为触发器
  7. 高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型
  8. CPU 负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等

硬件监控:Zabbix IPMI Interface  

系统监控:ZabbixAgent Interface  Java

监控:Zabbix JMX Interface  

网络设备监控:Zabbix SNMP Interface  

应用服务监控:Zabbix Agent UserParameter  

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

URL 监控:Zabbix Web 监控 

zabbix 重要组件说明: 

  1. zabbix server:负责接收 agent 发送的报告信息的核心组件,所有配置、统计数据及操作数 据都由它组织进行
  2. database storage:专用于存储所有配置信息,以及由 zabbix 收集的数据
  3. web interface:zabbix 的 GUI 接口
  4. proxy:可选组件,常用于监控节点很多的分布式环境中,代理 server 收集部分数据转发 到 server,可以减轻 server 的压力
  5. agent:部署在被监控的主机上,负责收集主机本地数据如 cpu、内存、数据库等数据发 往 server 端或 proxy 端

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

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

agentd 收集数据分为主动和被动两种模式: 

  • 主动:效率高,但数据可能丢失

主动模式是由zabbix agent主动采集书记并返回给zabbix server,不需要zabbix server及逆行干预,因此主动模式在一定程度上可以减轻zabbix server的压力

  • 被动:比较消耗性能:

在被动模式中,zabbix server(或者proxy)询问agent数据,如cpu的负载情况,然后zabbix agent回送结果,zabbix server周期性的向agent索取数据,这种模式的最大问题就是会加大zabbix server的工作量,也是默认的工作模式

zaiibx监控原理:

zabbix通过c/s模式采集数据,通过b/s模式在web端展示和配置

被控制端:主机通过安装agrnt方式采集数据,网络设备通过SNMP方式采集数据

server端:通过收集snmp和agent发送的数据,写入数据库,再通过php+nginx(或者apache)在web前端展示

zabbix 常用的监控架构平台 :

  1. server-agentd 模式:

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

      2.server-proxy-agentd 模式:

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

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

安装nginx:

解压zlib和pcre:(不需要编译,只需要解压就行)

[root@localhost ~]# tar zxf  zlib-1.2.8.tar.gz 
[root@localhost ~]# tar zxf  pcre-8.39.tar.gz

解压nginx,并编译安装:

先解决依赖:

[root@localhost nginx-1.14.0]# yum  -y  install  openssl-devel
[root@localhost ~]# tar  zxf  nginx-1.14.0.tar.gz 
[root@localhost ~]# cd  nginx-1.14.0/
[root@localhost nginx-1.14.0]# ./configure --prefix=/usr/local/nginx1.14 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/root/pcre-8.39 --with-zlib=/root/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module
[root@localhost nginx-1.14.0]# make  &&  make  install
[root@localhost nginx-1.14.0]# ln -s  /usr/local/nginx1.14/sbin/nginx  /usr/local/sbin/
[root@localhost nginx-1.14.0]# nginx 
[root@localhost nginx-1.14.0]# netstat  -anput  |  grep  80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      50683/nginx: master

安装php:

安装依赖:

[root@localhost ~]# yum  -y  install  libxml2-devel  openssl-devel  bzip2-devel   libcurl-devel  libjpeg-devel  libpng-devel  freetype-devel

安装php:

[root@localhost libmcrypt-2.5.7]# tar zxf libmcrypt-2.5.7.tar.gz
[root@localhost ~]# cd  libmcrypt-2.5.7/
[root@localhost libmcrypt-2.5.7]# ./configure  &&  make  &&  make  install
[root@localhost ~]# tar zxf php-5.6.27.tar.gz 
[root@localhost ~]# cd php-5.6.27/
[root@localhost php-5.6.27]# ./configure   --prefix=/usr/local/php5.6  --with-config-file-path=/etc  --with-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-gd --with-iconv --with-libxml-dir=/usr  --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib  --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc  --enable-zip --enable-soap --without-pear --with-gettext --enable-session  --with-curl
[root@localhost php-5.6.27]# make  &&  make  install

优化php并创建启动脚本:

[root@localhost php-5.6.27]# cp  php.ini-production  /etc/php.ini
[root@localhost php-5.6.27]# cp  sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-5.6.27]# chmod +x /etc/init.d/php-fpm 
[root@localhost php-5.6.27]# chkconfig  --add   php-fpm
[root@localhost php-5.6.27]# chkconfig  php-fpm  on
[root@localhost php-5.6.27]# cp  /usr/local/php5.6/etc/php-fpm.conf.default  /usr/local/php5.6/etc/php-fpm.conf
[root@localhost php-5.6.27]# vim  /usr/local/php5.6/etc/php-fpm.conf

修改内容如下:

pm.max_children = 300
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

启动php:

[root@localhost php-5.6.27]# /etc/init.d/php-fpm  start
Starting php-fpm  done

配置nginx支持php:

[root@localhost ~]# vim  /usr/local/nginx1.14/conf/nginx.conf

        location / {
            root   html;
            index  index.php index.html index.htm;
        }

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }      //去掉注释

创建php测试页:

[root@localhost ~]# vim  /usr/local/nginx1.14/html/index.php
phpinfo();
?>

浏览器访问:192.168.1.10

zabbix监控系统_第1张图片

安装MySQL:

这里使用脚本一键安装:

[root@localhost ~]# sh  mysql.sh 
Starting MySQL. SUCCESS! 
mysql: [Warning] Using a password on the command line interface can be insecure.

至此,LNMP 部署完毕

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

zabbix 服务器端要提前安装好 LNMP 环境(mysql,nginx,php5 的安装目录均是/usr/local)

创建 Zabbix 运行的用户: 

[root@localhost ~]# groupadd  zabbix
[root@localhost ~]# useradd  -g  zabbix  zabbix

安装 libcurl 和 net-snmp: 

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

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

安装 Fping: 

[root@localhost ~]# tar zxf fping-3.12.tar.gz 
[root@localhost ~]# cd  fping-3.12/
[root@localhost fping-3.12]# ./configure  &&  make  &&  make  install
[root@localhost fping-3.12]# chown  root:zabbix  /usr/local/sbin/fping 
[root@localhost fping-3.12]# chmod 4710  /usr/local/sbin/fping

安装 Zabbix Server: 

[root@localhost ~]# tar zxf  zabbix-3.2.1.tar.gz 
[root@localhost ~]# cd  zabbix-3.2.1/
[root@localhost 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
[root@localhost zabbix-3.2.1]# make  &&  make  install
[root@localhost zabbix-3.2.1]# ln -s  /usr/local/zabbix/bin/*  /usr/local/bin/
[root@localhost zabbix-3.2.1]# ln -s  /usr/local/zabbix/sbin/*  /usr/local/sbin/

--enable-java:方便后续监控 tomcat 程序所用

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

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

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

zabbix的配置与启动:

创建 Zabbix 数据库和 MySQL 用户: 

[root@localhost ~]# mysql  -uroot  -p123
mysql> create database zabbix character set utf8;
mysql>  grant all  on zabbix.* to zabbix@'localhost' identified by '123.com';

导入 Zabbix 初始数据:

[root@localhost ~]# cd  zabbix-3.2.1/database/mysql/
[root@localhost mysql]# ls
data.sql  images.sql  schema.sql

导入的时候从右往左导入

[root@localhost mysql]# mysql -uzabbix -p123.com -h localhost zabbix < schema.sql
[root@localhost mysql]# mysql -uzabbix -p123.com -h localhost zabbix < images.sql
[root@localhost mysql]# mysql -uzabbix -p123.com -h localhost zabbix < data.sql

查看是否成功:

[root@localhost ~]# mysql  -uroot  -p123                                                                                                                                                                          mysql> use zabbix;                                                                                                                                                                                                                 
mysql> show  tables;

zabbix监控系统_第2张图片

修改配置文件:

[root@localhost ~]# vim  /usr/local/zabbix/etc/zabbix_server.conf

修改内容如下:

[root@localhost ~]# 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=123.com
DBSocket=/usr/local/mysql/mysql.sock
DBPort=3306
Timeout=4
LogSlowQueries=3000

创建相应的目录:

[root@localhost ~]# mkdir  -p  /usr/local/zabbix/logs/
[root@localhost ~]# chown  -R  zabbix:zabbix  /usr/local/zabbix/

编辑/etc/ld.so.conf文件:

[root@localhost ~]# vim  /etc/ld.so.conf

添加内容:

/usr/local/mysql/lib

刷新一下:

[root@localhost core]# ldconfig

拷贝zabbix脚本并修改:

[root@localhost ~]# cd  zabbix-3.2.1/misc/init.d/fedora/core
[root@localhost core]# cp  zabbix_server  /etc/init.d/
[root@localhost core]# cp  zabbix_agentd  /etc/init.d/
[root@localhost core]# vim  /etc/init.d/zabbix_server

修改以下内容:

BASEDIR=/usr/local/zabbix
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid

启动zabbix:

[root@localhost ~]# /etc/init.d/zabbix_server  start
Reloading systemd:                                         [  确定  ]
Starting zabbix_server (via systemctl):                    [  确定  ]
[root@localhost ~]# netstat  -anput  |  grep  10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      74743/zabbix_serverr

配置 zabbix web 页面:

拷贝网页文件到nginx网页目录中:

[root@localhost ~]# cp -r zabbix-3.2.1/frontends/php/  /usr/local/nginx1.14/html/zabbix

浏览器访问zabbix:192.168.1.10/zabbix

进入zabbix web安装画面:

zabbix监控系统_第3张图片

进入zabbix检测画面:

zabbix监控系统_第4张图片

这里报错了,解决办法:

  • PHP帖子的最小要求大小为16M(配置选项“ post_max_size”)。
  • PHP脚本执行时间的最低要求限制为300(配置选项“ max_execution_time”)。
  • PHP脚本的输入解析时间的最低要求限制为300(配置选项“ max_input_time”)。
  • 未设置PHP的时区(配置参数“ date.timezone”)。
  • PHP选项“ always_populate_raw_post_data”必须设置为“ -1”

修改/etc/php.ini文件:

[root@localhost ~]# vim  /etc/php.ini 
post_max_size = 16M  //上传文件大小
max_execution_time = 300  //脚本最大执行时间
max_input_time = 300  //以秒为单位对通过 POST、GET 以及 PUT 方式接收数据时间进行限制
date.timezone = PRC  //设置时区
always_populate_raw_post_data = -1

重启php:

[root@localhost ~]# /etc/init.d/php-fpm  restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

zabbix监控系统_第5张图片

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

zabbix监控系统_第6张图片

这里又一个报错:

解决办法:

登录MySQL授权宿主机IP权限:

[root@localhost ~]# mysql -uroot  -p123
mysql> grant all on zabbix.*  to  zabbix@'%'  identified  by  '123.com';

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

zabbix监控系统_第7张图片

点击安装,安装完成后  如果没有错误就会进入完成画面:

zabbix监控系统_第8张图片

zabbix监控系统_第9张图片

无法创建配置文件:

解决办法:

点击Download the configuration file,将文件保存到/usr/local/html/zabbix/conf目录下

[root@localhost ~]# cd  /usr/local/nginx1.14/html/zabbix/conf/
[root@localhost conf]# ls
maintenance.inc.php  zabbix.conf.php  zabbix.conf.php.example

zabbix监控系统_第10张图片

点击 Finish 完成  使用 Admin  用默认密码 zabbix 登录:

zabbix监控系统_第11张图片

至此 zabbix 的基础安装完成 

显示简体中文界面:

在安装数据库时已经将 zabbix 库设置了 utf-8 字符 首先确定 zabbix 开启了中文支持功能:

登录到 zabbix 服 务 器 的 数 据 目 录 下 ( 前 面 部 署 的 zabbix 数据目录是/usr/local/nginx1.10/html/zabbix/),打开 locales.inc.php 文件 :

[root@localhost ~]# cd  /usr/local/nginx1.14/html/zabbix/include/

[root@localhost include]# vim  locales.inc.php

function getLocales() {
        return [
                'en_GB' => ['name' => _('English (en_GB)'),     'display' => true],
                'en_US' => ['name' => _('English (en_US)'),     'display' => true],
                'bg_BG' => ['name' => _('Bulgarian (bg_BG)'),   'display' => false],
                'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => true],

登陆 zabbix 后 , 点 击 右 上 角 的 “ 用户” 图 标 , 将 语 言 设 置 为 “ 中文” :

zabbix监控系统_第12张图片

zabbix监控系统_第13张图片

解决 zabbix 绘图中出现中文乱码问题:

从 windows 下控制面板->字体->选择一种中文字库例如“楷体” 

zabbix监控系统_第14张图片

把它拷贝到 zabbix 的 web 端的 fonts 目录下例如:/usr/local/nginx1.14/html/zabbix/fonts/:

[root@localhost ~]# cd  /usr/local/nginx1.14/html/zabbix/fonts/
[root@localhost fonts]# ls
DejaVuSans.ttf  simkai.ttf

修改代码 include/defines.inc.php 文件中的字体配置,将里面关于字体设置从 DejaVuSans 替换成 simkai :

[root@localhost ~]# vim  /usr/local/nginx1.14/html/zabbix/include/defines.inc.php                                                                              :%s/DejaVuSans/simkai/g   //完成后保存退出

这样,修改后,zabbix 监控图形中的中文字就不会出现乱码了 

 

你可能感兴趣的:(zabbix监控系统)