一、自动添加主机

自动添加主机并关联模板

自动添加主机方案 含义 应用场景
自动发现(服务端主动) Zbx服务端主动去找是否有新的主机,如果有则添加进来,关联模板。。。。 配置简单,大量添加主机不适合。临时性可用。
自动发现(客户端主动) Zbx客户端主动去找服务端提交自己的信息,请求向服务端注册 配置繁琐,经常性。大量主机。

1.1 自动发现

1、主机配置zbx agent

2、web界面配置自动发现规则,用于发现主机

3、web界面配置自动发现的动作,用于将发现的主机关联模板,添加主机,加入主机组,启用

1.1.1 主机配置zbx agent

在此需要提前配置好客户端主机,详情参考4.2配置客户端

1.1.2 web配置自动发现规则

1、依次点击【配置】-【自动发现】-【创建发现规则】

2、填写名称、IP范围

3、检查自动发现的主机,观察到已自动发现客户端,但是并不会添加到zbx主机

依次点击【监测】-【自动发现】

1.1.3 web配置动作

配置自动发现的动作:

  • 添加组

  • 关联模板

  • 启动主机

1、进入自动发现动作配置

依次点击【配置】-【动作】-【发现动作】

2、修改自动发现动作

3、启动自动发现动作

4、配置自动发现动作的操作(关联主机组,关联模板)

5、查看监控结果

依次点击【监测】-【自动发现】查看自动发现的设备

1.2 自动注册

应用场景,经常性添加主机。

准备工作:

  • 关闭 自动发现 规则

  • 关闭 自动发现 动作

  • 自动发现的主机 删除

步骤:

  • zbx客户端配置: 修改zabbix客户端配置文件

  • web页面,动作

1.2.1 zbx客户端配置文件

客户端主动把自己的信息,提供给服务端。

服务端收到数据后通过 自动注册动作,判断与添加。

<colgroup> <col style="width: 50%" /> <col style="width: 50%" /> </colgroup>
客户端的配置 说明
Server=172.16.1.40 服务端地址
ServerActive=172.16.1.40 主动模式下的服务端ip地址
#Hostname=zabbix-client02 当前主机名,这个可以注释掉或使用ansible配置。建议注释使用下面的内容,自动获取主机名
HostnameItem=system.hostname

通过后面指定的键值获取主机名。 ⚠ Hostname和HostnameItem2选1.

Item监控项、键值。

HostMetadataItem=system.uname 主机的元数据键值,类似于自动发现中的system.uname判断存活和获取主机信息

1、修改zbx客户端配置文件

[root@zabbix-client02 ~]# egrep -v '^$|#' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.40
ServerActive=172.16.1.40
HostnameItem=system.hostname
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf

2、修改完成后重启zbx客户端

[root@zabbix-client02 ~]# systemctl restart zabbix-agent2.service

1.2.2 web界面添加自动发现规则

1、依次点击【配置】-【自动发现】-【创建发现规则】

2、填写名称、IP范围

1.2.3 web配置动作

与自动发现类似,客户端找到服务端后提交自己信息。

服务端通过自动注册动作进行判断与添加即可。

1、进入自动注册动作配置页面

2、创建自动注册动作

3、配置自动注册操作

4、检查结果

1.3 小结

1.3.1 自动发现

1、客户端(zbx agent),配置文件

2、web配置自动发现规则. - 发现主机

3、web配置动作 - 发现主机后关联模板,添加主机,加入主机组,启用

1.3.2 自动注册

整体流程与自动发现类似,但是自动注册无法再web页面直接查看是否发现了主机,只能看是否添加主机。

自动注册,web页面没有地方配置规则,自动注册把规则写入到了客户端配置文件中的。

web页面只需要配置,自动注册动作即可。

二、分布式监控

2.1 分布式监控概述及应用场景

zabbix分布式监控应用场景: 监控多个地区/多个机房的服务器,服务器之间内网不通.

多个节点(区域、机房)zbx监控问题 方案01:客户端直接写服务端公网ip 方案02使用分布式监控
带宽
网络稳定性问题
可能存在误报
应用场景

2.2 分布式监控实战

目标:

  • 应对公司网站服务器较多场景.

  • 公司网站服务器分散在不同的机房或地区(跨机房)

2.2.1 分布式监控搭建

2.2.2 zbx代理

1、安装代理

[root@zabbix-client01 ~]# yum install -y https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-proxy-mysql-6.0.25-release1.el7.x86_64.rpm

验证查看

[root@zabbix-client01 ~]# rpm -qa |grep zabbix-proxy
zabbix-proxy-mysql-6.0.25-release1.el7.x86_64

2、安装与启动数据库

zabbix 6.0 不支持 mariadb 5.5(默认源中的mariadb)安装mariadb 10.5

(1)配置maraidb yum源

[root@zabbix-server01 ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1

(2)安装并验证

[root@zabbix-server01 ~]# yum install -y mariadb-server
[root@zabbix-server01 ~]# rpm -qa |grep -i mariadb
MariaDB-common-10.5.23-1.el7.centos.x86_64
MariaDB-server-10.5.23-1.el7.centos.x86_64
MariaDB-compat-10.5.23-1.el7.centos.x86_64
MariaDB-client-10.5.23-1.el7.centos.x86_64

(3)启动mariadb

[root@zabbix-server01 ~]# systemctl enable --now mariadb

(4)mariadb配置

数据库初始化

[root@zabbix-server01 ~]# 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
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): 回车
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
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.

(5)进入数据库中,创建数据库并创建用户

[root@zabbix-client01 ~]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';

3、下载zabbix6.0LTS的源码包

下载链接:https://www.zabbix.com/cn/download_sources#60LTS

向数据库中导入sql文件

[root@zabbix-server01 ~]# tar xf zabbix-6.0.25.tar.gz
[root@zabbix-server01 ~]# cd zabbix-6.0.25/database/mysql/
[root@zabbix-client01 mysql]# mysql zabbix_proxy <schema.sql

说明:上面是zbx6.0版本的做法,如果是5.0的话,执行以下版本进行初始化

zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql zabbix_proxy

4、修改zbx_proxy配置文件

[root@zabbix-client01 ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_proxy.conf
Server=172.16.1.40
Hostname=shanghai_proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

5、启动zbx_agent

[root@zabbix-client01 ~]# systemctl enable --now zabbix-proxy.service

查看代理日志,出现下面现象是因为没有在web界面上创建代理

[root@zabbix-client01 ~]# tailf /var/log/zabbix/zabbix_proxy.log
9705:20240128:105750.030 cannot send proxy data to server at "172.16.1.40": proxy "shanghai_proxy" not found

6、web界面上创建agent代理程序

查看效果

2.2.3 zbx客户端修改

1、修改配置文件

#修改服务地址为代理的地址
[root@zabbix-client02 ~]# vim /etc/zabbix/zabbix_agent2.conf
…
…
Server=172.16.1.41
ServerActive=172.16.1.41

修改完成后如下

[root@zabbix-client02 ~]# egrep -v '^$|^#' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=172.16.1.41
ServerActive=172.16.1.41
HostnameItem=system.hostname
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf

2、重启zabbix_agent2

[root@zabbix-client02 ~]# systemctl restart zabbix-agent2.service

3、在web界面上进行查看

可用性位置处,等待变绿即可

三、低级自动发现

自动发现、自动注册用于发现主机。

LLD 低级自动发现,用于发现监控项(触发器,图形),一般用于发现网卡,发现磁盘分区。