zabbix实战 自定义参数 自动发现 web监测及分布式监控的部署

官方预定义监控项文档:1 Zabbix客户端

User parameters用户参数

server---zabbix-server

192.168.43.142

agent----zabbix-agent

192.168.43.141

1、介绍和用法

① 介绍

自定义用户参数,也就是自定义key

有时,你可能想要运行一个代理检查,而不是Zabbix的预定义

你可以编写一个命令检索需要的数据,并将其包含在代理配置文件("UserParameter"配置参数)的用户参数

② 用法格式 syntax

UserParameter=<key>,<command>

A user parameter also contains a key 一个用户参数也包含一个键

The key will be necessary when configuring an item 在配置监控项时,key是必需的

Note: Need to restart the agent 注意:需要重新启动agent 服务

2、用法展示

(1)修改agent 端的配置,设置用户参数

① free | awk '/^Mem/{print $3}' 自己需要查找的参数的命令

[root@agent ~]# free | awk '/^Mem/{print $3}'
150636
[root@agent ~]# free | awk '/^Mem/{print $3}'
150740
[root@agent ~]# free | awk '/^Mem/{print $3}'
150740

② 修改配置文件,把查找参数的命令设为用户参数

[root@agent ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@agent ~]# vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'

③ systemctl restart zabbix-agent.service 重启agent 服务

(2)在zabbix-server 端,查询

[root@server zabbix]# zabbix_get -s 192.168.43.141 -p 10050 -k "memory.used"
-bash: zabbix_get: 未找到命令
[root@server zabbix]# yum -y install zabbix-get

[root@server zabbix]# zabbix_get -s 192.168.43.141 -p 10050 -k "memory.used"
151064

(3)在监控上,设置一个item监控项,使用这个用户参数

 

e7d2fe4099038c1d591f6dcff87bc28f.png

(4)查询graph 图形

 

daaaa03f996bbba34da24031786cf2a8.png

字体乱码了怎么解决呢?

上传一下字体包,然后进行更换

[root@server zabbix]# ls /usr/share/zabbix/assets/fonts/
graphfont.ttf
[root@server ~]# cd
[root@server ~]# ll
总用量 11524
-rw-------. 1 root root     1241 10月 19 09:02 anaconda-ks.cfg
-rw-r--r--. 1 root root     1444 10月 25 22:51 my_system_initialize_1.1.sh
-rw-rw-rw-. 1 root root 11787328 11月 14 09:41 simkai.ttf
-rwxr-xr-x. 1 root root     1208 11月 19 16:04 yum-server.sh
[root@server ~]# mv simkai.ttf graphfont.ttf
[root@server ~]# ls
anaconda-ks.cfg  graphfont.ttf  my_system_initialize_1.1.sh  yum-server.sh
[root@server ~]# cp graphfont.ttf /usr/share/zabbix/assets/fonts/
cp:是否覆盖"/usr/share/zabbix/assets/fonts/graphfont.ttf"? y

来浏览器刷新一下,字体已经恢复了

 

1770d1c2feaf36e34016f31ed9242e82.png

3、用法升级

(1)修改agent 端的配置,设置用户参数

① 命令行查询参数的命令

[root@agent zabbix_agentd.d]# cat /proc/meminfo
MemTotal:         995676 kB
MemFree:          738812 kB
MemAvailable:     716852 kB
Buffers:            2108 kB
Cached:            85572 kB
SwapCached:            0 kB
Active:            62628 kB
Inactive:          66096 kB
Active(anon):      41480 kB
Inactive(anon):     7472 kB
Active(file):      21148 kB
Inactive(file):    58624 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         41076 kB
Mapped:            22696 kB
Shmem:              7908 kB
Slab:              54028 kB
SReclaimable:      19076 kB
SUnreclaim:        34952 kB
KernelStack:        3872 kB
PageTables:         4440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2594984 kB
Committed_AS:     250140 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      177424 kB
VmallocChunk:   34359310332 kB
Percpu:            22528 kB
HardwareCorrupted:     0 kB
AnonHugePages:      6144 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       53120 kB
DirectMap2M:      995328 kB
DirectMap1G:           0 kB

② 修改配置文件,把查找参数的命令设为用户参数

UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'

分析:$$2:表示不是前边调位置参数的$2 ,而是awk 的参数$2

注意:$1是调用前边的[*],位置参数,第一个参数

配置文件修改后重启服务

(2)在zabbix-server 端,查询使用这个用户参数的key

 

d715c2d5593d6f21a2522feb408eb6fd.png

(3)在监控上,设置一个item监控项,使用这个用户参数

① 添加Memory Total 的item监控项,使用memory.stats[MemTotal] 的用户参数

 

ab814ce421d89eaba3cd4514b5c791c7.png

在预处理中定义倍数,规定单位

 

