Zabbix监控平台(一)

Zabbix架构

zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix架构:
一台服务器,搭建server端,周围有许多客户端需要监控;在每一个客户端上需要安装agent端,每隔一分钟,server端向agent端主动要数据,agent端根据server端的需求把数据取出来传给server端,这种方式是agent的被动模式;每隔固定时间,agent端主动把监测出的数据推送给server端。这种方式是agent的主动模式。agent的被动模式对server端消耗很大。

(分布式)在企业中,公司使用ZabbixServer,周围有几个IDC机房,每个机房有很多机器,为减轻server的压力,启用server的分布式,此时在每个机房都有一个分布式客户端proxy,机房的被监控端的机器也是agent的主动模式,主动将数据发给proxy,而proxy的本地可能有一个MySQL(DB),每个机房的proxy端先将数据保存到本地的MySQL,再集中一次性将数据推给zabbix server,这样采取分布式获取数据的方式来降低zabbix server的压力。最终数据汇总到zabbix server的web上出图。

Zabbix 的运行架构如下图所示:
在这里插入图片描述
运维通过web端查看,zabbix server将数据写入MySQL后, 一个LAMP或LNMP的web网站将数据读到web端。如果zabbix server是主动,agent端是被动模式,那就会是zabbix server的主动模式,zabbix server会主动去找agent端去要数据的话,zabbix server会主动触发zabbix_get命令,zabbix_get会朝zabbix_agentd发送一个代号(密码),这个密码只有agent端才知道,agent端接收到server端发过来的代号以后,agent端先查看自己的Application(配置文件),试图翻译zabbix_server发过来的代号,如果能够翻译,他就会执行这个代号,无论需要什么数据,zabbix_agent端就会去执行并将数据返回给zabbix_server,如果不能翻译,他就会拒绝提供服务,自然zabbix_server获取不到数据,这就是agent端的被动模式;
agent端的主动模式是定期自动执行代号的动作,将数据推给zabbix_server监听的端口(10051)。
zabbix_server端监听10051端口,zabbix_agent监听10050端口。

  1. 组件

zabbix 由以下几个组件部分构成:

1) Zabbix Server:

负责接收 agent 发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

2) Database Storage:

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

3) Web interface:

zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上,将数据提供给web页面,将数据展示出来;

4) Proxy:

可选组件,常用于分布监控环境中,代理 Server 收集部分被监控端的监控数据并统一发往 Server 端;

5) Agent:

部署在被监控主机上,负责收集本地数据并发往 Server 端或 Proxy 端;

注:zabbix node 也是 zabbix server 的一种 。

  1. 进程

默认情况下zabbix包含5个程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、zabbix_server,另外一个 zabbix_java_gateway 是可选,这个需要另外安装。

下面来分别介绍下他们各自的作用:

(1) zabbix_agentd

客户端守护进程,此进程收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等。

(2)zabbix_get

zabbix 工具,单独使用的命令,通常在 server 或者proxy端执行获取远程客户端信息的命令。 通常用户排错。 例如在server端获取不到客户端的内存数据, 我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

(3) zabbix_sender

zabbix 工具,用于发送数据给 server 或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致 zabbix 超时。于是我们在脚本执行完毕之后,使用 sender 主动提交数据。

(4)zabbix_server

zabbix 服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway 的数据最终都是提交到 server
备注:当然不是数据都是主动提交给 zabbix_server,也有的是 server 主动去取数据。

(5) zabbix_proxy

zabbix 代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。

(6) zabbix_java_gateway

zabbix2.0 之后引入的一个功能。顾名思义:Java 网关,类似 agentd,但是只用于 Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。 它的数据最终会给到server或者proxy。用于监听Java、tomcat容器时需要安装。

  1. zabbix监控环境中相关术语

主机(host) :
要监控的网络设备,可由 IP 或 DNS 名称指定;

主机组(host group):
主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;

(1) 监控项(item) :

一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是 zabbix 进行数据收集的核心,相对某个监控对象,每个 item 都由"key"标识;检测具体数据信息的,用于获取信息。

(2) 触发器(trigger) :

