使用目的?
在公司项目中须要作一个日志监控,最开始选择的是efk,可是efk的资料相对较少而且以前对这几个产品都没接触过,使用起来难度。因而选择了zabbix做为项目的运维监控系统。php
zabbix能作什么?
zabbix主要是用来网络监控、系统监控、应用监控等场景。zabbix分为server端和agent端,文章前半部分都是在讲server端的安装操做,后面结尾讲解agent的安装操做。html
搭建环境
centos7.0,lnmp集成环境(mysql5.7,php7.2),zabbix4.0版本。zabbix安装的具体环境要求可参考官网手册。
手册给到以下几种安装方式:mysql
安装步骤
1.安装lnmp环境
因为lnmp集成包,安装很是方便,所以直接安装官网手册一键安装便可.官网地址
2.安装zabbix服务端nginx
# 安装依赖 yum install net-snmp-devel libxml2-devel libcurl-devel libevent-devel mysql-devel # 下载安装包(该安装包能够直接放在web的程序目录里面) wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.2.3/zabbix-4.2.3.tar.gz/download # 解压 tar zxvf zabbix-4.2.3.tar.gz # 编译(这里我使用的是mysql,因此在编译的时候是用的mysql的依赖,若是是其余的数据库按照官网手册编译的时候编译其余的数据库依赖) cd zabbix-4.2.3 ./configure --prefix=/web/data/zabbix-3.4.4/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 # 开始安装 make && make install
3.建立zabbix用户
<font color='blue'>为何要给zabbix建立一个单独的用户,很简单,是由于安全问题。为了安全考虑zabbix只使用普通用户运行,假如你当前用户叫ttlsa,那么你运行他,他便使用ttlsa身份运行。可是若是你在root环境下运行zabbix,那么zabbix将会主动使用zabbix用户来运行。可是若是你的系统没有名叫zabbix的用户,你须要建立一个用户。</font>web
groupadd zabbix useradd -g zabbix zabbix
4.数据库相关配置
考虑到安全问题,所以这里咱们一样的给zabbix建立一个单独的数据库用户,数据库名称也是zabbix。MySQL建立用户能够参考以前的一篇文章,MySQL建立用户传送门。在本文中建立的MySQL用户为zabbix,密码能够根据本身定义。sql
5.导入zabbix事先准备好的数据。
.查看数据库文件docker
cd /home/wwwroot/zabbix-4.2.3/database && ls drwxr-xr-x 2 mysql mysql 4096 6月 6 02:23 elasticsearch drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 ibm_db2 -rw-r--r-- 1 root root 21474 6月 13 10:10 Makefile -rw-r--r-- 1 mysql mysql 155 6月 6 02:23 Makefile.am -rw-r--r-- 1 mysql mysql 21722 6月 6 02:24 Makefile.in drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 mysql drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 oracle drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 postgresql drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 sqlite3
.上面的几种目录就是针对不一样的数据,zabbix自带的不一样的数据库文件,咱们是使用的MySQL,所以咱们只须要关心mysql目录下面的文件,下面便是咱们须要的文件。schema.sql文件数数据表结构,images.sql是相关的图片数据结构,data.sql则是相关的数据结构。shell
-rw-r--r-- 1 mysql mysql 4018823 6月 6 02:24 data.sql -rw-r--r-- 1 mysql mysql 1978341 6月 6 02:23 images.sql -rw-r--r-- 1 root root 15420 6月 13 10:10 Makefile -rw-r--r-- 1 mysql mysql 392 6月 6 02:23 Makefile.am -rw-r--r-- 1 mysql mysql 15711 6月 6 02:24 Makefile.in -rw-r--r-- 1 mysql mysql 142074 6月 6 02:24 schema.sql
.登陆并导入数据库数据库
# 登陆数据 mysql -u root -p # 选择实现建立好的zabbix数据库 use zabbix # 依次导入数据库文件 source /home/wwwroot/zabbix-4.2.3/database schema.sql source /home/wwwroot/zabbix-4.2.3/database data.sql source /home/wwwroot/zabbix-4.2.3/database images.sql
配置虚拟域名
本文搭建的zabbix是在centos7.0的虚拟环境中搭建,为了方便访问,搭建了一个虚拟域名.只须要配置一个nginx文件便可.环境中使用的是lnmp集成开发环境,则使用lnmp集成开发环境自带的命令来建立编程
lnmp vhost add # 指定root的目录,应该为 /home/wwwroot/zabbix-4.2.3/frontends/php # 应该开启pathinfo模式, #rwriter 选择WordPress(不强制要求)
在本地点的hosts文件中添加上述本身配置的虚拟域名(以.dev.zabbix.com为例)
使用zabbix
咱们在登陆时候,会提示咱们一些安装信息,咱们按照提示填写便可。在安装以后会自动跳转到登陆页面,能够选择宾客模式也可使用管理员模式。
宾客模式就只是简单的浏览操做。系统默认的管理帐号是Admin,密码是zabbix。
在使用管理员帐号的时候会可能会提示以下信息。如要是由于咱们的web服务致使的,若是是使用的Apache则不会出现以下问题。
问题根源是在zabbix php定位问题发现,zabbix是依据php文件名来设置权限,例如index.php、dashboard.php这些,若是cgi.fix_pathinfo设置为0,那么php没法获取到url请求的文件名称,例如访问index.php,获取不到index.php也定位到权限,因而出现这个错误。解决办法是:修改php.ini文件的配置。
cgi.fix_pathinfo=0 改成 cgi.fix_pathinfo=1
此时咱们登陆进去就能够看到以下界面了。
安装代理端
配置文件目录:/etc/zabbix/zabbix_agentd.conf
1.在被监控主机上设置防火墙,容许zabbix-agent的10050端口经过 2.执行yum list |grep zabbix,找到zabbix的agent安装包并安装,如包名zabbix-agent.x86_64 3.在 /etc/zabbix/zabbix_agentd.conf 中更改: Server=<zbx-server的ip> ServerActive=<zbx-server的ip> Hostname=<本机的主机名> 4.设置zabbix-agent服务自启动并启动服务 systemctl enable zabbix-agent.service 开机自启动 systemctl start zabbix-agent.service 启动服务
部分文章参考公众号:浪子编程走四方