a4974f955d78a2ed5c8728d765ad9887.png

② clone 克隆Memory Total 创建Memory Free 的监控项

memory.stats[MemFree] 用户参数

 

c40a62987e68f581fef8dd2cbef20ac0.png

③ 创建Memory Buffers 的item 监控项,使用 memory.stats[Buffers] 的key

 

34ff361571ce2363293ff74011d4e435.png

(4)上面3个监控项的graph 图形

① memory_total

 

79f551e3e06f1bd780136f9ebb407925.png

② memory free

 

21c1fddf190b2981c4615b6b4a6a1d8b.png

③ buffers

 

7d57b070d2b2792ff7b8b9ec599cacb9.png

4、使用用户参数监控php-fpm 服务的状态

在agent 端:

(1)下载,设置php-fpm

① yum -y install php-fpm

② vim /etc/php-fpm.d/www.conf 打开php-fpm的状态页面

user = nginx	
group = nginx
pm.status_path = /php-fpm-status    #php-fpm 的状态监测页面
ping.path = /ping      #ping 接口,存活状态是否ok
ping.response = pong    #响应内容pong

 

(2)设置nginx ,设置代理php,和php-fpm的状态页面匹配

① yum -y install nginx

② vim /etc/nginx/nginx.conf 下面这段内容加在server模块中

location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
}
location ~* /(php-fpm-status|ping) {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
            include        fastcgi_params;

            allow 127.0.0.1;   #因为这个页面很重要,所有需加访问控制
            deny all;

            access_log off;   #访问这个页面就不用记录日志了
}

③ systemctl start nginx

systemctl start php-fpm 开启服务

 

(3)在agent 端,设置用户参数

① 查询 curl 192.168.30.7/php-fpm-status

[root@agent ~]# curl 192.168.43.141/php-fpm-status
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

② 查询curl 127.0.0.1/php-fpm-status

[root@agent ~]# curl 127.0.0.1/php-fpm-status
pool:                 www
process manager:      dynamic
start time:           20/Nov/2023:10:14:45 +0800
start since:          53
accepted conn:        1
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       4
active processes:     1
total processes:      5
max active processes: 1
max children reached: 0
slow requests:        0

③设置

[root@agent ~]# cd /etc/zabbix/zabbix_agentd.d
[root@agent zabbix_agentd.d]# vim php_status.conf
UserParameter=php-fpm.stats[\*]**,**curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'**

分析:设置用户参数为php-fpm.stats[*],$1为第一个参数;$$NF为awk中的参数,倒数第一列 | 

④ 重启服务

systemctl restart zabbix-agent

 

(4)在zabbix-server 端,查询使用这个用户参数的key

zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[idle]"

zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[active]"

zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[max active]"

 

747cc8c0a77642db304b8b9c00492819.png

Network discovery 网络发现

server---zabbix-server

192.168.43.142

agent----zabbix-agent

192.168.43.141

agent2---zabbix-agent

192.168.43.143

1、介绍

(1)介绍

网络发现:zabbix server扫描指定网络范围内的主机

网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的主机或服务

优点:

加快Zabbix部署

简化管理

在快速变化的环境中使用Zabbix,而不需要过度管理

 

(2)发现方式:

ip地址范围;

可用服务(ftp, ssh, http, ...)

zabbix_agent的响应;

snmp_agent的响应;

 

(3)网络发现通常包含两个阶段:discovery发现 和actions动作

① discovery:

Zabbix定期扫描网络发现规则中定义的IP范围;检查的频率对于每个规则都是可配置的

每个规则都有一组用于为IP范围执行的服务检查

由网络发现模块执行的服务和主机(IP)的每个检查都会生成一个发现事件

8种响应事件

 

e9822253f5a4e5fa28dce510f16fe682.png

② actions:网络发现中的事件可以触发action,从而自动执行指定的操作,把discvery events当作前提条件;

Sending notifications 发送通知

Adding/removing hosts 添加/删除主机

Enabling/disabling hosts 启用/禁用host

Adding hosts to a group 向组中添加主机

Removing hosts from a group 移除组中的主机

Linking hosts to/unlinking from a template 从模板链接主机或取消链接

Executing remote scripts 执行远程脚本

这些事件的配置还可以基于设备的类型、IP 、状态、上线/ 离线等进行配置

 

(4)网络发现:接口添加

网络发现中添加主机时会自动创建interface 接口

例如:

如果基于SNMP 检测成功,则会创建SNMP 接口

如果某服务同时响应给了agent 和SNMP ,则两种接口都会创建

如果同一种发现机制( 如agent) 返回了非唯一数据,则第一个接口被识别为默认,其它的为额外接口

即便是某主机开始时只有agent 接口,后来又通过snmp 发现了它,同样会为其添加额外的snmp 接口

