zabbix监控

发布于:2024-10-13 ⋅ 阅读:(57) ⋅ 点赞:(0)

目录

一、zabbix基本概念与组件

1.1 概述

1.2 zabbix 简介

1.3 zabbix构成

1.4 zabbix监控对象

1.5 zabbix常用术语

1.6 Zabbix 6.0 新特性

1.7 zabbix 工作原理(主动被动)

1.8 zabbix工作进程

1.9 zabbix监控架构(3个)

二、部署 zabbix 6.0

2.4 编译安装 zabbix Server 服务端

2.6 安装 zabbix 客户端,实现 zabbix 服务端自我监控

三、添加 zabbix 客户端

四、添加自定义监控脚

一、zabbix基本概念与组件

1.1 概述

服务端:编译安装,客户端:yum安装

zabbix server port:10051,zabbix client port:10050

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。Zabbix 基于存储的数据提供报告和数据可视化功能。Zabbix提供了出色的报告和数据可视化功能

作为一个运维,需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等,利用监控系统的数据去了解网站上线发布的结果和健康状态。现在企业90%用的是5.0版本,5.0和6.0安装版本基本一样

利用一个优秀的监控软件,我们可以:

  • 通过一个友好的界面进行浏览整个网站所有的服务器状态

  • 可以在 Web 前端方便的查看监控数据

  • 可以回溯寻找事故发生时系统的问题和报警情况

zabbix官网地址为   https://www.zabbix.com/

1.2 zabbix 简介

  • zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

  • zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  • zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。

  • zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。

  • zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。

1.3 zabbix构成

zabbix主要由以下5个组件构成:

1、Server:zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。

2、web页面:web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了可视化的监控信息,以方便运维人员监控管理

3、数据库:zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。

4、proxy(中间代理):zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用于架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景

5、Agent:zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。

1.4 zabbix监控对象

zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。 zabbix如果部署在服务器上,可以监控CPU、内存、磁盘、I/O、网络、端口、网页、日志、插件自定义等,也可以监控具体的服务或者应用程序、服务运行情况及性能。

硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。

系统资源监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。

Java监控Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。

Zabbix 要监控 Tomcat 服务或其它 JAVA 程序(比例 Elasticsearch、ZooKeeper),需要使用 Java Gateway 做为代理,才能从 JAVA 程序中获取数据。

网络设备监控Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。

应用服务监控:Zabbix Agent UserParameter

MySQL数据库监控:percona-monitoring-plulgins

URL监控:Zabbix Web 监控

1.5 zabbix常用术语

zabbix的学习需要掌握一些zabbix的常用术语,zabbix常用术语列举如下:

1、主机(host):要监控的设备,可以由IP或者是主机名(必须可解析)指定。

2、主机组(host group):主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。

3、监控项(item):一个特定监控指标的相关数据,比如内存的大小、CPU的使用率,甚至是服务的运行状态等等。监控项数据来源于被监控对象,并且每个监控项都由一个key来标识。

4、触发器(trigger):一个表达式,用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。

5、事件(event):触发器触发的一个特定事件,或者是zabbix定义的一个自动上线注册主机的事件。

6、动作(action):指根据配置,zabbix对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。

7、报警升级(escalation):发送警报或者是执行远程命令的自定义方案。

8、媒介(media):发送通知(告警)的手段,如微信、邮件、钉钉等等。

9、通知(notification):通过指定的媒介,向用户发送的有关事件的信息。

10、远程命令(remote command):指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。

11、模板(template):用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。

12、应用(application):一组监控项的集合。

13、web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求。

14、前端(frontend):zabbix的web接口。

1.6 Zabbix 6.0 新特性

1.6.1 Zabbix server高可用防止硬件故障或计划维护期的停机多了个HA 集群

  • 原生选择加入HA群集配置

  • 定义一个或多个备用节点

  • 实时监控Zabbix server群集节点的状态

  • 不需要外部工具即可将Zabbix server配置为HA群集模

