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引用的所有监控项必须存在并且正在收集数据。只有主机被启用并且监控项也被启用才能进行聚合计算。
支持的监控项的功能(itemfunc)是:
| 监控项功能 描述 | |
|---|---|
| avg | 平均值 |
| count | 数值 |
| last | 最后一次的值 |
| max | 最大值 |
| min | 最小值 |
| sum | 值的和 |
timeperiod参数指定最近收集的值的时间段。为了方便,可以在此参数中使用支持的单位符号,例如'5m'(分钟)而不是'300'(秒)或'1d'(天)而不是'86400'(秒)。
如果第三个参数(监控项功能)为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