前言

1、Zabbix的版本,选择LTS版本
2、Zabbix的成员
	1)Server
		Server:核心组件,安装在监控设备上,实现存储、告警
		web:php的页面
		db:mysql postgresql
	2)Agent
		客户端组件,安装在被监控设备,代理客户端统计被监控设备的所有数据,通过主动或被动的方式提交给Server
	3)Agent2
		Agent的升级版,优化Agent的性能,无缝衔接Agent的配置
	4)Proxy
		代理Server,实现分布式监控
	5)Zabbix-get
		在服务端调用被监控的设备

Zabbix生产环境部署

角色 主机名 IP 部署软件
Zabbix-Server zabbix 10.0.0.71 zabbix-server zabbix-web zabbix-agent nginx1.18 php7.2
MySQLDB db01 10.0.0.51 mysql5.7
Zabbix-Client web01 10.0.0.7 zabbix-agent2
Zabbix-Client web02 10.0.0.8 zabbix-agent2
Zabbix-Client lb01 10.0.0.5 zabbix-agent2

1、部署Zabbix-Server

1)安装nginx

# cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# yum install -y nginx

2)安装php7.2

# yum install -y epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install -y php72w-fpm php72w-gd php72w-bcmath php72w-xml php72w-mbstringphp72w-ldap php72w-mysqlnd

3)配置nginx

# mkdir /html
# mv /etc/nginx/conf.d/default.conf{,.bak}
# cat /etc/nginx/conf.d/zabbix.conf
server {
		listen 80;
		server_name localhost;
		location / {
			root /html;
			index index.php index.html;
}
		location ~ \.php$ {
			root /html;
			fastcgi_pass 127.0.0.1:9000;
			fastcgi_index index.php;
			fastcgi_param SCRIPT_FILENAME 		$document_root$fastcgi_script_name;
			include fastcgi_params;
}
}

4)配置php-fpm

# sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf
# sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf

5)启动nginx和php-fpm

# systemctl start nginx php-fpm
# systemctl enable nginx php-fpm

6)部署zabbix-web

# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.8.tar.gz
# tar xf zabbix-5.0.8.tar.gz
# mv zabbix-5.0.8/ui/* /html/
# chown -R nginx.nginx /html

7)首次访问会报500错误,解决办法

# mkdir -p /var/lib/php/session
# chown -R nginx.nginx /var/lib/php/session/

第二次访问

解决方法

# vim /etc/php.ini
# 修改下面六行
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/Shanghai
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

# systemctl restart php-fpm

8)部署zabbix-server

//1.配置zabbix5.0的清华大学源
# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g'
/etc/yum.repos.d/zabbix.repo

//2.安装zabbix-server
# yum install -y zabbix-server-mysql

//3.导入zabbix初始数据库 !!!在这之前需以部署好mysql,并授权对应数据库
# zcat /usr/share/doc/zabbix-server-mysql-5.0.39/create.sql.gz | mysql -uzabbix -h'10.0.0.51' -p'Wjx123.com' zabbix
#如果显示没有mysql命令,安装mariadb即可
# yum install -y mariadb

//4.配置zabbix-server
# vim /etc/zabbix/zabbix_server.conf
DBHost=10.0.0.51
DBName=zabbix
DBUser=zabbix
DBPassword=Wjx123.com
DBSocket=/tmp/mysql.sock

//5.启动zabbix-server
# systemctl start zabbix-server
# systemctl enable zabbix-server
# ss -an | grep :10051

2、部署MySQL

#1.下载MySQL官方扩展源
# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
# 或部署清华大学镜像源
# cat /etc/yum.repos.d/mysql-community.repo
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-
community-el7-$basearch/
enabled=1
gpgcheck=0
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-
el7-$basearch/
enabled=1
gpgcheck=0
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql

[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-
el7-$basearch/
enabled=1
gpgcheck=0
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql

#2.安装mysql5.7, 文件过大可能会导致下载缓慢
# yum install mysql-community-server -y

#3.启动数据库, 并加入开机自启动
# systemctl start mysqld
# systemctl enable mysqld

#4.由于mysql5.7默认配置了默认密码, 需要过滤temporary password关键字查看对应登陆数据库密码
# grep "temporary password" /var/log/mysqld.log

#5.修改mysql数据库管理root密码
# mysqladmin -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log) password 'Wjx123.com'

#6.登录mysql,创建zabbix所需数据库,并授权
# mysql -uroot -pWjx123.com
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all on zabbix.* to 'zabbix'@'%' identified by 'Wjx123.com';

初始账号:Admin

初始密码:zabbix

调整中文

3、部署Zabbix-Client

Zabbix 5.0 版本推出了使用 go 语言重写的 Agent2,也是 5.0 版本新特性,Agent2 有如下特性:

  • 完整的插件框架支持,可扩张服务及应用监控
  • 支持灵活的采集周期调度
  • 更高效的数据采集及传输
  • 可完全替换先有的 agent

特性较多,建议使用。由于使用 go 语言编写,编译安装与之前版本有所区别。Agent2 默认使用的 10050
端口,与 Zabbix Agent 端口一样,不修改端口情况下,同一台机器不能同时启动 Zabbix Agent 与
Zabbix Agent2。

1)安装agent监控主机web01

# yum install zabbix-agent -y
# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.9-1.el7.x86_64.rpm

# systemctl start zabbix-agent
# systemctl enable zabbix-agent
# ss -an | grep :10050

2)安装agent2监控主机web02

#1.安装zabbix-agent2
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.8-1.el7.x86_64.rpm
#2.配置
vim /etc/zabbix/zabbix_agent2.conf
Server=10.0.0.71