1.6.2 Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标(多了 k8s 容器监控

  • Kubernetes节点和pods的自动发现和监控

  • 无代理方式采集Kubernetes pods和节点的信息

  • 获取Kubernetes节点主机高水平信息

1.7 zabbix 工作原理(主动被动)

工作流程

zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式:

*1、主动模式*

zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。

*2、被动模式*

zabbix server向agent请求获取监控项的数据,zabbix agent返回数据。

可以看出,zabbix的主动和被动模式是以zabbix客户端为基准的。

1.8 zabbix工作进程

在默认情况下,zabbix有6个工作进程(常用的监控程序),分别是zabbix_agentd,zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server和zabbix_gateway。其中,zabbix_java_gateway是可选进程。这6个进程作用如下:

*1、zabbix_agentd*:zabbix_agentd为zabbix客户端守护进程,主要负责收集客户端监控项数据。

*2、zabbix_server*:zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。

*3、zabbix_proxy*:zabbix_proxy是zabbix代理进程,其功能类似于server,作用上类似与一个中转站,最终会把收集到的数据再次提交给zabbix_server。

*4、zabbix_get*:zabbix_get为一个zabbix工具,通常运行在zabbix server或者是zabbix proxy上,用于远程获取客户端信息,通常用于排错。

*5、zabbix_sender*:zabbix_sender也是一个zabbix工具,通常运行在zabbix客户端,通常用于耗时比较长的检查,其作用是主动发送数据(用户发送数据给 server 或 proxy 端)

*6、zabbix_java_gateway*:zabbix_java_gateway是zabbix2.0之后引入的新功能,可以用户JAVA方面的设备,但是其只能主动获取数据,而不能被动获取数据。

1.9 zabbix监控架构(3个)

在实际生产环境中,根据网络环境和监控规模的不同,zabbix一共有三种监控架构,分别是server-client架构、master-node-client架构和server-proxy-client架构。

*1、server-client架构*

zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix server和zabbix client之间直接进行数据交互。一般用于同一网络,少量机器的小型架构

*2、server-proxy-client架构*

proxy是连接server和client之间的桥梁,其本身并不存放数据,只是将zabbix agent端发送来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构,机器超过300-500时使用。在server-proxy-client架构架构中,server设备的宕机会导致整个系统无法正常工作。

*3、master-node-client架构*

master-node-client架构是zabbix最复杂的架构,一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server-proxy-client相比,master-node-client架构的主要区别在于node与proxy上。在master-node-client架构中,每个node可以理解为一个小的server端,有自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。在master-node-client架构中,master设备宕机不会影响node结点的正常工作。

每个模块工作职责:

1、Zabbix Server:Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database;

2、Zabbix Database:用户存储所有zabbix的配置信息、监控数据的数据库;

3、Zabbix Web:Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix Server运行在同一台主机上,也可以单独部署在独立的服务器上;

4、Zabbix Proxy:常用于分布监控环境中,代理zabbix Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)

5、Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

二、部署 zabbix 6.0

  • 系统:CentOS 7 不支持 yum 方式安装 Zabbix 6.0 服务端

  • 安装方式:Zabbix 服务端采用编译安装的方式,zabbix 客户端采用 yum 安装的方式

zbx-server:192.168.190.10

2.1 关闭防火墙和Selinux

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server       #设置主机名 

2.2 部署 Nginx + PHP 环境并测试

2.2.1 安装 nginx

cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
yum install -y nginx

2.2.2 安装 php

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

2.2.3 修改nginx 配置

vim /etc/nginx/conf.d/zbx.conf
server {
  listen 80;
  #server_name zbx.abc.com;
  server_name 192.168.190.10;
  root /var/www/zbx;
  
  location / {
    index index.php;
  }
  
  location ~ \.php$ {
    root /var/www/zbx;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
    include fastcgi_params;
  }
}

[root@zbx-server conf.d]# nginx -t          #检查配置文件报错
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

2.2.4 修改 php 配置

vim /etc/php-fpm.d/www.conf 
user = nginx               #第8行
group = nginx             #第10行


vim /etc/php.ini
max_execution_time = 300        # 368行
max_input_time = 600            # 378行
post_max_size = 80M                # 656行
date.timezone = Asia/Shanghai    # 877行

 

2.2.5 创建目录和测试文件,启动服务

[root@zbx-server ~]# mkdir -p /var/www/zbx
 
[root@zbx-server ~]# vim /var/www/zbx/index.php
<?php
phpinfo();
?>
 
[root@zbx-server ~]# systemctl enable --now nginx php-fpm        #开启服务并开机自启

[root@zbx-server ~]# systemctl status nginx

[root@zbx-server ~]# systemctl status php-fpm.service 

2.2.6 测试访问

修改 C:\Windows\System32\drivers\etc\hosts
192.168.190.10 zbx.abc.com
 
浏览器访问:http://zbx.com/index.php


如果使用IP 
直接浏览器访问:http://192.168.190.10/index.php

2.3 部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本

2.3.1 配置 Mariadb yum源

cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
 
[root@zbx-server ~]# yum install -y mariadb-server mariadb
 
