Zabbix 监控系统部署

Zabbix是一款功能强大的开源监控系统,用于监视各种IT组件的运行状况。

  • 监控功能:Zabbix可以监控各种IT组件,如服务器、网络设备、数据库等,并支持多种监控方式,如SNMP、JMX、IPMI等。
  • 告警功能:当监控到的指标超出了预设的阈值时,Zabbix可以通过多种方式向用户发送告警,如邮件、短信、微信等。
  • 数据可视化:Zabbix提供了多种图表和报表,用户可以通过这些视图来了解监控数据的变化趋势和异常情况。
  • 自动化运维:Zabbix可以通过脚本和API来实现自动化运维,如自动化告警处理、自动化配置管理等。
  • 可扩展性:Zabbix提供了多种插件和API接口,用户可以根据自己的需求扩展Zabbix的功能。

网络上搜到的zabbix架构图(侵删):
在这里插入图片描述

1、实验准备

系统服务器4台、 1台作为监控服务器, 3台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步(我的是ntp)、 各节点之间可以通过主机名互相通信。

1、所有机器关闭防火墙和 selinux
[root@localhost ~]# setenforce 0 (修改配置文件关闭)
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
[root@localhost ~]# systemctl disable --now firewalld.service
2、实验服务器配置

所有机器节点配置/etc/hosts
因为我本人使用的机器部署了k8s在学习中,所以配置了k8s的名称,为了方便及节省电脑内存就直接用了,机器名起自己的就好。

192.168.18.130 zabbix-server
192.168.18.101 k8s-master01
192.168.18.102 k8s-node01
192.168.18.103 k8s-node02
机器名称ip配置服务器角色备注
server192.168.18.130zabbix-server开启监控功能
node01(k8s-master)192.168.18.101zabbix-agent开启
node02(k8s-node01)192.168.18.102zabbix-agent开启
node03(k8s-node02)192.168.18.103zabbix-agent开启

2、Zabbix的安装

1、更新 yum 仓库
1、下载 yum 仓库
[root@zabbix-server ~]# yum -y install wget
# 阿里云国内zabbix源
[root@zabbix-server ~]# wget --no-check-certificate https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# 安装zabbix源(官方)
[root@zabbix-server ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
2、安装 yum 仓库
[root@zabbix-server ~]# rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm 
3、更新 yum 仓库
#清理缓存和建立缓存
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum makecache
#查看源
[root@zabbix-server ~]# yum repolist 
Loaded plugins: fastestmirror, langpacks  
Loading mirror speeds from cached hostfile
zabbix-non-supported                                                      4/4
repo id                     repo name                                   status
base                        base                                         9,363
epel                        epel                                        11,349
zabbix/x86_64               Zabbix Official Repository - x86_64             80
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported -       4
repolist: 20,796
4、安装 Zabbix
[root@zabbix-server yum.repos.d]# yum -y install  epel-release.noarch
[root@zabbix-server yum.repos.d]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql
2)安装设置数据库:
1、创建 mariadb.repo
[root@zabbix-server yum.repos.d]# vim /etc/yum.repos.d/mariadb.repo
写入以下内容:
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/mariadb-10.4.27/yum/master01-amd64/
gpgkey= https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1           
2、yum 安装最新版本 mariadb
[root@zabbix-server yum.repos.d]# yum install -y MariaDB-server MariaDB-client
3、修改配置文件
[root@zabbix-server yum.repos.d]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON          # 跳过主机名解析
innodb_file_per_table = ON      # 开启独立表空间
innodb_buffer_pool_size = 256M  # 缓存池大小
max_connections = 2000          # 最大连接数
log-bin = master-log            # 开启二进制日志

4、重启数据库服务

[root@zabbix-server yum.repos.d]# systemctl restart mariadb
[root@zabbix-server yum.repos.d]# mysql_secure_installation  # 初始化mariadb

Switch to unix_socket authentication [Y/n] Y #将 MySQL 身份验证方法切换为 使用 Unix 套接字文件而不是密码
Change the root password? [Y/n] n #是否要更改 root 密码
Remove anonymous users? [Y/n] Y #删除无需密码即可访问数据库的任何用户
Disallow root login remotely? [Y/n] Y	#禁用从远程位置以根用户身份登录 MySQL 服务器的功能。
Remove test database and access to it? [Y/n] Y  #删除默认情况下随 MySQL 一起安装的测试数据库,以及用户对其具有的任何访问权限
Reload privilege tables now? [Y/n] Y	#重新加载 MySQL 权限表以应用先前命令所做的更改

