前言
zabbix 作为一款优秀的企业级开源监控系统,它可以采集和处理所有类型的监控数据,具有灵活的报警机制。与cacti 与 nagios相比,cacti画图比nagios漂亮,但是报警相对较弱,而zabbix集两者优点于一身。
它的系统分为: zabbix server,负责所有监控设备和监控项目配置,数据的存储与报表的生成与展示,报警。
zabbix proxy : 为了减轻zabbix服务器的压力,proxy 可以代替服务器收集和接受监控数据,并发送给服务器。
zabbix web 前段组件:为用户提供配置监控信息和查看数据的web接口。
zabbix agent:用于收集被监控设备上的各种数据,并将这些数据发送给 zabbix 服务器。
数据存储系统。
部署思路
要实现zabbix的监控,需要在监控主机上部署 zabbix server,在被监控的每台主机上部署zabbix agent。同时为了减轻中间节点压力,可以使用zabbix proxy 管理所有的zabbix agent,实现更多主机的监控,从而支撑构建大型分布式监控的环境!架构图如下:【server:192.168.4.5;web1:192.168.4.10】
在zabbix中,要先添加主机,给主机添加监控项,然后监控项被触发产生事件,同时产生动作—报警或者命令。本案例使用的是第三方软件睿象云进行邮件、微信、电话报警。
zabbix的监控能力比较强,在企业中,可以根据需求选择监控如下项目:
具体步骤:
1.部署LNMP环境
1.1部署NGINX
1.1.2安装nginx
[root@zabbix-server ~]# yum -y install gcc pcre-devel
[root@zabbix-server lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[root@zabbix-server lnmp_soft]# cd nginx-1.12.2/
[root@zabbix-server nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbix-server nginx-1.12.2]# make && make install
1.1.2修改nginx配置
[root@zabbix-server nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
…
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
…
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;
}
#如果报错
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
1.2部署mariadb、php
[root@zabbix-server nginx-1.12.2]# yum -y install php php-mysql mariadb mariadb-devel mariadb-server
[root@zabbix-server nginx-1.12.2]# yum -y install php-fpm
启服务
[root@zabbix-server nginx-1.12.2]# systemctl start mariadb
[root@zabbix-server nginx-1.12.2]# systemctl enable mariadb
[root@zabbix-server nginx-1.12.2]# /usr/local/nginx/sbin/nginx
1.3测试页面
[root@zabbix-server nginx-1.12.2]# cat /usr/local/nginx/html/test.php
<?php $i=33; echo $i; ?>
2.部署zabbix软件
2.1 部署zabbix server
2.1.1需要的环境
[root@zabbix-server ~]# yum -y install net-snmp-devel curl-devel
[root@zabbix-server ~]# yum -y install libevent-devel autoconf
2.1.2安装zabbix
[root@zabbix-server zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
[root@zabbix-server zabbix-3.4.4]# make && make install
2.1.3创建数据库与数据库账户
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@‘localhost’ identified by ‘zabbix’;
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
#注意顺序
2.1.4上线zabbix 页面
[root@zabbix-server mysql]# cd /lnmp_soft/zabbix-3.4.4/frontends/php/
[root@zabbix-server php]# cp -a * /usr/local/nginx/html/
[root@zabbix-server php]# chmod -R 777 /usr/local/nginx/html/*
2.1.5修改配置文件并启服务
2.1.5.1 server 服务
修改配置文件
[root@zabbix-server ~]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
创建zabbix用户
[root@zabbix-server ~]# useradd -s /sbin/nologin zabbix
[root@zabbix-server ~]# zabbix_server
设置开机自启
[root@zabbix-server ~]# echo zabbix_server >> /etc/rc.local
[root@zabbix-server ~]# chmod +x /etc/rc.local
#确认连接状态,端口10051
[root@zabbixserver ~]# ss -ntulp |grep zabbix_server
2.1.5.2 agent 服务
修改配置文件
[root@zabbix-server ~]#vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.4.5 #允许哪些主机监控本机
ServerActive=127.0.0.1,192.168.4.5 #允许哪些主机通过主动监控本机
UnsafeUserParameters=1 #是否允许自定义监控传参
启动服务
[root@zabbix-server ~]# zabbix_agentd
[root@zabbix-server ~]# echo zabbix_agentd >> /etc/rc.local
查看端口信息为10050
[root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd
2.1.6修改PHP配置文件,满足web环境要求
2.1.6.1需要的依赖
[root@zabbix-server ~]# yum -y install php-gd php-xml php-ldap
[root@zabbix-server ~]# yum -y install php-bcmatch php-mbstring
2.1.6.2修改PHP配置文件(根据登录zabbix web页面进行修改即可)
[root@zabbix-server ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 32M
max_input_time = 300
memory_limit = 128M
2.1.7 网站打开zabbix
2.2部署zabbix agent
2.2.1需要依赖
[root@zabbix-agent1 ~]# yum -y install gcc pcre-devel autoconf
2.2.2安装
[root@zabbix-agent1 zabbix-3.4.4]# ./configure --enable-agent
[root@zabbix-agent1 zabbix-3.4.4]# make && make install
[root@zabbix-agent1 ~]# useradd -s /sbin/nologin zabbix
2.2.3修改配置文件,启动agent
[root@zabbix-agent1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.4.5
ServerActive=127.0.0.1,192.168.4.5
Hostname=web1
EnableRemoteCommands=1
UnsafeUserParameters=1
Include=/usr/local/etc/zabbix_agentd.conf.d/
启服务
[root@zabbix-agent1 ~]# zabbix_agentd
[root@zabbix-agent1 ~]# echo zabbix_agentd >> /etc/rc.local
[root@zabbix-agent1 ~]# chmod +x /etc/rc.local
3.实现监控配置
经过zabbix安装代码,接下来需要在网站上部署监控主机、项目、触发、动作。
3.1添加监控主机
configure --> host–> create host
3.2为被监控的主机添加监控模板
3.3查看监控项目
点击每一项最右边的按钮,可以查看图形信息。
横坐标是时间点,纵坐标是cpu负载,绿线是最近一分钟内平均负载,蓝线是最近5分钟内平均负载,红线是最近15分钟内平均负载。
4自定义监控项
在zabbix自带模板中有很多监控项,但是也可以根据自己的实际需要自定义监控项。
4.1.被监控主机创建自定义key
[root@zabbix-agent1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@zabbix-agent1 zabbix_agentd.conf.d]#xim my.zabbix
UserParameter=count.line.passwd,sed -n ‘$=’ /etc/passwd
UserParameter=vm.mem.ratio, free -m | sed -n ‘2p’ | awk ‘{print""($3/$2)*100"%"}’
UserParameter=swap_free_re, free -m | sed -n ‘3p’ | awk ‘{print""($4/$2)*100"%"}’
4.2创建监控模板
点击create template >
点击上图中的 application 添加应用集> 点击items添加监控项 ==>点击graphs创建图形。
4.3监控报警介质
关于zabbix的报警介质,可以选择zabbix自带的邮件、jabber 、SMS ,当然也可以选择第三方工具。
点击create media type ,添加报警介质。
本地邮件报警示例:
在这,我选择的是睿象的报警。步骤如下:
打开睿象云,没有账号需要注册账号。
然后回车会显示 安装成功。点击配置,新建通知策略。
4.4触发器
设置好触发器,就可以在被监控主机上进行操作,触发已经设置好的规则。