[root@zbx-server ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

2.3.2 初始化数据库

mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如123456) -> 后面一直 Y
 
mysql -u root -p123456
show databases;   #查看一下库

2.3.3 创建数据库并指定字符集

CREATE DATABASE zabbix character set utf8 collate utf8_bin;

2.3.4 创建 zabbix 数据库用户并授权

GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
#允许本机访问 
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
# %包含所有来源地址,但不包含localhost本机
flush privileges;

2.3.4 向数据库导入 zabbix 数据

[root@zbx-server opt]# cd /opt                     #上传源码包 zabbix-6.0.13.tar.gz 到 /opt 目录
[root@zbx-server opt]# tar zxvf zabbix-6.0.13.tar.gz
 
[root@zbx-server opt]#ls /opt/zabbix-6.0.13/database/mysql
data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile.am  Makefile.in  schema.sql
 
#按照顺序导入数据库
[root@zbx-server opt]#cd /opt/zabbix-6.0.13/database/mysql
mysql -uroot -p123456 zabbix < schema.sql
mysql -uroot -p123456 zabbix < images.sql
mysql -uroot -p123456 zabbix < data.sql
mysql -uroot -p123456 zabbix < double.sql
mysql -uroot -p123456 zabbix < history_pk_prepare.sql

mysql -uroot -p123456   #进入zabbix数据库查看一下
use zabbix;
show tables;

2.4 编译安装 zabbix Server 服务端

2.4.1 安装依赖包,创建 zabbix 用户

[root@zbx-server mysql]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make        #安装依赖包
 
[root@zbx-server mysql]# useradd -s /sbin/nologin -M zabbix #创建用户

2.4.2 编译安装

cd /opt/zabbix-6.0.13/
 export CFLAGS="-std=gnu99"                #" 用于在当前的终端环境中设置编译器的标志 CFLAGS,使得编译器在编译 C 代码时使用 GNU C99 标准。
  
./configure \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre
 
make install

2.4.3 检查版本

[root@zbx-server zabbix-6.0.13]# zabbix_server --version
zabbix_server (Zabbix) 6.0.13
Revision fdfa8cef9ce 1 February 2023, compilation time: Sep 23 2024 23:25:01

Copyright (C) 2023 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.0.2k-fips  26 Jan 2017
Running with OpenSSL 1.0.2k-fips  26 Jan 2017

2.4.4 修改 zabbix server 配置文件,修改数据库的密码

[root@zbx-server zabbix-6.0.13]# vim /etc/zabbix/zabbix_server.conf 
......
LogFile=/var/log/zabbix_server.log     # 38行,指定 zabbix 服务端日志路径
DBPassword=zabbix                     # 123行,指定 zabbix 数据库的密码
 
#创建日志文件,并修改属组和属主权限
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log 

2.4.5 准备 systemctl 服务管理文件

[root@zbx-server zabbix-6.0.13]# vim /usr/lib/systemd/system/zabbix-server.service 
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service


