zabbix各种监控类型(十一)


个人建议先看官方文档

链接:https://www.zabbix.com/documentation/3.4/zh/manual

1 SSH检查

运行SSH检查是作为无代理监控的。SSH检查不需要Zabbix代理。

密码验证

SSH检查提供两种身份验证方法,一种是用户/密码对,另一种是基于密钥文件。

如果你不打算使用密钥,则除了将libssh2连接到Zabbix,你不需要额外的配置(如果从源代码构建)。

密钥文件认证

要对SSH监控项使用基于密钥的身份验证,需要对服务器配置进行某些更改。

以root身份打开Zabbix服务器配置文件(zabbix_server.conf),并查找以下行:

# SSHKeyLocation=

取消注释,并设置完整路径到公钥和私钥所在的文件夹:

SSHKeyLocation=/home/zabbix/.ssh

保存文件,然后重新启动zabbix_server。

要更改zabbix用户帐户的设置,必须停止所有正在使用它的进程:

service zabbix-agent stop; service zabbix-server stop
 

要更改主目录位置以尝试移动它(如果存在),应执行一个命令:

# usermod -m -d /home/zabbix zabbix
 

主目录绝对可能不存在于旧的地方(例如在CentOS中),所以应该在新的地方创建。 一个可靠的尝试是:

# test -d /home/zabbix || mkdir /home/zabbix
 

为了确保所有操作都是安全的,可以执行其它命令来设置主目录的权限:

chown zabbix:zabbix /home/zabbix; chmod 700 /home/zabbix
 

以前被停止的进程现在可以重新启动:

service zabbix-agent start; service zabbix-server start
 

现在可以通过命令执行生成公钥和私钥的步骤:

sudo -u zabbix ssh-keygen -t rsa

通过使用以下命令,在远程主机10.10.10.10上安装公钥文件,以便可以使用root帐户执行SSH检查:

# sudo -u zabbix ssh-copy-id root@10.10.10.10

现在可以使用zabbix用户的默认私钥(/home/zabbix/.ssh/id_rsa)检查SSH登录了:(上传到其他没有安装zabbix-agent客户端的机器上面测试发现也可以呢)

# sudo -u zabbix ssh root@10.10.10.10

举例说明

等待--查看数据

2 聚合检查

概述

在汇总检查中,Zabbix通过直接从数据库中查询监控信息,然后进行信息聚合。

聚合检查不需要在被监控的主机上运行任何代理。

语法

聚合监控项Key的语法是:

groupfunc["host group","item key",itemfunc,timeperiod]

支持的组功能(groupfunc)是:

组功能 描述
grpavg 平均值
grpmax 最大值
grpmin 最小值
grpsum 值求和

可以通过逗号分隔的数组来包含多个主机组。指定父主机组将包括父组和所有包含监控项的嵌套主机组。

从聚合监控项Key引用的所有监控项必须存在并且正在收集数据。只有主机被启用并且监控项也被启用才能进行聚合计算。

如果引用的监控项Key被更改,则必须手动更新聚合监控项的Key。 :::

支持的监控项的功能(itemfunc)是:

监控项功能 描述
avg 平均值
count 数值
last 最后一次的值
max 最大值
min 最小值
sum 值的和

timeperiod参数指定最近收集的值的时间段。为了方便,可以在此参数中使用支持的单位符号,例如'5m'(分钟)而不是'300'(秒)或'1d'(天)而不是'86400'(秒)。

