Table of Contents
说明
中小型到大型公司都需要对局域网的交换机,路由器,Windows服务器,Linux服务器【Centos,Ubuntu】,甚至云主机【阿里云,AWS,腾讯云等】进行硬件上的监控,例如CPU,内存,硬盘,网络,系统进程,甚至AWS的RDS,或者是阿里云的RDS进行数据库的监控,zabbix系统都可以满足要求。
除了必要的监控之外,可以进行对监控阈值的告警处理,处理方式可以邮件告警,也可以短信告警。
特别:可以跟公司的AD/LDAP进行对接,可以授权AD/LDAP用户相关的权限
下面将介绍如何安装Zabbix监控系统
官网文档
安装要求
硬件要求
规模 | 平台 | CPU/内存 | 数据库 | 受监控的主机数量 |
---|---|---|---|---|
小型 | CentOS | Virtual Appliance | MySQL InnoDB | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | RAID10 MySQL InnoDB 或 PostgreSQL | >1000 |
极大型 | RedHat Enterprise Linux | 8 CPU cores/16GB | Fast RAID10 MySQL InnoDB 或 PostgreSQL | >10000 |
软件要求
Zabbix 是基于先进 Apache Web 服务器、领先的数据库引擎和 PHP 脚本语言构建的
也就是需要提前准备LNMP/LAMP的环境
– Apache(nginx,Tomcat等Web 服务器)
– MySQL(Oracle、PostgreSQL、SQLite等数据库)
– PHP
软件版本的要求
软件 | 版本 | 备注 |
---|---|---|
Apache | 1.3.12 或以上 | |
PHP | 5.4.0 或以上 | |
PHP 扩展库: | ||
gd | 2.0 or later | PHP GD 扩展库必须支持 PNG 图像(–with-png-dir)、JPEG 图像 (–with-jpeg-dir) 和 FreeType 2 (–with-freetype-dir). |
bcmath | php-bcmath (–enable-bcmath) | |
ctype | php-ctype (–enable-ctype) | |
libXML | 2.6.15 或以上 | php-xml or php5-dom,如果发布者提供独立的部署包。 |
xmlreader | php-xmlreader,如果发布者提供独立的部署包。 | |
xmlwriter | php-xmlwriter,如果发布者提供独立的部署包。 | |
session | php-session,如果发布者提供独立的部署包。 | |
sockets | php-net-socket (–enable-sockets) 。用户脚本支持所需要的组件。 | |
mbstring | php-mbstring (–enable-mbstring) | |
gettext | php-gettext (–with-gettext)。用于多语言翻译支持。 | |
ldap | php-ldap。只有在前端使用 LDAP 认证时才需要。 | |
ibm_db2 | 使用 IBM DB2 作为 Zabbix 后端数据库所需要的组件。 | |
mysqli | 使用 MySQL 作为 Zabbix 后端数据库所需要的组件。 | |
oci8 | 使用 Oracle 作为 Zabbix 后端数据库所需要的组件。 | |
pgsql | 使用 PostgreSQL 作为 Zabbix 后端数据库所需要的组件。 |
操作系统要求
需求 | 需求状态 | 描述 |
---|---|---|
libpcre | 强制的 | Perl Compatible Regular Expression (PCRE) 支持需要 PCRE 库。命名可能会因 GNU/Linux 发行版而不同,例如 ‘libpcre3’ 或 ‘libpcre1’。 值得注意的是,您需要准确的 PCRE (v8.x) ;而不使用 PCRE2 (v10.x) 库。 |
libevent | 批量指标支持和 IPMI 监控是必需的。需要 1.4 版本或更高。值得注意的是,对于 Zabbix proxy,此需求是可选的;但它对于支持 IPMI 监控是必需的。 | |
libpthread | 支持互斥锁和读写锁所需的。 | |
zlib | 支持压缩所需的。 | |
OpenIPMI | 可选的 | 支持IPMI 所需的。 |
libssh2 | 支持 SSH 所需的。需要 1.0 版本或更高。 | |
fping | 支持 ICMP ping 监控项 所需的。 | |
libcurl | Web 监控、VMware 监控和 SMTP 认证所需的。对于 SMTP 认证,需要 7.20.0 版本或更高。同时亦是 Elasticsearch 所需的。 | |
libiksemel | 支持 Jabber 所需的。 | |
libxml2 | 支持 VMware monitoring 所需的。 | |
net-snmp | Required for 支持 SNMP 所需的。 |
安装所需要的软件
根据安装要求,我们采用如下软件和版本信息,点击即可进入安装教程的界面
– Nginx
– MySQL
– PHP
Nginx安装说明
直接使用yum源安装即可
MySQL安装说明
必须安装:mysql-community-libs-compat-5.7.XX-1.el7.x86_64.rpm
否则提示:Requires: libmysqlclient.so.18()(64bit)
yum install mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm mysql-community-devel-5.7.30-1.el7.x86_64.rpm mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-server-5.7.30-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm
PHP安装说明
此示例安装PHP7.2.16的版本
针对zabbix对php的扩展要求整理如下:
php已默认安装扩展:ctype,libXML,xmlreader,xmlwriter,session,
php未安装的扩展:gd,bcmath,sockets,mbstring,gettext,ldap,ibm_db2,oci8,pgsql,mysqli
针对扩展中的ibm_db2,oci8,pgsql,mysqli,因为我们选择的数据库是mysql,所有启用扩展mysqli即可
- 也就是PHP启动的扩展是gd,bcmath,sockets,mbstring,gettext,ldap,mysqli。相对应的要安装如下依赖安装1,和处理ldap的依赖安装2
--with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd --enable-bcmath --enable-sockets --enable-mbstring --with-gettext --with-ldap --with-mysqli
- 依赖安装1
yum install gcc gcc-c++ autoconf libxml2 libxml2-devel sqlite-devel openldap openldap-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel -y
- 依赖安装2
cp -frp /usr/lib64/libldap* /usr/lib/
- 安装
wget https://www.php.net/distributions/php-7.2.16.tar.gz
tar -zxvf php-7.2.16.tar.gz
cd php-7.2.16
./configure --prefix=/usr/local/php-7.2.16 --enable-fpm --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd --enable-bcmath --enable-sockets --enable-mbstring --with-gettext --with-ldap --with-mysqli
make && make install
在编译中出现:
/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_scanf'
//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
处理如下:查找到EXTRA_LIBS开头的,末尾加上“-llber”,保存退出然后继续执行make && make install
vi Makefile
/^EXTRA_LIBS
行尾加上 “-llber”,保存退出然后继续执行make && make install
查看是否都安装了需要的扩展
[root@localhost no-debug-non-zts-20170718]# /usr/local/php-7.2.16/bin/php -m
[PHP Modules]
bcmath
Core
ctype
date
dom
fileinfo
filter
gd
gettext
hash
iconv
json
ldap
libxml
mbstring
mysqli
mysqlnd
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
[Zend Modules]
接下来的命令如下:
ln -s /usr/local/php-7.2.16/bin/php /usr/local/bin/php
cp /root/php-7.2.16/php.ini-production /usr/local/php-7.2.16/lib/php.ini
cp /usr/local/php-7.2.16/etc/php-fpm.d/www.conf.default /usr/local/php-7.2.16/etc/php-fpm.d/www.conf
cp /usr/local/php-7.2.16/sbin/php-fpm /usr/local/bin/
cp /usr/local/php-7.2.16/etc/php-fpm.conf.default /usr/local/php-7.2.16/etc/php-fpm.conf
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /usr/local/php-7.2.16/php.in
i
groupadd www-data
useradd -g www-data www-data
sed -i 's/user = nobody/user = www-data/g' /usr/local/php-7.2.16/etc/php-fpm.d/www.conf
sed -i 's/^group = nobody/group = www-data/g' /usr/local/php-7.2.16/etc/php-fpm.d/www.conf
- 使用systemctl管理php-fpm,步骤查看:php-7.2.16部署环境
systemctl start php-fpm
systemctl enable php-fpm
安装zabbix
此实例使用包安装:LNMP的环境,也就是nginx,mysql,php
安装步骤官方文档
Install and configure Zabbix server for your platform
- Install Zabbix repository【安装zabbix源】
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# yum clean all
- Install Zabbix server and agent【安装zabbix服务器和客户端】
# yum install zabbix-server-mysql zabbix-agent
- Install Zabbix frontend【启用 EPEL 源】
# yum install epel-release
- Install Zabbix frontend packages.【启用 EPEL 源,目的是安装zabbix-web-mysql 和zabbix-nginx-conf】
# yum install zabbix-web-mysql zabbix-nginx-conf
Create initial database【创建初始化数据库】
zabbix2020*PWD为此zabbix数据库的密码
Run the following on your database host.
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix2020*PWD';
mysql> quit;
On Zabbix server host import initial schema and data. You will be prompted to enter your newly created password.
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Configure the database for Zabbix server【配置zabbix服务器的数据库密码】
Edit file /etc/zabbix/zabbix_server.conf
DBPassword=zabbix2020*PWD
Configure PHP for Zabbix frontend【配置web端口和访问zabbix的ip地址】
Edit file /etc/nginx/conf.d/zabbix.conf, uncomment and set ‘listen’ and ‘server_name’ directives.
listen 80;
server_name example.com 192.168.0.2;
Edit file /etc/php-fpm.d/zabbix.conf, uncomment and set the right timezone for you.【设置东八区时区】
php_value[date.timezone] = Asia/Shanghai
Start Zabbix server and agent processes【设置开机启动和重新启动各项服务】
Start Zabbix server and agent processes and make it start at system boot.
# systemctl restart zabbix-server zabbix-agent nginx php-fpm
# systemctl enable zabbix-server zabbix-agent nginx php-fpm
Configure Zabbix frontend【进入web前端进行初始化设置】
Connect to your newly installed Zabbix frontend: http://server_ip_or_name
Follow steps described in Zabbix documentation: Installing frontend
网页输入ip地址即可进行初始化配置
官网教程
默认用户名和密码:Admin/zabbix
默认的zabbix中文语言会乱码
zabbix的web端没有中文字库,我们最需要把中文字库加上即可
- Windows电脑上找到Windows系统的字体(以楷体为例子)
C:\Windows\Fonts\simkai.ttf
- 将此文件上传到服务器目录:/usr/share/zabbix/assets/fonts
scp C:\Windows\Fonts\simkai.ttf [email protected]:/usr/share/zabbix/assets/fonts/
- 编辑文件中的两个地方修改为如下即可(不用重启服务):/usr/share/zabbix/include/defines.inc.php
define('ZBX_FONT_NAME', 'simkai');
define('ZBX_GRAPH_FONT_NAME', 'simkai');
日志查看
在启动失败和日常排错的时候,需要通过日志进行问题的处理
zabbix的日志在/var/log/zabbix下
– zabbix_agentd.log #客户端的日志
– zabbix_server.log #服务器端的日志
发表回复