部署zabbix

导读:本篇文章讲解 部署zabbix,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

实验环境:

主机 主机名 操作系统 IP地址 软件版本
zabbix监控端 zabbix_server Centos7.5 192.168.121.10 zabbix-4.2.6
zabbix被监控端 server01 Centos7.5 192.168.121.11 zabbix-4.2.6

 zabbix监控端:192.168.121.11  #zabbix的服务端(若要监控本机,则需要配置本机的zabbix agent)。
 Zabbix agent被监控主机:192.168.121.11   #zabbix的客户端(被监控端,需要配置Zabbix agent。

1.禁用SELINUX和关闭防火墙

两台虚拟机都需要执行关闭SELINUX和关闭防火墙

 # service firewalld stop
 # setenforce 0			//可以设置配置文件永久关闭

2、整个环境所需要的软件包

 php-5.6.36    
 libmcrypt-2.5.7
 mysql-5.7.26
 nginx-1.10.3 
 zabbix-4.2.6

3.LAMP环境搭建

3.1、源码安装mysql-5.7.26

详情见本人的文章:源码安装mysql-5.7.26

3.2、安装php-5.6.36

3.2.1、安装依赖包

 [root@zabbix_server ~]# yum -y install make apr* autoconf automake curl-devel gcc gcc-c++  openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng*  libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel

