Zabbix 简介
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix 由 zabbix server 与可选组件 zabbix agent 两部分组成。
zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
Zabbix的主要特点
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及 WEB 集中管理功能
- 可以无 agent 监视
- 用户安全认证和柔软的授权方式
- 通过 WEB 界面设置或查看监视结果
- email 等通知功能
Zabbix主要功能
- CPU 负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
安装环境说明
Zabbix 需要 LAMP 或者 LNMP 环境,此处选择 LNMP
操作系统 | CentOS 7.6 |
IP 地址 | 192.168.10.101 |
Web 环境 | nginx+MySQL+php-fpm |
Nginx版本 | nginx 1.14 |
MySQL版本 | mysql 8.0 |
PHP版本 | php 7.3 |
Zabbix版本 | zabbix 4.0 LTS |
先部署 LNMP 环境,然后再安装 Zabbix
安装 LNMP
安装 MySQL
(1)创建 mysql 用户,mysql 数据目录,日志目录,socket 和 pid 文件存放目录
groupadd -r -g 306 mysql
useradd -r -u 306 -g 306 -s /sbin/nologin -d /data/mysql -c "MySQL Server" mysql
mkdir -pv /data/mysql /var/log/mysql /var/lib/mysql
chown mysql.mysql /data/mysql /var/log/mysql /var/lib/mysql
(2)去官网 https://dev.mysql.com/downloads/mysql/ 下载 MySQL 的二进制安装包,这里下载的是 mysql-8.0.14-linux-glibc2.12-x86_64.tar.xz
tar xf mysql-8.0.14-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local/ && ln -sv mysql-8.0.14-linux-glibc2.12-x86_64 mysql
chown -R root.root /usr/local/mysql/
(3)初始化 mysql 数据
yum install libaio-devel -y
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql
(4)设置 mysql 配置文件
cat << EOF | tee /etc/my.cnf
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
user=mysql
port=3306
socket=/var/lib/mysql/mysql.sock
mysqlx-port=33060
mysqlx-socket=/var/lib/mysql/mysqlx.sock
basedir=/usr/local/mysql
datadir=/data/mysql
innodb-file-per-table=1
skip-name-resolve=1
max-connections=10000
character-set-server=utf8mb4
default_authentication_plugin=mysql_native_password
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
EOF
(5)修改 mysqld 启动脚本,使其和上面的配置文件定义相符
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's@^basedir=.*@basedir=/usr/local/mysql@' /etc/init.d/mysqld
sed -i 's@^datadir=.*@datadir=/data/mysql@' /etc/init.d/mysqld
sed -i 's@^mysqld_pid_file_path=.*@mysqld_pid_file_path=/var/lib/mysql/mysqld.pid@' /etc/init.d/mysqld
(6)启动 mysql
ln -sv /usr/local/mysql/bin/* /usr/bin/
chkconfig --add mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
安装 php-fpm
(1)安装编译 php-fpm 依赖包
yum install gcc pcre-devel openssl-devel zlib-devel expat-devel libxml2-devel \
libjpeg-devel libpng-devel openldap-devel gd-devel mariadb-devel -y
(2)创建 www 用户,php-fpm 和 nginx 都以此用户启动
groupadd -r -g 80 www
useradd -r -u 80 -g 80 -s /sbin/nologin -c "Web Service" www
(3)编译安装 php-fpm
去官网下载 http://www.php.net/downloads.php 下载 php 源码包,这里下载的是 php-7.3.1.tar.xz
tar xf php-7.3.1.tar.xz -C /usr/local/src/
cd /usr/local/src/php-7.3.1/
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--with-gd \
--with-ldap \
--with-openssl \
--with-gettext \
--enable-sockets \
--enable-mbstring \
--enable-xml \
--enable-bcmath \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d
make && make install
configure 时出现如下错误
configure: error: Cannot find ldap libraries in /usr/lib.
将 ldap 的相关模块链接到 /usr/lib/ 目录下
ln -sv /usr/lib64/libldap* /usr/lib/
然后重新执行 configure
make 时出现如下错误
//usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
可用如下方法解决,在 Makefile 的 EXTRA_LIBS 字段最后面添加 -llber 即可
sed -i '/^EXTRA_LIBS/s/$/ -llber/' /usr/local/src/php-7.3.1/Makefile
然后执行 make clean ,再重新 make 即可
(4)准备启动脚本和配置文件
cd /usr/local/src/php-7.3.1/
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
mkdir /usr/local/php/etc/php.d
cp php.ini-production /usr/local/php/etc/php.ini
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
(5)启动 php-fpm
ln -sv /usr/local/php/bin/* /usr/bin/
ln -sv /usr/local/php/sbin/* /usr/sbin/
systemctl daemon-reload
systemctl enable php-fpm.service
systemctl start php-fpm.service
安装 nginx
(1)安装编译 nginx 所依赖的安装包
yum install gcc pcre-devel openssl-devel zlib-devel -y
(2)编译安装 nginx
去官网 http://nginx.org/en/download.html 下载 nginx 源码包,这里下载的是 nginx-1.14.2.tar.gz
tar xf nginx-1.14.2.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.14.2/
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_dav_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio \
--with-stream \
--with-pcre
make && make install
(3)编译好后修改 nginx 配置文件,使其支持 php
vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
(5)设置启动文件
cat << EOF | tee /usr/lib/systemd/system/nginx.service
[Unit]
Description=Nginx Server
After=network.target
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
[Install]
WantedBy=multi-user.target
EOF
(5)启动 nginx
ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/
systemctl daemon-reload
systemctl enable nginx.service
systemctl start nginx.service
(6)检测 LNMP 环境
vim /usr/local/nginx/html/test.php
<?php
$mysqli = new mysqli('localhost', 'root', '');
if(!$mysqli) {
echo"Failure";
}
else{
echo"OK";
}
$mysqli->close();
phpinfo();
?>
在浏览器输入 http://192.168.10.101/test.php ,出现如下界面,则 LNMP 环境配置成功
配置好 LNMP 环境后,然后安装 Zabbix
Zabbix 的安装与配置
安装 Zabbix
这里即安装 zabbix server,也安装了 zabbix agent,同时开启了监控 java 程序的功能
(1)安装编译 zabbix依赖包
yum install gcc java-1.8.0-openjdk-devel mariadb-devel libxml2-devel net-snmp-devel curl-devel libevent-devel -y
(2)创建 zabbix 用户
groupadd -r -g 151 zabbix
useradd -r -u 151 -g 151 -s /sbin/nologin -c "Zabbix Monitoring" zabbix
(3)编译 zabbix
去 zabbix 官网 https://www.zabbix.com/download_sources 下载 zabbix 源码包 ,这里下载的是 zabbix-4.0.3.tar.gz
tar xf zabbix-4.0.3.tar.gz -C /usr/local/src/
cd /usr/local/src/zabbix-4.0.3/
./configure \
--prefix=/usr/local/zabbix \
--enable-server \
--enable-java \
--enable-agent \
--enable-ipv6 \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2
make && make install
如果不需要监控 java 类的服务,则不需要启用 --enable-java 编译选项
如果是安装 zabbix-proxy,只需将编译选项的 --enable-server 替换成换成 --enable-proxy 即可
如果是仅仅安装 zabbix-agent,只需启用 --enable-agent 一个编译选项即可
配置 zabbix server
(1)创建 zabbix 数据库并导入数据
导入次序依次是 schema.sql,images.sql,data.sql(如果是安装的 zabbix proxy,只需要导入 schema.sql)
mysql> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
mysql> CREATE USER 'zabbix'@'192.168.10.%' IDENTIFIED BY 'centos';
mysql> GRANT ALL ON zabbix.* TO 'zabbix'@'192.168.10.%';
mysql> exit
mysql zabbix < /usr/local/src/zabbix-4.0.3/database/mysql/schema.sql
mysql zabbix < /usr/local/src/zabbix-4.0.3/database/mysql/images.sql
mysql zabbix < /usr/local/src/zabbix-4.0.3/database/mysql/data.sql
(2)修改 zabbix_server 配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf
ListenPort=10051
LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=100
DebugLevel=3
PidFile=/usr/local/zabbix/run/zabbix_server.pid
DBHost=192.168.10.101
DBName=zabbix
DBUser=zabbix
DBPassword=centos
#DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
StartPollers=5
Timeout=15
LogSlowQueries=3000
User=zabbix
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
(3)创建 zabbix 日志和 pid 存放目录
mkdir -pv /var/log/zabbix /usr/local/zabbix/run
chown -R zabbix.zabbix /var/log/zabbix /usr/local/zabbix/
(4)准备 zabbix_server 启动脚本
cp /usr/local/src/zabbix-4.0.3/misc/init.d/fedora/core/zabbix_server /etc/init.d/
sed -i 's@BASEDIR=.*@BASEDIR=/usr/local/zabbix@' /etc/init.d/zabbix_server
sed -i 's@PIDFILE=.*@PIDFILE=/usr/local/zabbix/run/zabbix_server.pid@' /etc/init.d/zabbix_server
(5)启动 zabbix_server
chkconfig --add zabbix_server
chkconfig zabbix_server on
/etc/init.d/zabbix_server start
使用 ss -tnl 查看 10051 端口是否处于监听状态,如果在则表示启动成功
配置 zabbix agent
(1)修改 zabbix agent 配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/run/zabbix_agentd.pid
LogType=file
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=100
DebugLevel=3
EnableRemoteCommands=0
Server=127.0.0.1
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3
ServerActive=127.0.0.1
Hostname=192.168.10.101
Timeout=15
AllowRoot=0
User=zabbix
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
(2)准备 zabbix agent 启动脚本
cp /usr/local/src/zabbix-4.0.3/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
sed -i 's@BASEDIR=.*@BASEDIR=/usr/local/zabbix@' /etc/init.d/zabbix_agentd
sed -i 's@PIDFILE=.*@PIDFILE=/usr/local/zabbix/run/zabbix_agentd.pid@' /etc/init.d/zabbix_agentd
(3)启动 zabbix agent
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
/etc/init.d/zabbix_agentd start
使用 ss -tnl 查看 10050 端口是否处于监听状态,如在则表示 zabbix agent 启动成功
(4)测试是否能获取数据
ln -sv /usr/local/zabbix/bin/* /usr/bin/
zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
有数据显示则表示获取成功
配置 zabbix web
复制 zabbix 的 php 文件到 /usr/local/nginx/html/zabbix/ 目录下
mkdir /usr/local/nginx/html/zabbix
cd /usr/local/src/zabbix-4.0.3/
cp -r frontends/php/* /usr/local/nginx/html/zabbix/
zabbix web安装向导
(1)在浏览器里输入 http://192.168.10.101/zabbix ,进入 zabbix 的安装向导
(2)点 Next Steup,出现检查安装要求
php 的某些参数不符合要求,按上面图中提示的修改即可,然后重启 php-fpm
cat << EOF | tee /usr/local/php/etc/php.d/zabbix.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
EOF
systemctl reload php-fpm.service
之后刷新页面,检查失败的信息会消失,继续点 Next Steup
(3)填入数据库信息后,继续点 Next Steup
(4)配置 zabbix server 后,继续点 Next Steup
(5)信息确认,直接点 Next Steup
点 Download the configuration file 的链接下载此配置文件,然后保存为 /usr/local/nginx/html/zabbix/conf/zabbix.conf.php 文件,然后刷新页面
(6)点击 Finish 即可完成安装
默认账号 Admin/zabbix (注意大小写)
添加中文支持
登入后
修改后,字体是变成中文了,但是图形显示却有乱码
默认字体对中文支持不好,因此乱码,需要更改字体。
从 Window 上找到相应的字体(C:\Windows\Fonts 目录下,只支持 ttf 后缀的字体),这里选择的楷体常规
复制到 zabbix server 服务器的 /usr/local/nginx/html/zabbix/fonts/ 目录下
ls /usr/local/nginx/html/zabbix/fonts/
DejaVuSans.ttf simkai.ttf
修改 /usr/local/nginx/html/zabbix/include/defines.inc.php 关于字体的配置,把 DejaVuSans 换成 simkai(65 和 110 行两处均有)
sed -i 's@DejaVuSans@simkai@g' /usr/local/nginx/html/zabbix/include/defines.inc.php
修改好后刷新页面即可显示正常
至此,Zabbix 安装完成