不同的主机如果返回了相同的数据,则第一个主机将被添加,余下的主机会被当作第一个主机的额外接口

 

2、配置网络发现Network discovery

(1)准备一台可被扫描发现的主机

① 安装agent 段的包

[root@agent2 ~]# yum -y install zabbix-agent zabbix-sender

② 设置agent 配置,可以把之前设置好的agent的配置传过来

Hostname=agent2
Server=192.168.43.142
ServerActive=192.168.43.142

③ visudo 修改sudo的配置

#Defaults !visiblepw

zabbix ALL=(ALL) NOPASSWD: ALL

 

451a9cb5747c474053c920b838a1cb7b.png

④ 开启服务

[root@agent2 ~]# systemctl start zabbix-agent

 

(2)设置自动发现规则discovery

配置-自动发现-创建自动发现规则

这里的ip范围给小一点,更新间隔设置为3s(生产中切勿尝试)

 

e61121c22afc333095f71e5cf34f713f.png

注释:

① key:zabbix_get -s 192.168.30.2 -p 10050 -k "system.hostname"

 

847298935c8c54c9a594bac9f18de6b4.png

② 更新间隔:1h就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了实验,设为3s

 

(3)自动发现成功

 

78c912681c008d49495cdbdb032b23ba.png

 

(4)设置自动发现discovery 的动作action

a) 创建

 

c6a32be3497db2f4d2b025fd8d2dfe4c.png

b) 设置action动作

 

46c06722bfc3f4146be0097da9b015cd.png

 

e2bd8c99fe033e7e6493acd7efa5f824.png

① 设置A条件,自动发现规则=agent2

② 设置B条件,自动发现状态=up

③ 要做什么操作

添加主机到监控

添加到主机群组

自动链接agent2到模板demo

启动主机

 

daec034adbcb19900daec545ccc74f6d.png

c)启用动作,查看效果

确实已经生效,添加主机成功,模板链接成功

 

93f10f64797feb6339f71e2c4c725f13.png

(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源

 

web监控

1、介绍

(1)介绍

① Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码

② 术语:

web Scenario: web场景(站点)

web page :web页面,一个场景有多个页面

內建key:要测一个页面,要测三个步骤(下边3个內建key)

③ 内建key:

web.test.in[Scenario,Step,bps]:传输速率

web.test.time[Scenario,Step]: 响应时长

web.test.rspcode[Scenario,Step]:响应码

2、创建设置web场景

(1)创建

 

2fb26262ccbec8ea826e0bd6be2f07b1.png

(2)配置web 监测

 

4a613693819871718e29eef2b52f0763.png

① 点击步骤,设置web page web页面

a) 设置名为home page,URL为http://192.168.43.141/index.html 的web页面

 

62a4e4f03598de934c09c0216b6bd72f.png

 

e6ea195fc768312be932a7448581ca00.png

b) 设置名为fpm status,URL为http://192.168.43.141/fpm-status 的web页面

 

f5c9ab4084713c97f130197e3fa2f48e.png

 

314f9a7640e03722728ffe4df68deee4.png

c) 设置2个web页面成功

 

e07dd3aa1231d231cee02798076a98f7.png

② 如果有特殊认证,也可以添加

 

2c89bb5b0961e0f5ca0946a9a98af6f9.png

3、查看测试

 

2c61e7f30ff992090468290121355dc6.png

主动/被动监控

1、介绍

(1)主动/被动介绍

被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;

主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;

主动监控能极大节约监控server 的资源。

(2)zabbix_sender发送数据:实现人工生成数据,发给server端

① zabbix server上的某主机上,直接定义Item时随便定义一个不与其它已有key冲突的key即可,即item type为"zabbix trapper";

② 用法选项:

zabbix_sender

-z zabbix_server_ip

-p zabbix_server_port

-s zabbix_agent_hostname

-k key

-o value 值

zabbix_get

-s zabbix_agent_ip

-p zabbix_agent_port

-k key

2、设置一个通过內建key发送数据的主动监控

(1)agent端所需要基本配置:

ServerActive=192.168.43.142  给哪个监控server 发送数据
Hostname=agent   注意,这里的名字要与web页面中的主机名称配置相同,自己的主机名,假设主机定死了,不设置下一项
#HostnameItem=   如果自己的主机名易变动,这一项相当于key一样去匹配

注意:若后两项同时启用,下边一个选择生效

(2)设置一个主动监测

 

01cacf5a3ce915aefbabbeee2c7abd8a.png

① 选择进程,每秒更改,

因为key:system.cpu.switches :上下文的数量进行切换,它返回一个整数值。为了监控效果,选择下一秒减上一秒的值作为监控

 

215d3650001609dde232891919e51b32.png

(3)已经有啦graph图形

 

