官方网站
http://www.zabbix.com/
为什么要监控
对于运维人员来说,监控是非常重要的,因此如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,我们则需要依靠一些外部的工具,而zabbix就是一个被广泛使用的,可以实现集中监控管理的应用程序。
我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常,所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺,那么,一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能。而zabbix就可以做到这些。
总结来说,监控可以给我带来:
1、在需要的时刻,提前提醒我们服务器出问题了
2、当出问题之后,可以找到问题的根源
3、监控什么东西:监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。
4、网站/服务器的可用性
Zabbix主要功能
Zabbix是一个高度集成的网络监控套件,可实现如下功能:
1、数据收集:自定义间隔收集收据
2、灵活的阀值定义:灵活地自定义故障阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中;
3、高级告警配置:可以自定义告警升级(escalation)、接收者及告警方式;通过远程命令实行自动化动作;
4、实时绘图:通过内置的绘图引擎实现监控数据实时绘图;
5、具备应对复杂环境情况:通过Zabbix proxy可以非常容易的创建远程监控;
网站可用性
在软件系统的高可靠性(也称为高可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,X个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比,我们通过下面的计算来感受下X个9在不同级别的可靠性差异。
1个9:(1-90%)365=36.5天,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天。
2个9:(1-99%)365=3.65天 , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天。
3个9:(1-99.9%)36524=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。
4个9:(1-99.99%)36524=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。
5个9:(1-99.999%)3652460=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。
6个9:(1-99.9999%)3652460*60=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒。
监控范畴
硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。
网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
应用服务监控:Zabbix Agent UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web 监控
企业级监控解决方案——Zabbix
Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的web管理界面。
zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,能够灵活利用可定制告警机制,允许用户对事件发送基于E-mail的告警,保证相关人员可以快速解决。
zabbix提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。
Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置,而被监控对象只需要支持SNMP协议或者运行Zabbix agents代理程序即可。服务端监听端口为10051,而被监控端Zabbix-agents代理程序监控10050端口。
Zabbix监控组件
主要包括:Zabbix Server、Zabbix Proxy、Zabbix Agent
每个模块工作职责:
1、Zabbix Server:Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database;
2、Zabbix Database:用户存储所有zabbix的配置信息、监控数据的数据库;
3、Zabbix Web:Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix Server运行在同一台主机上,也可以单独部署在独立的服务器上;
4、Zabbix Proxy:常用于分布监控环境中,代理zabbix Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)
5、Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。
zabbix常用的监控架构平台
server-agentd模式:
将zabbix agent部署到被监控主机上,由agent采集数据,报告给zabbix server,zabbix server将从agent端接收到的信息存储于zabbix database,如果管理员需要查看各种监控信息,则需要zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP或LNMP环境。不管是zabbix server,或是zabbix web,他们都需要连接zabbix database获取相关数据。
server-proxy-agentd模式(用的很少):
当监控规模变得庞大时,我们可能有成千上万台设备需要监控,那如何分摊巨大的监控压力呢?其实,zabbix天生就有处理这种问题的能力,因为zabbix支持分布式监控,我们可以把成千上万的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给zabbix server处理。这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象。
Zabbix运行过程图
zabbix监控系统运行的大概的流程是这样的:
需要将zabbix agent安装到被监控的主机上,zabbix server收集各项数据,将数据存储到database数据库中,通过zabbix web根据数据在前端进行展现。
这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
怎么来监控,远程管理服务器
如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
当没有zabbix的时候怎么来查看服务器状态
监控硬件
查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。
使用ipmitool实现对服务器的命令行远程管理。
yum -y install OpenIPMI ipmitool # IPMI在物理机可以成功,虚拟机不行
查看cpu相关
lscpu、uptime、top、vmstat、mpstat
查看内存相关
free
查看磁盘相关的
df、dd、iotop
查看网络相关的
ifconfig、iftop
除了使用系统命令查看计算机状态数据,还可以使用监控工具,如zabbix监控系统。
部署zabbix_server
实验环境:
zabbix监控端:192.168.30.11 #zabbix的服务端(若要监控本机,则需要配置本机的zabbix server)。
Zabbix agent被监控主机:192.168.30.12 #zabbix的客户端(被监控端,需要配置Zabbix agent。
关闭selinux、关闭防火墙
#setenforce 0
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/sysconfig/selinux
#systemctl stop firewalld
#systemctl disable firewalld
整个环境所需要的软件包
php-5.6.36
libmcrypt-2.5.7
mysql-5.7.26
nginx-1.10.3
zabbix-4.2.6
如果你是虚拟机,要保证虚拟机能连网
GATEWAY的意思是网关,是你vm1的ip
将你本地wifi共享给vm1,然后再将vm1的ip改成上面指定的网关ip
测试是否连上网
搭建 LNMP 的环境
一、安装mysql-5.7.26
Mysql安装略,具体安装过程可以参考我的mysql博文
二、安装php-5.6.36
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
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、安装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、生成php.ini配置文件, 编辑配置文件
[root@zabbix_server php-5.6.36]# cp php.ini-production /etc/php.ini
编辑配置文件 vim /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 #去掉注释
4、创建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
5、提供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
启动php-fpm服务
[root@zabbix_server ~]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@zabbix_server ~]# netstat -anplt | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 41483/php-fpm: mast
三、安装nginx
1、安装依赖关系包:
[root@zabbix_server ~]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
2、编译安装nginx
[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、启动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
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 44121/nginx: master
四、配置nginx支持php,将原文件删掉,把这个占进去
nginx.conf配置文件内容如下:
[root@zabbix_server ~]# 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;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
[root@zabbix_server ~]# 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
[root@zabbix_server ~]# nginx -s reload
测试LNMP
进入nginx默认的网页根目录,创建.php的测试页
[root@zabbix_server ~]# vim /usr/local/nginx/html/test1.php
<?php
phpinfo();
?>
[root@zabbix_server ~]# vim /usr/local/nginx/html/test2.php
<?php
$link=mysql_connect(‘localhost’,‘root’,‘123456’);
if($link) echo “ok”;
mysql_close();
?>
访问结果:
这个页面用火狐或者谷歌浏览器测试
至此,LNMP部署完毕。
Zabbix 中文在线手册
https://www.zabbix.com/documentation/4.0/zh/manual
创建导入zabbix数据库
Zabbix 需要数据库的支持(mysql,oracle,PostgreSQL,SQLite, DB2),而且Zabbix 源码包中已经自带了数据库结构。
创建 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
五、解压zabbix-4.2.6.tar.gz
[root@zabbix_server ~]# tar zxf zabbix-4.2.6.tar.gz
[root@zabbix_server ~]# cd zabbix-4.2.6/
导入数据库,注意顺序,否则会报错
[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必须三个都要导入。
1、安装依赖
[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
如果是本地yum源安装依赖包,需要安装zabbix_rpm.tar.gz包里的rmp包。
[root@zabbix_server ~]# cd zabbix/zabbix_rpm/
[root@zabbix_server ~]# yum -y install *
2、创建用户
[root@zabbix_server ~]# groupadd zabbix
[root@zabbix_server ~]# useradd -s /sbin/nologin -g zabbix zabbix
3、预编译
[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 客户端程序,如果没有请安装mysql-devel
–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 的负载,
看到如下信息,预编译就没有什么问题
……
* Now run ‘make install’ *
* *
* Thank you for using Zabbix! *
* http://www.zabbix.com *
4、安装
[root@zabbix_server zabbix-4.2.6]# make install
#按上面的提示,没有 make 步骤,直接 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/
5、配置 zabbix Server
[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/
6、监控 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的名字一样。
Include=指定你自定义脚本的位置
UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
7、启动服务
如果 zabbix 用户不存在, 将以 root 运行,新建之后,如果 zabbix 存在,那么直接可以用 zabbix 运行
直接运行
[root@zabbix_server ~]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
解决库文件找不到
在ld.so.conf中加入/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 #使库文件生效
再次执行zabbix_server启动
[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
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 78209/zabbix_server
8、添加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
[root@zabbix_server init.d]# netstat -anput | grep zabbix
六、配置zabbix web页面
1、拷贝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/
查看是否包括了上面所提到的扩展模块
[root@zabbix_server ~]# /usr/local/php5.6/bin/php -m
2、开启默认打开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、重启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
4、打开浏览器安装 zabbix web
浏览器输入:http://192.168.30.11,如图,下一步 Next
开始检查环境,如图,确保环境要符合条件要求
如果不符合,就需要编辑 php.ini 文件,修改php环境,修改后重启php-fpm
下一步
下一步
单击finish完成zabbix web安装。
登陆 Zabbix
默认用户名和密码分别为 admin,zabbix
登录后的页面如下
至此 ZABBIX的基础安装完成。
5、修改语言,让它显示简体中文界面
在安装数据库时已经将zabbix库设置了utf-8字符,首先确定zabbix开启了中文支持功能:
登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/usr/local/nginx/html/include/
),打开 locales.inc.php文件
#grep “zh_CN” /usr/local/nginx/html/include/locales.inc.php 改为
‘zh_CN’ => [‘name’ => _(‘Chinese (zh_CN)’), ‘display’ => true],
登陆zabbix后,点击右上角用户图标,然后选择语言,然后 Update 即可,页面变为中文
6、解决zabbix绘图中出现中文乱码问题:
从windows的控制面板->外观和个性化->字体->选择一种中文字库例如“楷体”
把它拷贝到web端的fonts目录下:/usr/local/nginx/html/assets/fonts/,并确保后缀名为ttf
[root@zabbix_server ~]# cd /usr/local/nginx/html/assets/fonts/
[root@zabbix_server fonts]# ls
DejaVuSans.ttf simkai.ttf
并且将之前的字体文件DejaVuSans.ttf移动到别处
[root@zabbix_server fonts]# mv DejaVuSans.ttf …/
然后,接着修改代码/usr/local/nginx/html/include/defines.inc.php文件中的字体配置,将里面关于字体设置从DejaVuSans替换成simkai
[root@zabbix_server ~]# vim /usr/local/nginx/html/include/defines.inc.php
vi替换技巧:%s/DejaVuSans/simkai/g,其中:simkai为字库名字,不包含ttf后缀
这样,修改后,zabbix监控图形中的中文字就不会出现乱码了
安装 zabbix_agent
既然要监控,我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent。192.168.30.12(server01)作为zabbix的被监控端
1、安装依赖
[root@server01 ~]# yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI
创建用户
[root@server01 ~]# useradd -M -s /sbin/nologin zabbix
解压zabbix-4.2.6.tar.gz
[root@server01 ~]# tar zxf zabbix-4.2.6.tar.gz
[root@server01 ~]# cd zabbix-4.2.6/
预编译zabbix_agent
[root@server01 zabbix-4.2.6]# ./configure --prefix=/usr/local/zabbix --enable-agent
//被监控端只需要部署 agnet
安装
[root@server01 zabbix-4.2.6]# make install
端口
[root@xuegod69 ~]# cat /etc/services | grep zabbix
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
启动agent:
[root@server01 ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server01 ~]# netstat -anplt | grep zabbix_agentd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11827/zabbix_agentd
配置 zabbix_agent 开机启动
2、生成了启动脚本
[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
-rwxr-xr-x. 1 root root 2170 Oct 3 15:14 /etc/init.d/zabbix_agentd
添加开机启动
[root@server01 ~]# chkconfig --add zabbix_agentd
[root@server01 ~]# chkconfig zabbix_agentd on
拓展:core 和 core5 里面的文件都可以实现 zabbix 代理启动,core 里面是测试版本,core5 是稳定版本
修改zabbix_agent配置文件
3、修改安装目录
修改zabbix开机启动脚本中的zabbix安装目录
[root@server01 ~]# vim /etc/init.d/zabbix_agentd #编辑客户端配置文件
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" #找到该行,并修改。
#保存退出
4、修改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 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
5、启动服务
[root@server01 ~]# systemctl daemon-reload
[root@server01 ~]# systemctl restart zabbix_agentd
[root@server01 ~]# netstat -anplt | grep zabbix_agentd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 17482/zabbix_agentd
Server 端测试通讯
[root@zabbix_server ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.30.12 -p10050 -k system.uname
Linux server01 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64
#可以获取对方系统版本则证明没有问题
常见进程
默认情况下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。
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接口;