zabbix监控的快速部署

前言

在日常的运维工作中,监控是一个很重要的部分,它基本上对于运维来说时时时需要用到的工具。所以我们对于它的应用掌握应十分熟练。
普罗米修斯更适合容器的监控
cpu计量单位:豪核m
200m==0.2个cpu

zabbix介绍

Zabbix 分布式开源监控解决方案。
能够监控众多网络参数和服务器的健康度、完整性。
它使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。使用户可以快速响应服务器问题。
Zabbix 基于存储的数据提供出色的报表和数据可视化功能。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保可以在任何地方访问您监控的网络状态和服务器健康状况。

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功能

数据采集: 可用性和性能检查;支持 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 代理,可以轻松实现分布式远程监控。

zabbix配置

环境:
1.rhel7.6:192.168.1.11
2.一个搭建好了的lnmp平台
3.下载相应的包
在这里插入图片描述MySQL已经安装过了,所以不用再安装

登录数据库,创建zabbix库,用户,和授权:

[root@server1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.30 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
创建库:
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)
创建用户:
mysql> create user zabbix@localhost identified by 'zabbix';  ##密码自己设置的密码
Query OK, 0 rows affected (0.01 sec)
授权:
mysql> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.01 sec)

导入初始架构和数据:

[root@server1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 

在这里插入图片描述

给zabbix server配置数据库

[root@server1 zabbix]# vim /etc/zabbix/zabbix_server.conf 
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

给zabbix前端配置PHP

[root@server1 zabbix]# vim /etc/httpd/conf.d/zabbix.conf 
......
php_value date.timezone Asia/Shanghai
......

启动Zabbix server和agent进程

关闭火墙和selinux

扫描二维码关注公众号,回复: 12649093 查看本文章
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd

查看端口:

[root@server1 zabbix]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10631/mysqld        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      8041/X              
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      8268/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7819/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      7820/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      8215/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      11021/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      12594/zabbix_server 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::80                   :::*                    LISTEN      11019/httpd         
tcp6       0      0 :::6000                 :::*                    LISTEN      8041/X              
tcp6       0      0 :::22                   :::*                    LISTEN      7819/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      7820/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      8215/master         

访问zabbix

在这里插入图片描述这里填服务器名称

在这里插入图片描述登录,同户名为Admin,密码为zabbix
在这里插入图片描述界面如下:
在这里插入图片描述本机不仅时server,还是agent,所以作为agent可以看到
在这里插入图片描述

zabbix监控功能的实现

手动添加主机到监控群

环境:
首先,先起两个agent:
agent1:192.168.1.12
agent2:192.168.1.13

1.安装zabbix-agent

[root@agent1 /]# yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm
[root@agent2 /]# yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm

2.创建主机
在这里插入图片描述可以看到,已经添加成功!但是还没有启用成功。
在这里插入图片描述3.添加监控模板
在这里插入图片描述4.配置zabbix agent

[root@agent1 /]# vim /etc/zabbix/zabbix_agentd.conf 
Server=192.168.1.11  ##被动模式
ServerActive=192.168.1.11   ##主动模式
Hostname=agent1  ##主机名

5.开启agent

[root@agent1 /]# systemctl start zabbix-agent.service 

在这里插入图片描述

zabbix配置自动发现

先删除前面的主机
配置自动发现动作:

在这里插入图片描述配置动作:
在这里插入图片描述配置自动发现:
在这里插入图片描述配置自动发现规则:
在这里插入图片描述重启zabbix server:

[root@server1 zabbix]# systemctl restart zabbix-server

刷新后,页面自动添加!
在这里插入图片描述

zabbix配置自动注册

自动发现server端主动扫描网段中的所有符合条件的主机
自动注册是客户端自己与server端通信加入集群
实验:
再添加一个agent2:192.168.1.13

1.禁用自动发现:
在这里插入图片描述
在这里插入图片描述2.给agent2安装zabbix agent

3.配置并启动zabbix agent

Server=192.168.1.11  ##被动模式
ServerActive=192.168.1.11   ##主动模式
Hostname=agent1  ##主机名

4.创建自动注册的动作
在这里插入图片描述5.配置自动注册的动作和操作
在这里插入图片描述
在这里插入图片描述6.重启zabbix

[root@server1 zabbix]# systemctl restart zabbix-server
(这里可能得等一些时间才能可用)

在这里插入图片描述

zabbix API

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:创建新的应用程序以使用Zabbix; 将Zabbix与第三方软件集成;自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分。
该API包含一组独立的方法;客户端和API之间的请求和响应使用JSON格式进行编码。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据。
当完成了前端的安装配置后,你就可以使用远程HTTP请求来调用API。

验证API请求

在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。
在zabbixserver端:

[root@server1 /]# cat zabbix-api 
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

运行:

[root@server1 /]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "e56583644f8fa50d2d44026d5ddc1ba5"
}

