文章目录

  • Zabbix介绍
  • Zabbix架构
  • server5安装zabbix-server
  • 实验步骤
  • 解决报错一(安装zabbix-web-mysql-scl出错)
  • 解决报错二(无法连接数据库)
  • server6安装zabbix-agent
  • 批量添加客户端
  • 自动发现
  • 自动注册
  • API接口(适合开发人员)
  • Zabbix监控
  • 监控httpd服务
  • 监控nginx服务


Zabbix介绍

zabbix官网

  • Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
  • Zabbix 是一个企业级分布式开源监控解决方案。
  • Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能。
  • Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
  • Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。

Zabbix架构

zabbix中文参考手册 Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。

  • SERVER: Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
  • 数据库: 所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
  • WEB 界面: 为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
  • PROXY: Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
  • AGENT: Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
  • 数据流: 另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。

server5安装zabbix-server

zabbix-yum源下载地址

1.准备三台虚拟机:server5负责zabbix-server端,server6、7负责zabbix-agent端

2.配置zabbix的yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

3.在server5上安装zabbix-server和zabbix-agent
yum install -y zabbix-server-mysql zabbix-agent

4.安装数据库mariadb(mysql的分支)
yum install -y mariadb-server
systemctl enable --now mariadb

mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'lyueyue';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';

5.向新建的zabbix库中导入初始架构和数据,输入新创建的密码。
zcat /usr/share/doc/zabbix-server-mysql-5.0.19/create.sql.gz | mysql -uzabbix -p zabbix    #zcat命令查看压缩文件的内容,而无需对其进行解压缩

6.为zabbix-server配置数据库
vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=lyueyue

7.开启服务
systemctl enable --now zabbix-server.service

8.查看端口10051和进程
netstat -antlp
ps ax

9.在server5上安装zabbix-web前端
首先更改镜像源(解决报错)
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...

vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base 
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/sclo/x86_64/rh/
gpgcheck=0
enabled=1

重新安装
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

10.修改zabbix.conf文件的时区,并启动httpd服务(zabbix是通过httpd发布web的)
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 
php_value date.timezone Asia/Shanghai 

11.启动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

12.安装web界面
http://192.168.1.21/zabbix
具体步骤详见:web界面安装官网 https://www.zabbix.com/documentation/5.0/zh/manual/installation/frontend

实验步骤

配置Zabbix监控的讲解 zabbix 监控系统_json


配置Zabbix监控的讲解 zabbix 监控系统_运维_02


配置Zabbix监控的讲解 zabbix 监控系统_运维_03


配置Zabbix监控的讲解 zabbix 监控系统_linux_04


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_05


配置Zabbix监控的讲解 zabbix 监控系统_nginx_06


配置Zabbix监控的讲解 zabbix 监控系统_linux_07


配置Zabbix监控的讲解 zabbix 监控系统_nginx_08

配置Zabbix监控的讲解 zabbix 监控系统_linux_09


查看进程及端口

配置Zabbix监控的讲解 zabbix 监控系统_linux_10


配置Zabbix监控的讲解 zabbix 监控系统_运维_11

解决报错一(安装zabbix-web-mysql-scl出错)

出现报错-需要订阅官方

配置Zabbix监控的讲解 zabbix 监控系统_linux_12


安装软件报错

配置Zabbix监控的讲解 zabbix 监控系统_nginx_13


配置Zabbix监控的讲解 zabbix 监控系统_nginx_14


更改镜像源

配置Zabbix监控的讲解 zabbix 监控系统_linux_15


配置Zabbix监控的讲解 zabbix 监控系统_nginx_16


配置Zabbix监控的讲解 zabbix 监控系统_linux_17


配置Zabbix监控的讲解 zabbix 监控系统_json_18


重新安装

配置Zabbix监控的讲解 zabbix 监控系统_json_19


安装成功

配置Zabbix监控的讲解 zabbix 监控系统_json_20


修改时区

配置Zabbix监控的讲解 zabbix 监控系统_运维_21


配置Zabbix监控的讲解 zabbix 监控系统_linux_22


安装web界面

配置Zabbix监控的讲解 zabbix 监控系统_json_23


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_24

解决报错二(无法连接数据库)

配置Zabbix监控的讲解 zabbix 监控系统_linux_25


解决办法:不在虚拟机中的浏览器内安装zabbix前端界面,改为在宿主机(真机)中配置

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_26


