实验环境:
主机 | 主机名 | 操作系统 | 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
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
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();
?>
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
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,如图
开始检查环境,确保环境符合条件要求
下一步
下一步
下一步,可以在这个页面看到我们刚刚信息的简介
下一步
单击finish完成zabbix web安装。
3.17、登录zabbix
默认用户名和密码分别为 admin,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_agent
[root@zabbix_server ~] # /usr/local/zabbix/sbin/zabbix_agentd
[root@xuegod71 ~]# netstat -antup | grep zabbix //两者之间监控端口不一样
刷新页面,查看agent状态
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
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
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主机
选择模块
在弹出的模块里选择一个自己需要的模块
查看主机状态(绿色为连同)
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
nginx Status 详细说明:
在访问效率很高,请求很快被处理完毕的情况下,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]
6.6、WEB界面配置
服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置,要熟练配置监控,要了解zabbix的每个组件的功能及各个组件之间的关系,否则看着一堆菜单选项会无从下手。
zabbix的配置流程大致如下:
创建主机组 -》添加主机 -》 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像—》创建触发器 -》 创建事件 -》创建处理动作 -》 创建用户组与用户 -》创建告警方式
由于前面已经创建了主机群组和主机,这里从配置模板开始,我们可以通过配置监控模板的方式,让所有相同的监控需求的主机都统一调用这个监控模板,这样就不用一个一个地添加监控项了。
本章节只做 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像 这三项的步奏,监控告警的内容以后再做。
6.6.1、创建模板
创建模板:Configuration–>Templates–>Greate template,创建模板名称:Template App NGINX,单击Add即可
6.6.2、给模板依次添加相应Item、Trigger、Graphs,如下图所示
返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等,点击下图中的应用集就可以直接创建
6.6.3、创建应用集
应用集可以理解为是给整个模板中的一部分监控项分类,一个模板中可以创建不同类别的监控项,创建应用集只是起一个名字
6.6.4、创建监控项
从上图中的应用集进入后就可以在应用集中创建监控项了,见下图
创建监控项要注意命名方式,能够见名知意,最关键的是键值 ,这里的键值一定要和agent端的配置文件中定义的键值一致。
在监控脚本中,一共定义了8个监控项,所以这里的监控项页要创建8个,重复上面的步奏,创建脚本中相应的监控项。
6.6.5、创建图像
监控项创建好后就可以创建图像了
创建图像在选择要显示图像的监控项时,可以选择多个监控项,这样就可以在一个图像中显示多个数据的线图。
6.6.6、管理模板
关联模板:Configuration–>Hosts–>server01–Templates,选择模板,点击Updtae即可
最后看看效果图
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/22236.html