Linux 的安装与配置 Zabbix4.4

1.概述

在开始之前,一些概念和定义需要我们提前了解一下(以下内容摘自官方网站)。

架构

Zabbix 由几个主要的功能组件组成,其职责如下所示。

Server

Zabbix server 是Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储所有配置信息、统计信息和操作信息的核心存储库。

Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。

Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是 Zabbix 监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。

基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。

Zabbix 的所有配置信息都存储在 Server 和 Web 前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

数据库

所有配置信息以及 Zabbix 收集到的数据都被存储在数据库中。

Web 界面

为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

Proxy

Zabbix proxy 可以替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可选部分;然而,它对于单个 Zabbix server 负载的分担是非常有益的。

Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。

部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。Zabbix proxy 需要使用独立的数据库。

Agent

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。

Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。

Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。

Zabbix agent 可以运行被动检查和主动检查。

在被动检查 模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。

主动检查 处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,然后会定期发送采集到的新值给 Zabbix server。

是否执行被动或主动检查是通过选择相应的监控项类型来配置的。 Zabbix agent 处理“Zabbix agent”或“Zabbix agent(active)”类型的监控项。

数据流

首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,必须有一个监控项来创建触发器。最后,您必须有一个触发器来创建一个动作,这几个点构成了一个完整的数据流。因此,如果您想要收到 CPU load it too high on Server X 的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监视其 CPU 的监控项,最后创建一个触发器,用来触发 CPU is too high 这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,其实并不复杂。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。

2.关闭 selinux

2.1 将 SELINUX=enforcing 改为 SELINUX=disabled
[root@zabbix ~]# vim /etc/selinux/config
2.2 设置后需要重启才能生效
[root@zabbix ~]# setenforce 0       #临时关闭

[root@zabbix ~]# getenforce         #检测 selinux 是否关闭,Disabled 为关闭

zabbix202001121021492

3. 配置防火墙

3.1 查看默认防火墙状态
[root@node9 ~]$ firewall-cmd --state
running

关闭后显示 not running,开启后显示 running

3.2 安装防火墙
echo -e "\033[34m 安装 iptables 防火墙... \033[0m"
yum -y install iptables-services
systemctl enable iptables.service
systemctl enable ip6tables.service
3.3 配置防火墙
# 备份配置
[ -e "/etc/sysconfig/iptables" ] && /bin/mv /etc/sysconfig/iptables{,_bk}

cat > /etc/sysconfig/iptables << EOF
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
# 配置几个链默认行为 比如INPUT链 默认丢弃
# [0:0] 第一个值表示丢弃包的个数
# 第二个值表示丢弃包的总字节,其他同理。
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:syn-flood - [0:0]
# 本地回环
-A INPUT -i lo -j ACCEPT
#屏蔽一个IP
# iptables -I INPUT -s 192.168.0.1 -j DROP
#限制与80端口连接的IP最大连接数为10,防CC/DDOS攻击方法
#iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP
#yunxu ssh ip
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A INPUT -s 211.145.1.5 -p tcp --dport 22 -j ACCEPT
#-A INPUT -s 192.168.11.0/24 -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
#zabbix
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT

# 放行mysql端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

# #时间同步端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 123 -j ACCEPT

#防止各种端口扫描 DDOS防护
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable
COMMIT
EOF
3.4 Centos 6 防火墙设置

#开放服务端口

iptables -A INPUT -p tcp -m tcp --dport 10051 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport ${zabbix_webport} -j ACCEPT
#保存新增iptables规则
iptables-save > /root/iptables.save
service iptables restart
3.5 Centos 7 防火墙设置
systemctl enable iptables.service
systemctl restart iptables.service
systemctl restart firewalld.service
firewall-cmd --permanent --zone=public --add-port=8090/tcp
firewall-cmd --permanent --zone=public --add-port=10050/tcp
firewall-cmd --permanent --zone=public --add-port=10051/tcp
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
3.6 设置防火墙开机启动
/bin/cp /etc/sysconfig/{iptables,ip6tables}
sed -i 's@icmp@icmpv6@g' /etc/sysconfig/ip6tables
iptables-restore < /etc/sysconfig/iptables
ip6tables-restore < /etc/sysconfig/ip6tables
service iptables save
service ip6tables save
chkconfig --level 3 iptables on
chkconfig --level 3 ip6tables on
service iptables restart
iptables -nv -L