API检索主机

我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "e56583644f8fa50d2d44026d5ddc1ba5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

运行结果:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084",
            "interfaces": [
                {
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                }
            ]
        },
        {
            "host": "agent1",
            "hostid": "10306",
            "interfaces": [
                {
                    "interfaceid": "3",
                    "ip": "192.168.1.12"
                }
            ]
        },
        {
            "host": "agent2",
            "hostid": "10307",
            "interfaces": [
                {
                    "interfaceid": "4",
                    "ip": "192.168.1.13"
                }
            ]
        }
    ]
}

API删除主机

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

执行前:
在这里插入图片描述执行后:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10307"
        ]
    }
}

在这里插入图片描述

API创建主机到监控项

[root@server1 /]# cat zabbix-api 
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "agent2",   ##被创建的主机名
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.1.13",   ##主机ip
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"    ##主机群组
            }
        ],
        "templates": [
            {
                "templateid": "10001"   ##模板id
            }
        ]
    },
    "id": 2,
    "auth": "e56583644f8fa50d2d44026d5ddc1ba5"   ## 身份验证牌
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

执行后:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10315"
        ]
    }
}

如图,主机已经被创建到监控项:
在这里插入图片描述在这里插入图片描述

zabbix配置监控项

1.获得状态信息

实验环境:
在agent1中添加监控模板
在这里插入图片描述在agent2中配置nginx:

[root@agent2 /]# yum install -y gcc zlib-devel pcre-devel  #安装必要的二进制包
[root@agent2 /]# tar zxf nginx-1.18.0.tar.gz #解压nginx包

关闭debug:

[root@agent2 /]# vim nginx-1.18.0/auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g"

预编译,编译安装:

[root@agent2 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
[root@agent2 nginx-1.18.0]# make && make install 

修改配置:

vim /usr/local/nginx/conf/nginx.conf

location /status {
    stub_status	  on;   ##查看服务状态的参数
    access_log    off;   ##关闭日志
    allow         127.0.0.1;	##只允许监控本机
    deny	  all;
}

检查语法:/usr/local/nginx/sbin/nginx -t

[root@agent2 conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

运行:/usr/local/nginx/sbin/nginx

[root@agent2 conf]# curl http://127.0.0.1/status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

2.获取活跃连接数

1.在agent2中的用户的自定义配置目录对其进行配置:

[root@agent2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active |awk '{print $3}'

2.重启zabbix服务,获取活跃连接数:

[root@agent2 ~]# systemctl restart zabbix-agent.service 
[root@server1 zabbix]# zabbix_get -s 192.168.1.113 -p 10050 -k "nginx.active"
1

3.在图形界面配置agent2的监控项

在这里插入图片描述更改字体:

在下面的目录里面加入你想要显示的字体:
[root@server1 mnt]# cd  /usr/share/zabbix/assets/fonts/
更改配置文件:
[root@server1 fonts]# vim /usr/share/zabbix/include/defines.inc.php 
define('ZBX_FONT_NAME', 'simkai');
define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name

预览:

在这里插入图片描述

3.获取接收请求数

1.在agent2中的用户自定义配置的目录中配置:

[root@agent2 zabbix_agentd.d]# cat /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 | awk '{print $1}'


[root@agent2 zabbix_agentd.d]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
75

2.在server中测试:

[root@server1 fonts]# zabbix_get -s 192.168.1.113 -p 10050 -k "nginx.accept"
102

3.去网页配置监控项

在这里插入图片描述
在这里插入图片描述在这里插入图片描述我们来增加点访问使图形更加的直观:

[root@server1 fonts]# ab -c 1 -n 1000 http://192.168.1.113/index.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.1.113 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.18.0
Server Hostname:        192.168.1.113
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      1
Time taken for tests:   3.332 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      845000 bytes
HTML transferred:       612000 bytes
Requests per second:    300.10 [#/sec] (mean)
Time per request:       3.332 [ms] (mean)
Time per request:       3.332 [ms] (mean, across all concurrent requests)
Transfer rate:          247.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.2      1      16
Processing:     0    2   1.6      2      19
Waiting:        0    1   1.4      1      19
Total:          1    3   2.1      3      20

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      3
  80%      3
  90%      4
  95%      6
  98%     12
  99%     17
 100%     20 (longest request)

在这里插入图片描述

后记

到此为止,我们就实现了zabbix的监控功能(手动监控,自动发现,自动注册,API检索,API删除,API创建,以及自定义配置监控项等)

猜你喜欢

转载自blog.csdn.net/Thorne_lu/article/details/107120928