#3.启动
systemctl start zabbix-agent2.service
systemctl enable zabbix-agent2.service
# ss -anpt | grep 10050
LISTEN 		0 		128 		[::]:10050 			[::]:*
users:(("zabbix_agent2",pid=12010,fd=6))

zabbix添加web01

4、Zabbix自动发现与主动注册

4.1自动发现

在主机较多的时候,纯手工添加监控主机的效率势必低下,所以我们可以利用zabbix的自动发现代替手动的添加主机,减轻工作量。自动发现由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中符合条件的服务器、设备。

1.客户端zabbix-agent和zabbix-agent2都可以,修改配置文件,只需指定Server即可

1.修改配置文件
# vim /etc/zabbix/zabbix_agent2.conf
Server=10.0.0.71
ServerAactive=10.0.0.71

# 自动发现,默认读取/etc/hosts里面的主机解析名,如果没有做解析,则默认选择使用ip作为名称,与下
面两个参数无关
# Hostname=Zabbix server
# HostnameItem=system.hostname

2.启动agent2服务
# systemctl start zabbix-agent2
# systemctl enable zabbix-agent2

2.登录zabbix-web创建发现规则

3.创建自动发现的动作

等待一会,能自动添加到主机则表示成功!

4.2主动注册

自动发现是zabbix server去扫描服务器设备,把符合条件的主机添加到监控Host列表中,主动注册是Active agent主动与zabbix server通信,最后由zabbix server将符合条件的agent加到监控host里。如果服务器特别多,推荐使用主动注册。

1.安装zabbix-agent2
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.8-1.el7.x86_64.rpm

2.lb01上安装zabbix-agent2,修改配置文件
# vim /etc/zabbix/zabbix-agent2.conf
Server=10.0.0.71
ServerActive=10.0.0.71
#Hostname=Zabbix server
HostnameItem=system.hostname
HostMetadata=Linux

# 主动注册,默认先读取Hostname的值,如果Hostname注释了,则读取HostnameItem的值
# 定义主机元数据,如果没定义该参数,继续读取HostMetadataItem的参数:
HostMetadata=Linux
# HostMetadataItem=system.uname

3.启动服务
# systemctl start zabbix-agent2
# systemctl enable zabbix-agent2

Zabbix-web的操作

等待一会,lb01自动注册成功

5、Zabbix自定义监控

5.1什么是监控项

监控项:就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状态等等

  • 每一个监控项,都有一个唯一的key,简洁明了(相当于shell脚本的变量名)
  • 只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没有使用所有监控项 ,Template OS Linux by Zabbix agent主要监控了cpu,内存,磁盘,网卡,安全,它们都属于通用监控
  • 应用集是监控项的分组
6.2 使用内置key监控nginx的状态

可以使用自带的图形化测试取值

解决中文乱码

#在windos中找到C:\Windows\Fonts
复制黑体字体,上传到Zabbix服务端的/html/assets/fonts/
rz -E

#备份默认字体
# mv DejaVuSans.ttf DejaVuSans.ttf.bak
重命名字体名称为DejaVuSans.ttf
# mv simhei.ttf DejaVuSans.ttf
# ls
DejaVuSans.ttf  DejaVuSans.ttf.bak

6.3自定义监控项

例:监控Zabbix数据库中hosts表的行

/usr/bin/mysql -uroot -pWjx123.com -e "select table_rows from information_schema.tables where table_schema='zabbix' and table_name='hosts';" 2> /dev/null | tail -1

[root@db01 zabbix_agent2.d]# cat mysql_hosts_rows.conf 
UserParameter=mysql_user_rows,/usr/bin/mysql -uroot -pWjx123.com -e "select table_rows from information_schema.tables where table_schema='zabbix' and table_name='hosts';" 2> /dev/null | tail -1

systemctl restart zabbix-agent2

[root@zabbix ~]# yum install zabbix-get -y
[root@zabbix ~]# zabbix_get -s 10.0.0.51 -p 10050 -k "mysql_user_rows"
224

1)监控系统中的对象

(系统监控命令 + awk + 筛选条件 = 状态值)
iostat | awk '/^sda/{print $2}'

2)在 ZabbixAgent 的 /etc/zabbix/zabbix_agentd.d/ 目录中新增监控项, 使用 UserParameter=,

[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/iotop.conf
UserParameter=iotps,iostat | awk '/^sda/{print $2}'
[root@web01 ~]# systemctl restart zabbix-agent2

3)在 ZabbixAgent 客户端测试设置的监控项是否正常,使用 zabbix_agentd -p | grep KEY 检测是否能获取到对应的值

[root@web01 ~]# zabbix_agent2 -p |grep iotps
iotps 								[t|1.72]

4)在 Zabbixserver 端测试获取 ZabbixAgent 端自定义的监控项是否正常 zabbix_get -s IP_addr -k KEY

[root@zabbix ~]# yum install zabbix-get -y
[root@zabbix ~]# zabbix_get -s 10.0.0.7 -p10050 -k iotps
1.05

5)在 Zabbix-Web 前端界面进行关联展示

点击配置->主机->对应主机->监控项->创建监控项->名称->键值(监控项目名称)->信息类型->单位

点击监测->最新数据->等待数据

6)自定义阈值(到达预设的瓶颈)

选择配置->主机->对应主机->触发器->创建触发器->名称->

表达式一定要选择对应的监控项进行设定({web01-10.0.0.7:system.users.num.last()}>1)->确认

7)验证 Zabbix 报警

1.开启多个会话窗口,测试前端报警
2.前端Zabbix面板报警开启方式->右上角小人头->正在发送消息->开启即可

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