zabbix自定义用法

一、User parameters 用户参数

官方预定义监控项文档:

https://www.zabbix.com/documentation/5.0/zh/manual/config/items/itemtypes/zabbix_agent

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@localhost ~]# free | awk '/^Mem/{print $3}'
789668
[root@localhost ~]# free | awk '/^Mem/{print $3}'
789608
[root@localhost ~]# free | awk '/^Mem/{print $3}'
789752

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

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

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

[root@localhost ~]# systemctl restart zabbix-agent.service

(2)在zabbix-server 端,查询

zabbix_get -s 10.36.192.124 -p 10050 -k "memory.used"

[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.used"
196052
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.used"
196136
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.used"
196128

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

3、用法升级

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

① 命令行查询参数的命令

[root@localhost ~]# cat /proc/meminfo 
MemTotal:        1863032 kB
MemFree:          799572 kB
····
DirectMap2M:     2011136 kB
DirectMap1G:           0 kB

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

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'

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

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

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

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

[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.stats[MemTotal]"
1863032
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.stats[MemFree]"
802136
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "memory.stats[Cached]"
816092

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

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

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

 ③ 在三个监控项中自定义倍数,其目的是为了实验效果更清晰。

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

① memory-total

② memory-free

 ③memory-cached

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

在agent 端:

(1)下载,设置php-fpm

① yum -y install php-fpm nginx

[root@localhost ~]# yum -y install php-fpm nginx
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
····    

完毕!

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

[root@localhost ~]# vim /etc/php-fpm.d/www.conf
# 修改如下内容
user = nginx	
group = nginx
pm.status_path = /php-fpm-status    #php-fpm 的状态监测页面
ping.path = /ping      #ping 接口,存活状态是否ok
ping.response = pong    #响应内容pong

③ systemctl start php-fpm 开启服务

[root@localhost ~]# systemctl start php-fpm
[root@localhost ~]# ss -nplt | grep php
LISTEN     0      128    127.0.0.1:9000                     *:*                   users:(("php-fpm",pid=102042,fd=0),("php-fpm",pid=102041,fd=0),("php-fpm",pid=102040,fd=0),("php-fpm",pid=102039,fd=0),("php-fpm",pid=102038,fd=0),("php-fpm",pid=102037,fd=6))

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

① vim /etc/nginx/nginx.conf

[root@localhost ~]# 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 开启nginx服务

[root@localhost ~]# systemctl start nginx
[root@localhost ~]# ss -nplt | grep nginx
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=110856,fd=6),("nginx",pid=110855,fd=6),("nginx",pid=110852,fd=6))
LISTEN     0      128       [::]:80                    [::]:*                   users:(("nginx",pid=110856,fd=7),("nginx",pid=110855,fd=7),("nginx",pid=110852,fd=7))

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

① 查询 curl 127.0.0.1/php-fpm-status

[root@localhost ~]# curl 127.0.0.1/php-fpm-status
pool:                 www
process manager:      dynamic
start time:           16/Nov/2023:21:21:34 +0800
start since:          429
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@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/php_status.conf
UserParameter=php-fpm.stats[*],curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'

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

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

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

[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "php-fpm.stats[idle]"
4
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "php-fpm.stats[active]"
1
[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "php-fpm.stats[max active]"
1

(5)创建一个模板,在模板上创建4个item监控项,使用定义的用户参数

① 创建一个模板

② 在模板上配置items 监控项,使用刚定义的用户参数fpm.stats[total processes]

 ③ 再clone克隆几个items监控项  fpm.stats[active processes]

fpm.stats[max active processes]

fpm.stats[idle processes]

(6)host主机链接模板

(7)查看graph 图形

① php-fpm total processes

② php-fpm active processes

③ php-fpm max active processes

④ php-fpm idle processes

二、Network discovery 网络发现

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种响应事件:

② 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@zabbix_node2 ~]# yum -y install zabbix-agent zabbix-sender

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

[root@zabbix_node2 ~]# vim /etc/zabbix_agentd.conf
Hostname=zabbix_node2
Server=10.36.192.186
ServerActive=10.36.192.186

③ visudo 修改sudo的配置(在100行)

[root@zabbix_node2 ~]# visudo
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD: ALL

④ 开启服务

[root@zabbix_node2 ~]# systemctl start zabbix-agent
[root@zabbix_node2 ~]# ss -nplt | grep zabbix
LISTEN     0      128          *:10050                    *:*                   users:(("zabbix_agentd",pid=52786,fd=4),("zabbix_agentd",pid=52785,fd=4),("zabbix_agentd",pid=52784,fd=4),("zabbix_agentd",pid=52783,fd=4),("zabbix_agentd",pid=52782,fd=4),("zabbix_agentd",pid=52781,fd=4))
LISTEN     0      128       [::]:10050                 [::]:*                   users:(("zabbix_agentd",pid=52786,fd=5),("zabbix_agentd",pid=52785,fd=5),("zabbix_agentd",pid=52784,fd=5),("zabbix_agentd",pid=52783,fd=5),("zabbix_agentd",pid=52782,fd=5),("zabbix_agentd",pid=52781,fd=5))

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

注释:

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

[root@zabbix_server ~]# zabbix_get -s 10.36.192.124 -p 10050 -k "system.hostname"
zabbix_node1
[root@zabbix_server ~]# zabbix_get -s 10.36.192.148 -p 10050 -k "system.hostname" 
zabbix_node2

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

 (3)自动发现成功

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

a) 创建

b) 设置action动作

发现后通过钉钉发送信息,并将发现的主机加入到主机群,关联相关模板。

 ③ 查看主机检测操作

三、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)创建

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

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

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

c) 设置2个web页面成功  

