目录

一、原理及架构

1、什么是zabbix

2、结构体系

3、原理图

4、通信过程

二、安装和使用

1、安装zabbix的相关软件

2、安装配置初始数据库

3、修改配置文件

4、启动Zabbix server和agent进程,并为它们设置开机自启

5、关闭防火墙和selinux

6、测试

7、添加监控主机

三、添加监控项

1、编写采集数据的脚本

2、编写自定义的用户参数文件

3、测试

一、原理及架构

1、什么是zabbix

Zabbix 是一个企业级的开源分布式监控解决方案, 可以监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性。

Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应

2、结构体系

zabbix主要由以下几个软件组成:

server: Zabbix server 是 agents 向其报告可用性和完整性信息和统计信息的中心组件。server 是存储所有配置、统计和操作数据的中央存储库

数据存储库:Zabbix 收集的所有配置信息以及数据都存储在数据库中。

web界面:为了从任何地方和任何平台轻松访问,Zabbix 提供了基于 Web 的界面。该接口是 Zabbix server 的一部分,通常(但不一定)与 server 运行在同一台设备上。

Proxy: Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据。对于分散单个 Zabbix server 的负载非常有用。(分布式)

agent:Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix server。

3、原理图

 

4、通信过程

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy

第一部分:获取active items

  • Agent打开tcp连接
  • Agent请求items检测列表
  • server返回items列表,Agent处理响应
  • 关闭tcp连接,Agent开始收集数据

第二部分:提交数据(主动检测)

  • Agent建立tcp连接
  • Agent提交items列表收集的数据
  • server处理,并返回响应状态
  • 关闭tcp连接

二、安装和使用

1、安装zabbix的相关软件

#下载zabbix的仓库源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm


#安装zabbix server和zabbix agent
yum install zabbix-server-mysql zabbix-agent


#下载前端web和数据库,这里我选择web软件是Apache
yum install centos-release-scl
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

编辑配置文件

#修改仓库文件,启用前端的源
vim /etc/yum.repos.d/zabbix.repo

[zabbix-frontend]
...
enabled=1
...

2、安装配置初始数据库

#安装mariadb数据库
yum install mariadb mariadb-server -y


#设置开机自启动
service mariadb start
systemctl enable  mariadb.service

#登录MySQL数据库
mysql -uroot -p

#创建zabbix数据库
create database zabbix character set utf8 collate utf8_bin;

#创建用户zabbix@localhost 密码是123456,并授权
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@localhost;


#查看当前MySQL有哪些库
show databases;

#退出mysql ,导入初始数据库,会在zabbix库新建很多表
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

#切换用户查看是否导入成功
use zabbix
show tables;

3、修改配置文件

修改zabbix-server的配置文件

#修改连接到数据库的用户名和密码
vim /etc/zabbix/zabbix_server.conf

DBPassword=password

为zabbix前端配置PHP

#修改时区,改为上海
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

php_value[date.timezone] = Asia/Shanghai

4、启动Zabbix server和agent进程,并为它们设置开机自启

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

5、关闭防火墙和selinux

#关闭防火墙并设置开机不启动
service firewalld stop
systemctl disable firewalld

#关闭selinux
setenforce 0
vim /etc/sysconfig/selinux 
SELINUX=disabled

6、测试

浏览器访问本机ip地址: http://192.168.8.26/zabbix

用户名:admin

密码:zabbix

服务器端使用zabbix_get命令测试:yum install zabbix_get -y

zabbix_get -s 192.168.8.26 -p 10050 -k "system.cpu.load[all,avg1]"
 

7、添加监控主机

1、被监控主机上安装zabbix-agent

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent -y  #安装
service zabbix-agent  restart  #启动zabbix-agent服务
Redirecting to /bin/systemctl restart zabbix-agent.service

2、修改配置文件,授权zabbix-server可以过来拉取数据

vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.8.26        #允许的ip地址,过来拿数据
ServerActive=192.168.8.26

#重启服务
service zabbix-agent restart

3、关闭防火墙和selinux

4、测试

zabbix_get -s 192.168.8.26 -p 10050 -k "system.cpu.load[all,avg1]"

三、添加监控项

自定义监控项,监控nginx的状态

1、编写采集数据的脚本

进入zabbix-agent的配置目录:/etc/zabbix/zabbix_agent.d

cd  /etc/zabbix/zabbix_agentd.d

编写一个监控脚本,内容如下:vim nginx_data.sh

#!/bin/bash

HOST="192.168.8.121"
PORT="80"
    case $1 in
        active)
           /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Active/{print $NF}'
            ;;
        reading)
           /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Reading/{print $2}'
	   ;;
        writing)
           /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Writing/{print $4}'
            ;;
        waiting)
           /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk '/Waiting/{print $6}'
            ;;
        accepts)
           /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk 'NR==3 {print $1}'
            ;;
        ping)
             /sbin/pidof nginx | wc -l
            ;;
        handled)
            /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null|  awk 'NR==3{print $2}'
            ;;
        requests)
             /usr/bin/curl --insecure "http://$HOST:$PORT/sc_status" 2>/dev/null| awk 'NR==3{print $3}'
            ;;
esac

2、编写自定义的用户参数文件

UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_data.sh $1

授予可执行权限

chmod +x nginx_data.sh

然后在刷新服务

service zabbix-agent restart

3、测试

在zabbix-server上运行,如下图表示数据获取成功

zabbix_get -k sc.nginx.status[active]  -s 192.168.8.121
1
zabbix_get -k sc.nginx.status[requests]  -s 192.168.0.191
117

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