zabbix监控系统

Posted dezasseis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix监控系统相关的知识,希望对你有一定的参考价值。

一、zabbix简介

01_zabbix简介

zabbix官网
zabbix中文手册
监控工具mrtg,cacti,rrdtool,nagios,zabbix比较和安装

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

02_zabbix功能

数据采集

可用性和性能检查;
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
自定义检查;
按照自定义的时间间隔采集需要的数据;
通过 Server/Proxy 和 Agents 来执行数据采集。

灵活的阈值定义

您可以参考后端数据库定义非常灵活的告警阈值,即触发器

高度可配置化的告警

可以根据递增计划、接收者、媒介类型自定义发送告警通知;
使用宏变量可以使告警通知变得更加高效有用;
自动操作包含远程执行命令。

实时图形

使用内置图形功能可以将监控项实时绘制成图形。

Web 监控功能

Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。

丰富的可视化选项

可以组合多个监控项到单个视图中,创建自定义图表;
网络拓扑图;
以仪表盘样式展示自定义聚合图形和幻灯片演示;
报表;
监控资源的更高层次展示视图(业务视图)。

历史数据存储

存储在数据库中的数据;
历史配置;
内置数据管理机制(housekeeping)。

配置简单

将被监控设备添加为主机;
主机一旦添加到数据库中,就会采集数据用于监控;
将模板用于监控设备。

使用模板

模板中分组检查;
模板可以关联模板,继承已关联模板的属性。

网络发现

自动发现网络设备;
Zabbix Agent 发现设备后自动注册;
自动发现文件系统、网络接口和 SNMP OIDs 值。

快捷的 Web 界面

基于 php 的 Web 前端;
可以从任何地方访问;
您可以定制自己的操作方式;
您可以通过审计日志来查看你的操作。

Zabbix API

Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。

权限管理系统

安全的用户身份验证;
指定的用户只能查看指定的权限范围内的视图。

功能强大且易于扩展的 Zabbix Agent

部署于被监控对象上;
支持 Linux 和 Windows ;

二进制守护进程

为了更好的性能和更少的内存占用,采用 C 语言编写;
便于移植。

适应更复杂的环境

使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。

03_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 的配置变得更加灵活易用。

04_zabbix常用术语

zabbix常用术语

二、server端安装与配置

01_ 配置软件仓库

可以用官网yum源,但使用阿里云镜像网站,速度更快!

获取官方yum源方式
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

本实验选择阿里源
vim /etc/yum.repos.d/zabbix.repo

[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch 
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0

02_zabbix-server的数据库安装与配置

server1:172.25.2.1

  • 安装mysql 数据库
    yum install -y zabbix-server-mysql
    yum install -y mariadb-server
  • 开启数据库服务
    systemctl start mariadb
    systemctl enable mariadb
  • 创建数据库:mysql
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by '密码';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;

在这里插入图片描述

  • 使用 MySQL 来导入 Zabbix server 的初始数据库 schema 和数据
    cd /usr/share/doc/zabbix-server-mysql-4.0.31/
    zcat create.sql.gz | mysql -uzabbix -pwestos zabbix
    在这里插入图片描述 配置数据库
    vim /etc/zabbix/zabbix_server.conf
DBHost=localhost#默认
DBName=zabbix#默认
DBUser=zabbix#默认
DBPassword=westos

在这里插入图片描述

  • 开启zabbix服务
    systemctl enable --now zabbix-server
  • 查看开启是否成功
    ps ax
    在这里插入图片描述
    cat /var/log/zabbix/zabbix_server.log 无error

03_安装zabbix-agent

yum install -y zabbix-agent
systemctl enable --now zabbix-agent
netstat -antlupe | grep zabbix:查看端口
在这里插入图片描述

04_前端配置

  • 安装
    yum list php:查看php版本为 5.4.16-46.el7
    yum install -y zabbix-web-mysql
    yum install -y php-mbstring-5.4.16-46.el7.x86_64.rpm(阿里云可下载)
    yum install -y php-bcmath-5.4.16-46.el7.x86_64.rpm(阿里云可下载)
  • 修改时区
    vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
  • 修改字体
    cd /usr/share/zabbix/assets/fonts/:下载 simkai.ttf 到此目录下
    chmod 777 simkai.ttf
    vim /usr/share/zabbix/include/defines.inc.php
执行:%s/graphfont/simkai/g
  • 开启Apache
    systemctl enable --now httpd

在这里插入图片描述

  • 访问:http://172.25.2.1/zabbix/
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、agent端配置(被监控主机)

server2:172.25.2.2
server3:172.25.2.3

  • 配置软件仓库
    vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch 
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
  • 安装zabbix-agent(所有agent端必须安装)
    yum install -y zabbix-agent
  • 配置
    vim /etc/zabbix/zabbix_agentd.conf:编辑主配置文件
Server=172.25.2.1#监控系统server端的IP
ServerActive=172.25.2.1#监控系统server端的IP
Hostname=server2或server3 #agent端 本机的hostname

vim /etc/hosts:配置解析

172.25.2.1	server1
172.25.2.2	server2
172.25.2.3	server3
  • 开启服务
    systemctl enable --now zabbix-agent.service

  • 日志文件:
    cat /var/log/zabbix/zabbix_agentd.log
    在这里插入图片描述

四、手动添加被监控agent主机

官方文档配置相关内容

  1. 选择1. “配置”–2. “主机”–3. “创建主机”
  2. 创建主机
    在这里插入图片描述

在这里插入图片描述

  1. 给主机添加模板
    在这里插入图片描述
  2. 稍等片刻后,添加主机的ZBX图标变绿后,则添加成功且监控成功!
    在这里插入图片描述

五、自动化添加被监控主机

01_server端自动发现

  1. 启用“自动发现”动作
    在这里插入图片描述
  2. 启用“自动发现”规则
    在这里插入图片描述
  3. 检测:成功自动发现server3
    在这里插入图片描述

02_agent端自动注册

  1. 禁用自动发现,以免干扰本次实验
    在这里插入图片描述
  2. 因主机有限,删除server3
    在这里插入图片描述
  3. 创建“自动注册”
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  1. 重启server3的agent服务

systemctl restart zabbix-agent.service

  1. 查看,server3自动注册成功!

在这里插入图片描述

  1. 成功后停用掉自动注册,进行后面实验
    在这里插入图片描述

六、API

官方操作指导

01_API梗概

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。广泛用于:

  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。

Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:

  • 该API包含一组独立的方法;
  • 客户端和API之间的请求和响应使用JSON格式进行编码。

结构

  • Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host
    这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。
  • 大多数API至少包含四种方法: get, create, update 和 delete,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

server1:172.25.2.1

02_获取身份认证令牌 user.login

请求对象属性:

  • jsonrpc :API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;
  • method :被调用的API方法名;
  • params :将被传递给API方法的参数;
  • id :请求的任意标识符;
  • auth:用户认证令牌; 因为我们还没有一个,它的设置null。
curl -s -XPOST http://172.25.2.1/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
}' | python -m json.tool