4. 更新 CentOS 为国内 Aliyun 源

4.1 设置 CentOS-Base.repo 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
4.2 设置 epel.repo 源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

5. 安装 和配置 Zabbix

5.1. 自定义安装配置 zabbix 参数,大家可以修改 "=" 后面参数
# web 运行用户名
run_user=www
#zabbix 运行用户名
zabbix_user=zabbix
# zabbix 运行用户组
zabbix_group=zabbix
# zabbix 数据库名
zabbix_db_name=zabbix_data
# zabbix 数据库用户
zabbixdb_user=zabbixuser
# zabbix 数据库密码
zabbixdb_pwd=0qM0BKOqvfooher
# zabbix 网页访问端口
zabbix_webport=8090
# zabbix server 版本
zabbix_version=4.4.4
# zabbix agents 版本
zabbix_agents_version=4.4.4
# 自定义 MySQL 数据库配置
dbhost=localhost
dbport=3306
dbrootname=root
dbrootpwd=OXrfT81X3B5n;
# MySQL 数据安装目录
mysql_install_dir=/usr/local/mysql
# zabbix 网页存储的目录
wwwroot_dir=/data/wwwroot/webzabbix
# PHP 安装目录
php_install_dir=/usr/local/php
# openresty 安装目录
openresty_install_dir=/usr/local/openresty
# zabbix 安装目录
zabbix_install_dir=/usr/local/zabbix
# zabbix 日志安装目录
zabbix_logs_dir=/data/logs/zabbixlogs
# zabbix web 站点日志存放目录.
wwwlogs_dir=/data/logs/wwwlogs
# zabbix 源码包存放目录.
soft_dir='pwd'/software
# 本机内网IP地址
ipaddr=`ip a |grep inet|grep -v inet6|grep -v 127.0.0.1|awk '{print $2}'|awk -F / '{print ""$1""}'`

6. 添加新用户和组

#创建系统组和用户 设置不允许登陆系统 -M 不创建家目录,/dev/null 首先表示标准输出重定向到空设备文件

groupadd ${zabbix_group}
useradd -M ${zabbix_user} -s /sbin/nologin -d /dev/null -g ${zabbix_group}

7. 安装 Zabbix 依赖

 [ -f /var/run/yum.pid ] &&; rm -rf /var/run/yum.pid
 yum -y install gcc gcc-c++ make libcurl-devel net-snmp-devel fping libevent-devel curl-devel unixODBC-devel OpenIPMI-devel libxml2 libssh2 zlib libpthread libpcre libssh2-devel openldap openldap-devel sysstat

8. 下载 zabbix-4.4.4 源码包

wget --limit-rate=10M -4 --tries=6 -c --no-check-certificate https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/${zabbix_version}/zabbix-${zabbix_version}.tar.gz

9. 新建 Zabbix 目录

# zabbix 源码包存放目录.
[ ! -d "${soft_dir}" ] &&; mkdir -p ${soft_dir}
# zabbix 日志存放目录.
[ ! -d "${zabbix_logs_dir}" ] && mkdir -p ${zabbix_logs_dir}
# 数据库 临时 数据存储的目录.
[ ! -d /data ] && mkdir -p /data && chmod 755 /data
# zabbix 安装目录.
[ ! -d "${zabbix_install_dir}" ] && mkdir -p ${zabbix_install_dir}
# zabbix 网页访问目录.
[ ! -d ${wwwroot_dir}/zabbix ] && mkdir ${wwwroot_dir}/zabbix

10. 编译安装 Zabbix

# 解压 zabbix
tar zxf zabbix-${zabbix_version}.tar.gz
pushd zabbix-${zabbix_version} > /dev/null
./configure --prefix=${zabbix_install_dir} \
--enable-server \
--enable-agent \
--enable-proxy \
--enable-ipv6 \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-libpcre \
--with-ssh2 \
--with-mysql=${mysql_install_dir}/bin/mysql_config
make -j 2 && make install