3、查看测试

监测 - 主机 

四、主动/被动 监控

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端所需要基本配置:

[root@zabbix_node1 ~]# vim /etc/zabbix/zabbix_agentd.conf

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

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

(2)设置一个主动监测

配置 - 主机 - web1

① 选择进程,每秒更改,

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

 这里将主机web1改为了zabbix_node1。

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

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

(2)agent 端手动发送数据

[root@zabbix_node1 ~]# zabbix_sender -z 10.36.192.186 -p 10051 -s zabbix_node1 -k "send.test.data"  -o 56721
Response from "10.36.192.186:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000032"
sent: 1; skipped: 0; total: 1

[root@zabbix_node1 ~]# zabbix_sender -z 10.36.192.186 -p 10051 -s zabbix_node1 -k "send.test.data"  -o 52929
Response from "10.36.192.186:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000062"
sent: 1; skipped: 0; total: 1

(3)监控到数据的变化

五、分布式监控

使用zabbix proxy进行分布式监控

1、配置数据库

# 安装
[root@zabbix_proxy ~]# yum -y install mysql mysql-server 

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

# 进入数据库进行数据初始化
[root@zabbix_proxy ~]# systemctl start mysqld

[root@zabbix_proxy ~]# grep pass /var/log/mysqld.log 
2023-11-18T08:33:07.402059Z 1 [Note] A temporary password is generated for root@localhost: kkdaCfXhb0?a

[root@zabbix_proxy ~]# mysqladmin -uroot -p'kkdaCfXhb0?a' password 'Xiaolizi@123'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

[root@zabbix_proxy ~]# mysql -p'Xiaolizi@123'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
····
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix_proxy.* to 'zabbix'@'%' identified by 'Xiaolizi@123';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ^DBye

2、配置proxy端

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

数据的配置
DBHost=数据库地址
DBName=zabbix_proxy  
DBUser=zabbix
DBPassword=Xiaolizi@123

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

3、导入数据

[root@zabbix_proxy ~]# rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.39
/usr/share/doc/zabbix-proxy-mysql-5.0.39/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.39/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.39/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.39/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.39/README
/usr/share/doc/zabbix-proxy-mysql-5.0.39/schema.sql.gz   #这一行
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
[root@zabbix_proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.39/schema.sql.gz | mysql -uzabbix -pXiaolizi@123 -h 10.36.192.148 zabbix_proxy
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix_proxy ~]# 

 重新启动

[root@zabbix_proxy ~]# systemctl start zabbix-proxy
[root@zabbix_proxy ~]# ss -nplt | grep zabbix_proxy
LISTEN     0      128          *:10051                    *:*                   users:(("zabbix_proxy",pid=36118,fd=4),("zabbix_proxy",pid=36117,fd=4),("zabbix_proxy",pid=36116,fd=4),("zabbix_proxy",pid=36115,fd=4),("zabbix_proxy",pid=36114,fd=4),("zabbix_proxy",pid=36113,fd=4),("zabbix_proxy",pid=36112,fd=4),("zabbix_proxy",pid=36111,fd=4),("zabbix_proxy",pid=36110,fd=4),("zabbix_proxy",pid=36109,fd=4),("zabbix_proxy",pid=36108,fd=4),("zabbix_proxy",pid=36107,fd=4),("zabbix_proxy",pid=36106,fd=4),("zabbix_proxy",pid=36105,fd=4),("zabbix_proxy",pid=36104,fd=4),("zabbix_proxy",pid=36103,fd=4),("zabbix_proxy",pid=36102,fd=4),("zabbix_proxy",pid=36101,fd=4),("zabbix_proxy",pid=36100,fd=4),("zabbix_proxy",pid=36099,fd=4),("zabbix_proxy",pid=36098,fd=4),("zabbix_proxy",pid=36097,fd=4),("zabbix_proxy",pid=36096,fd=4),("zabbix_proxy",pid=36095,fd=4),("zabbix_proxy",pid=36094,fd=4),("zabbix_proxy",pid=36093,fd=4),("zabbix_proxy",pid=36091,fd=4))
LISTEN     0      128       [::]:10051                 [::]:*                   users:(("zabbix_proxy",pid=36118,fd=5),("zabbix_proxy",pid=36117,fd=5),("zabbix_proxy",pid=36116,fd=5),("zabbix_proxy",pid=36115,fd=5),("zabbix_proxy",pid=36114,fd=5),("zabbix_proxy",pid=36113,fd=5),("zabbix_proxy",pid=36112,fd=5),("zabbix_proxy",pid=36111,fd=5),("zabbix_proxy",pid=36110,fd=5),("zabbix_proxy",pid=36109,fd=5),("zabbix_proxy",pid=36108,fd=5),("zabbix_proxy",pid=36107,fd=5),("zabbix_proxy",pid=36106,fd=5),("zabbix_proxy",pid=36105,fd=5),("zabbix_proxy",pid=36104,fd=5),("zabbix_proxy",pid=36103,fd=5),("zabbix_proxy",pid=36102,fd=5),("zabbix_proxy",pid=36101,fd=5),("zabbix_proxy",pid=36100,fd=5),("zabbix_proxy",pid=36099,fd=5),("zabbix_proxy",pid=36098,fd=5),("zabbix_proxy",pid=36097,fd=5),("zabbix_proxy",pid=36096,fd=5),("zabbix_proxy",pid=36095,fd=5),("zabbix_proxy",pid=36094,fd=5),("zabbix_proxy",pid=36093,fd=5),("zabbix_proxy",pid=36091,fd=5))

4、配置agent客户端

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

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

5、web页面配置

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

然后将之前所添加的主机进行设置

6、检查

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值