在这里插入图片描述

响应对象属性:

  • jsonrpc : JSON-RPC协议的版本;
  • result -:方法返回的数据;
  • id:相应请求的标识符。

03_检索主机 host.get

vim get_zabbix_api.sh

curl -s -XPOST http://172.25.2.1/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": 1,
    "auth": "bca627f5f2aa8e50d0ee8ccbfcba5f13"
}' | python -m json.tool

在这里插入图片描述

04_删除主机 host.delete

vim del_zabbix_api.sh

curl -s -XPOST http://172.25.2.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
	"10273"
    ],
    "id": 1,
    "auth": "bca627f5f2aa8e50d0ee8ccbfcba5f13"
}' | python -m json.tool

在这里插入图片描述server3已删除
在这里插入图片描述

05_创建主机 host.create

vim create_zabbix_api.sh

curl -s -XPOST http://172.25.2.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server3",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.2.3",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"
            }
        ],
        "templates": [
            {
                "templateid": "10001"
            }
        ],
        "inventory_mode": 0,
        "inventory": {
            "macaddress_a": "01234",
            "macaddress_b": "56768"
        }
    },
    "auth": "bca627f5f2aa8e50d0ee8ccbfcba5f13",
    "id": 1
}' | python -m json.tool

在这里插入图片描述server3已创建

在这里插入图片描述

七、添加httpd模板

server2:172.25.2.2

  • agent端配置httpd
    yum install -y httpd
    systemctl enable --now httpd
    echo server2 > /var/www/html/index.html

  • 添加模板
    在这里插入图片描述

八、创建nginx监控项

server3:172.25.2.3

  • 源码安装nginx
    tar zxf nginx-1.18.0.tar.gz
    cd nginx-1.18.0
    yum install -y gcc pcre-devel openssl-devel:安装gcc、pcre-devel、openssl-devel
    vim auto/cc/gcc
#CFLAGS="$CFLAGS -g"
#注释此行(127行),关闭debug,可以使安装后的二进制文件更小

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module configure脚本,指定安装路径等参数

make && make install

  • 创建软连接
    cd /usr/local/nginx/sbin/
    ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

  • 配置文件
    vim /usr/local/nginx/conf/nginx.conf

location /status {
        stub_status on;
        access_log off;#不记录日志
        allow 127.0.0.1;
        deny all;
}

在这里插入图片描述

nginx -t
nginx

在这里插入图片描述
Active connections 并发连接数
accepts 允许连接次数
handled 建立tcp三次握手次数
requests 处理请求次数

  • 压测实验(主机):
    ab -c10 -n 1000 http://172.25.2.3/index.html
    server3监控成功ing:
    在这里插入图片描述
  • 添加监控项的key
    vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk 'NR==3{print $1}'
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk 'NR==3{print $2}'
UserParameter=nginx.request,curl -s http://127.0.0.1/status | awk 'NR==3{print $3}'

systemctl restart zabbix-agent.service:重启服务
在这里插入图片描述

  • 在server端测试监控项的key(server1)
    yum install -y zabbix-get:server1安装zabbix-get
    zabbix_get -s 192.168.17.3 -p 10050 -k "nginx.active"
    zabbix_get -s 172.25.2.3 -p 10050 -k "nginx.accept"
    zabbix_get -s 172.25.2.3 -p 10050 -k "nginx.handled"
    zabbix_get -s 172.25.2.3 -p 10050 -k "nginx.request"
    在这里插入图片描述
  • 创建监控项
    在这里插入图片描述其他三个同理

在这里插入图片描述

  • 查看监控结果

在这里插入图片描述

以上是关于zabbix监控系统的主要内容,如果未能解决你的问题,请参考以下文章

zabbix概念

Zabbix Server Trapper远程代码执行漏洞(CVE-2017-2824)

为主机添加zabbix监控

zabbix使用zabbix-java-gateway监控jvm/tomcat性能

zabbix使用zabbix_java_gateway 监控java应用进程

使用Zabbix+Grafana监控