在该时间段内不支持数值(count,前缀为#)。 :::

如果第三个参数(监控项功能)为last,服务器将忽略时间段,因此可以省略:

groupfunc["host group","item key",last]

如果聚合产生了浮点值,同时如果聚合的监控项信息类型为Numeric(无符号),则将其修剪为整数。

如果出现以下情况有可能不支持汇总监控项:

  • 没有找到引用的监控项(如果监控项Key不正确,则不存在任何监控项或所有包含的组都不正确)
  • 没有数据用来计算一个函数

用法示例

用于聚合检查的Key示例:

示例 1

主机组'MySQL Servers'的总磁盘空间。

grpsum["MySQL Servers","vfs.fs.size[/,total]",last]
示例 2

主机组'MySQL Servers'的平均处理器负载。

grpavg["MySQL Servers","system.cpu.load[,avg1]",last]
示例 3

主机组'MySQL Servers'每秒查询值的5分钟聚合。

grpavg["MySQL Servers",mysql.qps,avg,5m]
示例 4

多个主机组中所有主机上的平均CPU负载。

grpavg[["Servers A","Servers B","Servers C"],system.cpu.load,last]

 举例说明

模板

监控项

两台机器配置

[root@tff_128 zabbix_agentd.d]# 
[root@tff_128 zabbix_agentd.d]# 
[root@tff_128 zabbix_agentd.d]# 
[root@tff_128 zabbix_agentd.d]# cat userparameter_httpd.conf 
UserParameter=check-httpd-sum,ps -ef|grep -v grep|grep httpd|wc -l
[root@tff_128 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@tff_128 zabbix_agentd.d]# 

 重启zabbix-agent服务 等待一会 查看最新数据

聚合监控项创建

等待一会 查看最新数据

 

3 捕捉器监控项

概述

捕捉器监控项接收传入的数据,而不是查询它。

对于任何你想要推送到Zabbix的数据都是使用的。

要使用捕捉器监控项,你需要:

  • 在Zabbix中建立一个捕捉器监控项
  • 将数据发送到Zabbix

有些脚本执行时间太长了 这个时候我们需要把脚本执行结果传给zabbix 多少秒传一次 我们可以编写定时任务去执行脚本 等待结果 然后上传

有些脚本执行时间太长了 这个时候我们需要把脚本执行结果传给zabbix 多少秒传一次 我们可以编写定时任务去执行脚本 等待结果 然后上传

创建监控项

安装

 yum -y install zabbix-sender

脚本

[root@tff_128 tmp]# cat wc_nginx_access_log 
#!/bin/bash


#2022年 04月 21日 星期四 19:49:42 CST

cd /usr/local/nginx/logs/

#统计访问日志行数
trap_sum=`cat /usr/local/nginx/logs/access.log|wc -l`

zabbix_sender -z 192.168.64.128  -p 10051 -s "192.168.64.128" -k trap_sum -o "$trap_sum"

我们使用下列这些键来发送值

-z - 指定Zabbix server的IP地址

-p - 指定Zabbix server的端口(默认为10051)

-s -指定主机(请确保在此使用“技术含义”的 主机名 ,而不是“可见”名称)

-k - 指定我们之前定义的监控项的键值

-o - 指定要发送的实际值

执行脚本

[root@tff_128 tmp]# ./wc_nginx_access_log 
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000052"
sent: 1; skipped: 0; total: 1
[root@tff_128 tmp]# 

查看最新数据

编写定时任务 等待查看最新数据 这里就不往下操作了

 

4 odbc监控项

概述

ODBC监控对应于Zabbix Web管理端中的数据库监控器监控项类型。

ODBC是用于访问数据库管理系统(DBMS)的C语言中间件API。ODBC由Microsoft开发,后来移植到其它平台。

Zabbix可以查询ODBC支持的任何数据库。为了实现监控,Zabbix不直接连接到数据库,而是使用ODBC中设置的ODBC接口和驱动。该功能允许为多个目的更加有效地监控不同的数据库 - 例如,监控特定的数据库队列、使用统计信息等。 Zabbix支持unixODBC,它是最常用的开源ODBC API实现之一。

安装

 yum -y install unixODBC unixODBC-devel

yum install mysql-connector-odbc

查看

odbcinst -j

[root@tff_128 ~]# odbcinst -j 
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

 rpm -ql mysql-connector-odbc 查看到我的数据库驱动位置/usr/lib64/libmyodbc5.so

[root@tff_128 ~]# rpm -ql mysql-connector-odbc
/usr/lib64/libmyodbc5.so
/usr/lib64/libmyodbc5w.so
/usr/share/doc/mysql-connector-odbc-5.2.5
/usr/share/doc/mysql-connector-odbc-5.2.5/COPYING
/usr/share/doc/mysql-connector-odbc-5.2.5/ChangeLog
/usr/share/doc/mysql-connector-odbc-5.2.5/README
/usr/share/doc/mysql-connector-odbc-5.2.5/README.debug

 创建用户

mysqladmin -u root password '123456'??(之前root用户并未设置密码 这里设置一下)

mysql -u root -p123456 -e "create database zabbix default charset 'utf8';" ??(创建zabbix数据库 这一步挺多余的 当然可以创建其他的库 之后去调用)

mysql -u root -p123456 -e "grant usage on *.* to zabbix@'localhost' identified by '123456';"

参数: usage权限:usage权限只能用于数据库登录,不能执行任何操作

显示数据库

mysql -u zabbix -p123456 -e "show databases;"

[root@tff_128 ~]# mysql -u zabbix -p123456 -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| zabbix             |
+--------------------+

** odbcinst.ini**用于列出已安装的ODBC数据库驱动程序:

[root@tff_128 ~]# cat /etc/odbcinst.ini 
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbcw.so
Setup           = /usr/lib/libodbcpsqlS.so
Driver64        = /usr/lib64/psqlodbcw.so
Setup64         = /usr/lib64/libodbcpsqlS.so
FileUsage       = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1


[tffmysql]
Description = ODBC for MySQL
Driver      = /usr/lib64/libmyodbc5w.so
[root@tff_128 ~]# 

最后一个符合我的linux

参数详细信息:

属性 描
tffmysql 数据库驱动程序名称。
Description 数据库驱动描述。
Driver 数据库驱动程序库位置。

odbc.ini用于定义数据源:

[root@tff_128 ~]# cat /etc/odbc.ini 
[tfftest]
Description = MySQL tfftest database
Driver      = tffmysql
Server      = 127.0.0.1
User        = zabbix
Password    = 123456
Port        = 3306
Database    = zabbix
[root@tff_128 ~]# 

参数详细信息:

属性 描
tfftest 数据源名称 (DSN)。
Description 数据源描述。
Driver 数据库驱动名称。 - 被指定在文件 odbcinst.ini
Server 数据库服务器的 IP/DNS。
User 数据库连接的用户。
Password 数据库连接用户的密码。
Port 数据库连接端口。
Database 数据库名称。

验证

 isql tfftest

[root@tff_128 ~]# isql tfftest
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

配置数据库监控项

专用于数据库监控项的必要输入:

Type 选择数据库监控器。
Key 输入db.odbc.select [unique_description,data_source_name]。这里唯一的描述将用于识别触发器中的监控项等。必须按照odbc.ini中的指定设置数据源名称(DSN)。
User name 输入数据库用户名(如果用户在odbc.ini中指定,则可选)
Password 输入数据库用户密码(如果在odbc.ini中指定密码,则为可选项)
SQL query 输入SQL查询
Type of information 了解查询将返回什么类型的信息很重要,以便在此处正确选择。 使用不正确的类型的信息监控项将不受支持。

重要信息

  • 该查询的执行时间不能超过服务器上的Timeout参数。从Zabbix 2.0.8开始,Timeout参数值也用作ODBC登录超时(请注意,根据ODBC驱动程序,登录超时设置可能会被忽略)。
  • 该查询只能返回一个值
  • 如果查询返回多个列,则只读取第一列。
  • 如果查询返回多行,则只读取第一行。
  • SQL命令必须以select开始。
  • SQL命令不能包含任何换行符。

查看最新数据

目前不晓得有什么作用 什么场景使用

 

5 脚本(全局脚本)

点击确认 发现真的停止了该主机的tomcat服务

参考链接:https://www.zabbix.com/documentation/3.4/zh/manual