配置Zabbix监控的讲解 zabbix 监控系统_linux_27


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_28


配置Zabbix监控的讲解 zabbix 监控系统_json_29


配置Zabbix监控的讲解 zabbix 监控系统_json_30


开始配置

配置Zabbix监控的讲解 zabbix 监控系统_json_31


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_32

server6安装zabbix-agent

1.在server6上安装zabbix-agent
scp /etc/yum.repos.d/zabbix.repo server6:/etc/yum.repos.d/
vim /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-agent

2.修改zabbix配置文件
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.21      #原来是127.0.0.1是主动模式,现在为被动模式,指向server5
ServerActive=192.168.1.21
Hostname=server6

3.启动zabbix-agent
systemctl enable --now zabbix-agent

4.查看日志
cat /var/log/zabbix/zabbix_agentd.log

5.在server端(server5)创建主机>设置主机>添加模板

配置Zabbix监控的讲解 zabbix 监控系统_运维_33


配置Zabbix监控的讲解 zabbix 监控系统_运维_34


配置Zabbix监控的讲解 zabbix 监控系统_linux_35


配置Zabbix监控的讲解 zabbix 监控系统_json_36


修改zabbix配置文件

配置Zabbix监控的讲解 zabbix 监控系统_linux_37


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_38


配置Zabbix监控的讲解 zabbix 监控系统_json_39


配置Zabbix监控的讲解 zabbix 监控系统_运维_40


配置Zabbix监控的讲解 zabbix 监控系统_nginx_41


配置Zabbix监控的讲解 zabbix 监控系统_运维_42


设置主机

配置Zabbix监控的讲解 zabbix 监控系统_运维_43


添加模板

配置Zabbix监控的讲解 zabbix 监控系统_json_44


配置Zabbix监控的讲解 zabbix 监控系统_nginx_45


添加server6完成

配置Zabbix监控的讲解 zabbix 监控系统_nginx_46

批量添加客户端

再配置一台虚拟机server7,步骤同server6

自动发现

1.启用自动发现动作

2.设置自动发现规则

配置Zabbix监控的讲解 zabbix 监控系统_linux_47


配置Zabbix监控的讲解 zabbix 监控系统_nginx_48


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_49


配置Zabbix监控的讲解 zabbix 监控系统_运维_50


自动发现server7

配置Zabbix监控的讲解 zabbix 监控系统_json_51

自动注册

将配置还原到上一步自动发现前

配置Zabbix监控的讲解 zabbix 监控系统_nginx_52


配置Zabbix监控的讲解 zabbix 监控系统_nginx_53


配置Zabbix监控的讲解 zabbix 监控系统_运维_54


设置自动注册

1.创建自动注册动作

2.设置触发条件

3.添加到主机群组

4.链接到模板

5.主动触发server端
systemctl enable --now zabbix-agent

配置Zabbix监控的讲解 zabbix 监控系统_linux_55


设置触发条件

配置Zabbix监控的讲解 zabbix 监控系统_json_56


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_57


添加到主机群组

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_58


链接到模板

配置Zabbix监控的讲解 zabbix 监控系统_运维_59


配置Zabbix监控的讲解 zabbix 监控系统_linux_60


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_61


主动触发server端

配置Zabbix监控的讲解 zabbix 监控系统_json_62


成功

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_63

API接口(适合开发人员)

API-官方参考文档

1.生成身份验证令牌
[root@server5 ~]# curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
     "jsonrpc": "2.0",
     "method": "user.login",
     "params": {
         "user": "Admin",
         "password": "zabbix"
     },
     "id": 1,
     "auth": null
}'
{"jsonrpc":"2.0","result":"4a7f3cf4ae4834e7d265b47081064a19","id":1}You have new mail in /var/spool/mail/root   #result后面是token

2.主机检索(使用生成的token编写脚本zabbix_api.sh)
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "4a7f3cf4ae4834e7d265b47081064a19"
}' | python -m json.tool

sh zabbix_api.sh

3.主机删除
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10437"       #server7的hostid是10437(由上一步可知)
    ],
    "id": 2,
    "auth": "4a7f3cf4ae4834e7d265b47081064a19"
}' | python -m json.tool

sh zabbix_api.sh