大家根据自己实际情况安装,数据库路径修改自己的安装路径,如果没有安装mysql 可以查看我另一篇文章 Linux 下源码编译安装 MySQL 数据库

11. 拷贝 zabbix 网页文件

/bin/cp -r frontends/php/* ${wwwroot_dir}/zabbix/

12. 解决监控图形部分文字乱码问题

Zabbix 4.4 安装完成之后,监控图形页面出现字符集乱码,如下所示:

12.1. 解决方法:

C:\Windows\Fonts\微软雅黑 常规 字体上传到 zabbix 服务器 font 目录下

老版本字体位置 /data/wwwroot/zabbix/fonts/

/bin/cp msyh.ttf /data/wwwroot/zabbix/assets/fonts

12.2. 修改 zabbix/include/defines.inc.php 文件,把 DejaVuSans 改为 msyh

define('ZBX_GRAPH_FONT_NAME',           'msyh'); // 6733 行
sed -i "s/DejaVuSans/simkai/g" ${wwwroot_dir}/zabbix/include/defines.inc.php

13. PHP 版本问题处理

sed -i '/$last = strtolower(substr($val, -1));/a$val = substr($val,0,-1);' ${wwwroot_dir}/zabbix/include/func.inc.php

14. 配置 Zabbix Web 连接数据库 zabbix.conf.php 文件

pushd /data/wwwroot/zabbix/conf > /dev/null
/bin/cp zabbix.conf.php.example zabbix.conf.php

vim zabbix.conf.php

$DB['TYPE']             = 'MYSQL';
$DB['SERVER']           = 'localhost';         # 连接MySQL服务器地址
$DB['PORT']             = '3306';              # 连接MySQL 端口
$DB['DATABASE']         = 'zabbix_data';       # Zabbix 数据库名称
$DB['USER']             = 'zabbixuser';        # Zabbix 数据库登录用户名
$DB['PASSWORD']         = '0qM0BKOqvfooher';   # Zabbix 数据库登录密码
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']           = '';

$ZBX_SERVER             = 'localhost';         # 监听本地客户端地址
$ZBX_SERVER_PORT        = '10051';             # 监听本地客户端端口
$ZBX_SERVER_NAME        = '';

15. 设置 Zabbix 安装目录、日志目录 权限

*注意: 这里权限设置错误的话,Zabbix服务器端运行中的是 否*

chown -R ${run_user}.${run_user} ${wwwroot_dir}/zabbix
chown -R ${zabbix_user}.${zabbix_group} ${zabbix_logs_dir} ${zabbix_install_dir}

16. 设置 Zabbix 开机启动

16.1. 复制启动文件到 /etc/init.d/ 目录下

/bin/cp misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
/bin/cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd

16.2.添加启动执行权限

chmod +x /etc/init.d/{zabbix_server,zabbix_agentd}

16.3.修改启动文件 Zabbix 所在的安装路径

sed -i "s@BASEDIR=/usr/local@BASEDIR=${zabbix_install_dir}@g" /etc/init.d/zabbix_server
sed -i "s@BASEDIR=/usr/local@BASEDIR=${zabbix_install_dir}@g" /etc/init.d/zabbix_agentd
sed -i "s@PIDFILE=/tmp/.*@PIDFILE=${zabbix_logs_dir}/zabbix_server.pid@g" /etc/init.d/zabbix_server
sed -i "s@PIDFILE=/tmp/.*@PIDFILE=${zabbix_logs_dir}/zabbix_agentd.pid@g" /etc/init.d/zabbix_agentd

16.4.添加开机启动

chkconfig --add zabbix_server
chkconfig --add zabbix_agentd
chkconfig zabbix_server on
chkconfig zabbix_agentd on
update-rc.d zabbix_server defaults
update-rc.d zabbix_agentd defaults

17. 配置 zabbix_server.conf

# 备份 zabbix_server.conf 文件
/bin/cp ${zabbix_install_dir}/etc/zabbix_server.conf{,_bak}

# zabbix server 监听的端口
sed -i "s@^# ListenPort=.*@ListenPort=10051@" ${zabbix_install_dir}/etc/zabbix_server.conf

# zabbix server 日志所在路径
sed -i "s@LogFile=/tmp/zabbix_server.log@LogFile=${zabbix_logs_dir}/zabbix_server.log@g" ${zabbix_install_dir}/etc/zabbix_server.conf

# zabbix server pid 所在目录
sed -i "s@^# PidFile=/tmp/zabbix_server.pid@PidFile=${zabbix_logs_dir}/zabbix_server.pid@" ${zabbix_install_dir}/etc/zabbix_server.conf

# zabbix 数据库所在ip,默认是localhost
sed -i "s@^# DBHost=.*@DBHost=localhost@" ${zabbix_install_dir}/etc/zabbix_server.conf

# zabbix 数据库名字,默认是zabbix
sed -i "s@DBName=zabbix@DBName=${zabbix_db_name}@" {zabbix_install_dir}/etc/zabbix_server.conf

# zabbix 数据库用户,默认是zabbix
sed -i "s@DBUser=zabbix@DBUser=${zabbixdb_user}@" ${zabbix_install_dir}/etc/zabbix_server.conf

# zabbix 默认数据库密码
sed -i "s@^# DBPassword=.*@DBPassword=${zabbixdb_pwd}@" ${zabbix_install_dir}/etc/zabbix_server.conf

# sed -i '/^# DBPassword/s/.*$/DBPassword=123456/' ${zabbix_install_dir}/etc/zabbix/zabbix_server.conf

# mysql.sock 文件所在目录
sed -i "s@^# DBSocket=.*@DBSocket=/tmp/mysql.sock@" ${zabbix_install_dir}/etc/zabbix_server.conf

# Zabbix Server 脚本存放目录
sed -i "s@^# AlertScriptsPath=.*@AlertScriptsPath=${zabbix_scripts_dir}@" ${zabbix_install_dir}/etc/zabbix_server.conf

# 修改完成后可通过以下命令进行查看:
#  grep -Ev "(#|^$)" ${zabbix_install_dir}/etc/zabbix_server.conf

修改完成后可通过以下命令进行查看

grep -Ev "(#|^$)" ${zabbix_install_dir}/etc/zabbix_server.conf

ListenPort=10051
LogFile=/data/logs/zabbixlogs/zabbix_server.log
PidFile=/data/logs/zabbixlogs/zabbix_server.pid
DBHost=localhost
DBName=zabbix_data
DBUser=zabbixuser
DBPassword=0qM0BKOqvfooher
DBSocket=/tmp/mysql.sock
Timeout=4
AlertScriptsPath=/usr/local/zabbix/etc/zabbix_server.conf.d
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

18. 配置 zabbix_agentd.conf

# 备份 zabbix_server.conf 文件
/bin/cp ${zabbix_install_dir}/etc/zabbix_agentd.conf{,_bak}
# zabbix_agentd pid 所在目录
sed -i "s@^# PidFile=/tmp/zabbix_agentd.pid@PidFile=${zabbix_logs_dir}/zabbix_agentd.pid@" ${zabbix_install_dir}/etc/zabbix_agentd.conf

# zabbix_agentd 日志所在路径
sed -i "s@LogFile=/tmp/zabbix_agentd.log@LogFile=${zabbix_logs_dir}/zabbix_agentd.log@g" ${zabbix_install_dir}/etc/zabbix_agentd.conf

# 服务端IP #127.0.0.1 位客户端IP,也就是目前安装zabbix 的服务器ip
  sed -i "s@Server=127.0.0.1@Server=127.0.0.1,${ipaddr}@g" ${zabbix_install_dir}/etc/zabbix_agentd.conf
  
# Server 和 ServerActive 分别代表zabbix的被动模式和主动模式,这里都填server端的IP
sed -i "s@ServerActive=.*@ServerActive=127.0.0.1,${ipaddr}@" ${zabbix_install_dir}/etc/zabbix_agentd.conf

# 本机的主机名或IP地址
sed -i "s@Hostname=Zabbix server@Hostname=$(hostname)@g" ${zabbix_install_dir}/etc/zabbix_agentd.conf

sed -i "s@# UnsafeUserParameters=.*@UnsafeUserParameters=1@" ${zabbix_install_dir}/etc/zabbix_agentd.conf

sed -i "s@# EnableRemoteCommands=.*@EnableRemoteCommands=0@" ${zabbix_install_dir}/etc/zabbix_agentd.conf

sed -i "s@# StartAgents=.*@StartAgents=8@" ${zabbix_install_dir}/etc/zabbix_agentd.conf
sed -i "s@# Timeout=.*@Timeout=30@" ${zabbix_install_dir}/etc/zabbix_agentd.conf

修改完成后可通过以下命令进行查看

grep -Ev "(#|^$)" zabbix_agentd.conf

PidFile=/data/logs/zabbixlogs/zabbix_agentd.pid
LogFile=/data/logs/zabbixlogs/zabbix_agentd.log
EnableRemoteCommands=0
Server=127.0.0.1,192.168.20.239
StartAgents=8
ServerActive=127.0.0.1,192.168.20.239
Hostname=node9
Timeout=30
UnsafeUserParameters=1

19. 配置 php.ini 一些必要参数

sed -i 's@^post_max_size.*@post_max_size = 32M@' ${php_install_dir}/etc/php.ini
sed -i 's@^upload_max_filesize.*@upload_max_filesize = 50M@' ${php_install_dir}/etc/php.ini
sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' ${php_install_dir}/etc/php.ini
sed -i 's@^max_execution_time.*@max_execution_time = 600@' ${php_install_dir}/etc/php.ini
sed -i 's@^max_input_time.*@max_input_time = 300@' ${php_install_dir}/etc/php.ini
sed -i "s@^memory_limit.*@memory_limit = 128M@" ${php_install_dir}/etc/php.ini
sed -i 's@^session.auto_start.*@session.auto_start = 0@' ${php_install_dir}/etc/php.ini
sed -i 's@^mbstring.func_overload.*@mbstring.func_overload = 2@' ${php_install_dir}/etc/php.ini
sed -i 's@^always_populate_raw_post_data.*@always_populate_raw_post_data = -1@' ${php_install_dir}/etc/php.ini

20. 配置 Zabbix 数据

20.1. 创建 zabbix 数据库 MySQL 用户
${mysql_install_dir}/bin/mysql -h${dbhost} -u${dbrootname} -p${dbrootpwd} -e "CREATE USER 'zabbix_login_user'@'localhost' IDENTIFIED BY '${zabbixdb_pwd}';"
20.2. 创建 zabbix 数据库实例
${mysql_install_dir}/bin/mysql -h${dbhost} -u${dbrootname} -p${dbrootpwd} -e "create database ${zabbix_db_name} default character set utf8mb4 collate utf8mb4_unicode_ci;"
20.3. 授权 zabbix 用户 访问数据库实例 zabbix
${mysql_install_dir}/bin/mysql -h${dbhost} -u${dbrootname} -p${dbrootpwd} -e "GRANT ALL privileges ON zabbix_db.* TO 'zabbix_login_user'@'localhost' IDENTIFIED BY '${zabbixdb_pwd}' with grant option;"
20.3.修改 database/mysql/data.sql 文件
# 修改 web 端打开默认显示是中文,当然你也可以登录后进入后台设置
sed -i "s/en_GB/zh_CN/g" database/mysql/data.sql
# 下载几个可以不修改
sed -i "s/Local network/本地网络/g" database/mysql/data.sql
sed -i "s/192.168.0.1-254/192.168.20.1-254/g" database/mysql/data.sql
# 修改 admin 密码 123456 md5值 
sed -i "s/5fce1b3e34b520afeffb37ce08c7cd66/e10adc3949ba59abbe56e057f20f883e/g" database/mysql/data.sql
# 修改 guest 密码 123456 md5值
sed -i "s/d41d8cd98f00b204e9800998ecf8427e/e10adc3949ba59abbe56e057f20f883e/g" database/mysql/data.sql

21. 导入初始模式和数据

sqlList="schema images data"

for Package in ${sqlList}; do   mysql -u${dbrootname} -p${dbrootpwd} "${zabbix_db_name}" <  database/mysql/${Package}.sql;  done

# 刷新数据库
${mysql_install_dir}/bin/mysql -h${dbhost} -u${dbrootname} -p${dbrootpwd} -e "flush privileges;"

schema.sql、images.sql 和 data.sql 文件位于 zabbix 源代码的数据库子目录中,对于proxy端只需要schema.sql(导入顺序不可以变动)。 导入zabbix的表结构及基础数据(正式生产环境中使用如下命令时,请去掉命令行中的密码,以交互方式完成登录) 如果 有 proxy 后面两个命令无需输入

22. 启动 zabbix-server 和 zabbix_agentd 服务

systemctl start zabbix_server
systemctl start zabbix_agentd

23. 配置 Zabbix_Nginx.conf

server {
  listen 8090;
  server_name localhost;
  access_log /data/logs/wwwlogs/www.zabbix_nginx.log combined;
  index index.html index.htm index.php;
  root /data/wwwroot/zabbix;

  location ~ [^/]\.php(/|$) {
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    #include fastcgi.conf;
  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    expires 30d;
    access_log off;
  }
  location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
  }
  location ~ /\.ht {
    deny all;
  }
}
## 24. 配置 Zabbix_Apache.conf
  ServerAdmin service@fooher.com
  DocumentRoot "/data/wwwroot/zabbix"
  ServerName www.fooher.com
  
  ErrorLog "/data/logs/wwwlogs/zabbix_apache_error_apache.log"
  CustomLog "/data/logs/wwwlogs/zabbix_apache_apache.log" common
  
    Order allow,deny
    Deny from all
  
  
    SetHandler "proxy:unix:/dev/shm/php-cgi.sock|fcgi://localhost"
  
<Directory "/data/wwwroot/zabbix">
  SetOutputFilter DEFLATE
  Options FollowSymLinks ExecCGI
  Require all granted
  AllowOverride All
  Order allow,deny
  Allow from all
  DirectoryIndex index.html index.php

25. 配置 zabbix 环境变量

[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=${zabbix_install_dir}/sbin:\$PATH" >> /etc/profile
[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep ${zabbix_install_dir} /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${zabbix_install_dir}/sbin:\1@" /etc/profile
[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=${zabbix_install_dir}/sbin:\$PATH" >> /etc/profile
[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep ${zabbix_install_dir} /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=${zabbix_install_dir}/sbin:\1@" /etc/profile
source /etc/profile

26. 检查 services 系统服务文件中是否有以下配置

vim /etc/services

zabbix202001121021492

27. 重启 zabbix nginx 服务

service zabbix_server restart
service zabbix_agentd restart
service nginx restart
或者
service httpd restart
重启 php-fpm
service php-fpm reload

28. 查看服务是否开启

ps -ef|grep zabbix
lsof -i:10050
lsof -i:10051
netstat -tunlp | grep :10051

zabbix202001121021492

29. 监控 zabbix 本机的 CPU idle

zabbix_get -s 127.0.0.1 -k system.cpu.util[all,idle,avg1]

30. zabbix 网页登录

在浏览器输入http://zabbix服务器ip/zabbix/index.php,输入管理员用户名 admin(区分大小写),默认密码 zabbix,点击登入即可 如果你刚才修改过md5值,那么请输入个改过的密码

zabbix202001121021492

zabbix202001121021492

另外你修改过 database/mysql/data.sql 文件,那么 Local network 显示 本地网络 如图: zabbix202001121021492

30. 总结

总体来说,Zabbix是非常容易安装、使用的,但是在安装过程中还是需要注意一些细节。

Zabbix 的官方文档很详细,还提供中文版,但是也还有一些坑需要我们去思考、总结。

如果使用二进制安装,那么进程管理账户那是非常有必要考虑的。在官方文档中有提到,zabbix server 和 zabbix agent 在同一台主机上安装时,需要使用不通的进程管理账户。

这篇文章主要介绍的Zabbix的安装,截图较少,需要一些使用经验。进一步的使用会在后面的文章中具体展开介绍,不足之处万望海涵。愿大家与我一起成长!