一个表达式,用于评估某监控对象的特定 item 内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";判断获取的数据是否有效,安全,是否有问题。若有问题触发颜色告警(对数据做判断)

(3) 事件(event) :

触发一个值得关注的事情,比如触发器状态转变,新的 agent 或重新上线的 agent 的自动注册等;

(4) 动作(action) :

指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;根据告警等级,将具体的告警动作关联媒介类型通知运维人员,用户自己的功能模块确定自己是否接收告警邮件

(5) 报警媒介类型(media) :

发送通知的手段或者通道,如 Email、Jabber 或者 SMS 等;

(6) 模板 (template) :

用于快速定义被监控主机的预设条目集合, 通常包含了 item、 trigger、graph、 screen、 application 以及 low-level discovery rule;模板可以直接链接至某个主机;

(7) 前端(frontend) :

Zabbix 的 web 接口

ZabbixServer的安装

[root@localhost ~]# mkdir -p rpm
[root@localhost rpm]# ls
fontconfig-2.8.0-5.el6.x86_64.rpm        libX11-common-1.6.4-3.el6.noarch.rpm
fontconfig-devel-2.8.0-5.el6.x86_64.rpm  libX11-devel-1.6.4-3.el6.x86_64.rpm
freetype-2.3.11-17.el6.x86_64.rpm        libXau-devel-1.0.6-4.el6.x86_64.rpm
freetype-devel-2.3.11-17.el6.x86_64.rpm  libxcb-1.12-4.el6.x86_64.rpm
gd-devel-2.0.35-11.el6.x86_64.rpm        libxcb-devel-1.12-4.el6.x86_64.rpm
libICE-1.0.6-1.el6.x86_64.rpm            libXext-1.3.3-1.el6.x86_64.rpm
libSM-1.2.1-2.el6.x86_64.rpm             libXpm-devel-3.5.10-2.el6.x86_64.rpm
libvpx-1.3.0-5.el6_5.x86_64.rpm          libXt-1.1.4-6.1.el6.x86_64.rpm
libvpx-devel-1.3.0-5.el6_5.x86_64.rpm    xorg-x11-proto-devel-7.7-14.el6.noarch.rpm
libX11-1.6.4-3.el6.x86_64.rpm
[root@localhost rpm]# mount /dev/sr0 /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost rpm]# yum -y install createrepo
Loaded plugins: fastestmirror
Determining fastest mirrors
[root@localhost rpm]# createrepo -v /root/rpm/
[root@localhost rpm]# ls
fontconfig-2.8.0-5.el6.x86_64.rpm        libX11-common-1.6.4-3.el6.noarch.rpm
fontconfig-devel-2.8.0-5.el6.x86_64.rpm  libX11-devel-1.6.4-3.el6.x86_64.rpm
freetype-2.3.11-17.el6.x86_64.rpm        libXau-devel-1.0.6-4.el6.x86_64.rpm
freetype-devel-2.3.11-17.el6.x86_64.rpm  libxcb-1.12-4.el6.x86_64.rpm
gd-devel-2.0.35-11.el6.x86_64.rpm        libxcb-devel-1.12-4.el6.x86_64.rpm
libICE-1.0.6-1.el6.x86_64.rpm            libXext-1.3.3-1.el6.x86_64.rpm
libSM-1.2.1-2.el6.x86_64.rpm             libXpm-devel-3.5.10-2.el6.x86_64.rpm
libvpx-1.3.0-5.el6_5.x86_64.rpm          libXt-1.1.4-6.1.el6.x86_64.rpm
libvpx-devel-1.3.0-5.el6_5.x86_64.rpm    repodata
libX11-1.6.4-3.el6.x86_64.rpm            xorg-x11-proto-devel-7.7-14.el6.noarch.rpm
[root@localhost rpm]# vim /etc/yum.repos.d/CentOS-Media.repo 
#在末行添加[rpm]模块
[rpm]
name=rpm
baseurl=file:///root/rpm/
gpgcheck=0
enabled=1
[root@localhost rpm]# yum -y install pcre pcre-devel zlib-devel libaio libaio-devel libxml2 libxml2-devel bzip2-devel openssl openssl-devel net-snmp-devel net-snmp curl-devel gd gcc gcc-c++ make libjpeg-devel libpng-devel libcurl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker mysql-devel net-snmp-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