3.2.2、安装libmcrypt

 [root@zabbix_server ~]# tar zxf libmcrypt-2.5.7.tar.gz
 [root@zabbix_server ~]# cd libmcrypt-2.5.7/
 [root@zabbix_server libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install

3.2.3、安装php

 [root@zabbix_server ~]# tar zxf php-5.6.36.tar.gz
 [root@zabbix_server ~]# cd php-5.6.36/
 [root@zabbix_server php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc  --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --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-mcrypt=/usr/local/libmcrypt --with-curl
 [root@zabbix_server php-5.6.36]# make && make install

3.2.4、生成php.ini配置文件

 [root@zabbix_server php-5.6.36]# cp php.ini-production /etc/php.ini

编辑配置文件/etc/php.ini ,修改后的内容如下:

 找到:
;date.timezone = 
修改为:
date.timezone = PRC #设置时区
 找到:
expose_php = On 
修改为:
expose_php = Off #禁止显示php版本的信息
 找到:
short_open_tag = Off 
修改为:
 short_open_tag = On //支持php短标签
 找到:
 post_max_size = 8M
 修改为:
 post_max_size = 16M  //上传文件大小
 找到:
 max_execution_time = 30
 修改为:
 max_execution_time = 300  //php脚本最大执行时间
 找到:
 max_input_time = 60
 修改为:
 max_input_time = 300  //以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制
 always_populate_raw_post_data = -1
 mbstring.func_overload = 0

 3.2.5、创建php-fpm服务启动脚本

 [root@zabbix_server php-5.6.36]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 [root@zabbix_server php-5.6.36]# chmod +x /etc/init.d/php-fpm 
 [root@zabbix_server php-5.6.36]# chkconfig --add php-fpm
 [root@zabbix_server php-5.6.36]# chkconfig php-fpm on

3.2.6、提供php-fpm配置文件并编辑

 [root@zabbix_server ~]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
 [root@zabbix_server ~]# useradd -M -s /sbin/nologin www
 [root@zabbix_server ~]# vim /usr/local/php5.6/etc/php-fpm.conf

修改内容如下:

 pid = run/php-fpm.pid
 user = www
 group = www
 listen =127.0.0.1:9000
 pm.max_children = 300
 pm.start_servers = 10
 pm.min_spare_servers = 10
 pm.max_spare_servers =50

3.2.7、启动php-fpm服务

 [root@zabbix_server ~]# /etc/init.d/php-fpm start
 [root@zabbix_server ~]# netstat -anplt | grep php-fpm

部署zabbix

 3.3、安装nginx

3.3.1、安装依赖包

 [root@zabbix_server ~]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel

3.3.2、编译安装

 [root@zabbix_server ~]# tar zxf nginx-1.10.3.tar.gz 
 [root@zabbix_server ~]# cd nginx-1.10.3/
 [root@zabbix_server nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --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 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www
 [root@zabbix_server nginx-1.10.3]# make && make install

3.3.3、启动nginx服务

 [root@zabbix_server ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 [root@zabbix_server ~]# nginx
 [root@zabbix_server ~]# netstat -anplt | grep nginx

部署zabbix

3.3.4、配置nginx支持php

vim /usr/local/nginx/conf/nginx.conf

 user  www www;
 worker_processes  4;
 error_log  logs/error.log;
 pid        logs/nginx.pid;
 
 events {
     use epoll;
     worker_connections  1024;
 }
 
 http {
     include       mime.types;
     default_type  application/octet-stream;
 
     log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
                       ‘$status $body_bytes_sent “$http_referer” ‘
                       ‘”$http_user_agent” “$http_x_forwarded_for”‘;
 
     access_log  logs/access.log  main;
 
     sendfile        on;
     keepalive_timeout  65;
 
     server {
         listen       80;
         server_name  localhost;
 
         charset utf-8;
 
         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;
             include fastcgi.conf;
         }
 
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
 
     }
 }

 重启nginx

 [root@zabbix_server ~]# nginx -s reload

测试LNMP

进入nginx默认的网页根目录,创建.php的测试页

[root@zabbix_server ~]# cat /usr/local/nginx/html/test1.php 

 <?php
 phpinfo();
 ?>

 [root@zabbix_server ~]# cat /usr/local/nginx/html/test2.php 

 <?php
 $link=mysql_connect(‘localhost’,’root’,’123456′);
 if($link) echo “ok”;
 mysql_close();
 ?>

 部署zabbix

 部署zabbix

3.4、创建导入zabbix数据库

Zabbix 需要数据库的支持(mysql,oracle,PostgreSQL,SQLite, DB2),而且Zabbix 源码包中已经自带了数据库结构

3.4.1、创建zabbix使用的数据库

 [root@zabbix_server ~]# mysql -uroot -p 

 mysql> create database zabbix character set utf8;
 mysql> grant all on zabbix.* to zabbix@localhost identified by ‘zabbix’;     #zabbix 用户授权
 mysql> flush privileges;
 mysql> exit

3.4.2、 解压zabbix软件包

[root@zabbix_server ~]# tar zxf zabbix-4.2.6.tar.gz 
[root@zabbix_server ~]# cd zabbix-4.2.6/

3.4.3、导入数据库

 [root@zabbix_server zabbix-4.2.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql 
 [root@zabbix_server zabbix-4.2.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql 
 [root@zabbix_server zabbix-4.2.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql

如果在做分布式的环境中,Proxy服务器只需要导入schema.sql,agent不需要导入。Server必须三个都要导入

3.5、安装依赖

 [root@zabbix_server ~]# 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 libevent libevent-devel

3.6、创建用户

 [root@zabbix_server ~]# groupadd zabbix
 [root@zabbix_server ~]# useradd -s /sbin/nologin -g zabbix zabbix

3.7、预编译

 [root@zabbix_server zabbix-4.2.6]# ./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-libxml2 --with-openipmi

参数说明:

 –prefix=    #指定路径
 –enable-server         #zabbix Server 支持
 –enable-agent             #支持 Zabbix agent
 –with-mysql          #指定 MySql 库,可以选择自定路径mysql_config,mysql_config 是命令,用于编译 mysql 客户端程序
 –with-net-snmp         #支持 snmp 协议,需要安装 net-snmp-devel 包
 –with-libcurl             #支持 CURL 功能,libcurl 主要功能就是用不同的协议连接不同的服务器,libcurl当前支持的协议有 http,https,ftp,gopher,telent,dict,file,和 ldap 协议
 –enable-java      #支持java应用监控,编译时最好带上–enable-java这个参数,方便后续监控tomcat程序所用。
 –with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等
 其他参数:
 –enable-proxy    指的是支持 zabbix 代理服务器,zabbix proxy 是一个监控代理服务器,它收集到监控数据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的 zabbix server。监控代理服务需要一个独立的数据库。
 用 zabbix proxy 的好处:进程监控,当监控文遏制通讯不方便的时候,当通讯上千台设备的时候,使用 zabbix_proxy 可以简化维护分布式监控,降低 zabbix server 的负载,
 

 3.8、安装

 [root@zabbix_server zabbix-4.2.6]# make install

添加系统软链接

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

3.9、配置zabbixserver

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

 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

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

 3.10、监控zabbix server本身

监控本身,意思是本身作为服务器之外,自己也做自己的被监控端,也要使用agent这个代理程序

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

 PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
 LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
 Server=127.0.0.1
 ListenPort=10050
 ServerActive=127.0.0.1
 Hostname=Zabbix server
 Timeout=15
 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
 UnsafeUserParameters=1
 注:
其中 Server 和 ServerActive 都指定 Zabbix server 的 IP 地址,不同的是,前者是被动后者是主动。也就是说前者允许 127.0.0.1 这个 ip 来我这取数据。而 serverActive 的 127.0.0.1 的意思是,客户端主动提交数据给它。
 Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。
 UnsafeUserParameters=1    #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本

 3.11、启动服务

 如果 zabbix 用户不存在, 将以 root 运行,新建之后,如果 zabbix 存在,那么直接可以用 zabbix 运行

直接运行

 [root@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 shared object file: No such file or directory  #如果启动报错解决

 解决库文件找不到

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

#/usr/local/mysql/lib是我们库文件的路径

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

 include ld.so.conf.d/*.conf
 /usr/local/mysql/lib   #根据实际路径添加此行
 

 使库文件生效

 [root@zabbix_server ~]# ldconfig

再次启动

 [root@zabbix_server ~]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

查看端口

 [root@zabbix_server ~]# netstat -anplt | grep zabbix_server

部署zabbix

3.12添加zabbix启动脚本

Zabbix默认有部分启动脚本,如果需要通过脚本的方式来实现,可以使用他的模板来实现,脚本在源码目录的 misc/init.d/下面(使用 fedora 下面的 core 即可,也可以使用 fedroa core5 的脚本均可)

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

 BASEDIR=/usr/local/zabbix  #找到此行,并修改。zabbix安装目录
 PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  # pid文件路径     

 [root@xuegod71 init.d]# vim /etc/init.d/zabbix_agentd 

 BASEDIR=/usr/local/zabbix  #找到此行,并修改。zabbix安装目录
 PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid   # pid文件路径

 [root@zabbix_server init.d]# chkconfig --add zabbix_server
 [root@zabbix_server init.d]# chkconfig --add zabbix_agentd
 [root@zabbix_server init.d]# chkconfig zabbix_server on
 [root@zabbix_server init.d]# chkconfig zabbix_agentd on

3.13、拷贝php文件到nginx网站目录

在解压目录中将frontends/php拷贝到指定的web root:

 [root@zabbix_server ~]# cd /root/zabbix-4.2.6/
 [root@zabbix_server zabbix-4.2.6]# cp -r /root/zabbix-4.2.6/frontends/php/* /usr/local/nginx/html/
 [root@zabbix_server zabbix-4.2.6]# chown -R www:www /usr/local/nginx/html/

 注:/usr/local/nginx/html为Nginx默认站点目录 ,www为Nginx运行账户
 注:PHP需要至少开启扩展: gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql

 3.14、开启默认打开index.php

 [root@zabbix_server ~]# vim /usr/local/nginx/conf/nginx.conf

 location / {
 root    html;
 index     index.php index.html index.htm;    #找到此行内容,添加 index.php
 }

 3.15、重启nginx服务和php-fpm服务

 [root@zabbix_server zabbix-4.2.6]# /usr/local/nginx/sbin/nginx -s reload
 [root@zabbix_server zabbix-4.2.6]# /etc/init.d/php-fpm restart

3.16、打开浏览器安装zabbix web

浏览器输入192.168.121.10/index.php,如图 

部署zabbix

开始检查环境,确保环境符合条件要求

部署zabbix

 下一步

部署zabbix

 下一步

部署zabbix

下一步,可以在这个页面看到我们刚刚信息的简介

部署zabbix

 下一步

部署zabbix

 单击finish完成zabbix web安装。

3.17、登录zabbix

默认用户名和密码分别为 admin,zabbix

部署zabbix

 部署zabbix

.修改语言

在安装数据库时已经将zabbix库设置了utf-8字符

首先确定zabbix开启了中文支持功能:

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

grep "zh_CN" /usr/local/nginx/html/include/locales.inc.php

‘zh_CN’ => [‘name’ => _(‘Chinese (zh_CN)’),       ‘display’ => true],

 登陆zabbix后,点击右上角用户图标,然后选择语言,然后 Update 即可,页面变为中文

部署zabbix

 监控本机

(默认没有启动,点击后面红色的停用,则启用)

部署zabbix

启动zabbix_agent

 [root@zabbix_server ~] # /usr/local/zabbix/sbin/zabbix_agentd
 [root@xuegod71 ~]# netstat -antup | grep zabbix	//两者之间监控端口不一样

部署zabbix

 刷新页面,查看agent状态

部署zabbix

 部署zabbix

4、配置监控远程主机

4.1、安装zabbix_agent

 既然要监控,我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent。
 192.168.30.12(server01)作为zabbix的被监控端,提供LNMP应用。配置过程略。可参考nginx优化中部署lnmp

4.1.1、安装依赖

 [root@server01 ~]# yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI

4.1.2、创建用户

 [root@server01 ~]# useradd -M -s /sbin/nologin zabbix

4.1.2、解压zabbix-4.2.6.tar.gz

 [root@server01 ~]# tar zxf zabbix-4.2.6.tar.gz 
 [root@server01 ~]# cd zabbix-4.2.6/

4.1.3、预编译

 [root@server01 zabbix-4.2.6]# ./configure --prefix=/usr/local/zabbix --enable-agent

 //被监控端只需要部署 agnet

4.1.4、安装

 [root@server01 zabbix-4.2.6]# make install

4.1.5、启动agent

 [root@server01 ~]# /usr/local/zabbix/sbin/zabbix_agentd
 [root@server01 ~]# netstat -anplt | grep zabbix_agentd

部署zabbix

 4.1.6、zabbix_agent开机启动

生成启动脚本

 [root@server01 ~]# cp /root/zabbix-4.2.6/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
 [root@server01 ~]# ll /etc/init.d/zabbix_agentd 

修改安装目录

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

#编辑客户端配置文件

 [root@server01 ~]# vim /etc/init.d/zabbix_agentd

ZABBIX_BIN=”/usr/local/zabbix/sbin/zabbix_agentd” #找到该行,并修改。

 保存退出

添加开机启动

 [root@server01 ~]# chkconfig --add zabbix_agentd
 [root@server01 ~]# chkconfig zabbix_agentd on

4.1.7、修改zabbix_agent配置文件

 [root@server01 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

 Server=192.168.30.11
 ListenPort=10050
 ServerActive=192.168.30.11
 Hostname=server01
 Timeout=15
 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
 UnsafeUserParameters=1

 注;

 Server=192.168.30.11           #zabbix server 地址,可以多个,用“,”隔开
 ServerActive=192.168.30.11    #主动检查的意思,主动检查,主机的数据发送给 Zabbix Server
 其中 Server 和 ServerActive 都指定 Zabbix server 的 IP 地址,不同的是,前者是被动,后者是主动。也就是说前者允许192.168.30.11这个ip来我这取数据。而serverActive的192.168.30.11的意思是,客户端主动提交数据给它。
 Hostname=server01,这个定义的名字必须和web页面里面host的名字一样。
 UnsafeUserParameters=1  #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本

4.1.8、启动服务

把前面启动的zabbix_agentd杀掉

 [root@server01 ~]# pkill zabbix_agentd
 [root@server01 ~]# systemctl daemon-reload
 [root@server01 ~]# systemctl start zabbix_agentd
 [root@server01 ~]# netstat -anplt | grep zabbix_agentd

部署zabbix

 4.2、server端测试通讯

 [root@zabbix_server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.121.11 -p10050 -k system.uname

注意:在server端测试!!!

注意:在server端测试!!!

注意:在server端测试!!!

 Linux server01 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64
 #可以获取对方系统版本则证明没有问题

 4.3、常见进程

 默认情况下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。

4.4、zabbix监控环境中基本概念

 1:主机(host):要监控的网络设备或主机,可由IP或DNS名称指定;
 2:主机群组(host group):主机的逻辑容器,可以包含主机和模板;
 3:监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由”key”标识;
 4:触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从”OK”转变为”Problem”,当数据再次恢复到合理范围,又转变为”OK”;
 5:事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
 6:动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
 7:报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
 8:媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
 9:通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
 10:远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
 11:模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板可以直接链接至某个主机;
 12:应用(application):一组item的集合;
 13:web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
 14:前端(frontend):Zabbix的web接口;
 

5、添加 Host主机

5.1、添加host主机部署zabbix

部署zabbix

 选择模块

部署zabbix

 在弹出的模块里选择一个自己需要的模块

部署zabbix

 部署zabbix

 查看主机状态(绿色为连同)

部署zabbix部署zabbix

 6、配置zabbix监控nginx服务

此处需要在server01主机安装nginx,步骤在上面有!!!

6.1、监控nginx

 zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。下面就介绍一下zabbix监控nginx服务的配置过程。整个配置过程大致如下:
 1,确定监控内容
 2,编写agent端的监控脚本
 3,配置zabbix_agentd.conf文件,定义监控脚本key
 4,zabbix服务端使用zabbix_get 测试获取数据
 5,登录zabbix web配置台;
 

6.2、确定监控内容

 nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等。
 在nginx的配置文件中,添加status配置
  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    allow 192.168.30.11;   //zabbix服务器的IP地址,一般是内网地址 
    deny all;
  }
 #在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机。
 #deny all , 拒绝除 allow 中的主机之外所有主机访问此URL ,实现过程中如果遇到403 ,有可能是你把自己测试的机器拒绝了
 

 [root@server01 ~]# vim /usr/local/nginx/conf/nginx.conf

  location /status {
             stub_status on;
             access_log off;
             allow 127.0.0.1;
             allow 192.168.30.11;
             deny all;

 [root@server01 ~]# nginx -s reload

在zabbix_server上测试访问

 [root@zabbix_server ~]# curl http://192.168.30.12/status

 部署zabbix

 nginx Status 详细说明:

部署zabbix

 在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中。

6.3、监控脚本编写

 编写脚本,放于/usr/local/zabbix/scripts目录下
 通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图像,获取status的关键值脚本如下:

 [root@server01 ~]# mkdir /usr/local/zabbix/scripts
 [root@server01 ~]# vim /usr/local/zabbix/scripts/ngx_status.sh

 #! /bin/bash
 # Description:zabbix监控nginx状态
 # Note:此脚本需要配置在被监控端
 HOST=”127.0.0.1″
 PORT=”80″
 # 检测nginx进程是否存在
 function ping {
     /sbin/pidof nginx | wc -l
 }
 # 检测nginx性能
 function active {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| grep ‘Active’ | awk ‘{print $NF}’
 }
 function reading {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| grep ‘Reading’ | awk ‘{print $2}’
 }
 function writing {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| grep ‘Writing’ | awk ‘{print $4}’
 }
 function waiting {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| grep ‘Waiting’ | awk ‘{print $6}’
 }
 function accepts {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| awk NR==3 | awk ‘{print $1}’
 }
 function handled {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| awk NR==3 | awk ‘{print $2}’
 }
 function requests {
     /usr/bin/curl “http://$HOST:$PORT/status/” 2>/dev/null| awk NR==3 | awk ‘{print $3}’
 }
 # 执行function
 $1 

 6.4、定义监控脚本key

添加zabbix配置文件,放于/usr/local/zabbix/etc/zabbix_agentd.conf.d/目录下(agent的配置文件/usr/local/zabbix/etc/zabbix_agentd.conf中定义了其他key的包含目录)创建配置文件nginx_status.conf

 [root@server01 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf

 UserParameter=nginx.status[*],/usr/local/zabbix/scripts/ngx_status.sh $1

 配置好后重启zabbix-agent

 [root@server01 ~]# systemctl restart zabbix_agentd

6.5、zabbix服务端使用zabbix_get 测试获取数据

注意时服务端!!!!!!

 [root@zabbix_server ~]# zabbix_get -s 192.168.30.12 -p 10050 -k nginx.status[ping]

部署zabbix

 6.6、WEB界面配置

 服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置,要熟练配置监控,要了解zabbix的每个组件的功能及各个组件之间的关系,否则看着一堆菜单选项会无从下手。
 zabbix的配置流程大致如下:
 创建主机组 -》添加主机 -》 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像—》创建触发器 -》 创建事件 -》创建处理动作 -》 创建用户组与用户 -》创建告警方式 
 由于前面已经创建了主机群组和主机,这里从配置模板开始,我们可以通过配置监控模板的方式,让所有相同的监控需求的主机都统一调用这个监控模板,这样就不用一个一个地添加监控项了。
 本章节只做 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像 这三项的步奏,监控告警的内容以后再做。

6.6.1、创建模板

 创建模板:Configuration–>Templates–>Greate template,创建模板名称:Template App NGINX,单击Add即可

部署zabbix

 6.6.2、给模板依次添加相应Item、Trigger、Graphs,如下图所示

 返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等,点击下图中的应用集就可以直接创建

部署zabbix

 6.6.3、创建应用集

应用集可以理解为是给整个模板中的一部分监控项分类,一个模板中可以创建不同类别的监控项,创建应用集只是起一个名字

部署zabbix

部署zabbix

 6.6.4、创建监控项

从上图中的应用集进入后就可以在应用集中创建监控项了,见下图

部署zabbix

  创建监控项要注意命名方式,能够见名知意,最关键的是键值 ,这里的键值一定要和agent端的配置文件中定义的键值一致。
 在监控脚本中,一共定义了8个监控项,所以这里的监控项页要创建8个,重复上面的步奏,创建脚本中相应的监控项。

部署zabbix

 6.6.5、创建图像

 监控项创建好后就可以创建图像了
 创建图像在选择要显示图像的监控项时,可以选择多个监控项,这样就可以在一个图像中显示多个数据的线图。
部署zabbix

 6.6.6、管理模板

关联模板:Configuration–>Hosts–>server01–Templates,选择模板,点击Updtae即可

部署zabbix

最后看看效果图

部署zabbix

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/22236.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!