赞
踩
目录
现在zabbix更新到了5.0了,所以我直接就用最新版本zabbix5.0,使用的是dnf安装,我这先安装,然后再给大家讲zabbix概念。
为全方便读者理解
- 在执行命令或命令代码段中添加了注解
- 命令或命令代码段中的注解不会影响命令执行,可以复制整个命令,粘贴即可
- 为了方便复制我把执行命令和效果命令分开,只复制执行命令即可,效果命令不用复制,效果命令主要是为了给读者看一下执行命令的效果
Zabbix从3.0版本起,服务器端只支持centOS6以上版本(即centos7/8),客户端和代理可以支持centOS6
- #本文在centos8.2基础上进行安装
- [root@vm82 ~]# cat /etc/redhat-release
- CentOS Linux release 8.2.2004 (Core)
主机名 | IP地址(外网) | IP地址(内网) | 描述 |
vm82 | ens32:192.168.128.82 | ens33:192.168.3.82 |
|
vm821 | ens32:192.168.128.21 | ens33:192.168.3.21 |
|
vm822 | ens32:192.168.128.22 | ens33:192.168.3.21 |
|
备注: |
|
操作系统:centos8.2 64位,在安装mysql之前centos8.1做了
其中防火墙、selinux强烈建议设置一下,其它可以不用,具体见附录一中的 1.6 安装第三方源epel源及remi源(必要)
- #在vm821和vm822加入hosts绑定主机名
- echo '192.168.3.82 vm82'>>/etc/hosts
- echo '192.168.3.21 vm821'>>/etc/hosts
- echo '192.168.3.22 vm822'>>/etc/hosts
软件 | 版本 | 安装方式 | 备注 |
xshell | 6.0 | win exe | ssh连接连接工具 |
zabbix | 5.0.2 | dnf安装,使用目前最新版本 | 目前最新版本为4.4.8 |
1.18.0 | dnf安装,使用目前最新版本 | dnf安装的最新版本 | |
mysql | 8.0.21 | dnf安装,使用8.0 | 最新版本8.0 |
php | 7.4.9 | dnf安装,使用目前最新版本 | 目前最新版本 |
注:使用LNMP主要是做zabbix是以web方式管理的、以web形式展示数据 |
官方安装需求:https://www.zabbix.com/documentation/current/manual/installation/requirements
从图中可以看出,安装zabbix需要如下:
1)Zabbix web是php写的,故需要安装php
2)Zabbix database是存放数据存的地方,只要关系型数据库都行,这里选择mysql
3) Zabbix server中可以看出是通过web页管理的,故需要安装http,这里选择nginx
4)Zabbix proxy这个是选择性安装的
可以选择LAMP或LNMP,我这里选择主流的LNMP环境,因为主要是用zabbix软件,所以LNMP环境用dnf安装Zabbix database和Zabbix server是可以分离的,这里为了实验方便,安装在同一台主上。
Zabbix Server:负责接收agent发送的报告信息的核心组 件,所有配置、统计数据及操作数据均由其组织进行;
Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据,以及存储在Zabbix所配置的配置信息,比如:哪个指标需要监控,多长时间监控一次等;
Web interface:zabbix的GUI接口,通常与Server运行在 同一台主机上;
也可以看官网的zabbix安装需求,主要是使用PHP+数据库,其它我就不一一列出来了
在新版本zabbix5.0中,如果你不安装nginx,它也会用dnf/yum安装默认的nginx,版本为1.14,所以我先安装最新稳定版本
根据nginx官方centos安装文档,我直接配置yum源方式安装
- #安装管理工具 yum-utils 用yum和dnf都可以
- dnf install yum-utils -y
-
- #配置nginx官方yum源
- cat>/etc/yum.repos.d/nginx.repo<<EOF
- [nginx-stable]
- name=nginx stable repo
- baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
- gpgcheck=1
- enabled=1
- gpgkey=https://nginx.org/keys/nginx_signing.key
- module_hotfixes=true
-
- [nginx-mainline]
- name=nginx mainline repo
- baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
- gpgcheck=1
- enabled=0
- gpgkey=https://nginx.org/keys/nginx_signing.key
- module_hotfixes=true
- EOF
- cat /etc/yum.repos.d/nginx.repo
#官网默认nginx-mainline版本是禁止的,即 enabled=0,如果要开启,则会安装主线版本,而非稳定版本
#下面是开启命令,在这里不要开启 yum-config-manager --enable nginx-mainline #这个功能就是找到nginx-mainline 标签下设置enabled=1,使用下面命令也是等效的 #sed -i '/enabled=0/s/0/1/' /etc/yum.repos.d/nginx.repo
CentOS8给我们带来了一些新的特性,这次是完全用dnf取代了yum来进行包管理,同时在软件包管理上也有一些更新,增加了dnf module功能,dnf module在软件安装上更方便,可以通过dnf module install 在安装软件时指定安装的版本,默认dnf install安装时,优先安装软件仓库中最新版本,有了dnf module install 之后可以在不同软件版本之间切换。
在此之前先安装一个yum配置管理,方便管理
- #安装yum配置管理
- dnf install yum-utils -y
- #列出nginx模块相关的版本
- dnf module list nginx
效果如下:
- #列出nginx模块相关的版本
- [root@vm82 ~]# dnf module list nginx
- 上次元数据过期检查:0:06:30 前,执行于 2020年08月20日 星期四 13时17分38秒。
- CentOS-8 - AppStream
- Name Stream Profiles Summary
- nginx 1.14 [d] common [d] nginx webserver
- nginx 1.16 common [d] nginx webserver
-
- Extra Packages for Enterprise Linux Modular 8 - x86_64
- Name Stream Profiles Summary
- nginx mainline common nginx webserver
-
- 提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装
发现上面的有2个源一个centos默认的AppStream,另一个是epel源,官方nginx源没有在dnf模块中。官方nginx存在仓库中
因后面使用remi源安装php7.4,一定会用到nginx模块依赖的,下图是我没有用dnf module install安装,而是用dnf install直接安装的截图,在截图中就会自动安装nignx默认版本
所以还得用dnf module 安装,我这里直接指定高一点的版本 ,从上面知道最后的版本为1.16
- #安装nginx,这样会连官网稳定版本1.18和模块一起安装
- dnf module install:1.16 -y
上面的主模块修改为官网最新稳定版本1.18,而并非是1.16版本
- #查看版本,应该是目前最新稳定版本1.18.0
- nginx -v
- #检查语法
- nginx -t
-
- #启动nginx
- systemctl start nginx
- systemctl status nginx
- #查看是否开机启动
- systemctl list-unit-files|grep enable|grep nginx
- systemctl enable nginx
#隐藏版本号(可选)
为了nginx安全往往把版本号隐藏掉,不让显示出来
- #在http{...}配置文件中添加server_tokens off;
- cd /etc/nginx/
- cp nginx.conf nginx.conf.orig
- sed -i '/^http/a\ server_tokens off;' nginx.conf
- grep -A 2 '^http' nginx.conf
- #检查配置是否有误
- nginx –t
- #平滑重启nginx
- systemctl reload nginx
-
- #备份一下nginx配置目录
- cp -ar /etc/nginx /etc/nginx.orig
#注:有的机子reload没有生效的,只能直接重启!
PS:平滑重启就是先关闭已建议的连接再重启;重启则是暴力的,直接就重启了,不管nginx有没有在处理客户请求。
看一下是否能打开直接输入IP地址
PS:如果因添加官网的nginx源文件,导致php使用不了,可以先卸载再把nginx官方yum文件删除,直接使用dnf module install nginx:1.16 命令安装
根据mysql官网的yum库网页
知道它的下载地址就可以直接用rpm安装了,在安装之前查看是否存在mysql
- #查看是否存在mysql,如果存在则需要执行yum remove mysql*进行
- rpm -qa|grep mysql
- yum remove mysql*
- rpm -ih https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm
- #检查是否安装成功
- yum repolist enabled | grep "mysql.*-community.*"
- #查看当前MySQL Yum Repository中所有MySQL版本(每个版本在不同的子仓库中)
- yum repolist all | grep mysql
- #检查当前启动的仓库,如果同时启用了多个仓库,安装时会选择最新版本
- yum repolist enabled | grep mysql
- #安装依赖
- dnf install perl openssl openssl-devel -y
- #我这里使用官网mysql80-community安装,所以需要指定
- dnf --repo mysql80-community install -y \
- mysql-community-server mysql-community-devel mysql-community-clien
改为手工安装,因mysql源是国外源安装太慢了,现在我这里修改为手工安装按ctrl+c退出dnf 安装
- #------------------------------------------手工安装开始-------------------------------------
- #如果下载慢可以去官网仓库http://repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64
- #手工下载,再上传到目录中用dnf命令安装,但是还是慢,所以使用国内仓库,可以是阿里云、163、搜狐等
- #我这里使用的是华云镜像https://mirrors.huaweicloud.com/mysql 下载,操作如下:
-
-
- #建立相关目录
- mkdir -p /disk1/tools/
- cd /disk1/tools/
- mkdir mysql8
- cd mysql8
- #下载相关mysql rpm包
- wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-common-8.0.21-1.el8.x86_64.rpm
- wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-libs-8.0.21-1.el8.x86_64.rpm
- wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-server-8.0.21-1.el8.x86_64.rpm
- wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-devel-8.0.21-1.el8.x86_64.rpm
- wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-client-8.0.21-1.el8.x86_64.rpm
-
- #安装rpm包,注意,一定要先安装mysql yum源,否则无法判断依赖关系
- dnf install mysql*.rpm -y
- cd ..
-
- #------------------------------------------手工安装结束-------------------------------------
#1建立相关目录:
- #建立相关目录
- mkdir -pv /disk1/logs/mysql/mysql8.0/error
- mkdir -pv /disk1/logs/mysql/mysql8.0/slow
- mkdir -pv /disk1/mysqlData
- chown mysql.mysql -R /disk1/logs/mysql
- chown mysql.mysql -R /disk1/mysqlData
#2 修改my.cnf配置
- cp /etc/my.cnf /etc/my.cnf.orig
- vi /etc/my.cnf
#编辑配置文件并修改,黑色粗体部分为添加的,红色部分为修改的,普通黑色为原配置
[client]
#版本8不推荐用default-character-set=utf8
default-character-set = utf8mb4
[mysql]
#版本8不推荐用default-character-set=utf8
default-character-set = utf8mb4
[mysqld]
#datadir=/var/lib/mysql
datadir=/disk1/mysqlData
socket=/var/lib/mysql/mysql.sock
#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
##by hua尾行添加
#设置密码策略及长度,mysql5.7开始默认安装并开启validate_password插件
#第一次初始化运行的时候要去掉,否则因mysql初始化生成不了密码而起不来
#8.0不要
#5.7 validate_password_policy=0
#5.7 validate_password_length=4
#validate_password.policy=0
#validate_password.length=4
default-time-zone='+08:00'
port = 3306
#id是唯一的,不能与主库的server_id相同,多个的从库的话也不能与其它从库相同
server_id =1
#设置默认字符集,也可以取消,取消则用安装时的默认字符集(不指定一般为latin1)
#用show variables like '%char%';命令可以查看安装时的字符集是多少
default-storage-engine=INNODB
#版本8不推荐用character-set-server=utf8
character-set-server=utf8mb4
#版本8不推荐用collation-server=utf8_general_ci
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
innodb_file_per_table=1
#同步一定要开启bin log
log-bin=/disk1/logs/mysql/mysql8.0/mysql-bin
log-queries-not-using-indexes=on
log-error=/disk1/logs/mysql/mysql8.0/error/error.log
#记录慢查询,建议开启
slow-query-log = on
long_query_time = 3
slow_query_log_file=/disk1/logs/mysql/mysql8.0/slow/slowquery.log
#管理慢查询sql ,1为开启0为关闭
log-slow-admin-statements=1
#记录从库上执行的慢查询语句
log-slow-slave-statements=0
# 将没有使用索引的语句记录到慢查询日志
log-queries-not-using-indexes=1
PS:最好把编码改为UTF8MB4
PSS:my.cnf配置的符号一定要看清楚!我之前因复制word的时候,不知道为什么,符号变成中文了!
init_connect='SET NAMES utf8mb4'写成了init_connect=’SET NAMES utf8mb4 #单引号变成了 ’ ,还复制少了一个 ’ 号,没仔细看还真发现不了! #这样造成了 GRANT ALL PRIVILEGES 给所有权限用户没问题,但是指定权限,如执行 GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%'; #命令之后,发现使用此用户连接mysql都出问题,连接不上,直接在linux可以连接上,执行任何命令都 #报错:ERROR 2013 (HY000): Lost connection to MySQL server during query还有一个问题就是init_connect=’SET NAMES utf8mb4 出现了几个重复!
init_connect='SET NAMES utf8mb4' init_connect='SET NAMES utf8mb4' collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' init_connect='SET NAMES utf8mb4' #把单引号' 写成了 ’号,导致普通用户,不能执行任何sql命令! init_connect=’SET NAMES utf8mb4所以配置my.cnf一定要看清楚!
注意:没修改就启动mysql8.0看错误日志会发现如下提示:
- --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
- 2019-11-05T08:53:37.233342Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
- 'validate password plugin' is deprecated and will be removed in a future release. Please use validate_password component instead
#mysql启动、停止、重启,前提是安装了net-tools,没有安装可以直接用systemctl 命令
- #启动mysql
- systemctl start mysqld
-
- #检查mysql状态、进程、端口号
- systemctl status mysqld
- ps -ef |grep mysql
- netstat -altnp|grep 3306
-
- #设置开机启动
- systemctl enable mysqld
PS:如果启动不起来可以使用如下方法
方法一:删除原来目录数据,再次启动让其重启生成数据
systemctl stop mysqld ps -ef |grep mysql rm -rf /disk1/mysqlData rm -rf /disk1/logs/mysql/mysql8.0 mkdir -p /disk1/logs/mysql/mysql8.0/error mkdir -p /disk1/logs/mysql/mysql8.0/slow mkdir -p /disk1/mysqlData chown mysql.mysql -R /disk1/logs/mysql chown mysql.mysql -R /disk1/mysqlData systemctl start mysqld systemctl status mysqld ps -ef |grep mysql netstat -altnp|grep 3306方法二:如果还是解决不了,有可能selinux没关,请关闭selinux
方法三:按照上面的方法还是启动不起来,那么有可能是my.cnf没配置正确,或者相关目录没有授权,请仔细检查
2.2.4.1 查看mysql初始密码
mysql8.0相对mysql5.6做了新的调整,密码并不是空密码,而是一个至少是8位的随机生成的密码,保存在错误日志中,通过查看/etc/my.cnf得知错误日志的路径我改为了“/disk1/logs/mysql/mysql8.0/error/error.log”,查看日志内容里面的密码
- #mysql生成的密码放在my.cnf配置文件配置的错误日志中,每次安装密码都不同
- grep "password is" /disk1/logs/mysql/mysql8.0/error/error.log
操作效果:
- #mysql生成的密码放在my.cnf配置文件配置的错误日志中,每次安装密码都不同
- [root@vm82 tools]# grep "password is" /disk1/logs/mysql/mysql8.0/error/error.log
- 2020-08-20T07:25:31.189597Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: lZPfim>l,3R(
-
- #登陆测试:
- [root@vm82 tools]# mysql -uroot -p
- Enter password: #输入上面的密码 lZPfim>l,3R(
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 8
- Server version: 8.0.21
-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql> \q #退出
- Bye
2.2.4.2 修改安全级别
第一次登陆mysql之后需要修改密码才能执行操作,否则会报如下错误:
- mysql> show databases;
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
而yum mysql8.0默认安装了validate_password安全插件(用二进制安装默认是没有的),默认情况是不能少于8位,密码强度为中级,如果我们要修改为简单的(字母+数字、纯数字、纯字母),则会报如下错误:
- mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
所以我们要要修改安全策略,为了永久生效,已经添加到了my.cnf中,把注解去掉
- sed -i '/#validate_password/s/#//g' /etc/my.cnf
- grep '^validate_password' /etc/my.cnf
- #重启mysql
- systemctl restart mysqld
- #效果
- [root@vm82 mysql8]# grep '^validate_password' /etc/my.cnf
- validate_password.policy=0
- validate_password.length=4
2.2.4.3 修改mysql密码
在修改了密码策略及长度的前提下,就可以设置比较简单的密码了
#特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了
- #下面的语句是把本地为root的账号密码修改为123456
- ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
- \q
效果:
- #操作效果
- #登录mysql进行密码修改
- [root@vm82 tools]# mysql -uroot -p
- Enter password: #输入之前的mysql密码,我这里是lZPfim>l,3R(
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 10
- Server version: 8.0.21
-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; #密码修改为123456
- Query OK, 0 rows affected (0.05 sec)
-
- mysql> \q #退出
- Bye
-
- [root@vm82 tools]# mysql -uroot -p
- Enter password: #输入新密码:123456
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 11
- Server version: 8.0.21 MySQL Community Server - GPL
-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- mysql>\q
- Bye
PS:如果要添加用户则用:grant PRIVILEGES
- #下面是授权hua用户密码为123456,给访问所有数据库的权限,
- #客户端IP址址只能是192.168开头的,但是在版本8不能用下面方式
-
- #mysql5.7版本,版本8不能使用此语句
- #GRANT ALL PRIVILEGES ON *.* TO 'hua'@'192.168.%.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
-
- #mysql8版本
- CREATE USER 'hua'@'192.168.%.%' IDENTIFIED BY '123456';
- GRANT ALL PRIVILEGES ON *.* to 'hua'@'192.168.%.%';
- flush privileges;
也可以指定权限,下面语句,指定权权限给t1用户 ,密码为123456,数据库指定为hua,客户端IP址址只能是192.168开头
- #mysql5.7 版本执行
- #GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON hua.* TO 't1'@'192.168.%.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
-
- #mysql8 版本执行
- CREATE USER 't1'@'192.168.%.%' IDENTIFIED BY '123456';
- GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON hua.* TO 't1'@'192.168.%.%';
- flush privileges;
注:删除用户可以使用“drop user 用户名”,如 drop user 't1'@'192.168.%.%';
2.2.5.1 使用mysql官方的workbench连接工具
我这里先用mysql官网推荐使用的客户端工具workbench,这个可以去mysql官网下载地址为:https://dev.mysql.com/downloads/workbench/
点上面的 No thanks, just start my download 则会弹出下载对话框,为了加快下载,我推荐使用迅雷,有加速的作用
下载完后安装即可,安装完成之后,双击运行,在弹出的窗口中点红色箭头添加连接
Query为查询窗口,怎么操作点上面的小图标就有提示了,这里不详解,如还是不懂可以搜索。
PS:除了查询之外,最常用的还有一个服务功能
2.2.5.2 使用第三方连接工具SQLyog(不推荐)
上面设置完了之后,可以使用mysql客户端工具SQLyog或navicat for mysql 登记测试一下,我这里使用SQLyog
发现报错:plugin caching_sha2_password could not be loaded
分析:
因为SQLyog只支持mysql8.0之前的版本,密码加密方式是:mysql_native_password
mysql8和php7.4(准确说是php7.2.4之后)的默认密码加密方式是caching_sha2_password
解决:
可以把密码方式修改回mysql_native_password,但是会出现问题,php7.4连接不上mysql8.0,所以只要实验试一下即可。
- #修改用户的验证方式,我这里修改为'hua'@'192.168.%.%' 用户
- ALTER USER 'hua'@'192.168.%.%' IDENTIFIED WITH mysql_native_password BY 'hua123';
根据zabbix官方安装要求,找到PHP
FRONTEND
The minimum supported screen width for Zabbix frontend is 1200px.
Software | Version | Comments |
---|---|---|
Apache | 1.3.12 or later | |
PHP | 7.2.0 or later | |
PHP extensions: | ||
gd | 2.0.28 or later | PHP GD extension must support PNG images (--with-png-dir), JPEG (--with-jpeg-dir) images and FreeType 2 (--with-freetype-dir). |
bcmath | php-bcmath (--enable-bcmath) | |
ctype | php-ctype (--enable-ctype) | |
libXML | 2.6.15 or later | php-xml, if provided as a separate package by the distributor. |
xmlreader | php-xmlreader, if provided as a separate package by the distributor. | |
xmlwriter | php-xmlwriter, if provided as a separate package by the distributor. | |
session | php-session, if provided as a separate package by the distributor. | |
sockets | php-net-socket (--enable-sockets). Required for user script support. | |
mbstring | php-mbstring (--enable-mbstring) | |
gettext | php-gettext (--with-gettext). Required for translations to work. | |
ldap | php-ldap. Required only if LDAP authentication is used in the frontend. | |
openssl | php-openssl. Required only if SAML authentication is used in the frontend. | |
mysqli | Required if MySQL is used as Zabbix backend database. | |
oci8 | Required if Oracle is used as Zabbix backend database. | |
pgsql | Required if PostgreSQL is used as Zabbix backend database. |
如果需要支持特定要求的话需要安装
Mandatory requirements are needed always. Optional requirements are needed for the support of the specific function.
Requirement | Status | Description |
---|---|---|
libpcre | Mandatory | PCRE library is required for Perl Compatible Regular Expression (PCRE) support. The naming may differ depending on the GNU/Linux distribution, for example 'libpcre3' or 'libpcre1'. Note that you need exactly PCRE (v8.x); PCRE2 (v10.x) library is not used. |
libevent | Required for bulk metric support and IPMI monitoring. Version 1.4 or higher. Note that for Zabbix proxy this requirement is optional; it is needed for IPMI monitoring support. | |
libpthread | Required for mutex and read-write lock support. | |
zlib | Required for compression support. | |
OpenIPMI | Optional | Required for IPMI support. |
libssh2 or libssh | Required for SSH checks. Version 1.0 or higher (libssh2); 0.6.0 or higher (libssh). libssh is supported since Zabbix 4.4.6. | |
fping | Required for ICMP ping items. | |
libcurl | Required for web monitoring, VMware monitoring, SMTP authentication, web.page.* Zabbix agent items, HTTP agent items and Elasticsearch (if used). Version 7.28.0 or higher is recommended.Libcurl version requirements: - SMTP authentication: version 7.20.0 or higher - Elasticsearch: version 7.28.0 or higher | |
libxml2 | Required for VMware monitoring and XML XPath preprocessing. | |
net-snmp | Required for SNMP support. Version 5.3.0 or higher. | |
GnuTLS, OpenSSL or LibreSSL | Required when using encryption. |
为了显示,我全部安装,产生环境中建议按需求安装
注意事项:
根据PHP官网解释,如果php连接mysql8.0,php的版本必须是PHP7.2.4之后
#1.安装php依赖
- #启动PowerTools源,默认是关闭的
- dnf config-manager --enable PowerTools
- yum repolist all | grep PowerTools
- #安装php依赖,
- dnf install -y curl curl-devel
- #php-devel需要用到libedit-devel
- dnf --enablerepo=PowerTools install -y libedit-devel
- dnf --enablerepo=PowerTools install -y OpenIPMI OpenIPMI-devel \
- net-snmp net-snmp-devel
- #安装选用 libpcre、libevent、zlib、libssh2、fping、libcurl、libxml2、net-snmp
- dnf install -y pcre pcre-devel libevent libevent-devel zlib zlib-devel libssh2 libssh2-devel \
- fping libcurl libcurl-devel libxml2 libxml2-devel
#2.安装php
安装PHP的不能直接dnf install安装,因为后面安装zabbix 前端的时候会用到php依赖,默认的是PHP7.2,查看如下:
- #验证Remi存储库的存在,运行命令
- rpm -qa | grep remi
- #成功添加EPEL和Remi存储库后,执行以下命令以获取可用PHP模块流的列表。
- dnf module list php
操作效果如下:
- #效果,发现默认安装的是PHP7.2
- [root@vm82 tools]# dnf module list php
- 上次元数据过期检查:2:01:46 前,执行于 2020年08月20日 星期四 14时51分04秒。
- CentOS-8 - AppStream
- Name Stream Profiles Summary
- php 7.2 [d] common [d], devel, minimal PHP scripting language
- php 7.3 common [d], devel, minimal PHP scripting language
-
- Remi's Modular repository for Enterprise Linux 8 - x86_64
- Name Stream Profiles Summary
- php remi-7.2 common [d], devel, minimal PHP scripting language
- php remi-7.3 common [d], devel, minimal PHP scripting language
- php remi-7.4 common [d], devel, minimal PHP scripting language
-
- 提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装
如果不用dnf moudel安装的话,后台zabbix安装也会使用第三方源scl安装,zabbix官方文档 RHEL/CENTOS 7 FRONTEND INSTALLAT已经指出了,有兴趣的可以看一下。
这里要安装php7.4需要使用到remi源才可以,所发要用“附录一中的remi源安装”
我在这里使用的是remi源安装,点Configuration wizard
我们按上面命令要求,安装php7.4最新稳定版本7.4.9,操作命令如下:
- #前3个在开始已经安装了,所以不用安装,安装也行,也会提示已经安装了
- #dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
- #dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
- #dnf install yum-utils
-
- #重置php模块
- dnf module reset php
- #安装remi源的,php7.4版本
- dnf module install php:remi-7.4 -y
- #查看默认模块是不是改为php remi-7.4了
- dnf module list php
- #安装php扩展,这时的扩展安装的就是php7.4版本的了,并不是默认的php7.2
- dnf install php php-devel php-mysql php-gd php-bcmath php-ctype php-xml \
- php-xmlreader php-xmlwriter php-session php-mbstring php-gettext \
- php-ldap php-fpm -y
注:
1.php-net-socket不用安装 dnf安装自动会--enable-sockets 通过phpinfo()测试就知道
2.php-mysqli默认支持通过phpinfo()测试就知道
- #备份配置文件
- cp /etc/php.ini /etc/php.ini.orig
- #使用sed命令进行修改配置文件
- sed -i '/max_execution_time/s/30/300/' /etc/php.ini
- #sed -i '/memory_limit/s/128/128/' /etc/php.ini
- sed -i '/post_max_size/s/8/16/' /etc/php.ini
- #sed -i '/upload_max_filesize/s/2/2/' /etc/php.ini
- sed -i '/max_input_time/s/60/300/' /etc/php.ini
- sed -i '/max_input_vars/s/; //' /etc/php.ini
- sed -i '/max_input_vars/s/1000/10000/' /etc/php.ini
- #php7.4没有always_populate_raw_post_da
- sed -i '/always_populate_raw_post_dat/s/;//' /etc/php.ini
- sed -i 's#;date.timezone =#date.timezone = Asia/Shanghai#' /etc/php.ini
-
- egrep "max_execution_time|memory_limit|post_max_size|upload_max_filesize\
- |^max_input_time|max_input_vars|always_populate_raw_post_data|\
- date.timezone =" /etc/php.ini
- #操作效果
- [root@vm82 tools]# egrep "max_execution_time|memory_limit|post_max_size|upload_max_filesize\
- > |^max_input_time|max_input_vars|always_populate_raw_post_data|\
- > date.timezone =" /etc/php.ini
- max_execution_time = 300
- max_input_time = 300
- ;max_input_vars = 10000
- memory_limit = 128M
- post_max_size = 16M
- upload_max_filesize = 2M
- date.timezone = Asia/Shanghai
- cd /etc/php-fpm.d/
- cp www.conf www.conf.orig
- egrep ";listen.owner =|;listen.group =|user =|group =|pm.max_children =|pm.max_requests =" www.conf
- sed -i 's/apache$/nginx/g' www.conf
- sed -i 's/nobody/nginx/g' www.conf
- sed -i '/pm.max_children/s/50/70/' www.conf
- sed -i '/;pm.max_requests/s/500/600/' www.conf
- sed -i '/;pm.max_requests/s/;//' www.conf
- egrep ";listen.owner =|;listen.group =|user =|group =|pm.max_children =|pm.max_requests =" www.conf
-
- egrep "request_slowlog_timeout|slowlog =|php_admin_value\[error_log\] =|php_value[session.save_path\]" www.conf
- sed -i '/slowlog =/s#var/log/php-fpm/www-slow.log#disk1/logs/php7.4/www-slow.log#' www.conf
- sed -i '/;request_slowlog_timeout =/s#0#15#' www.conf
- sed -i '/;request_slowlog_timeout =/s#;##' www.conf
- sed -i 's#/var/log/php-fpm/www-error.log#/disk1/logs/php7.4/www-error.log#' www.conf
- egrep "request_slowlog_timeout|slowlog =|php_admin_value\[error_log\] =|php_value\[session.save_path\]" www.conf
-
- #建立相关目录
- mkdir -p /disk1/logs/php7.4
- chown nginx.nginx -R /disk1/logs/php7.4
- #因为用yum安装session目录默认用户是apache,如果修改为nginx也需要相应地修改,否则会出现网站登陆不了的情况
- chown nginx.nginx -R /var/lib/php/session
-
-
- #查看php-fpm是基于端口运行还是基于sock,发现是基于sock
- [root@vm82 php-fpm.d]# egrep 'listen = ' www.conf
- listen = /run/php-fpm/www.sock
- cd /etc/nginx/conf.d/
- cp default.conf default.conf.orig
-
- #让nginx支持php,编辑default.conf,第10行添加index.php
- #再把30-36行注解去掉即可。
- vim default.conf +10
注:如果配置34行的$document_root不行的话就改为/usr/share/nginx/html
- #语法检查
- nginx -t
- #重启nginx
- systemctl restart nginx
- #生成php文件
- echo '<?php echo "this is php test";?>' >/usr/share/nginx/html/index.php
-
- #1)启动php
- systemctl start php-fpm
- systemctl status php-fpm
- #2)测试php
- echo '<?php phpinfo() ?>' >/usr/share/nginx/html/index.php
#打开本地浏览器输入服务器ip地址,我的为192.168.3.82
注:如果不能访问的话,说明防火墙没有关闭
- #测试完后为了安全起见记得删除,养成好的习惯
- rm -f /usr/share/nginx/html/index.php
进入zabbix官网下载页,选择好版本、系统、数据库、web,我这里选择如下:
接下来按着安装步骤安装即可
- #安装zabbix源
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
- dnf clean all
-
- #安装zabbix服务端相关,zabbix_get工具比较实用,所以也添加上
- dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent zabbix-get -y
-
PS:zabbix_get可以在server端获取监控项item的值
#发现直接用上面的安装命令安装会报错,所以我选择手工下载安装,我这里选择国内源,选择华为云吧
- #建立相关目录
- mkdir -pv /disk1/tools/zabbix5.0
- cd /disk1/tools/zabbix5.0
- #手工下载相关的zabbix包,我使用国内源,可以是阿里去镜像、华为云等,我这里使用华为云
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-server-mysql-5.0.2-1.el8.x86_64.rpm
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-web-mysql-5.0.2-1.el8.noarch.rpm
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-web-5.0.2-1.el8.noarch.rpm
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-nginx-conf-5.0.2-1.el8.noarch.rpm
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-agent-5.0.2-1.el8.x86_64.rpm
- #zabbix-get是一个命令行实用程序,可用于与Zabbix代理通信并从代理检索所需信息,所以也安装上
- wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-get-5.0.2-1.el8.x86_64.rpm
- ll
- #dnf install安装rpm包的时候一定要添加zabbix源,否则会安装不成功
- dnf install -y zabbix*.rpm
- cd ~
- #登录mysql
- mysql -uroot -p
- #输入密码
-
- #执行相关SQL语句,在这里我密码设置为123456,
- create database zabbix character set utf8 collate utf8_bin;
- create user zabbix@localhost identified by '123456';
- grant all privileges on zabbix.* to zabbix@localhost;
- \q
-
- #导入结构和数据,发现用zabbix用户导入报 MySQL server has gone away,所以直接用root用户
- zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz |mysql -uzabbix -p zabbix
- cd /etc/zabbix/
- cp zabbix_server.conf zabbix_server.conf.orig
- #建立日志目录
- mkdir /disk1/logs/zabbix
- chown zabbix.zabbix -R /disk1/logs/zabbix
-
- #修改zabbix配置,默认DBName=zabbix,所以我就不做修改了
- sed -i 's#/var/log/zabbix#/disk1/logs/zabbix#' zabbix_server.conf
- sed -i 's/# DBHost=localhost/DBHost=localhost/' zabbix_server.conf
- sed -i 's/# DBPassword=/DBPassword=123456/' zabbix_server.conf
- sed -i '/DBPort=/c\DBPort=3306' zabbix_server.conf
- sed -i '/DBSocket=/c\DBSocket=/var/lib/mysql/mysql.sock' zabbix_server.conf
-
- egrep "^LogFile=|DBHost=|^DBName|^DBUser=|DBPassword=|DBPort=|DBSocket=" \
- zabbix_server.conf
-
- cd ~
- #因zabbix是用php写的,所以查看一下zabbix的php文件就知道它默认放在哪个目录了
- [root@vm82 zabbix]# rpm -qa|grep zabbix-web
- zabbix-web-mysql-5.0.2-1.el8.noarch
- zabbix-web-5.0.2-1.el8.noarch
- [root@vm82 zabbix]# rpm -ql zabbix-web-5.0.2-1.el8.noarch|grep index.php
- /usr/share/zabbix/index.php
我们在前面安装zabbix-nginx-conf的时候,会默认在nginx添加一个zabiix配置,并指定了/usr/share/zabbix,所以不需要任何修改,如下所示:
- [root@vm82 ~]# ll /etc/nginx/conf.d/zabbix.conf
- -rw-r--r-- 1 root root 1864 7月 13 16:57 /etc/nginx/conf.d/zabbix.conf
- [root@vm82 ~]# cd /etc/nginx/conf.d/
- [root@vm82 conf.d]# ll
- 总用量 16
- -rw-r--r-- 1 root root 1152 8月 20 22:14 default.conf
- -rw-r--r-- 1 root root 1093 8月 20 22:10 default.conf.orig
- -rw-r--r-- 1 root root 136 8月 4 20:23 php-fpm.conf
- -rw-r--r-- 1 root root 1864 7月 13 16:57 zabbix.conf
我这里也会之前的默认配置去掉,让专门为zabbix服务
mv default.conf default.conf.$(date +%Y%m%d)
#我们把zabbix.conf的端口配置修改一下,按官方文档说法默认是注解的,把注解去掉
- cp zabbix.conf zabbix.conf.orig
- sed -i '/listen/s/#//' zabbix.conf
- sed -i '/server_name/s/example.com/localhost zabbix.hualinux.com/' zabbix.conf
- sed -i '/server_name/s/#//' zabbix.conf
- egrep 'listen|server_name' zabbix.conf
-
-
- #效果
- [root@vm82 conf.d]# egrep 'listen|server_name' zabbix.conf
- listen 80;
- server_name localhost zabbix.hualinux.com;
#为了方便我在zabbix.conf的server_name下添加多2条日志记录
- #建立日志目录
- mkdir -pv /disk1/logs/nginx
- chown nginx.nginx /disk1/logs/nginx
-
- #添加错误日志
- sed -i '/server_name/a\ error_log /disk1/logs/nginx/zabbix.error.log;' zabbix.conf
- #插入日志
- sed -i '/server_name/a\ access_log /disk1/logs/nginx/zabbix.access.log main;' zabbix.conf
- #插件空行
- sed -i '/server_name/s/$/\n/' zabbix.conf
-
-
- #查看效果
- [root@vm82 conf.d]# grep -A 3 'server_name' zabbix.conf
- server_name localhost zabbix.hualinux.com;
-
- access_log /disk1/logs/nginx/zabbix.access.log main;
- error_log /disk1/logs/nginx/zabbix.error.log;
- [root@vm82 conf.d]# cd ~
按上面所说zabbix会在/etc/php-fpm.d/生成一个zabbix.conf,有自己的地址池,之前默认有www.conf,因没不用到所以移走它,
- #查看是否生成的zabbix.conf的php配置
- [root@vm82 ~]# ll /etc/php-fpm.d/
- 总用量 44
- -rw-r--r-- 1 root root 19490 8月 20 22:17 www.conf
- -rw-r--r-- 1 root root 19491 8月 20 22:04 www.conf.orig
- -rw-r--r-- 1 root root 585 7月 13 16:57 zabbix.conf
-
- #执行命令
- cd /etc/php-fpm.d/
- #我们改为上海时区Asia/Shanghai
- sed -i '/date.timezone/s#Europe/Riga#Asia/Shanghai#' zabbix.conf
- sed -i '/date.timezone/s/; //' zabbix.conf
- #查看效果 是否变成 php_value[date.timezone] = Asia/Shanghai
- grep date.timezone zabbix.conf
-
- #查看用户和组,发现是apache用户 user = apache group = apache
- egrep 'user|group' zabbix.conf
-
-
- #因为在上面我把php中的session修改为nginx了,所以要修改回来,否则无法写入
- chown apache.apache -R /var/lib/php/session
- cd ~
- #重启
- systemctl restart zabbix-server zabbix-agent nginx php-fpm
- #加入开机启动
- systemctl enable zabbix-server zabbix-agent nginx php-fpm
本地win上的hosts文件(C:\Windows\System32\drivers\etc\hosts)添加如下内容
192.168.3.82 zabbix.hualinux.com
也可以直接使用IP访问,我这里是 http://192.168.3.82/index.php
PS:加index.php主要是为的服务器的nginx,不能自动加载index.php,会变成nginx静态页的内容
PSS:如果按zabbix官网安装,只安装mysql,不安装nginx和php让它在安装zabbix服务的时候以依赖方式安装,那么它的安装地址是 http://<server_ip_or_name>/zabbix ,详见 Installing frontend
#在下面记得查看所有都显示OK,不要报错再下一步
#mysql8填写zabbix用户,但是执行不了,会报如下错误,所以我直接用root了
- #用zabbix用户虽然授权了,但是执行不了
- [root@vm82 ~]# mysql -uzabbix -p -e 'select * from zabbix.users'
- Enter password:
- ERROR 2006 (HY000) at line 1: MySQL server has gone away
-
-
- #root用户则可以
- [root@vm82 ~]# mysql -uroot -p -e 'select * from zabbix.users'
- Enter password:
- +--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
- | userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
- +--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
- | 1 | Admin | Zabbix | Administrator | $2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK | | 1 | 0 | en_GB | 30s | 3 | default | 0 | | 0 | 50 |
- | 2 | guest | | | $2y$10$89otZrRNmde97rIyzclecuk6LwKAsHN0BcvoOKGjbT.BwMBfm7G06 | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
- +--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
上面会自动创建配置文件 /etc/zabbix/web/zabbix.conf.php
关于用户名和密码,在上面的 最后一句 Installing frontend 链接中有说明,如下:
Zabbix frontend is ready! The default user name is Admin, password zabbix.
得知用户名为Admin密码为zabbix,用它登录后界面如下:
发现上图中有一个红色的No,zabbix服务没有运行,报错了,是因为上面我配置的时候用户使用了zabbix,所以需要修改过来
- #把用户名从zabbix修改为root
- sed -i '/^DBUser/s/zabbix/root/' /etc/zabbix/zabbix_server.conf
- grep '^DBUser' /etc/zabbix/zabbix_server.conf
再查看一下zabbix日志发现如下:
- [root@vm82 zabbix]# tail -f zabbix_server.log
- 43768:20200821:002928.204 VMware monitoring: YES
- 43768:20200821:002928.204 SMTP authentication: YES
- 43768:20200821:002928.204 ODBC: YES
- 43768:20200821:002928.204 SSH support: YES
- 43768:20200821:002928.204 IPv6 support: YES
- 43768:20200821:002928.204 TLS support: YES
- 43768:20200821:002928.204 ******************************
- 43768:20200821:002928.204 using configuration file: /etc/zabbix/zabbix_server.conf
- 43768:20200821:002928.213 [Z3001] connection to database 'zabbix' failed: [2059] Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
- 43768:20200821:002928.213 Cannot connect to the database. Exiting...
因为mysql8.0认证方式变了使用是是caching_sha2_password
,所以root还是修改回原来的密码加密方式mysql_native_password
- #登陆mysql执行下面语句
- alter user 'root'@'localhost' identified with mysql_native_password by '123456';
- flush privileges;
- \q
-
- #为了保险起见重启mysql
- systemctl restart mysqld
- systemctl status mysqld
#启动zabbix-server,发现卡住不动了,重启服务器再启动成功
- #重启zabbix-server,如发现卡住不动的话,重启服务器 shutdown -r now
- systemctl start zabbix-server
- netstat -alntp|grep -i listen|egrep ':80|:10050|:10051|:3306'
- ps -ef|grep php-fpm
操作效果:
- #效果
- [root@vm82 ~]# netstat -alntp|grep -i listen|egrep ':80|:10050|:10051|:3306'
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 909/nginx: master p
- tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 778/zabbix_agentd
- tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1311/zabbix_server
- tcp6 0 0 :::3306 :::* LISTEN 1263/mysqld
- tcp6 0 0 :::10050 :::* LISTEN 778/zabbix_agentd
- tcp6 0 0 :::10051 :::* LISTEN 1311/zabbix_server
- tcp6 0 0 :::33060 :::* LISTEN 1263/mysqld
- [root@vm82 ~]#
- [root@vm82 ~]# ps -ef|grep php-fpm
- root 766 1 0 01:18 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
- apache 815 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- apache 816 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- apache 817 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- apache 818 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- apache 819 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- apache 1284 766 0 01:18 ? 00:00:00 php-fpm: pool zabbix
- root 1507 1408 0 01:31 pts/0 00:00:00 grep --color=auto php-fpm
再次登录zabbix web发现正常了
要监控,在需要监控的机子上安装agent(即客户端),我这里是vm821、vm822 2台机子
在安装前我先介绍一下zabbix提供了两个小工具:zabbix_sender和zabbix_get,它们的作用如下:
zabbix get:可在server端获取监控项item的值。
zabbix sender : 可在agent端给server发送监控项item值。比如你自定义的监控项,就可以通过这个工具采集信息。
我在服务端上已经安装了zabbix_get、现在建议在客户端上安装zabbix_sender
- #安装依赖
- dnf install -y unixODBC
- #安装zabbix源
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
- #安装agnet客户端及sender 小工具
- dnf install -y zabbix-agent zabbix-sender
PS:如果发现用dnf安装太慢,也可以使用国内的zabbix源,如阿里云镜像、华为云镜像等,我这里使用华为云
#建立相关目录 mkdir -pv /disk1/tools cd /disk1/tools/ #下载对应的包 wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-agent-5.0.2-1.el8.x86_64.rpm wget https://mirrors.huaweicloud.com/zabbix/zabbix/5.0/rhel/8/x86_64/zabbix-sender-5.0.2-1.el8.x86_64.rpm #通过dnf方式安装rpm包,一定要记得先安装zabbix yum源,否则如果有依赖则无法自动添加 dnf install zabbix-*.rpm
Zabbx agent配置分为主动模式和被动模式,Zabbix默认是被动模式的。
在这里顺便讲一下主动模式和被动模式,主动和被动都是对于agent端来说的
主动模式:agent-->server(push推送)
由agent主动采集数据并返回给zabbix server,不需要server进行干预, 主动模式在一定程度上可减轻server的压力。
被动模式:agent<--server(pull拉取)
由server向agent发出指令获取数据, 即agent被动的去获取数据并返回给server,server周期性的向agent 索取数据, 这种模式的最大问题就是会加大server的工作量, 在数百台服务器的环境下server不能及时获取到最新数据, 但这也是默认的工作方式。
PS:
一般来说,被动模式对监控控制端服务器的开销较大,适合小规模的监控环境;主动模式对监控控制端服务器的开销较小,适合大规模的监控环境。
在这里我拿vm821配置被动模式,vm822先不配置,留着后面文章我配置主动模式使用
- #我这里是按默认的被动模式配置
- #1.建立相关目录
- mkdir -pv /disk1/logs/zabbix
- chown zabbix.zabbix -R /disk1/logs/zabbix
- #2.修改配置
- cd /etc/zabbix/
- cp zabbix_agentd.conf zabbix_agentd.conf.orig
- sed -i 's#/var/log/zabbix#/disk1/logs/zabbix#' zabbix_agentd.conf
- #配置被动模式,填写的是zabbix服务端的IP地址,如果设置为纯主动模式,则应该注释掉这一条配置
- sed -i 's/Server=127.0.0.1/Server=192.168.3.82/' zabbix_agentd.conf
- #客户端的hostname,不配置默认使用系统主机名
- egrep "^LogFile=|^Server=" zabbix_agentd.conf
效果:
- #修改效果
- [root@vm821 zabbix]# egrep "^LogFile=|^Server=" zabbix_agentd.conf
- LogFile=/disk1/logs/zabbix/zabbix_agentd.log
- Server=192.168.3.82
PS:如果想配置主动模式,可以看我的文章《zabbix5 agent配置主动模式》
- #启动服务
- systemctl start zabbix-agent
- #查看状态,按ctrl+c退出
- systemctl status zabbix-agent
- #设置开机启动
- systemctl enable zabbix-agent
Zabbix get 是一个命令行应用,它可以用于与 Zabbix agent 进行通信,并从 Zabbix agent 那里获取所需的信息
#登陆zabbix服务端执行如下命令,不懂命令可以zabbix_get --help
- #获取ip地址为192.168.3.21的agent端 hostname
- zabbix_get -s 192.168.3.21 -k system.hostname
效果如下:
- [root@vm82 ~]# zabbix_get -s 192.168.3.21 -k system.hostname
- vm821
打开浏览器输入:http://192.168.3.82/index.php,登录zabbix
zabbix概念是“主机host”在“组Host groups”中,“模板Template”可以套在主机也可以套上组上,如果套上组中,那么所有“主机”都会使用,如果套上“主机”上只有某台主机生效。
起一个名字,我里起hualinux
在下方会多出一个组
我这里先拿vm821机子添加监控,vm822先不添加,因为我没有配置
#加入被监控的主机
Host name:客户端的主机名,可以是IP地址或主机名,这个主机名服务器需要ping得通
Visible name:在zabbix主机列表中显示的名字,主要是为了方便记忆,可以按公司要求分类
Groups:属于哪个组(可以多个组),可以直接输入会有提示,也可以点旁边的 Select 选取
Interfaces下的Agent:就是客户端信息啦,默认只填写IP地址即可
Description:描述,主要是辅助记忆的,也可以什么都不写
为了方便我没有直接点Add,我再点模板,直接套用监控模板 可以省不少麻烦
我这里弄一个简单的,只添加系统监控,如果有兴趣了解其它可以点旁边的 Select
Template OS Linux by Zabbix agent active:是主动模式
Template OS Linux by Zabbix agent:被动模式
#在页面的最下方会自动添加多一行,如下:
从上面看出刚才看主机名为Visible name的名字,刚才添加多一个模板也在其中,的模板状态为Enabled,表示主机在运行,处于可用状态。
上面监控图中,发现标题在包含有中文的时候,乱码了,所以解决一下
先查看一下系统是否安装有中文
- #查看系统默认设置编码,我的是中文UTF-8
- [root@vm82 ~]# echo $LANG
- zh_CN.UTF-8
-
- #查看是否安装了中文,如果有则表示已经安装了
- [root@vm82 ~]# locale -a|grep zh_
- zh_CN
- zh_CN.gb18030
- zh_CN.gbk
- zh_CN.utf8
- zh_HK
- zh_HK.utf8
- zh_SG
- zh_SG.gbk
- zh_SG.utf8
- zh_TW
- zh_TW.euctw
- zh_TW.utf8
PS:如果没有可能执行下面命令安装
#centos7系统 #yum install kde-l10n-Chinese -y #centos8系统 dnf install langpacks-zh_CN.noarch #查看是否安装了中文 locale -a|grep zh_
上面的图形中文乱码,也有可能是没有中文字体支持,可以在win上找一字体文上传到服务端上。
#1.win中复制字体文件
我的本地系统是win7 64位, 在windows的C:\Windows\Fonts目录中找个字体,是中文的,我就找个简体吧
上面图中简体字,复制出桌面名字变成了 SimSun
#2.上传字体文件到服务器即可,操作如下
- #查看zabbix字体目录centos默认 /usr/share/zabbix/assets/fonts
- rpm -qa|grep zabbix|xargs rpm -ql|grep fonts
-
- #进入目录
- cd /usr/share/zabbix/assets/fonts
-
- #上传字体到此目录中,安装lrzsz的话,可以使用rz命令,再简单的直接拖拽到shh窗口中即可
- mv simsun.ttc simsun.ttf
- #查找包含有字体配置的inc.php文件
- rpm -qa|grep zabbix|xargs rpm -ql|grep inc.php|xargs grep -l -i FONT_NAME
效果如下:找到了2个
- #查找包含有字体配置的inc.php文件
- [root@vm82 web]# rpm -qa|grep zabbix|xargs rpm -ql|grep inc.php|xargs grep -l -i FONT_NAME
- /usr/share/zabbix/include/defines.inc.php
- /usr/share/zabbix/include/graphs.inc.php
上现发现有2个,选择修改 /usr/share/zabbix/include/defines.inc.php 总配置文件即可。
- cd /usr/share/zabbix/include
- cp defines.inc.php defines.inc.php.orig
- grep ZBX_FONT_NAME defines.inc.php
-
- #查看含有 graphfont 字体的配置
- grep graphfont defines.inc.php
- #使用把graphfont字体改为刚刚上传的宋体simsun
- sed -i 's/graphfont/simsun/g' defines.inc.php
- #查看效果
- grep _FONT_NAME defines.inc.php
效果:就是把 把graphfont字体改为刚刚上传的宋体simsun
- [root@vm82 include]# #查看含有 graphfont 字体的配置
- [root@vm82 include]# grep graphfont defines.inc.php
- define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
- define('ZBX_FONT_NAME', 'graphfont');
- [root@vm82 include]# #使用把graphfont字体改为刚刚上传的宋体simsun
- [root@vm82 include]# sed -i 's/graphfont/simsun/g' defines.inc.php
- [root@vm82 include]# #查看效果
- [root@vm82 include]# grep _FONT_NAME defines.inc.php
- define('ZBX_GRAPH_FONT_NAME', 'simsun'); // font file name
- define('ZBX_FONT_NAME', 'simsun');
按F5刷新一下刚才的zabbix监控界面,发现正常了
现在zabbix支持中文,前提是你系统已经安装了中文包,如果没安装可以执行下面命令安装
- #查看是否安装了中文
- locale -a|grep zh_
-
- #centos7系统
- #yum install kde-l10n-Chinese -y
-
- #centos8系统
- dnf install langpacks-zh_CN.noarch
-
- #兼容centOS6之前的命令
- dnf install -y net-tools
不关闭也可以要让其端口通过防火墙
如果不关闭selinux的话,有些自定义路径不符它的规则会产生问题,一般推荐关闭
- #临时关闭:
- setenforce off
-
- #永久性关闭:
- sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- sed -n '/SELINUX=/p' /etc/selinux/config
- shutdown -r now
- #停止firewall
- #禁止firewall开机启动
- systemctl stop firewalld.service
- systemctl disable firewalld.service
有不少软件对时间有要求的,不能相差太多,比如主从、zabbix等,所以建议配置一下
centos8已经取消了ntp,默认使用的是chronyd
有些软件时间性要求比较强的,如同步类,数据库主从,做实验也最好同步一下时间
- #dnf和yum都可以安装,推荐用dnf
- dnf install chrony
在第8次迭代之前,CentOS使用dnf包管理器。从CentOS 8开始,包管理已经从dnf迁移到Dandified dnf (DNF)。DNF最早是在Fedora 18中引入的,并成为Fedora 22中的默认软件包管理器,它与dnf使用上非常相似。
- #配置时间服务器,我这里使用的是中国区的
- #备份配置
- cp /etc/chrony.conf /etc/chrony.conf.orig
- #注解掉pool
- sed -i '/^pool/s/^/#/' /etc/chrony.conf
- grep '#pool' /etc/chrony.conf
- sed -i '/#pool/a\server cn.pool.ntp.org iburst' /etc/chrony.conf
- sed -i '/#pool/a\server ntp.ntsc.ac.cn iburst' /etc/chrony.conf
- sed -i '/#pool/a\server ntp1.aliyun.com iburst' /etc/chrony.conf
- grep -A 3 '#pool' /etc/chrony.conf
-
- #重启服务
- systemctl restart chronyd
#centos8之前用dnf
dnf install -y vim lrzsz wget curl man tree rsync gcc gcc-c++ openssl openssl-devel
- #安装epel源可以下载比较新版本的软件及部分默认没用的dnf软件
- dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
- wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
- rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
- rpm -ih remi-release-8.rpm
- rm -f remi-release-8.rpm
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。