5、创建数据库并授权账号

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  # 创建zabbix数据库
MariaDB [(none)]>grant all  on zabbix.* to 'zabbixuser01'@'192.168.18.%' identified by 'cwc123456';						# 注意授权网段
MariaDB [(none)]> flush privileges;           # 刷新授权

6、导入 Zabbix 服务表

#查看 zabbix-server-mysql 这个包提供了什么
[root@zabbix-server ~]#  rpm -ql zabbix-server-mysql
/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-4.4.10
/usr/share/doc/zabbix-server-mysql-4.4.10/AUTHORS
/usr/share/doc/zabbix-server-mysql-4.4.10/COPYING
/usr/share/doc/zabbix-server-mysql-4.4.10/ChangeLog
/usr/share/doc/zabbix-server-mysql-4.4.10/NEWS
/usr/share/doc/zabbix-server-mysql-4.4.10/README
`/usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz`
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

使用 create.sql.gz 生成所需要的表

[root@zabbix-server ~]# gzip -d /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz
[root@zabbix-server ~]# head  create.sql           #查看一下表头
CREATE TABLE `users` (
    `userid`                 bigint unsigned                           NOT NULL,
    `alias`                  varchar(100)    DEFAULT ''                NOT NULL,
    `name`                   varchar(100)    DEFAULT ''                NOT NULL,
    `surname`                varchar(100)    DEFAULT ''                NOT NULL,
    `passwd`                 char(32)        DEFAULT ''                NOT NULL,
    `url`                    varchar(255)    DEFAULT ''                NOT NULL,
    `autologin`              integer         DEFAULT '0'               NOT NULL,
    `autologout`             integer         DEFAULT '900'             NOT NULL,
    `lang`                   varchar(5)      DEFAULT 'en_GB'           NOT NULL,

表头没有创建数据库的命令,所以要手动创建数据库。把所需表导入数据库即可:

[root@zabbix-server ~]# mysql -uzabbixuser01 -h192.168.18.130 -p zabbix < create.sql 
 
Enter password: cwc123456

进去数据库查看一下:

[root@zabbix-server ~]# mysql -uzabbixuser01 -h192.168.18.130 -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| zabbix             |
+--------------------+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
……
| usrgrp                     |
| valuemaps                  |
+----------------------------+
127 rows in set (0.00 sec)

好!有东西了,搞定!

3、配置 server 端

[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
#为了保险起见,配置文件尽量都备份一份出来。
[root@zabbix-server zabbix]# cp zabbix_server.conf{,.bak}
[root@zabbix-server zabbix]# vim zabbix_server.conf
ListenPort=10051            # 服务默认的监听端口
SourceIP=192.168.18.130     # 发送采样数据请求的 IP
1、Zabbix 日志
  • 默认用文件记录,日志存放在 LogFile=/var/log/zabbix/zabbix_server.log 中,也可以自己设置。
2、日志的滚动
  • 默认值为1,表示滚动。设为0则表示不滚动。当数据特别多的时候,也可以设置成为1,然后在 Maximum size of log file in MB 设置当数据文件最大到多少时会自动滚动。

在这里插入图片描述

3、日志的级别
  • 可以根据自己的需要来设置级别。其中0表示输出最少的信息,5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、1、2、3四个级别都显示。

在这里插入图片描述

4、数据库相关的设置
    DBHost=192.168.18.130       #数据库对外的主机
    DBName=zabbix               #数据库名称
    DBUser=zabbixuser01              #数据库用户
    DBPassword=cwc123456             #数据库密码
    DBPort=3306                 #数据库启动端口
5、启动服务
[root@server-zabbix ~]# systemctl start zabbix-server.service
#确认服务端口是否开启
[root@server-zabbix ~]# ss -nutl |grep 10051
tcp    LISTEN     0      128       *:10051                 *:*                  
tcp    LISTEN     0      128      :::10051                :::*    

4、配置 web GUI

1、查找 web GUI 的配置文件
[root@server-zabbix ~]# rpm -ql zabbix-web | less
/etc/httpd/conf.d/zabbix.conf
/etc/zabbix/web
/etc/zabbix/web/maintenance.inc.php
/etc/zabbix/web/zabbix.conf.php
……
2、编辑配置文件

/etc/httpd/conf.d/zabbix.conf文件就是做映射的文件

Alias /zabbix /usr/share/zabbix     # 访问的时候要在主机后加上/zabbix来访问服务

在这里插入图片描述

注意: 时区是一定要设置的,这里被注释掉是因为,在 php 的配置文件中设置时区,如果在php配置文件中设置时区,则对所有的 php 服务均有效,如果在 zabbix.conf 中设置时区,则仅对zabbix服务有效。所以,在 php 配置文件中设置时区:

[root@server-zabbix ~]# vim /etc/php.ini
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    date.timezone = Asia/Shanghai
3、启动 httpd 服务
#立即启动且开机自启
[root@server-zabbix ~]# systemctl enable --now httpd

5、浏览器访问并进行初始化设置

浏览器访问http://192.168.18.130/zabbix,第一次访问时需要进行一些初始化的设置,按照提示操作:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此处可能会有报错在这里插入图片描述

解决:

# vim /usr/share/zabbix/confzabbix.conf.php.example

<?php
// Zabbix GUI configuration file.
global $DB, $HISTORY;

$DB['TYPE']                             = 'MYSQL';  
$DB['SERVER']                   = '192.168.18.130';    #数据库主机IP
$DB['PORT']                             = '3036';		#数据库监听端口
$DB['DATABASE']                 = 'zabbix';				#数据库名称
$DB['USER']                             = 'zabbixuser01';	#数据库用户名
$DB['PASSWORD']                 = 'cwc123456';				#数据库密码
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']                   = '';

$ZBX_SERVER                             = '192.168.18.130';	#zabbix监控主机IP
$ZBX_SERVER_PORT                = '10051';					#zabbix  web界面监听端口
$ZBX_SERVER_NAME                = '';

在这里插入图片描述

删除原zabbix数据库

MariaDB [(none)]> drop database zabbix;
Query OK, 149 rows affected (0.213 sec)

重新进行数据库操作

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> grant all  on zabbix.* to 'zabbixuser01'@'192.168.18.%' identified by 'cwc123456';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;  
Query OK, 0 rows affected (0.001 sec)

重新导入数据

mysql -uroot -p -e "use zabbix;source /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql;"

重启zabbix-server服务

systemctl restart zabbix-server.service

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 点击Finish以后,跳转到登录页面,使用账号密码登录即可:

在这里插入图片描述

  • 默认用户名为:Admin ,密码为:zabbix ,登录后进入仪表盘:
    在这里插入图片描述

6、配置 agent 端

  • 在被监控的主机安装好agent,设置好 server,并添加到 server 端,将其添加入监控系统中。
1、安装 zabbix 安装源

(在所有agent节点操作)

[root@master01 yum.repos.d]#  wget --no-check-certificate https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@master01 yum.repos.d]# rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm 
[root@master01 ~]# yum -y install epel-release.noarch
[root@master01 ~]# yum install zabbix-agent zabbix-sender -y
2、修改配置文件
1、确认配置文件
[root@master01 ~]# rpm -ql zabbix-agent 
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-4.4.10
/usr/share/doc/zabbix-agent-4.4.10/AUTHORS
/usr/share/doc/zabbix-agent-4.4.10/COPYING
/usr/share/doc/zabbix-agent-4.4.10/ChangeLog
/usr/share/doc/zabbix-agent-4.4.10/NEWS
/usr/share/doc/zabbix-agent-4.4.10/README
/usr/share/doc/zabbix-agent-4.4.10/userparameter_mysql.conf
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix

2、编辑配置文件

对配置文件做一个备份,然后修改配置文件

[root@k8s-master01 ~]# cd /etc/zabbix/
[root@k8s-master01 ~]# cd /etc/zabbix/
[root@k8s-master01 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@k8s-master01 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@k8s-master01 zabbix]# vim zabbix_agentd.conf

需修改的内容如下:

Server=127.0.0.1,192.168.18.130       # 指明服务器是谁的
ListenPort=10050            # 自己监听的端口
ListenIP=0.0.0.0            # 自己监听的地址,0.0.0.0表示本机所有地址
StartAgents=3               # 优化时使用的

ServerActive=192.168.18.130 # 主动监控时的服务器
Hostname=k8s-master01     # 自己能被server端识别的名称
  • 启动服务
[root@k8s-master01 zabbix]# systemctl enable --now zabbix-agent.service
  • 查看端口是否已开启
[root@k8s-master01 zabbix]# ss -ntul |grep 10050
tcp    LISTEN     0      128       *:10050                 *:*  
  • 已经开启成功就可以去 server 端添加主机了,其他主机进行同样的操作,唯一不同的就是配置文件中的 Hostname 要设为对应主机名

ok 搞定!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