一、Zabbix介绍
1、简介
在日常线上运维环境下,监控是非常重要的,监控就相当于运维人员在服务器上的眼睛,如果想要保证线上业务整体能能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源。
如果我们想要能够更加方便、集中的监控他们,我们则需要一些外部的工具来随时替我们监视着他们,zabbix就是一个被广泛使用,可以实现集中监控管理的应用程序。
2、监控工具的作用:
当某些指标不符合我们的需求时,我们能够在第一时间发现异常,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺。
3、Zabbix支持的通讯方式
agent:通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选。
ssh/telnet:通过远程控制协议进行通讯,比如ssh或者telnet。
SNMP:通过SNMP与被监控对象进行通讯,SNMP协议的全称为Simple Network Management Protocol ,被译为 “简单网络管理协议”,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件往往都支持SNMP协议,SNMP是一种比较久远的、通行的协议,大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式,只不过是在这些设备中内置了SNMP的agent而已,所以,大部分网络设备都支持这种协议。
IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),监控JVM虚拟机时,使用这种方法也是不错的选择。
4、zabbix监控的核心思想
在Zabbix监控中,通过我们使用最多的就是agent代理程序监控,即 zabbix agent。
一般情况下,我们将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端收到的信息存储于zabbix的数据库中,我们把zabbix的数据库端称为zabbix database。
如果管理员要查看各种监控信息,则需要zabbix的GUI,zabbix的GUI是一种Web GUI,我们称之为zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP环境,不管是zabbix server ,或是zabbix web,他们都需要连接到zabbix database获取相关数据。
5、各个组件之间的总结:
zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
二、Zabbix源码编译安装
对于zabbix来说,其实官网yum安装相对方便,但是有时候我们需要在特定的环境下,进行版本适配,尤其是在版本相配的LNMP环境下,对zabbix的版本就有严格要求
官网yum安装中文文档:https://www.zabbix.com/documentation/4.0/zh/manual/installation/install_from_packages/rhel_centos
官网源码安装中文文档:
https://www.zabbix.com/documentation/4.0/zh/manual/installation/install
环境说明:此处环境为centos7系统,6系统也是同样的操作
zabbix 各版本下载地址:https://sourceforge.net/p/zabbix/activity/?page=0&limit=100#5cb76912f0d3475bbf780be2
具体安装步骤:
1、编译安装LNMP环境【之前博客中有写到:https://blog.csdn.net/xu710263124/article/details/115761444?spm=1001.2014.3001.5502】
2、下载并解压软件包并安装依赖包
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.6/zabbix-4.0.6.tar.gz
tar xvzf zabbix-4.0.6.tar.gz
yum install libxml2-devel net-snmp-devel libevent-devel curl-devel pcre*
3、创建zabbix用户
groupadd zabbix
useradd -g zabbix zabbix
4、配置源代码(说明: --with-mysql,指定mysql_config路径;可以通过find / -name mysql_config 命令查看)
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
5、安装
make install
6、copy命令到系统命令存放处(方便调用)
cp /usr/local/zabbix/sbin/* /usr/sbin/
cp /usr/local/zabbix/bin/* /usr/bin/
7、导入数据库(首先需要先创建数据库)
mysql> create database zabbix character set utf8;
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix@qaz';
mysql> flush privileges;
# pwd
/root/zabbix-4.0.6/database/mysql
# ls
data.sql images.sql Makefile Makefile.am Makefile.in schema.sql
mysql -u zabbix -pzabbix@qaz -h localhost zabbix < schema.sql
mysql -u zabbix -pzabbix@qaz -h localhost zabbix < images.sql
mysql -u zabbix -pzabbix@qaz -h localhost zabbix < data.sql
8、编辑配置文件
# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/log/zabbix_server.log //日志文件存放的路径
PidFile=/usr/local/zabbix/zabbix_server.pid //pid文件存放的路径
DBHost=localhost //数据库服务器地址
DBName=zabbix //数据库名字
DBUser=zabbix //连接数据库的用户名
DBPassword=zabbix@qaz //连接数据库用户的密码
DBSocket=/var/lib/mysql/mysql.sock //指定连接mysql的socket,mysql配置的client sock文件路径
DBPort=3306 //数据库端口
Timeout=4 //超时时间
LogSlowQueries=3000 //慢查询记录的时间
9、创建log文件,并设置用户所有权
mkdir /usr/local/zabbix/log
chown zabbix.zabbix /usr/local/zabbix/log
10、启动zabbix_server(需要将安装目录权限设置为zabbix,因为配置文件中定义的zabbix用户启动,并指定的sock文件存放这个目录所以需要设置为指定的用户的权限)
chown zabbix.zabbix /usr/local/zabbix/
/usr//local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
可通过netstat -antup | grep zabbix_server
netstat -nlutp |grep zabbix_server
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 17003/zabbix_server
11、添加启动脚本
# pwd
/root/zabbix-4.0.6
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_agentd
chkconfig --add zabbix_server
chkconfig --add zabbix_agentd
chkconfig zabbix_server on
chkconfig zabbix_agentd on
# vim /etc/init.d/zabbix_server //编辑服务端配置文件
BASEDIR=/usr/local/zabbix/ //zabbix安装路径
PIDFILE=/usr/local/zabbix/$BINARY_NAME.pid //pid文件路径
# vim /etc/init.d/zabbix_agentd //编辑客户端配置文件
BASEDIR=/usr/local/zabbix/ //zabbix安装路径
PIDFILE=/usr/local/zabbix/$BINARY_NAME.pid //pid文件路径
// 测试
# /etc/init.d/zabbix_server start
Starting zabbix_server: [ OK ]
# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd: [ OK ]
12、开始配置web界面(先将解压目录里面的 frontends/php 目录下的所有文件 copy 到指定的 网站目录)
cp -a /root/zabbix-4.0.6/frontends/php/* /opt/zabbix/
13、改为网站运行的用户(这里是在已有的lnmp环境部署,网站用户为apache;根据php中配置的用户来)
chown -R apache. /opt/zabbix/
14、编辑 nginx 配置文件
vim /opt/nginx/conf/conf.d/nginx.conf
server {
listen 80;
server_name zabbix.xxxxxxx.vip;
autoindex off;
access_log /opt/nginx/logs/zabbix/zabbix.log main;
index index.html index.php index.html;
root /opt/zabbix;
location /{
try_files $uri $uri/ /index.php?$args;
}
location ~ ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /status {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
15、登录web界面安装 上面配置的域名,http://域名 初始账号:Admin 密码:zabbix
OK~
完结!