[root@localhost rpm]# yum -y install libvpx-devel gd-devel

编译安装LNMP环境

  1. 安装nginx
[root@localhost ~]# useradd -s /sbin/nologin -M www
[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.10.2/
[root@localhost nginx-1.10.2]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module && make && make install
[root@localhost nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

#创建nginx配置文件模版
[root@localhost nginx-1.10.2]# cd /usr/local/nginx/conf/
[root@localhost conf]# egrep -v "^$|#" nginx.conf.default > nginx.conf

#将nginx配置文件改成如下内容
[root@localhost conf]# vim nginx.conf
[root@localhost conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
    location / {
        root   html;
        index  index.php index.html index.htm;
    }
    location = /nginx-status {
                stub_status on;
                access_log off;
        }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
[root@localhost conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  1. 安装MySQL
[root@localhost ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv mysql-5.5.32-linux2.6-x86_64 mysql
[root@localhost local]# cd mysql/
[root@localhost mysql]# /bin/cp support-files/my-small.cnf /etc/my.cnf 
[root@localhost mysql]# useradd -s /sbin/nologin -M mysql
[root@localhost mysql]# chown -R mysql.mysql data
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

Installing MySQL system tables...
OK
Filling help tables...
OK
...以下省略若干...

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/init.d/mysqld 
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@localhost mysql]# netstat -antup | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3990/mysqld  
  1. 安装libmcrypt
[root@localhost ~]# tar xf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/libmcrypt-2.5.8/
[root@localhost libmcrypt-2.5.8]# ./configure && make && make install
  1. 安装GD
[root@localhost ~]# tar xf GD-2.18.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/GD-2.18/
[root@localhost GD-2.18]# perl Makefile.PL
[root@localhost GD-2.18]# make && make install
  1. 安装PHP
[root@localhost ~]# tar xf php-5.6.30.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/php-5.6.30/
[root@localhost php-5.6.30]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-bz2 --with-curl --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
[root@localhost php-5.6.30]# make && make install

#创建php配置文件
[root@localhost php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini

#修改php配置文件php.ini
[root@localhost php-5.6.30]# cat -n /usr/local/php/etc/php.ini | sed -n '372p;382p;393p;660p;702p;820p;936p'
   372  max_execution_time = 300
   382  max_input_time = 300
   393  memory_limit = 256M
   660  post_max_size = 32M
   702  always_populate_raw_post_data = -1
   820  upload_max_filesize = 16M
   936  date.timezone =Asia/Shanghai

#创建php-fpm配置文件
[root@localhost php-5.6.30]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

#修改php-fpm.conf配置文件
[root@localhost etc]# cat -n php-fpm.conf | sed -n '149,150p'
   149  user = www
   150  group = www

安装zabbix server端

  1. 编译安装zabbix server
[root@localhost ~]# useradd zabbix -s /sbin/nologin -M
[root@localhost ~]# tar xf zabbix-3.2.4.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/zabbix-3.2.4/
[root@localhost zabbix-3.2.4]# ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
[root@localhost zabbix-3.2.4]# make && make install

#由于zabbix启动脚本路径默认指向的是/usr/local/sbin路径,因此,需要提前简历软连接:
[root@localhost zabbix-3.2.4]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@localhost zabbix-3.2.4]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
  1. 配置zabbix的mysql环境
    Zabbix server 和mysql安装到一台服务器上,首先需要手动创建zabbix数据库,操作如下:
[root@localhost ~]# which mysqladmin
/usr/bin/mysqladmin
[root@localhost ~]# mysqladmin -uroot password '123456'
[root@localhost ~]# mysql -uroot -p123456 -e 'create database zabbix character set utf8;'
[root@localhost ~]# mysql -uroot -p123456 -e "grant all privileges on zabbix.* to zabbix@'localhost' identified by '123456';"
[root@localhost ~]# mysql -uroot -p123456 -e 'flush privileges;'

#如下数据的导入顺序不可以错
[root@localhost ~]# mysql -uzabbix -p123456 zabbix < /usr/src/zabbix-3.2.4/database/mysql/schema.sql 
[root@localhost ~]# mysql -uzabbix -p123456 zabbix < /usr/src/zabbix-3.2.4/database/mysql/images.sql 
[root@localhost ~]# mysql -uzabbix -p123456 zabbix < /usr/src/zabbix-3.2.4/database/mysql/data.sql 

安装Zabbix web GUI

Zabbix web是php代码编写的,因此需要有php环境,前面已经安装好了lnmp,因此可以直接使用。
默认的nginx安装的根目录为/usr/local/nginx/html,因此,只需要Zabbix web的代码放到此目录即可。
Zabbix web的代码在Zabbix源码包中的frontends/php目录下,将这个php目录拷贝到/usr/local/nginx/html/目录下并改名zabbix即可完成Zabbix web端的安装。
在浏览器输入http://IP/zabbix,然后会检查zabbix web运行环境是否满足,并提供连接数据库的相关信息即可,最后将连接数据库相关信息都存入文件zabbix/conf/zabbix.conf.php中,这样就可以登录zabbix的web平台了。
默认的zabbix平台登录用户名为Admin,密码为zabbix。

  1. 复制zabbix web目录到nginx web根目录下
[root@localhost ~]# cp -rp /usr/src/zabbix-3.2.4/frontends/php /usr/local/nginx/html/zabbix
[root@localhost ~]# cd /usr/local/nginx/html/
[root@localhost html]# ll
total 12
-rw-r--r--.  1 root root  537 Dec 14 11:29 50x.html
-rw-r--r--.  1 root root  612 Dec 14 11:29 index.html
drwxr-xr-x. 13 1000 1000 4096 Feb 27  2017 zabbix
[root@localhost html]# chown -R www.www zabbix
[root@localhost html]# ll -d zabbix/
drwxr-xr-x. 13 www www 4096 Feb 27  2017 zabbix/
  1. 启动nginx服务及php-fpm
[root@localhost html]# /usr/local/nginx/sbin/nginx
[root@localhost html]# netstat -antup | grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9020/nginx          
[root@localhost html]# /usr/local/php/sbin/php-fpm
[root@localhost html]# netstat -antup | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      9025/php-fpm        

  1. 登录web根据提示生成zabbix.conf.php配置文件
#起初并没有zabbix.conf.php配置文件,我们可以选择自动生成配置文件
[root@localhost ~]# cd /usr/local/nginx/html/zabbix/conf
[root@localhost conf]# ls
maintenance.inc.php  zabbix.conf.php.example

在浏览器里输入http://IP/zabbix,配置zabbix数据库环境,如下图所示:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置zabbix中文模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

zabbix server的配置

  1. zabbix_server.conf配置
    通过源码安装方式将zabbix安装到/usr/local/zabbix下面,zabbix server的配置文件为/usr/local/zabbix/etc/zabbix_server.conf,需要修改的内容为如下:
#需要修改的内容为如下:
[root@localhost ~]# cd /usr/local/zabbix/etc/
[root@localhost etc]# cat -n zabbix_server.conf | sed -n '12p;38p;87p;103p;111p;118p;136p;165p;181p;297p;447p'
    12  # ListenPort=10051
    38  LogFile=/tmp/zabbix_server.log
    87  DBName=zabbix
   103  DBUser=zabbix
   111  # DBPassword=
   118  # DBSocket=/tmp/mysql.sock
   136  # StartPollers=5
   165  # StartTrappers=5
   181  # StartDiscoverers=1
   297  # ListenIP=0.0.0.0
   447  # AlertScriptsPath=${datadir}/zabbix/alertscripts

#将zabbix_server.conf文件内容修改成如下所示:
[root@localhost etc]# cat -n zabbix_server.conf | sed -n '12p;38p;87p;103p;111p;118p;136p;165p;181p;297p;447p'
    12  ListenPort=10051    #zabbix server监听端口
    38  LogFile=/tmp/zabbix_server.log  #zabbix server日志路径
    87  DBName=zabbix   #zabbix server连接MySQL数据库的数据库名
   103  DBUser=zabbix   #zabbix server连接MySQL数据库的用户名
   111  DBPassword=123456   #zabbix server连接MySQL数据库的密码
   118  DBSocket=/tmp/mysql.sock    #MySQL的实例文件位置
   136  StartPollers=5  #用于设置zabbix server服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大
   165  StartTrappers=10    #用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些。
   181  StartDiscoverers=10 #用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该值。
   297  ListenIP=0.0.0.0    #zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个值建议设置为0.0.0.0(监听本机任意IP地址)
   447  AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts  #zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里。(告警脚本的路径)
  1. 添加相关服务和端口到系统配置文件

编辑/etc/services文件,在最后添加以下代码:

[root@localhost etc]# tail -4 /etc/services
zabbix-agent    10050/tcp     		# Zabbix Agent
zabbix-agent    10050/udp       	# Zabbix Agent
zabbix-trapper  10051/tcp       	# Zabbix Trapper
zabbix-trapper  10051/udp       	# Zabbix Trapper

其中,10051是zabbix server的监听端口,10050是zabbix agent的监听端口。

  1. 添加管理维护脚本

从zabbix源码包misc/init.d/fedora/cora/目录中找到zabbix_server和zabbix_agentd,然后复制到/etc/init.d目录下,由于我们的zabbix_agnetd采用rpm的安装方式,会自动添加启动脚本,所以在此处,我们不进行zabbix_agentd的启动脚本的复制。

[root@localhost ~]# cp /usr/src/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# chmod +x /etc/init.d/zabbix_server 
[root@localhost init.d]# chkconfig zabbix_server on
  1. 启动zabbix_server端进程
[root@localhost ~]# /etc/init.d/zabbix_server start
Starting zabbix_server:                                    [  OK  ]
[root@localhost ~]# netstat -antup | grep zabbix_server
tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      9319/zabbix_server 

zabbix_agent的安装与配置

zabbix agent端的安装建议采用rpm包方式安装,可从http://repo.zabbix.com/zabbix/3.2/下载zabbix的agent端rpm包,版本与zabbix server端保持一致,安装如下:

[root@localhost chen]# wget http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-agent-3.2.4-1.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-3.2.4-1.el6.x86_64.rpm

安装完成后,zabbix agent端已经安装完成了,zabbix agent端的配置目录位于/etc/zabbix下,可在此目录进行配置文件的修改。

[root@localhost ~]# ls
anaconda-ks.cfg              mysql-5.5.32-linux2.6-x86_64.tar.gz
apache-tomcat-8.0.27.tar.gz  nginx-1.10.2.tar.gz
GD-2.18.tar.gz               php-5.6.30.tar.gz
httpd-2.2.17.tar.gz          rpm
install.log                  sendEmail-v1.56.tar.gz
install.log.syslog           yum.sh
jdk-8u60-linux-x64.tar.gz    zabbix-3.2.4.tar.gz
libmcrypt-2.5.8.tar.gz       zabbix-agent-3.2.4-1.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-3.2.4-1.el6.x86_64.rpm

特别提示:

zabbix server的源码包本身就包含了zabbix server端和zabbix agent端,因此,zabbix服务器端无需再安装zabbix agent的rpm包。
然而zabbix agent的rpm包是为了方便在服务器上进行快速安装而设计的快捷安装包。
因此为了统一,监控端和被监控端的zabbix agent我们都用rpm的安装方式
修改zabbix agent端的配置文件

#需要修改的内容如下所示:
[root@Zabbix_Server ~]# cd /etc/zabbix/
[root@localhost zabbix]# cat -n zabbix_agentd.conf | sed -n '13p;32p;95p;103p;120p;136p;147p;265p;284p'
    13  PidFile=/var/run/zabbix/zabbix_agentd.pid
    32  LogFile=/var/log/zabbix/zabbix_agentd.log
    95  Server=127.0.0.1
   103  # ListenPort=10050
   120  # StartAgents=3
   136  ServerActive=127.0.0.1
   147  Hostname=Zabbix server
   265  Include=/etc/zabbix/zabbix_agentd.d/*.conf
   284  # UnsafeUserParameters=0

#将内容修改为如下所示:
[root@localhost zabbix]# cat -n zabbix_agentd.conf | sed -n '13p;32p;95p;103p;120p;136p;147p;265p;284p'
    13  PidFile=/var/run/zabbix/zabbix_agentd.pid   #进程pid存放路径
    32  LogFile=/var/log/zabbix/zabbix_agentd.log   #zabbix agent日志存放路径
    95  Server=127.0.0.1,192.168.239.143  #指定zabbix server端IP地址
   103  ListenPort=10050    #指定agentd的监听端口
   120  StartAgents=3       #指定启动agentd进程数量。设置0表示关闭
   136  ServerActive=192.168.239.143:10051    #启用agnetd主动模式,启动主动模式后,agentd将主动将收集到的数据发送到zabbix server端,Server Active后面指定的IP就是zabbix server端IP
   147  Hostname=192.168.239.143 #需要监控服务器的主机名或者IP地址,此选项的设置一定要和zabbix web端主机配置中对应的主机名一致。
   265  Include=/etc/zabbix/zabbix_agentd.d/    #相关配置都可以放到此目录下,自动生效
   284  UnsafeUserParameters=1  #启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。UserParameter用于自定义item

启动zabbix_agent端进程

[root@localhost ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@localhost ~]# netstat -antup | grep zabbix_agent
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      1322/zabbix_agentd  
tcp        0      0 :::10050                    :::*                        LISTEN      1322/zabbix_agentd  
[root@localhost init.d]# chkconfig zabbix-agent on
#复制zabbix_agent.conf配置文件到zabbix-agent服务器
[root@localhost zabbix]# scp zabbix_agentd.conf [email protected]:/etc/zabbix/
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password: 
zabbix_agentd.conf                                   100%   10KB  10.1KB/s   00:00  

#修改zabbix-agent服务器的zabbix_agent.conf配置文件内容
[root@localhost zabbix]# vim zabbix_agentd.conf 
 95 Server=192.168.239.143
147 Hostname=192.168.239.128
[root@localhost zabbix]# /etc/init.d/zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@localhost zabbix]# netstat -antup | grep 10050
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      1386/zabbix_agentd  
tcp        0      0 :::10050                    :::*                        LISTEN      1386/zabbix_agentd  

我们在监控端和被监控端都进行如上所述的zabbix agent端的安装。

测试zabbix server监控

如何知道zabbix server监控已经生效呢,可通过zabbix server上的zabbix_get命令来完成,在zabbix server上执行如下命令即可进行测试:

#利用如下命令进行测试,在监控端zabbix_server端进行
[root@localhost zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.239.143 -p 10050 -k "system.uptime"
12139    #有数据显示就代表监控正常
[root@localhost zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.239.128 -p 10050 -k "system.uptime"
6733      #有数据显示就代表监控正常

-s 是指定zabbix agent端的IP地址
-p 是指定zabbix agent端的监听端口
-k 是监控项,即item
如果有输出结果,表面zabbix server可以从zabbix agent获取数据,配置成功。

Zabbix的web操作入门

Zabbix Web 操作概述
  1. Zabbix首页仪表提示面板
    在这里插入图片描述
    在这里插入图片描述
    常用的图形:可以根据自己喜好,添加按主机按监控项添加快捷的查看链接
    常用的聚合图形:可以将多个监控图形的曲线合并显示
    常用的拓扑图:集群的架构图
    主机状态:被监控的主机的实时状态
    Web检测:发一个http请求,看看web是否能正常访问
    系统状态:监控端zabbix server服务器的状态
    最近20个问题:最后发生的20个告警信息
    Zabbix状态:zabbix server监控的详细汇总信息

  2. 自定义首页面板
    在这里插入图片描述
    调整后,如下所示:
    在这里插入图片描述

  3. 追加常用的监控图形
    在这里插入图片描述
    在这里插入图片描述

  4. 修改账户密码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 设置报警提示声音
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  6. 获取最新的zabbix共享模版
    在这里插入图片描述
    在这里插入图片描述

自定义被监控的服务器
  1. 自定义一个主机组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    特别提示
    在生产环境时,主机组的名字一定要用英文,不然,当zabbix进行二次开发的时候,中文名称都是乱码。那感觉很让人想死…

  2. 自定义一个主机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    特别提示
    在生产环境中主机的名字一定要是英文,并且务必和真实主机的主机名一致,且必须归类加入到主机组中。不然zabbix在进行二次开发的时候会非常麻烦(需要建立类似索引形式的东西去关联真实服务器)

自定义一个监控项
  1. 进行监控项的后台定义
    现在假如我们要定义一个获取nginx连接数的监控项,那么我们先得去尝试能够获取这个值。在之前的nginx配置文件里我们已经加入了status模块的获取
    在这里插入图片描述
    (1)我们登录网页获取这个信息

在这里插入图片描述
(2)我们尝试通过命令获取这个信息

[root@localhost zabbix]# curl -s "http://192.168.239.143:80/nginx-status"
Active connections: 6 
server accepts handled requests
 65 65 2743 
Reading: 0 Writing: 1 Waiting: 5 
[root@localhost zabbix]# curl -s "http://192.168.239.143:80/nginx-status" | head -1 | awk '{print $NF}'
6

(3)在zabbix agent配置文件里定义这个监控项

[root@localhost ~]# cd /etc/zabbix/     #进入zabbix agent目录
[root@localhost zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@localhost zabbix]# vim zabbix_agentd.conf 
[root@localhost zabbix]# sed -n '257,270p' zabbix_agentd.conf   
### Option: Include
#   You may include individual files or all files in a directory in the configuration file.
#   Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
#
# Mandatory: no
# Default:
# Include=

Include=/etc/zabbix/zabbix_agentd.d/        #我们发现zabbix_agentd.d目录已经默认被include进入了主配置文件。

# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

由于zabbix_agentd.conf配置文件默认导入了所有zabbix_agentd.d目录下的内容,因此我们可以将监控项定义到zabbix_agentd.d目录下。
在这里插入图片描述
(4)参考模版,自己定义监控项的获取命令

[root@localhost zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@localhost zabbix_agentd.d]# vim userparameter_nginx.conf 
UserParameter=nginx.active,curl -s "http://192.168.239.143:80/nginx-status" | head -1 | awk '{print $NF}'

(5)自定义监控项,等于改变了配置文件,自然需要重启zabbix_agentd

[root@localhost ~]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

(6)在zabbix server端测试获取自定义的监控项信息

[root@localhost zabbix_agentd.d]# zabbix_get -s 192.168.239.143 -p 10050 -k "nginx.active"
6

  1. 进行监控项的前台定义
    (1)点选一个被监控的主机
    在这里插入图片描述
    (2)进入监控项创建模版
    在这里插入图片描述
    (3)创建监控项
    自定义间隔时间可用于降低server端压力
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
(4)创建完成的监控项
在这里插入图片描述

  1. 自定义一个监控项的图形

(1)点选一个被监控的主机
在这里插入图片描述
(2)进入图形创建模版
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)查看图形绘图
在这里插入图片描述
(4)关于图形的各种显示效果
在这里插入图片描述
正常图形:
在这里插入图片描述
层积图形:
在这里插入图片描述
Pie图形:
在这里插入图片描述
爆发的图形:
在这里插入图片描述

  1. 自定义一个聚合图形
    (1)创建一个聚合图形
    在这里插入图片描述
    在这里插入图片描述(2)编辑聚合图形
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (3)选择展示图形
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (4)将聚合图形添加到zabbix web首页面板
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 自定义一个拓扑图形
    (1)进入拓扑图编辑界面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)添加一个新的拓扑图形
    在这里插入图片描述
    在这里插入图片描述
    (3)拓扑图链接拓扑图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (4)拓扑图显示时时的连接带宽
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
上图中的标签内容如下:
{linux-node1.yunjisuan.com:net.if.out[eth0].last(0)}
linux-node1.yunjisuan.com为定义的主机名
net.if.out[eth0]为监控项的表达式
last(0)为取监控项的最后一个值

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43304804/article/details/84990260