Lnmp 搭建 zabbix
使用目的?
在公司项目中需要做一个日志监控,最开始选择的是 efk,但是 efk 的资料相对较少并且之前对这几个产品都没接触过,使用起来难度。于是选择了 zabbix 作为项目的运维监控系统。
zabbix 能做什么?
zabbix 主要是用来网络监控、系统监控、应用监控等场景。zabbix 分为 server 端和 agent 端,文章前半部分都是在讲 server 端的安装操作,后面结尾讲解 agent 的安装操作。
搭建环境
centos7.0,lnmp 集成环境(mysql5.7,php7.2),zabbix4.0 版本。zabbix 安装的具体环境要求可参考官网手册。
手册给到如下几种安装方式:
- 源码安装(本文采用的也就是源码安装)
- 二进制安装
- 容器安装,例如 docker 安装
安装步骤
1.安装 lnmp 环境
由于 lnmp 集成包,安装非常方便,因此直接安装官网手册一键安装即可.官网地址 2.安装 zabbix 服务端
# 安装依赖
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>
groupadd zabbix
useradd -g zabbix zabbix
4.数据库相关配置
考虑到安全问题,因此这里我们同样的给 zabbix 创建一个单独的数据库用户,数据库名称也是 zabbix。MySQL 创建用户可以参考之前的一篇文章,MySQL 创建用户传送门。在本文中创建的 MySQL 用户为 zabbix,密码可以根据自己定义。
5.导入 zabbix 事先准备好的数据。
.查看数据库文件
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 则是相关的数据结构。
-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 启动服务
部分文章参考参考地址