[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix


[Install]
WantedBy=multi-user.target

systemctl daemon-reload  #重新加载
systemctl enable --now zabbix-server    #开启并开机自启
 
[root@zbx-server zabbix-6.0.13]# netstat -lntp | grep 10051     #zabbix_server 默认监听 10051 端口
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      32069/zabbix_server

2.5 部署 Web 前端,进行访问

[root@zbx-server zabbix-6.0.13]# cp -r /opt/zabbix-6.0.13/ui/* /var/www/zbx    #设置的user和group为nginx
cp:是否覆盖"/var/www/zbx/index.php"? yes
[root@zbx-server zabbix-6.0.13]# chown -R nginx.nginx /var/www/zbx

浏览器访问:http://zbx.abc.com/     或     http://192.168.190.10
【Default language】选择 Chinese(zh_CN),点击下一步
【密码】输入 zabbix,点击下一步
【Zabbix主机名称】输入 Zabbix-监控;【默认时区】选择 Asia/Shanghai,点击下一步
 
安装完成后,默认的登录账号和密码为:Admin/zabbix

选择中文,点击下一步;

如果没有错误提示,继续点击下一步;

输入MySQL数据库连接信息,然后点击下一步;

数据库主机:localhost(ip也行);数据库端口:3306(mysql端口);用户:zabbix;密码:zabbix

设置主机名称,然后点击下一步;

登录界面 输入用户Admin 密码zabbix

2.6 安装 zabbix 客户端,实现 zabbix 服务端自我监控

rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm         #不行的话根据 URL 把rpm包下载下来也行


sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

#zabbix 5.0 版本开始采用 golang 语言开发的新版本客户端 agent2
[root@zbx-server zabbix-6.0.13]# yum install -y zabbix-agent2

 
systemctl enable --now zabbix-agent2
 
netstat -lntp | grep 10050            #客户端 zabbix_agent2 默认监听 10050 端口

#没报错的话直接跳过,出现问题可能因为系统无法信任 Zabbix 官方仓库的 SSL 证书

vim /etc/yum.repos.d/zabbix-agent2-plugins.repo         #添加

sslverify=false           #禁用 yum 对特定仓库的 SSL 验证

yum clean all && yum makecache          #再重做一次上面的步骤

2.7 解决 zabbix-server Web页面中文乱码问题

yum install -y wqy-microhei-fonts


\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /var/www/zbx/assets/fonts/DejaVuSans.ttf
 
刷新浏览器页面

三、添加 zabbix 客户端

zbx-agent01:192.168.190.20

3.1 关闭防火墙

systemctl disable --now firewalld

setenforce 0
hostnamectl set-hostname zbx-agent01

3.2 服务端和客户端都配置时间同步

yum install -y ntpdate
ntpdate -u ntp.aliyun.com

 3.3  服务端和客户端都设置 hosts 解析

vim /etc/hosts                #添加
192.168.190.10 zbx-server
192.168.190.20 zbx-agent01

3.4 设置 zabbix 的下载源,安装 zabbix-agent2

rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm          #如果报错,可能是因为SSL认证问题,跟上面服务端解决方法一样


sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
 
yum install -y zabbix-agent2

3.5 修改 agent2 配置文件

[root@zbx-agent01 ~]# vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.190.10            #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.190.10        #133行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01            #144行,指定当前 zabbix 客户端的主机名


systemctl start zabbix-agent2         //启动 zabbix-agent2
systemctl enable zabbix-agent2
 
[root@zbx-agent01 ~]# netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      43820/zabbix_agent2 

3.6 在服务端验证 zabbix-agent2 的连通性

[root@zbx-server ]# yum install -y zabbix-get                #安装 zabbix 主动获取数据的命令
[root@zbx-server ]# zabbix_get -s '192.168.190.20' -p 10050 -k 'agent.ping'
      1

[root@zbx-server ]# zabbix_get -s '192.168.190.20' -p 10050 -k 'system.hostname'
      zbx-agent01

-----------------------------------------------------------------------------------------------------------------------

#常用的键值
agent.ping                       #服务端与客户端是否连通,返回1表示可达,返回非表示不可达
system.hostname                    #系统主机名
agent.hostname                      #客户端主机名
net.if.in[if,<mode>]    #网络接口进入的流量统计,if表示网卡名称,带<>的参数表示可以省略
net.if.out[if,<mode>]                #网络接口流出的流量统计
proc.num[<name>,<user>,<state>,<cmdline>,<zone>]            #进程数
net.tcp.port[<ip>,port]              #检查是否能建立tcp连接到指定端口,返回0表示不能连接,返回1表示可以连接

3.7 在 Web 页面中添加 agent 主机

点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】输入 zbx-agent01
【可见的名称】输入 zbx-agent01-192.168.190.20
【模板】搜索 Linux ,选择 Linux by Zabbix agent
【群组】选择 Linux servers
【Interfaces】点击添加 客户端,【IP地址】输入 192.168.190.20
 
#监控模板下载地址
https://share.zabbix.com/
https://monitoringartist.github.io/zabbix-searcher/
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates

四、添加自定义监控脚本

案列:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息
博客地址:
https://kaikai136.blog.csdn.net/article/details/111309497?
spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-
2%7Edefault%7ECTRLIST%7ERate-1-111309497-blog-
123223449.pc_relevant_paycolumn_v3&depth_1-
utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-
1-111309497-blog-123223449.pc_relevant_paycolumn_v3&utm_relevant_index=1
4.1 客户端创建自定义 key
4.1.1 明确需要执行的 linux 命令
who | wc -l              # 查看用户并统计个数
4.1.2 在客户端 创建 zabbix 的监控项配置文件,用于自定义 key

[root@zbx-agent01 ~]# vim /etc/zabbix/zabbix_agent2.conf       #可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中

281 Include=/etc/zabbix/zabbix_agent2.d/*.conf #自定义监控项的格式如下

321 # Format: UserParameter=<key>,<shell command>

[root@zbx-agent01 ~]# cd /etc/zabbix/zabbix_agent2.d/

[root@zbx-agent01 zabbix_agent2.d]# vim UserParameter_login.conf

UserParameter=login.user,who|wc -l

systemctl restart zabbix-agent2

4.1.3 在服务端验证新建的监控项
[root@zbx-server ~]# zabbix_get -s '192.168.190.20' -p 10050 -k 'login.user'     #客户端ip
     3       #开几台机器就是几
4.2 Web 页面创建自定义监控项模板
4.2.1 创建模版

点击左边菜单栏【配置】中的【模板】,点击【创建模板】

【模板名称】设置成 Template Login User

【可见的名称】设置成 Template Login User

【群组】选择 Templates

【描述】可自定义

点击 【添加】,此时就可在【模板】中的名称输入 Template Login User 

点击 【应用】
4.2.2 创建监控项

点击上方菜单栏【监控项】,点击【创建监控项】

【名称】设置成 Number of login users

【键值】设置成 login.user #键值必须要与自定义的监控项配置文件中设置的保持一致

【更新间隔】设置成 10s

【历史数据保留时长】Storage period 30d #保留时间可自定义设置

点击 【添加】

4.2.3 创建触发器
(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)

点击上方菜单栏【触发器】,点击【创建触发器】

【名称】设置成 Number of login users is greater than 3

【严重性】设置成 一般严重

【表达式】点击添加,【监控项】点击选择 Number of login users,【功能】选择 last(),【结果】

选择 > 3,点击 【插入】

点击 【添加】

4.2.4 创建图形

点击上方菜单栏【图形】,点击【创建图形】

【名称】设置成 Number of login users

【宽】、【高】可直接采用默认值

【监控项】点击添加勾选相关监控项 Number of login users,【功能】选择 最大,其它可保持默认值

点击 【添加】

2.2.5 将主机与模板关联起来(一个主机可以关联多个模板)

点击左边菜单栏【配置】中的【主机】,点击你要关联的主机

点击上方菜单栏【模板】,【Link new tamplates】搜索 login,选择 Template Login User,点击【更新】

此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标

2.2.6 设置邮件报警

点击左边菜单栏【管理】中的【报警媒介类型】,点击【创建媒体类型】

【名称】设置成 qq_Email

【SMTP服务器】设置成 smtp.qq.com

【SMTP服务器端口】设置成 25

【SMTP HELO】设置成 qq.com

【SMTP电邮】设置成 自己的邮箱地址,例如 3553432570@qq.com

【认证】选择 用户名和密码

【用户名称】设置成 自己的邮箱地址,例如 3553432570@qq.com

【密码】可登录QQ邮箱页面,点击【设置】-->【账户】中的【生成授权码】,通过短信获取授权码

【描述】可自定义

点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择 问题,点击【更新】

点击 【添加】,并测试功能,查看有没有收到邮件

点击左边菜单栏【配置】->【动作】->【Trigger actions】

选择相对应的动作名称点击进入,点击 【添加】

【类型】选择 触发器,【操作者】选择 等于,【触发器】点击选择 Nunber of login users is

greater than 3

点击【添加】

勾选 【已启动】

点击 【更新】

点击左边菜单栏【User settings 】->【profile】->点击上方的【报警媒介】

点击【添加】

【类型】选择 qq_Email,【收件人】写 你的收件邮箱,点击【添加】

点击【更新】

界面会跳转到【检测】->【仪表板】

在xshell打开超过3台机器,就会有报警,你的邮箱就应该收到报警信息

扩展:告警中文更改

主题:【{TRIGGER.STATUS}】- 服务器{HOST.NAME}的告警

告警时间:{EVENT.DATE} {EVENT.TIME}

告警信息:{TRIGGER.NAME}

告警等级:{TRIGGER.SEVERITY}

告警项目:{ITEM.NAME}

告警值:{TRIGGER.VALUE}

当前状态:{ITEM.VALUE}

事件ID:{EVENT.ID}

中文设置

{EVENT.TIME}: 事件发生的时间。

{EVENT.DATE}: 事件发生的日期。

{EVENT.NAME}: 问题的名称或描述。

{HOST.NAME}: 主机的名称。

{EVENT.SEVERITY}: 事件的严重程度。

{EVENT.OPDATA}: 事件的运行数据或其他相关信息。

{EVENT.ID}: 原始问题的ID。

{TRIGGER.URL}: 可能是指向更多信息或解决方案的链接。

主题:Problem: {EVENT.NAME}事件 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:

{TRIGGER.NAME}故障!

可直接复制内容:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}