作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。
①.对系统不间断实时监控
②.实时反馈系统当前状态
③.保证服务可靠性安全性
④.保证业务持续稳定运行
●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
●zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
●zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
●zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。
●zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。
zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。
当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。
●zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;
●zabbix agent:客户端守护进程,负责收集客户端数据,例如:收集 CPU 负载、内存、硬盘使用情况等;
●zabbix proxy:zabbix 分布式代理守护进程,通常大于 500 台主机,需要进行分布式监控架构部署;
●zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令;
●zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查。
所需的机器 | ip地址 |
---|---|
zabbix服务端 zbx-server | 20.0.0.100 |
zabbix客户端 zbx-agent01 | 20.0.0.200 |
准备环境:zabbix-server 内存至少 2G,推荐 4G;
[root@localhost ~]# systemctl disable --now firewalld && setenforce 0
##关闭防火墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# hostnamectl set-hostname zbx-server
##修改主机名
[root@localhost ~]# su
[root@zbx-server ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
## 获取 zabbix 的下载源
获取https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.mJVCKI: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-5.0-1.el7 ################################# [100%]
[root@zbx-server ~]# cd /etc/yum.repos.d
[root@zbx-server yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo zabbix.repo
[root@zbx-server yum.repos.d]# vim zabbix.repo
## 修改图中圈出的所有的zabbix路径改为阿里云网址路径
[root@zbx-server yum.repos.d]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
## 更换 zabbix.repo 为阿里源
[root@zbx-server yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: base extras updates zabbix zabbix-non-supported
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
zabbix | 2.9 kB 00:00:00
zabbix-non-supported | 2.9 kB 00:00:00
(1/16): extras/7/x86_64/filelists_db | 276 kB 00:00:05
(2/16): base/7/x86_64/other_db | 2.6 MB 00:00:05
(3/16): extras/7/x86_64/primary_db | 249 kB 00:00:00
(4/16): base/7/x86_64/primary_db | 6.1 MB 00:00:07
(5/16): updates/7/x86_64/filelists_db | 11 MB 00:00:03
(6/16): updates/7/x86_64/other_db | 1.3 MB 00:00:00
(7/16): base/7/x86_64/group_gz | 153 kB 00:00:11
(8/16): extras/7/x86_64/other_db | 149 kB 00:00:05
(9/16): base/7/x86_64/filelists_db | 7.2 MB 00:00:14
(10/16): zabbix/x86_64/filelists_db | 75 kB 00:00:05
(11/16): zabbix/x86_64/other_db | 359 kB 00:00:00
(12/16): updates/7/x86_64/primary_db | 20 MB 00:00:09
(13/16): zabbix/x86_64/primary_db | 212 kB 00:00:05
(14/16): zabbix-non-supported/x86_64/primary_db | 3.7 kB 00:00:05
(15/16): zabbix-non-supported/x86_64/other_db | 3.3 kB 00:00:00
(16/16): zabbix-non-supported/x86_64/filelists_db | 1.7 kB 00:00:10
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
元数据缓存已建立
[root@zbx-server yum.repos.d]# yum install -y zabbix-server-mysql zabbix-agent
[root@zbx-server yum.repos.d]# yum install -y centos-release-scl
## 安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
[root@zbx-server yum.repos.d]# vim zabbix.repo
## 修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
[zabbix-frontend]
......
enabled=1 #开启安装源
[root@zbx-server yum.repos.d]# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
[root@zbx-server yum.repos.d]# yum install -y mariadb-server mariadb
## 安装 zabbix 所需的数据库
[root@zbx-server yum.repos.d]# systemctl enable --now mariadb
## 数据库开启自启
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zbx-server yum.repos.d]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 38095 mysql 14u IPv4 77514 0t0 TCP *:mysql (LISTEN)
[root@zbx-server yum.repos.d]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@zbx-server yum.repos.d]# mysql -u root -pabc123
## 添加数据库用户,以及 zabbix 所需的数据库信息
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
## 导入数据库信息
MariaDB [(none)]> exit
Bye
[root@zbx-server yum.repos.d]# rpm -ql zabbix-server-mysql
## 查询 sql 文件的位置
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-5.0.33
/usr/share/doc/zabbix-server-mysql-5.0.33/AUTHORS
/usr/share/doc/zabbix-server-mysql-5.0.33/COPYING
/usr/share/doc/zabbix-server-mysql-5.0.33/ChangeLog
/usr/share/doc/zabbix-server-mysql-5.0.33/NEWS
/usr/share/doc/zabbix-server-mysql-5.0.33/README
/usr/share/doc/zabbix-server-mysql-5.0.33/create.sql.gz
/usr/share/doc/zabbix-server-mysql-5.0.33/double.sql
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
[root@zbx-server yum.repos.d]# zcat /usr/share/doc/zabbix-server-mysql-5.0.33/create.sql.gz |mysql -uroot -pabc123 zabbix
[root@zbx-server yum.repos.d]# vim /etc/zabbix/zabbix_server.conf
## 修改 zabbix server 配置文件,修改数据库的密码
124 DBPassword=zabbix
## 124行,指定 zabbix 数据库的密码
[root@zbx-server yum.repos.d]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
## 修改 zabbix 的 php 配置文件
25 php_value[date.timezone] = Asia/Shanghai
## 25行,取消注释,修改时区
[root@zbx-server yum.repos.d]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zbx-server yum.repos.d]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-php72-php-fpm.service to /usr/lib/systemd/system/rh-php72-php-fpm.service.
浏览器访问:http:/20.0.0.100/zabbix
根据自身虚拟机ip地址输入ip
设置数据库的密码 zabbix
登录账号密码为:Admin/zabbix
[root@zbx-server yum.repos.d]# yum install -y wqy-microhei-fonts
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* centos-sclo-rh: mirrors.bfsu.edu.cn
* centos-sclo-sclo: mirrors.nju.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
软件包 wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch 已安装并且是最新版本
无须任何处理
[root@zbx-server yum.repos.d]# \cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
## 在linux中 \cp默认是默认cp命令是有别名的,输入\cp命令,作用也是取消cp的别名
========================================================================================================================
[root@zbx-server yum.repos.d]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
========================================================================================================================
新开一台虚拟机作为客户端使用,
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。
[root@zbx-client yum.repos.d]# hostnamectl set-hostname zbx-agent01
[root@zbx-client yum.repos.d]# su
## 修改主机名
[root@zbx-agent01 ~]# systemctl disable --now firewalld && setenforce 0
## 关闭防火墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
zbx-agent01 20.0.0.200
[root@zbx-agent01 ~]# yum install -y ntpdate
[root@zbx-agent01 ~]# ntpdate -u ntp.aliyun.com
12 Apr 16:02:28 ntpdate[4534]: adjust time server 203.107.6.88 offset 0.003124 sec
zbx-server 20.0.0.100
[root@zbx-server yum.repos.d]# yum install -y ntpdate
[root@zbx-server yum.repos.d]# ntpdate -u ntp.aliyun.com
12 Apr 16:02:27 ntpdate[43414]: adjust time server 203.107.6.88 offset -0.009533 sec
zbx-agent01 20.0.0.200
[root@zbx-agent01 ~]# mv /etc/localtime{,.bak}
[root@zbx-agent01 ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@zbx-agent01 ~]# date
2023年 04月 12日 星期三 16:09:46 CST
[root@zbx-agent01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
获取https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.Cd84Oz: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-5.0-1.el7 ################################# [100%]
[root@zbx-agent01 ~]# cd /etc/yum.repos.d
[root@zbx-agent01 yum.repos.d]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@zbx-agent01 yum.repos.d]# yum install -y zabbix-agent2
[root@zbx-agent01 yum.repos.d]# vim /etc/zabbix/zabbix_agent2.conf
Server=20.0.0.100 #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.10.22 #120行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01 #136行,指定当前 zabbix 客户端的主机名
[root@zbx-agent01 yum.repos.d]# systemctl start zabbix-agent2
[root@zbx-agent01 yum.repos.d]# systemctl enable zabbix-agent2
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
[root@zbx-agent01 yum.repos.d]# netstat -natp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 39028/zabbix_agent2
zbx-server 20.0.0.100
[root@zbx-server yum.repos.d]# yum install -y zabbix-get
## 安装 zabbix 主动获取数据的命令
[root@zbx-server yum.repos.d]# zabbix_get -s '20.0.0.200' -p 10050 -k 'agent.ping'
1
[root@zbx-server yum.repos.d]# zabbix_get -s '20.0.0.200' -p 10050 -k 'system.hostname'
zbx-agent01
浏览器访问:http:/20.0.0.100/zabbix
根据自身虚拟机ip地址输入ip
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-20.0.0.100
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 20.0.0.100
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
案列:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息
[root@zbx-agent01 yum.repos.d]# who|wc -l
2
[root@zbx-agent01 yum.repos.d]# vim /etc/zabbix/zabbix_agent2.conf
## 可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
[root@zbx-agent01 yum.repos.d]# cd /etc/zabbix/zabbix_agent2.d/
[root@zbx-agent01 zabbix_agent2.d]# ls
[root@zbx-agent01 zabbix_agent2.d]# vim UserParameter_login.conf
UserParameter=login.user,who|wc -l
[root@zbx-agent01 zabbix_agent2.d]# systemctl restart zabbix-agent2.service
[root@zbx-server yum.repos.d]# zabbix_get -s '20.0.0.200' -p 10050 -k 'login.user'
2
1.创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【链接的模板】中搜索到 Template Login User 了
【名称】设置成 Number of login users
【键值】设置成 login.user #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成 10s
【历史数据保留时长】Storage period 30d #保留时间可自定义设置
点击 【添加】
【名称】设置成 Number of login users is greater than 3
【严重性】设置成 一般严重
【表达式】点击添加,【监控项】点击选择 Number of login users,【功能】选择 last(),【结果】选择 > 3,点击 【插入】
点击 【添加】
点击上方菜单栏【图形】,点击【创建图形】
【名称】设置成 Number of login users
【宽】、【高】可直接采用默认值
【监控项】点击添加勾选相关监控项 Number of login users,【功能】选择 最大,其它可保持默认值
点击上方菜单栏【模板】,【Link new tamplates】搜索 login,选择 Template Login User,点击【更新】
此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标
点击左边菜单栏【管理】中的【报警媒介类型】,点击【创建媒体类型】
**【名称】设置成 qq_Email
【SMTP服务器】设置成 smtp.qq.com
【SMTP服务器端口】设置成 25
【SMTP HELO】设置成 qq.com
【SMTP电邮】设置成 自己的邮箱地址,例如 [email protected]
【认证】选择 用户名和密码
【用户名称】设置成 自己的邮箱地址,例如 [email protected]
【描述】可自定义
**
【密码】可登录QQ邮箱页面,点击【设置】–>【账户】中的【生成授权码】,通过短信获取授权码
点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择 问题,点击【更新】
点击 【添加】,并测试功能
点击左边菜单栏【User settings】–>【报警媒介】,点击【添加】
【类型】选择 qq_Email
【收件人】设置成 [email protected]
【当启用时】设置成 1-7,00:00-24:00
点击 【添加】
再点击 【更新】
点击左边菜单栏【配置】中的【动作】,选择相对应的动作名称,点击【启用】
增加测试客户端的用户登录数超过触发器预设的值,查看【监测】–>【仪表盘】,确认报警
打开多个20.0.0.200客户端XShell,已监测到问题,并且会发信息给设置的邮箱进行提示
zabbix 自动发现(对于 agent2 是被动模式)
zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。
缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
[root@zbx-agent01 zabbix_agent2.d]# systemctl is-active zabbix-agent2.service
active
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
zbx-agent01 20.0.0.200
[root@zbx-agent01 zabbix_agent2.d]# vim /etc/hosts
20.0.0.100 zbx-server
20.0.0.200 zbx-agent01
[root@zbx-server yum.repos.d]# vim /etc/hosts
20.0.0.100 zbx-server
20.0.0.200 zbx-agent01
点击左边菜单栏【配置】中的【自动发现】,点击【创建发现规则】
【名称】设置成 mynetwork
【IP范围】设置成 20.0.0.1-254(根据自身的ip地址配置 192.168.10.1-254)
【更新间隔】设置成 30s
【检查】点击【添加】,【检查类型】选择 Zabbix 客户端,【端口范围】设置成 10050,【键值】设置成 system.uname
【设备唯一性准则】选择 IP地址
【主机名称】选择 DNS名称
【可见的名称】选择 主机名称
勾选 【已启用】,点击 【更新】
[root@zbx-agent01 zabbix_agent2.d]# systemctl restart zabbix-agent2.service
也可在服务端查看 zabbix 日志
[root@zbx-server ~]# tail -f /var/log/zabbix/zabbix_server.log
38827:20230412:221725.591 Zabbix agent item "system.uptime" on host "Zabbix server" failed: first network error, wait for 15 seconds
38832:20230412:221740.741 resuming Zabbix agent checks on host "Zabbix server": connection restored
38832:20230412:221740.745 resuming Zabbix agent checks on host "zbx-agent01": connection restored
38841:20230412:221852.271 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38836:20230412:222053.237 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38836:20230412:222254.266 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38836:20230412:222455.264 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38840:20230412:222656.268 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38841:20230412:222856.869 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38827:20230412:223044.894 enabling Zabbix agent checks on host "zbx-agent01": host became available
zabbix agent2 会主动上报自己的信息,发给 zabbix server。
缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server。
点击左边菜单栏【配置】中的【自动发现】,勾选发现规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
[root@zbx-agent01 ~]# vim /etc/zabbix/zabbix_agent2.conf
HostnameItem=system.hostname #144行,取消注释
[root@zbx-agent01 ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=20.0.0.100
ServerActive=20.0.0.100
Hostname=zbx-agent01
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
点击左边菜单栏【配置】中的【动作】,上方菜单选择 【Autoregistration actions】,点击【创建动作】
【名称】设置成 Auto registration
点击 【添加】,【类型】选择 主机名称,【操作者】选择 包含,【值】设置成 zbx-agent01
点击上方菜单栏【操作】,点击【添加】,【操作类型】选择 添加主机,点击 【add】
再点击【添加】,【操作类型】选择 添加到主机群组,【主机群组】选择 Linux servers,点击 【add】
再点击【添加】,【操作类型】选择 与模板关联,【模板】搜索 Linux,选择 Template OS Linux by Zabbix agent,点击 【add】
点击下方的【添加】
点击左边菜单栏【配置】中的【主机】刷新,等待一段时间后即可刷新出自动发现的客户端主机
[root@zbx-server yum.repos.d]# tail -f /var/log/zabbix/zabbix_server.log
38801:20230413:143235.011 executing housekeeper
38801:20230413:143235.141 housekeeper [deleted 0 hist/trends, 481 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.129329 sec, idle for 1 hour(s)]
38841:20230413:143341.441 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38843:20230413:143542.440 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38833:20230413:143743.446 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38840:20230413:143944.441 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38840:20230413:144145.441 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38833:20230413:144346.440 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38833:20230413:144547.570 cannot send list of active checks to "20.0.0.200": host [zbx-agent01] not found
38824:20230413:144642.030 enabling Zabbix agent checks on host "zbx-agent01": host became available
分布式监控的作用:
●分担 server 的集中式压力
●解决多机房之间的网络延时问题
agent --> proxy --> server
所需的机器 | ip地址 |
---|---|
zabbix服务端 zbx-server | 20.0.0.100 |
zabbix客户端 zbx-agent01 | 20.0.0.200 |
zbx- proxy代理服务器 | 20.0.0.210 |
[root@localhost ~]# systemctl disable --now firewalld && setenforce 0
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# hostnamectl set-hostname zbx-proxy
[root@localhost ~]# su
[root@zbx-proxy ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
## 设置 zabbix 的下载源,按照 zabbix-proxy
获取https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.jwzABd: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-5.0-1.el7 ################################# [100%]
[root@zbx-proxy yum.repos.d]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@zbx-proxy yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo zabbix.repo
[root@zbx-proxy yum.repos.d]# yum install -y zabbix-proxy-mysql zabbix-get
[root@zbx-proxy yum.repos.d]# yum install -y mariadb-server mariadb
## 安装 zabbix 所需的数据库
[root@zbx-proxy yum.repos.d]# systemctl enable --now mariadb
[root@zbx-proxy yum.repos.d]# systemctl enable --now mariadb
## 自启动数据库
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zbx-proxy yum.repos.d]# mysql_secure_installation
#初始化数据库,并设置密码,如 abc123
[root@zbx-proxy yum.repos.d]# mysql -u root -pabc123
## 添加数据库用户,以及 zabbix 所需的数据库信息
[root@zbx-proxy yum.repos.d]# mysql -u root -pabc123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
## 导入数据库信息
MariaDB [(none)]> exit
Bye
[root@zbx-proxy yum.repos.d]# rpm -ql zabbix-proxy-mysql
## 查询 sql 文件的位置
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.33
/usr/share/doc/zabbix-proxy-mysql-5.0.33/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.33/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.33/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.33/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.33/README
/usr/share/doc/zabbix-proxy-mysql-5.0.33/schema.sql.gz
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
[root@zbx-proxy yum.repos.d]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.33/schema.sql.gz | mysql -uroot -pabc123 zabbix_proxy
[root@zbx-proxy yum.repos.d]# vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.10.22 #30行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-proxy #49行,指定当前 zabbix 代理服务器的主机名
DBPassword=zabbix #196行,指定当前数据库 zabbix 用户的密码
[root@zbx-proxy yum.repos.d]# systemctl start zabbix-proxy
[root@zbx-proxy yum.repos.d]# systemctl enable zabbix-proxy
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
在所有主机上配置 hosts 解析
zbx-proxy 20.0.0.210
[root@zbx-proxy yum.repos.d]# vim /etc/hosts
20.0.0.100 zbx-server
20.0.0.200 zbx-agent01
20.0.0.210 zbx-proxy
zbx-agent01 20.0.0.200
[root@zbx-agent01 yum.repos.d]# vim /etc/hosts
20.0.0.100 zbx-server
20.0.0.200 zbx-agent01
20.0.0.210 zbx-proxy
zbx-server 20.0.0.100
[root@zbx-server yum.repos.d]# vim /etc/hosts
20.0.0.100 zbx-server
20.0.0.200 zbx-agent01
20.0.0.210 zbx-proxy
点击左边菜单栏【配置】中的【动作】,勾选自动注册规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
点击左边菜单栏【管理】中的【agent代理程序】,点击【创建代理】
【agent代理程序名称】设置为 zbx-proxy
【系统代理程序模式】选择 主动式
【代理地址】设置为 20.0.0.100
点击 【添加】
[root@zbx-agent01 ~]# vim /etc/zabbix/zabbix_agent2.conf
Server=20.0.0.210 #80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=20.0.0.210 #150行,指定 zabbix 代理服务器的 IP 地址
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.10.21
【由agent代理程序监测】选择 zbx-proxy
再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】
zbx-agent01 20.0.0.200
[root@zbx-agent01 ~]# systemctl restart zabbix-agent2.service
zbx-proxy 20.0.0.210
[root@zbx-proxy yum.repos.d]# systemctl restart zabbix-proxy
点击左边菜单栏【配置】中的【主机】刷新,查看客户端主机监控状态正常
在代理服务端查看日志
[root@zbx-proxy yum.repos.d]# tail -f /var/log/zabbix/zabbix_proxy.log
5699:20230413:160405.731 proxy #26 started [poller #5]
5680:20230413:160405.733 proxy #7 started [preprocessing manager #1]
5691:20230413:160405.734 proxy #18 started [history syncer #3]
5682:20230413:160405.734 proxy #9 started [preprocessing worker #2]
5701:20230413:160405.735 proxy #28 started [icmp pinger #1]
5700:20230413:160405.746 proxy #27 started [unreachable poller #1]
5698:20230413:160405.748 proxy #25 started [poller #4]
5681:20230413:160405.824 proxy #8 started [preprocessing worker #1]
5683:20230413:160405.827 proxy #10 started [preprocessing worker #3]
5695:20230413:160406.755 enabling Zabbix agent checks on host "zbx-agent01": host became available
简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组 定义的一套网络管理协议
三种通信方式:读(get,getnext),写(set),trap(陷阱)
端口:161/udp 162/udp
监控网络设备:交换机、路由器
[root@zbx-server ~]# yum install -y net-snmp net-snmp-utils
[root@zbx-server ~]# vim /etc/snmp/snmpd.conf
view systemview included .1 #57行,添加此配置
[root@zbx-server ~]# systemctl start snmpd
[root@zbx-server ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: zbx-server
============================================================
–v 1|2c|3:指定SNMP协议版本
============================================================
点击左边菜单栏【配置】中的【主机】,点击 Zabbix server
【Interfaces】点击【添加】选择 SNMP ,端口设置成 161
点击上方菜单栏【模板】,【链接的模板】中的所有 agent 模板选择取消链接并清理
再在【Link new templates】中搜索 Linux SNMP,选择 Template OS Linux SNMP
点击 【更新】,等待一段时间后 Zabbix server 的可用性就变成了 SNMP 监控方式。
[root@zbx-server ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5704
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'abc123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
普通的zabbix agent不具备数据库登录环境,需要调用数据库客户端来登录数据库,要创建免密登录文件来实现,/var/lib/zabbix 是Zabbix agent 的家目录,如若没有需要自行创建
[root@zbx-server ~]# mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
[root@zbx-server ~]# chown zabbix:zabbix /var/lib/zabbix
[root@zbx-server ~]# touch /var/lib/zabbix/.my.cnf
[root@zbx-server ~]# vim /var/lib/zabbix/.my.cnf
[client]
user='zbx_monitor'
password='abc123'
[root@zbx-server ~]# vim /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
[root@zbx-server ~]# systemctl restart zabbix-agent
告警:MySQL: Buffer pool utilization is too low (less 50% for 5m)
由于分配了比实际需要更多的 RAM。结合实际情况,降低其严重性即可。
因为对存储服务器分配更多的RAM在合理计划范围内、增加缓冲池字节大小有利于提高性能。
MySQL官网:https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool-resize.html