4.主机创建
vim zabbix_api.sh
curl -s -XPOST http://192.168.1.21/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server7",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.1.23",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"
            }
        ],
        "templates": [
            {
                "templateid": "10001"
            }
        ]
    },
    "auth": "4a7f3cf4ae4834e7d265b47081064a19",
    "id": 1
}' | python -m json.tool

sh zabbix_api.sh

开始前准备

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_64


正式开始

配置Zabbix监控的讲解 zabbix 监控系统_linux_65


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_66


主机检索

配置Zabbix监控的讲解 zabbix 监控系统_运维_67


配置Zabbix监控的讲解 zabbix 监控系统_json_68


删除主机server7

配置Zabbix监控的讲解 zabbix 监控系统_运维_69


删除成功

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_70


配置Zabbix监控的讲解 zabbix 监控系统_nginx_71


主机添加

如何查看组id?

配置Zabbix监控的讲解 zabbix 监控系统_nginx_72


配置Zabbix监控的讲解 zabbix 监控系统_运维_73


如何得到模板id?

配置Zabbix监控的讲解 zabbix 监控系统_json_74


配置Zabbix监控的讲解 zabbix 监控系统_运维_75


创建主机server7成功

配置Zabbix监控的讲解 zabbix 监控系统_json_76


配置Zabbix监控的讲解 zabbix 监控系统_运维_77

Zabbix监控

监控httpd服务

1.在server6上安装httpd服务、启动服务、设置默认发布页
yum install -y httpd
systemctl enable --now httpd
echo server2 > /var/www/html/index.html
curl 192.168.1.22

2.使用模板监控

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_78


设置模板

配置Zabbix监控的讲解 zabbix 监控系统_nginx_79


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_80


配置Zabbix监控的讲解 zabbix 监控系统_json_81


配置Zabbix监控的讲解 zabbix 监控系统_linux_82


配置Zabbix监控的讲解 zabbix 监控系统_linux_83


配置Zabbix监控的讲解 zabbix 监控系统_运维_84

监控nginx服务

1.在server7上安装配置nginx
yum install gcc pcre-devel openssl-devel -y
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0
vim auto/cc/gcc

编译安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

设置环境变量
vim .bash_profile
source .bash_profile

启动nginx
nginx

修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
        location /status {
            stub_status on;
            access_log off;
        }
nginx -s reload

2.测试
在浏览器中输入http://192.168.1.23/status

3.创建模板(定义监控项)
cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'      #逗号前是key,逗号后是value
systemctl restart zabbix-agent.service

4.在server端校验(手动获取)
yum install -y zabbix-get.x86_64
zabbix_get -s 192.168.1.23 -p 10050 -k 'nginx.active'

5.设置自动获取:web方式

6.创建图形监控

配置Zabbix监控的讲解 zabbix 监控系统_运维_85


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_86


配置Zabbix监控的讲解 zabbix 监控系统_nginx_87


配置Zabbix监控的讲解 zabbix 监控系统_运维_88


配置Zabbix监控的讲解 zabbix 监控系统_运维_89


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_90


配置Zabbix监控的讲解 zabbix 监控系统_运维_91


配置Zabbix监控的讲解 zabbix 监控系统_运维_92


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_93


开始测试

配置Zabbix监控的讲解 zabbix 监控系统_json_94


配置Zabbix监控的讲解 zabbix 监控系统_运维_95


配置Zabbix监控的讲解 zabbix 监控系统_linux_96


在server5上安装软件

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_97


server端将key传递给agent(192.168.1.23),agent调用脚本返回value至server端

配置Zabbix监控的讲解 zabbix 监控系统_nginx_98


设置自动获取

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_99


配置Zabbix监控的讲解 zabbix 监控系统_运维_100


配置Zabbix监控的讲解 zabbix 监控系统_nginx_101


配置Zabbix监控的讲解 zabbix 监控系统_nginx_102


配置Zabbix监控的讲解 zabbix 监控系统_运维_103


创建图形监控

配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_104


配置Zabbix监控的讲解 zabbix 监控系统_nginx_105


配置Zabbix监控的讲解 zabbix 监控系统_nginx_106


配置Zabbix监控的讲解 zabbix 监控系统_linux_107


配置Zabbix监控的讲解 zabbix 监控系统_json_108


配置Zabbix监控的讲解 zabbix 监控系统_配置Zabbix监控的讲解_109