目录
一、实验环境
2.2.5 使用SQL客户端工具登陆(SQLyog)
五、测试
六、其它
6.1.1 检查zabbix服务端是否安装了中文语言包
现在zabbix更新到了5.0了,所以我直接就用最新版本zabbix5.0,使用的是dnf安装,我这先安装,然后再给大家讲zabbix概念。
为全方便读者理解
- 在执行命令或命令代码段中添加了注解
- 命令或命令代码段中的注解不会影响命令执行,可以复制整个命令,粘贴即可
- 为了方便复制我把执行命令和效果命令分开,只复制执行命令即可,效果命令不用复制,效果命令主要是为了给读者看一下执行命令的效果
一、实验环境
Zabbix从3.0版本起,服务器端只支持centOS6以上版本(即centos7/8),客户端和代理可以支持centOS6
1.1 环境说明
主机名 |
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 |
|
备注: |
|
1.2 准备工作(所有)
操作系统:centos8.2 64位,在安装mysql之前centos8.1做了
- 关闭了防火墙、selinux、时间同步、epel及remi源、
- 安装vim lrzsz wget curl man tree rsync软件
- 安装了gcc及gcc++ v8版本
其中防火墙、selinux强烈建议设置一下,其它可以不用,具体见附录一中的 1.6 安装第三方源epel源及remi源(必要)
1.3 所涉及的软件及版本
软件 |
版本 |
安装方式 |
备注 |
xshell |
6.0 |
win exe |
ssh连接连接工具 |
zabbix |
5.0.2 |
dnf安装,使用目前最新版本 |
目前最新版本为4.4.8 |
nginx |
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
1.3.1 zabbix体系结构
1.3.2 安装zabbix所需的软件
从图中可以看出,安装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运行在 同一台主机上;
Proxy:可选组件,常用于分布监控环境中,代理Server收 集部分被监控端的监控数据并统一发往Server端;
Agent:部署在被监控主机上,负责收集本地数据并发往 Server端或Porxy端;
也可以看官网的zabbix安装需求,主要是使用PHP+数据库,其它我就不一一列出来了
二、zabbix服务端安装lnmp(dnf)
在新版本zabbix5.0中,如果你不安装nginx,它也会用dnf/yum安装默认的nginx,版本为1.14,所以我先安装最新稳定版本
2.1 安装nignx(dnf)
2.1.1 安装nginx(dnf)
根据nginx官方centos安装文档,我直接配置yum源方式安装
#官网默认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
2.1.2 安装指定版本nginx(dnf新特性)
CentOS8给我们带来了一些新的特性,这次是完全用dnf取代了yum来进行包管理,同时在软件包管理上也有一些更新,增加了dnf module功能,dnf module在软件安装上更方便,可以通过dnf module install 在安装软件时指定安装的版本,默认dnf install安装时,优先安装软件仓库中最新版本,有了dnf module install 之后可以在不同软件版本之间切换。
在此之前先安装一个yum配置管理,方便管理
效果如下:
#列出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
上面的主模块修改为官网最新稳定版本1.18,而并非是1.16版本
#隐藏版本号(可选)
为了nginx安全往往把版本号隐藏掉,不让显示出来
#注:有的机子reload没有生效的,只能直接重启!
PS:平滑重启就是先关闭已建议的连接再重启;重启则是暴力的,直接就重启了,不管nginx有没有在处理客户请求。
看一下是否能打开直接输入IP地址
PS:如果因添加官网的nginx源文件,导致php使用不了,可以先卸载再把nginx官方yum文件删除,直接使用dnf module install nginx:1.16 命令安装
2.2 安装mysql8.0 (dnf)
2.2.1 安装
根据mysql官网的yum库网页
知道它的下载地址就可以直接用rpm安装了,在安装之前查看是否存在mysql
改为手工安装,因mysql源是国外源安装太慢了,现在我这里修改为手工安装按ctrl+c退出dnf 安装
2.2.2 修改配置文件
#1建立相关目录:
#2 修改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 forUTF8MB4in 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 usingUTF8MB4with an appropriate collation instead.
- 'validate password plugin' is deprecated and will be removed in a future release. Please use validate_password component instead
2.2.3 启动mysql
#mysql启动、停止、重启,前提是安装了net-tools,没有安装可以直接用systemctl 命令
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 查看及修改mysql密码
2.2.4.1 查看mysql初始密码
mysql8.0相对mysql5.6做了新的调整,密码并不是空密码,而是一个至少是8位的随机生成的密码,保存在错误日志中,通过查看/etc/my.cnf得知错误日志的路径我改为了“/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之后需要修改密码才能执行操作,否则会报如下错误:
而yum mysql8.0默认安装了validate_password安全插件(用二进制安装默认是没有的),默认情况是不能少于8位,密码强度为中级,如果我们要修改为简单的(字母+数字、纯数字、纯字母),则会报如下错误:
所以我们要要修改安全策略,为了永久生效,已经添加到了my.cnf中,把注解去掉
操作效果:
#效果 [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字段了
效果:
#操作效果 #登录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
也可以指定权限,下面语句,指定权权限给t1用户 ,密码为123456,数据库指定为hua,客户端IP址址只能是192.168开头
注:删除用户可以使用“drop user 用户名”,如 drop user 't1'@'192.168.%.%';
2.2.5 使用SQL客户端工具登陆(SQLyog)
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,所以只要实验试一下即可。
2.3 安装php7.4(dnf)
根据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, 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. |
为了显示,我全部安装,产生环境中建议按需求安装
2.3.1 php安装(dnf)
注意事项:
根据PHP官网解释,如果php连接mysql8.0,php的版本必须是PHP7.2.4之后
#1.安装php依赖
#2.安装php
安装PHP的不能直接dnf install安装,因为后面安装zabbix 前端的时候会用到php依赖,默认的是PHP7.2,查看如下:
操作效果如下:
#效果,发现默认安装的是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,操作命令如下:
注:
1.php-net-socket不用安装 dnf安装自动会--enable-sockets 通过phpinfo()测试就知道
2.php-mysqli默认支持通过phpinfo()测试就知道
2.3.2 修改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
2.3.3 修改php-fpm配置
2.3.4 修改nginx配置让其支持php
注:如果配置34行的$document_root不行的话就改为/usr/share/nginx/html
2.3.5 启动php并测试
#打开本地浏览器输入服务器ip地址,我的为192.168.3.82
注:如果不能访问的话,说明防火墙没有关闭
三、zabbix服务器端安装及配置
3.1 安装(dnf)
3.1.1 zabbix安装(dnf)
进入zabbix官网下载页,选择好版本、系统、数据库、web,我这里选择如下:
接下来按着安装步骤安装即可
PS:zabbix_get可以在server端获取监控项item的值
#发现直接用上面的安装命令安装会报错,所以我选择手工下载安装,我这里选择国内源,选择华为云吧
3.1.2 把zabbix脚本导入mysql中
3.2 修改zabbix配置
3.3 通过web配置zabbix
3.3.1 修改nginx
我们在前面安装zabbix-nginx-conf的时候,会默认在nginx添加一个zabiix配置,并指定了/usr/share/zabbix,所以不需要任何修改,如下所示:
我这里也会之前的默认配置去掉,让专门为zabbix服务
#我们把zabbix.conf的端口配置修改一下,按官方文档说法默认是注解的,把注解去掉
#为了方便我在zabbix.conf的server_name下添加多2条日志记录
3.3.2 修改php-fpm配置
按上面所说zabbix会在/etc/php-fpm.d/生成一个zabbix.conf,有自己的地址池,之前默认有www.conf,因没不用到所以移走它,
3.3.3 启动zabbix
3.3.4 安装zabbix
本地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了
上面会自动创建配置文件 /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@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
#启动zabbix-server,发现卡住不动了,重启服务器再启动成功
操作效果:
#效果 [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发现正常了
四、zabbix agent 客户端安装
要监控,在需要监控的机子上安装agent(即客户端),我这里是vm821、vm822 2台机子
在安装前我先介绍一下zabbix提供了两个小工具:zabbix_sender和zabbix_get,它们的作用如下:
zabbix get:可在server端获取监控项item的值。
zabbix sender : 可在agent端给server发送监控项item值。比如你自定义的监控项,就可以通过这个工具采集信息。
我在服务端上已经安装了zabbix_get、现在建议在客户端上安装zabbix_sender
4.1 安装agent
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
4.2 修改agent配置
4.2.1 agent的两种模式(主动和被动)
Zabbx agent配置分为主动模式和被动模式,Zabbix默认是被动模式的。
在这里顺便讲一下主动模式和被动模式,主动和被动都是对于agent端来说的
主动模式:agent-->server(push推送)
由agent主动采集数据并返回给zabbix server,不需要server进行干预, 主动模式在一定程度上可减轻server的压力。
被动模式:agent<--server(pull拉取)
由server向agent发出指令获取数据, 即agent被动的去获取数据并返回给server,server周期性的向agent 索取数据, 这种模式的最大问题就是会加大server的工作量, 在数百台服务器的环境下server不能及时获取到最新数据, 但这也是默认的工作方式。
PS:
一般来说,被动模式对监控控制端服务器的开销较大,适合小规模的监控环境;主动模式对监控控制端服务器的开销较小,适合大规模的监控环境。
4.2.2 修改agent配置
在这里我拿vm821配置被动模式,vm822先不配置,留着后面文章我配置主动模式使用
效果:
#修改效果 [root@vm821 zabbix]# egrep "^LogFile=|^Server=" zabbix_agentd.conf LogFile=/disk1/logs/zabbix/zabbix_agentd.log Server=192.168.3.82
PS:如果想配置主动模式,可以看我的文章《zabbix5 agent配置主动模式》
4.3 启动agent客户端
五、测试
5.1 使用zabbix-get命令(服务端操作)
Zabbix get 是一个命令行应用,它可以用于与 Zabbix agent 进行通信,并从 Zabbix agent 那里获取所需的信息
#登陆zabbix服务端执行如下命令,不懂命令可以zabbix_get --help
效果如下:
[root@vm82 ~]# zabbix_get -s 192.168.3.21 -k system.hostname vm821
5.2 通用zabbix web添加监控
打开浏览器输入:http://192.168.3.82/index.php,登录zabbix
5.2.1 创建一个监控组
zabbix概念是“主机host”在“组Host groups”中,“模板Template”可以套在主机也可以套上组上,如果套上组中,那么所有“主机”都会使用,如果套上“主机”上只有某台主机生效。
起一个名字,我里起hualinux
在下方会多出一个组
5.2.2 添加被监控主机
我这里先拿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,表示主机在运行,处于可用状态。
5.2.3 查看监控数据
六、其它
6.1 中文乱码
上面监控图中,发现标题在包含有中文的时候,乱码了,所以解决一下
6.1.1 检查zabbix服务端是否安装了中文语言包
先查看一下系统是否安装有中文
PS:如果没有可能执行下面命令安装
#centos7系统 #yum install kde-l10n-Chinese -y #centos8系统 dnf install langpacks-zh_CN.noarch #查看是否安装了中文 locale -a|grep zh_
6.1.2 上传中文字体到zabbix服务端
上面的图形中文乱码,也有可能是没有中文字体支持,可以在win上找一字体文上传到服务端上。
#1.win中复制字体文件
我的本地系统是win7 64位, 在windows的C:\Windows\Fonts目录中找个字体,是中文的,我就找个简体吧
上面图中简体字,复制出桌面名字变成了 SimSun
#2.上传字体文件到服务器即可,操作如下
6.1.3 修改字体相关的配置文件
效果如下:找到了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 总配置文件即可。
效果:就是把 把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监控界面,发现正常了
6.2 切换中文界面
现在zabbix支持中文,前提是你系统已经安装了中文包,如果没安装可以执行下面命令安装
附录一、 安装基础软件及基础配置
1.1 centos8安装兼容包(已安装)
服务器端和客户端同时操作
不关闭也可以要让其端口通过防火墙
1.2 关闭selinux(重要)
如果不关闭selinux的话,有些自定义路径不符它的规则会产生问题,一般推荐关闭
1.3 关闭防火墙
1.4 时间同步(最好要)
有不少软件对时间有要求的,不能相差太多,比如主从、zabbix等,所以建议配置一下
centos8已经取消了ntp,默认使用的是chronyd
- chronyd 和 ntpd 性能对比https://chrony.tuxfamily.org/comparison.html#Performance
- 为什么要使用 chronyd 替换掉 ntpdhttps://chrony.tuxfamily.org/comparison.html#Summary
有些软件时间性要求比较强的,如同步类,数据库主从,做实验也最好同步一下时间
在第8次迭代之前,CentOS使用dnf包管理器。从CentOS 8开始,包管理已经从dnf迁移到Dandified dnf (DNF)。DNF最早是在Fedora 18中引入的,并成为Fedora 22中的默认软件包管理器,它与dnf使用上非常相似。
1.5 安装常用软件
#centos8之前用dnf