Author cherryc
Date 2018/6/3
Desc zabbix server和zabbix agent在centos中的安装
zabbix主要是对服务器的各项配置做实时监控,这可以帮助我们在压测过程中发现服务器配置瓶颈,优化系统性能,提高用户体验度。安装zabbix其实就是安装几个重要控件
zabbix server zabbix database zabbix web zabbix agent
因为zabbix3.X依赖的php版本不能低于php5.4,而centos6.8中,php默认版本为5.3。 所以安装的时候需要确认系统版本信息,然后选择对应的zabbix版本。
本次安装的服务器信息是Centos7.1,zabbix版本为3.0.17。下边详细介绍zabbix安装的步骤
[root@localhost cxh]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
安装可以选择从zabbix的源代码去编译或者直接使用官网的RPM包进行安装。如果不是对zabbix有代码级别的定制需求的话,推荐使用RPM包进行安装。
rpm -vhi http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
由于我们使用mysql作为数据库,所以,在安装zabbix3.X的版本的server端时,需要安装zabbix-server-mysql包,在3.X的zabbix版本中,并没有单独的zabbix server端程序包,安装zabbix-server-mysql包即为安装了server端包
yum install -y zabbix-server-mysql zabbix-web-mysql
由于zabbix需要依赖LNMP或者LAMP环境 ,所以我们此处查询下php版本,如下5.4
[root@localhost cxh]# php -v
PHP 5.4.16 (cli) (built: Apr 12 2018 19:02:01)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
安装完成上述两个包以后,server即为安装完成,是不是很简单,server端的相关配置我们一会儿再进行。
rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
yum install -y mysql-community-server (mysql安装失败)
因为centos7.2默认安装了mariadb-libs,所以先要卸载掉。查看是否安装mariadb:rpm -qa | grep mariadb
卸载mariadb(注意检查依赖,判断是否可以强制删除,删除上变的三个文件)
rpm -e –nodeps mariadb-libs-5.5.52-1.el7.x86_64 (此处只写了一个命令,请灵活处理)
然后再执行yum install -y mysql-community-server
systemctl start mysqld
mysql> create database zabbix character set utf8 collate utf8_bin;
--------------
create database zabbix character set utf8 collate utf8_bin
--------------
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
--------------
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'
--------------
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
--------------
flush privileges
--------------
Query OK, 0 rows affected (0.00 sec)
zabbix数据库建立之后,执行对应的sql初始化脚本初始化数据库。先查询下zabbix数据库下的表,发现没有表结构。
使用命令rpm -ql zabbix-server-mysql
查看刚才安装的zabbix-server-mysql,可以看到有一个数据库初始化的包create.sql.gz
,zabbix-server-mysql安装在/usr/share/doc/目录下
[root@localhost cxh]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.17
/usr/share/doc/zabbix-server-mysql-3.0.17/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.17/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.17/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.17/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.17/README
/usr/share/doc/zabbix-server-mysql-3.0.17/create.sql.gz
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
进入目录下,使用命令gunzip create.sql.gz
解压此包可以得到数据库脚本create.sql
[root@localhost cxh]# cd /usr/share/doc/zabbix-server-mysql-3.0.17
[root@localhost zabbix-server-mysql-3.0.17]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@localhost zabbix-server-mysql-3.0.17]# gunzip create.sql.gz
[root@localhost zabbix-server-mysql-3.0.17]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@localhost zabbix-server-mysql-3.0.17]#
指定数据库用户名密码和数据库名称,执行sql初始化脚本: mysql -uroot -p -Dzabbix < create.sql
查看数据库表,如下表示数据库导入成功!
至此,server端已经安装完毕,并且数据库也已经初始化,现在我们开始配置server端,编辑zabbix server端的配置文件。
设置zabbix数据库所在的服务器IPDBHost
,数据库名称,数据库用户名密码
vim /etc/zabbix/zabbix_server.conf
此处列出我们可能会经常修改的参数,如下:
ListenPort=10051
#服务端监听的端口,保持默认即可
SourceIP=
#通过SourceIP参数可以指定服务端的源IP,当server端有多个IP地址时,我们可以指定服务端使用固定的IP与agent端进行通讯,为了安全起见,agent端会基于IP进行一定的访问控制,也就是说agent端只允许指定的IP以server端的身份采集被监控主机的数据,如果IP不对应,则不允许采集被监控主机的数据,所以,当server端有多个IP时,我们可以通过SourceIP参数,指定server端通过哪个IP采集被监控主机的数据。
LogType=file
#通过LogType参数,可以指定通过哪种方式记录日志,此参数可以设置为三种值,system、file、console,system表示将日志发往syslog,file表示使用指定的文件作为日志文件,console表示将日志发往控制台,默认为file。
LogFile=/var/log/zabbix/zabbix_server.log
#当LogType设置为file时,通过LogFile参数设置日志文件位置。
LogFileSize=0
#指明日志文件达到多大时自动滚动,单位为MB,如果设置LogFileSize为50,表示日志大小达到50MB滚动一次,设置为0表示日志文件不会滚动,所有日志保存在一个文件中。
DebugLevel=3
#通过DebugLevel参数可以定义日志的详细程度,即为日志级别。
DBHost=localhost
#通过DBHost参数设置zabbix数据库所在的服务器IP,由于此处zabbix与mysql安装在同一服务器上,所以此处设置为localhost
DBName=zabbix
#通过DBName指定zabbix数据库对应的名称
DBUser=zabbix
#通过DBUser指定zabbix数据库用户名
DBPassword=zabbix
#通过DBPassword指定zabbix数据库用户的密码
DBPort=3306
#通过DBPort指定zabbix所在数据库服务监听的端口号
DBSocket=/var/lib/mysql/mysql.sock
#如果数据库服务与server端在同一台服务器上,可以通过DBSocket指定数据库本地套接字文件位置,但是需要注意,即使设置了mysql套接字文件的位置,还是需要配合DBHost参数,否则在登录zabbix控制台时,可能会出现警告,在zabbix server的log中,也可能会出现无法连接到数据库的提示。
首先安装httpd服务,yum install httpd
修改配置文件/etc/httpd/conf.d/zabbix.conf,时区改成 Asia/Shanghai
vim /etc/httpd/conf.d/zabbix.conf
通过systemctl start zabbix-server.service
启动zabbix-server失败,通过journalctl -xn
查询错误原因
看上图可知,是由于SELinux的原因,所以此处临时关闭SELinux
如下:zabbix-server启动成功!
ss -tnl 查看哪些端口在使用
配置完成后,启动zabbix服务端即可,启动后,10051端口已经被监听。
好了,zabbix server已经启动,剩下的就是初始化zabbix设置了,但是初始化zabbix的设置需要zabbix web提供的GUI图形化界面,所以,我们需要先安装zabbix web。
zabbix web可以安装在单独的主机上,只要能连接到zabbix database所在的数据库即可,但是此处为了方便,我们将zabbix web与 mysql以及 zabbix server安装在同一台服务器上。 因为zabbix web需要lamp环境,所以,此处我们将会依赖到的环境先安装好。 安装lamp环境
yum install php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
然后安装zabbix-web:yum install zabbix-web
修改apache配置文件支持index.php: vim /etc/httpd/conf/httpd.conf
启动httpd和zabbix-server
systemctl start httpd.service
systemctl start zabbix-server.service
问题
启动httpd和zabbix-server服务后,访问web页面无法显示。
需要将宿主机的10051端口对外访问(或者关闭防火墙):
[root@localhost etc]# firewall-cmd --zone=public --add-port=10051/tcp --permanent
success
[root@localhost etc]# firewall-cmd --reload
success
[root@localhost etc]# firewall-cmd --zone=public --query-port=10051/tcp
yes
httpd监听的80端口也要对外访问
[root@localhost cxh]# firewall-cmd --zone=public --query-port=80/tcp
no
[root@localhost cxh]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@localhost cxh]# firewall-cmd --reload
success
[root@localhost cxh]# firewall-cmd --zone=public --query-port=80/tcp
yes
启动httpd服务和zabbix服务
[root@localhost cxh]# systemctl start httpd
[root@localhost cxh]# systemctl start zabbix-server
[root@localhost cxh]#
访问zabbix主页:http://192.168.193.1/zabbix/index.php
用户名密码 Admin zabbix
如果出现上图中的提示zabbix-server is not running,可能是由如下几个原因引起的:
1、zabbix-server未正常启动
2、已经开启selinux,但是没有正常设置对应权限。
3、zabbix-server未能正常连接数据库。
4、zabbix.conf.php文件中$ZBX_SERVER参数对应的主机名不能正常解析。
5、其他原因,需要查看zabbix server日志。
解决方法:
vi /etc/zabbix/web/zabbix.conf.php
然后启动httpd, setenforce 0
再启动zabbix,可以看到zabbix-server处于运行状态
zabbix-server的安装到此结束!
zabbix-server zabbix-web都安装好之后,就剩下zabbix-agent了。只需要执行命令yum install zabbix-agent zabbix-sender
就可以实现agent端的安装。
//添加下载源
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
//执行安装命令
yum install zabbix-agent zabbix-sender
//查看agent的安装目录等,agent的配置文件为/etc/zabbix/zabbix_agentd.conf
rpm -ql zabbix-agent
agent安装好之后,需要修改agent的配置文件:vim /etc/zabbix/zabbix_agentd.conf
我们此处使用被动模式监控,只需要指定zabbix-server端的ip地址,其他默认,默认监听端口号为10050
agent配置好之后,启动服务:systemctl start zabbix-agent
zabbix-agent发送数据给zabbix-server分为主动(Active checks related)和被动(Passive checks related)两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待server端来取数据。
主动模式的流程:客户端每隔一段时间主动向服务端发起连接请求––>服务端收到请求,查询客户端需要取的item信息,发送给客户端––>客户端收集数据发送服务端––>结束。
主动模式的常用参数如下:
ServerActive:此参数用于指定当agent端工作于主动模式时,将信息主动推送到哪台server上,当有多个IP时,可以用逗号隔开。
Hostname:此参数用于指定当前主机的主机名,server端通过此参数对应的主机名识别当前主机。
RefreshActiveChecks:此参数用于指明agent端每多少秒主动将采集到的数据发往server端。
此处,我们同时设置"被动模式"与"主动模式"的如下参数,其他保持默认即可,修改完成后保存退出。
Server=192.168.1.108
ServerActive=192.168.1.108
Hostname=testzbx1.zsythink.net
被动模式的流程:客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,结束。
被动模式相关参数如下:
Server:用于指定允许哪台服务器拉取当前服务器的数据,当agent端工作于被动模式,则代表server端会主动拉取agent端数据,那么server端的IP必须与此参数的IP对应,此参数用于实现基于IP的访问控制,如果有多个IP ,可以使用逗号隔开。
ListenPort:用于指定当agent端工作于被动模式时所监听的端口号,默认端口为10050,也就是说,server端默认访问10050端口,从而拉取数据。
ListenIP:用于指定agent端工作于被动模式时所监听的IP地址,默认值为0.0.0.0,表示监听本机的所有IP地址。
StartAgents:用于指定预生成的agent进程数量。