dbdeae4a1374a9c5018a418c22886f57.png

3、设置一个通过命令zabbix_sender发送数据的主动监控

(1)配置一个zabbix traper(采集器) 的item 监控项

 

d8950144cdb6482719406710ebd0c3be.png

(2)agent 端手动发送数据

 

d401b5ce33e90f2c9769b41f2d605315.png

(3)监控到数据的变化

 

b38998bf28d1e1d4e5ba30b43f78ae71.png

分布式监控

用新机子做

server---zabbix-server

192.168.43.142

agent2----zabbix-agent

192.168.43.143

proxy---zabbix-proxy

192.168.43.144

使用proxy进行分布式监控

1、配置数据库

[root@proxy ~]# vim /etc/yum.repos.d/mariadb.repo
#写入以下内容:
[mariadb]
name = MariaDB 
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64 
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB 
gpgcheck=1

#安装
[root@proxy ~]# yum install -y MariaDB-server MariaDB-client

#修改配置文件
[root@proxy ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON          #跳过主机名解析
innodb_file_per_table = ON      #
innodb_buffer_pool_size = 256M  #缓存池大小
max_connections = 2000          #最大连接数
log-bin = master-log            #开启二进制日志

#启动数据库
[root@proxy ~]# systemctl restart mariadb

#进入数据库进行数据初始化
[root@proxy ~]# mysql -p
Enter password:    #直接回车
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.32-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;  # 创建数据库
MariaDB [(none)]> grant all on zabbix_proxy.* to 'zabbix'@'%' identified by 'zbxproxypass';  # 注意授权网段
MariaDB [(none)]> flush privileges;           # 刷新授权
MariaDB [(none)]> \q   

2、导入数据

[root@proxy ~]# rpm -ql zabbix-proxy-mysql    #此时还没有装zabbix-proxy
未安装软件包 zabbix-proxy-mysql 

#先去装一下zabbix-proxy
[root@proxy ~]#  rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
获取https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
准备中...                         ################################# [100%])
        软件包 zabbix-release-5.0-1.el7.noarch 已经安装
[root@proxy ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base epel extras mariadb nginx-stable updates zabbix
               : zabbix-non-supported
Cleaning up list of fastest mirrors
[root@proxy ~]#  yum install zabbix-proxy-mysql

#此时再来看一下

 

8aff47a4cd0e975b9085a2a132435b4b.png

[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.39/schema.sql.gz | mysql -uzabbix -pzbxproxypass -h 192.168.43.128 zabbix_proxy

#-h 后边跟的是代理端的ip地址

3、配置proxy端

配置proxy端:
[root@proxy ~]# yum install -y https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
# 修改一下内容
ProxyMode=1 # 0为主动  1为被动
Server=服务端ip地址
SourceIP=发送采样信息的ip(可注释)
Hostname=proxy   #主机名
ListenPort=10051    #proxy自己的监听端口
EnableRemoteCommands=1    #允许远程命令
LogRemoteCommands=1    #记录远程命令的日志

数据的配置
DBHost=数据库地址
DBName=zabbix_proxy  
DBUser=zabbix
DBPassword=zbxproxypass

ConfigFrequency=30    #多长时间,去服务端拖一次有自己监控的操作配置;为了实验更快的生效,这里设置30秒,默认3600s
DataSenderFrequency=1   #每一秒向server 端发一次数据,发送频度

[root@proxy ~]# systemctl start zabbix-proxy

4、配置客户端

[root@agent2 ~]#  vim /etc/zabbix/zabbix_agentd.conf
Server=server端地址,proxy端地址
ServerActive=server端地址,proxy端地址

[root@agent2 ~]#  systemctl restart zabbix-agent

5、web页面配置

注意,这里的代理程序名称,一定要与proxy配置文件中的Hostname相同

 

76372e5f31190cf660403f4f1ad32a81.png

 

 

46f01ea7a598b42fa37e270f5a5314e1.png

6、检查

观察之前配置的监控项是否依然可以接收数据

如果观察不到数据,去server端查看日志

[root@server ~]# tailf -50 /var/log/zabbix/zabbix_server.log

 

zabbix-server 监控自己,数据库,nginx

1、下载安装,配置agent

vim /etc/zabbix/zabbix_agentd.conf 配置agent
EnableRemoteCommands=1    允许远程命令
LogRemoteCommands=1    记录远程命令
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=server.along.com

2、自动生成Zabbix server 的主机

 

a7a44ca4f45e57a33a9601203b4dfc84.png

3、在主机中添加模板

 

87b5aa06af3fe055dac59587ed9b9a8d.png

4、启用Zabbix server

 

55274429ccbab6f5da31890275f6d5fe.png

5、监控到数据

 

58a368ccc9f6a755aa6d5952c9a48a2b.png

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值