集群监控_路人甲_passerby的博客-程序员秘密

技术标签: zabbix  集群监控  nagios  linux  cacti  Linux集群  

文章目录

一、监控简介

1.1 重要性

监控很重要,是必不可少的,运维最重要的就是监控和备份

宕机损失案例:美国呼叫中心 24000 美金/小时


1.2 常见监控平台

1.2.1 Cacti

在这里插入图片描述

  Cacti是RRDtool的前端应用程序,RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。

http://www.cacti.net/

软件设计目标: 流量与性能监测为主
数据展示平台: B/S
数据收集方式: SNMP(Simple Network Management Protocol)


1.2.2 Nagios

在这里插入图片描述

  Nagios 是一款用于监控IT基础架构和查看当前状态、历史日志和基本报告的开源软件工具。 Nagios 用户可以监控系统指标,网络协议,应用程序,服务器,网络基础架构和接收故障警报。Nagios提供三种类型的网络管理工具,Nagios XL,Nagios日志服务器和Nagios网络分析器。其中 Nagios XL 最适合网络监控(尽管其他两种也提供网络监控服务)。

http://www.nagios.org/

软件设计目标: 服务与性能监测为主
数据展示平台: B/S
数据收集方式: C/S(预定义/自定义脚本)


1.2.3 Zabbix

在这里插入图片描述
  Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。

http://www.zabbix.com/

软件设计目标: 全功能监控软件
数据展示平台: B/S
数据收集方式: C/S(官方客户端)


二、Cacti 监控服务器

2.1 组件构成

  Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。

组合框架: LAP
数据收集: SNMP
绘制图形: RRDtool

2.1.1 SNMP

(简单网络管理协议)用于收集设备内部发生的数据,如负载、磁盘状态、带宽之类

收集数据展示图
在这里插入图片描述

2.1.2 RRDtool

官方定义: RRDtool 是开源行业标准,高性能的时间序列数据记录和绘图系统。RRDtool 可以很容易 地集成到 shell 脚本、perl、python、ruby、lua 或 tcl 应用程序中

2.1.3 工作架构

C/S 模式:采集监测数据

B/S 模式:管理监测数据

在这里插入图片描述
Cacti的工作过程

  首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行对其他客户端的设置,可以从下图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。


2.2 Cacti 监控组件安装配置

两台服务器
10.10.10.11 Cacti服务端
10.10.10.12 客户端(被监控)

可以参考之前的文章2.3章节搭建基础环境和配置本地yum源
https://blog.csdn.net/w918589859/article/details/111146921

2.2.1 安装环境(10.10.10.11)

[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘

[[email protected] ~]$ yum -y install httpd mysql mysql-server mysql-devel libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC php php-mysql php-pdo # 安装基础环境 LAMP 
[[email protected] ~]$ service httpd start && chkconfig httpd on# 启动 Apache 
[[email protected] ~]$ service mysqld start && chkconfig mysqld on# 启动 MySQL
[[email protected] ~]$ mysqladmin -uroot password root #设置mysql密码
 
[[email protected] ~]$ yum -y install net-snmp net-snmp-utils net-snmp-libs lm_sensors # 安装 SNMP、主板信息监控 所需软件包

2.2.2 安装 rrdtool (10.10.10.11)

所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9

#上传cacti.iso
[[email protected] ~]$ yum -y install lrzsz #方便把软件直接拖到xshell里面
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop cacti.iso /iso
[[email protected] ~]$ cp -a /iso/* .

[[email protected] ~]$ tar -zxf rrdtool-1.4.5.tar.gz && cd rrdtool-1.4.5 # 源码编译安装 RRDTOOL 

[[email protected] ~]$ ./configure --prefix=/usr/local 
#如出错,按以下步骤解决,解决源码编译报错依赖

#第 1 步
[[email protected] ~]$ cd /root && tar zxvf cgilib-0.5.tar.gz && cd cgilib-0.5 && make 
[[email protected] ~]$ cp libcgi.a /usr/local/lib  && cp cgi.h /usr/include 
#第 2 步
[[email protected] ~]$ yum -y install libart_lgpl-devel pango-devel* cairo-devel*

#重新执行./configure
[[email protected] ~]$ cd /root/rrdtool-1.4.5
[[email protected] ~]$ ./configure --prefix=/usr/local 
[[email protected] ~]$ make && make install 

2.2.3 部署 cacti,设置数据库连接 (10.10.10.11)

部署源码包,并安装补丁文件

[[email protected] ~]$ cd /root/cacti
[[email protected] ~]$ tar -zxf cacti-0.8.7g.tar.gz # 解压 Cacti 网站 
[[email protected] ~]$ mv cacti-0.8.7g/ /var/www/html/cacti # 拷贝至 Apache 默认路径


# 为 Cacti 代码进行补丁更新
[[email protected] ~]$ cd /var/www/html/cacti 
[[email protected] ~]$ patch -p1 -N < /root/cacti/data_source_deactivate.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/graph_list_view.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/html_output.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/ldap_group_authenication.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/script_server_command_line_parse.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/ping.patch 
[[email protected] ~]$ patch -p1 -N < /root/cacti/poller_interval.patch

添加检测数据的用户账户,更改权限,保证读写数据正常

[[email protected] ~]$ cd /var/www/html/cacti 
[[email protected] ~]$ useradd runct # 添加 runct 用户,用于 RRDTOOL 运行 
[[email protected] ~]$ chown -R root.root ./ 
[[email protected] ~]$ chown -R runct.runct rra/ log/

授权数据库用户,导入初始化数据

[[email protected] ~]$ mysql -u root -proot 
mysql> create database cactidb default character set utf8; # 创建 cactidb 数据库 
mysql> grant all on cactidb.* to 'cactiuser'@'localhost' identified by '[email protected]'; # 把 cactiuser 用 户赋予 cactidb 库的所有权限 
mysql> quit 

[[email protected] ~]$ mysql -uroot -p cactidb < cacti.sql # cacti 数据库还原

修改 cacti 配置文件

[[email protected] ~]$ vim include/config.php # 配置 cacti 页面连接数据库的认证信息 
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "[email protected]";
$database_port = "3306";

调整 http 配置

[[email protected] ~]$ vim /etc/httpd/conf/httpd.conf # 配置 Apache 对 cacti 的用户权限
Listen 80
Listen 80 DocumentRoot "/var/www/html/cacti" #默认网站路径
<Directory "/var/www/html/cacti">
	options None 
	AllowOverride None 
	Order allow,deny 
	Allow from al
</Directory>

DirectoryIndex index.php index.html  #默认主页
AddDefaultCharset utf-8 #默认字符集

[[email protected] ~]$ service httpd restart

浏览器输入10.10.10.11访问,账户名:admin 密码:admin


2.2.4 客户端配置 (10.10.10.12)

[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ yum -y install net-snmp net-snmp-utils lm_sensors # 安装 SNMP、主板信息监控所需软件包 
[[email protected] ~]$ vim /etc/snmp/snmpd.conf
#41服务器地址 默认为 default 共同体名称 默认为 public 
#62开放所有的 SNMP 查询权限 all 默认为 SystemView 
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none


view all    included  .1                               80

# 85支持各种查询与访问 取消注释符号
[[email protected] ~]$ service snmpd start && chkconfig snmpd on

2.2.5 收集数据 (10.10.10.11)

[[email protected] ~]$ su - runct
[[email protected] ~]$ snmpwalk -v 2c -c public 10.10.10.12 tcp
[[email protected] ~]$ php /var/www/html/cacti/poller.php # 生成对应的监控图表
[[email protected] ~]$ crontab -e 
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null # 配置 RRDTOOL 的轮训任务 

[[email protected] ~]$ service crond start

exit

三、Nagios 监控服务器

3.1 Nagios 介绍

  Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

3.1.1 老牌监控服务器 Cacti – Nagios 对比

Cacti

  • 收集数据、图形展示
  • 偏重网络流量
  • SNMP、OID、SNMP Agent

Nagios

  • 偏重主机、服务的状态
  • Agent
  • 脚本

nagios的四种监控状态
Nagios可以识别四种状态返回信息。

  • (OK)表示状态正常(绿色显示)
  • (WARNING)表示出现警告(×××),
  • (CRITICAL)表示出现非常严重错误(红色),
  • (UNKNOWN)表示未知错误(深×××),nagios根据插件返回来的值来判断监控对象的状态,并通过web显示出来,以供管理员即时发现故障。

3.1.2 Nagios 监控对象类划分

  1. 命令(Commands)
    “命令”用于定义Nagios如何执行某特定的监控工作。它是基于某特定的Nagios插件定义出的一个抽象层,通常包含一组要执行的操作。

  2. 时段(Time periods)
    “时段”用于定义某“操作”可以执行或不能执行的日期和时间跨度,如工作日内的每天8:00-18:00等;

  3. 联系人和联系人组(Contacts and contact groups)
    “联系人”用于定义某监控事件的通知对象、要通知的信息以及这些接收通知者何时及如何接收通知;一个或多个联系人可以定义为联系人组,而一个联系人也可以属于多个组;

  4. 主机和主机组(host and host groups)
    “主机”通常指某物理主机,其包括此主机相关的通知信息的接收者(即联系人)、如何及何时进行监控的定义。主机也可以分组,即主机组(host groups),一个主机可同时属于多个组;

  5. 服务(Services)
    “服务”通常指某主机上可被监控的特定的功能或资源,其包括此服务相关的通知信息的接收者、如何及何时进行监控等。服务也可以分组,即服务组(Service groups),一个服务可同时属于多个服务组;

3.1.3 Nagios 收集数据架构图

在这里插入图片描述

3.1.4 Nagios 整体框架图

在这里插入图片描述
Nagios 监控实现原理

Nagios 通过NRPE 来远端管理服务

  1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。

  2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon

  3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,…etc)

  4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。

  5. Nagios 依次读取队列中的信息,再把结果显示出来。


3.2 构建 Nagios 监控

10.10.10.11---- Nagios 服务端
10.10.10.12---- 被监控端

3.2.1 解决安装 Nagios 的依赖关系 (10.10.10.11)

 # 需要注意 *gb* 必须按照视屏的方式进行后安装 
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘
[[email protected] ~]$ yum -y install httpd gcc glibc glibc-common php php-mysql
[[email protected] ~]$ cd /mnt/cdrom/Packages
[[email protected] ~]$ yum -y install *gd*

3.2.2 创建运行身份 (10.10.10.11)

[[email protected] ~]$ groupadd nagcmd # 创建运行组 
[[email protected] ~]$ useradd -m nagios # 创建运行用户 nagios 
[[email protected] ~]$ usermod -a -G nagcmd nagios # 将 nagios 用户添加到 nagcmd 组中 
[[email protected] ~]$ usermod -a -G nagcmd apache # 将 apache 用户添加到 nagcmd 组中

3.2.3 编译安装 nagios (10.10.10.11)

所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9

#上传  nagios.iso
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop nagios.iso /iso
[[email protected] ~]$ cp -a /iso/* .

[[email protected] ~]$ cd /root
[[email protected] ~]$ tar -zxvf nagios-3.3.1.tar.gz &&  cd nagios # 解压 Nagios 源码包 

[[email protected] ~]$ ./configure --with-command-group=nagcmd --enable-event-broker # 生成 Nagios Makefile 文件 
[[email protected] ~]$ make all 
[[email protected] ~]$ make install 
[[email protected] ~]$ make install-init 
[[email protected] ~]$ make install-config 
[[email protected] ~]$ make install-commandmode 
[[email protected] ~]$ vim /usr/local/nagios/etc/objects/contacts.cfg 
email       [email protected]   #这个是默认设置 

[[email protected] ~]$ make install-webconf 
[[email protected] ~]$ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: #123
Re-type new password: #123
Adding password for user nagiosadmin
 
[[email protected] ~]$ service httpd restart

3.2.4 编译、安装 nagios-plugins (10.10.10.11)

[[email protected] ~]$ cd /root
[[email protected] ~]$ tar zxf nagios-plugins-1.4.14.tar.gz 
[[email protected] ~]$ cd nagios-plugins-1.4.14
[[email protected] ~]$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql --enable-perl-modules 
[[email protected] ~]$ make && make install

3.2.5 配置并启动 Nagios (10.10.10.11)

[[email protected] ~]$ chkconfig --add nagios && chkconfig nagios on 
[[email protected] ~]$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
[[email protected] ~]$ service nagios start 

浏览器输入10.10.10.11/nagios访问,用户名nagiosadmin,密码123

nagios目录解释

[[email protected] ~]$ cd /usr/local/nagios/
bin:Nagios 可执行程序所在目录  nagios  nagiostats  nrpe
etc:配置文件
libexec:Nagios 外部插件所在目录  check_ifstatus     
sbin :Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录

histogram.cgi      showlog.cgi    statuswrl.cgi
share:Nagios网页文件所在的目录 
var:Nagios 日志文件、lock 等文件所在的目录 nagios.log

3.2.6 配置 linux 端监控 (10.10.10.12)

  1. 创建用户
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载本地yum光盘

[[email protected] ~]$ scp [email protected].10.10.11:/root/nagios.iso /root
[[email protected] ~]$ mkdir /iso
[[email protected] ~]$ mount -o loop nagios.iso /iso
[[email protected] ~]$ cp -a /iso/* .

[[email protected] ~]$ useradd nagios
  1. 为了安装 nrpe,先安装 nagios-plugins-1.4.14.tar.gz 插件
[[email protected] ~]$ tar zxf nagios-plugins-1.4.14.tar.gz 
[[email protected] ~]$ cd nagios-plugins-1.4.14 
[[email protected] ~]$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios 
[[email protected] ~]$ make all && make install

[[email protected] ~]$ yum -y install openssl openssl-devel
  1. 安装 nrpe
[[email protected] ~]$ cd && tar -zxvf nrpe-2.12.tar.gz 
[[email protected] ~]$ cd nrpe-2.12
[[email protected] ~]$ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/ 
[[email protected] ~]$ make all 
[[email protected] ~]$ make install-plugin 
[[email protected] ~]$ make install-daemon 
[[email protected] ~]$ make install-daemon-config
  1. 配置 nrpe 信息
[[email protected] ~]$ vim /usr/local/nagios/etc/nrpe.cfg 
allowed_hosts=10.10.10.11,127.0.0.1  #添加服务器ip

[[email protected] ~]$ /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
  1. 服务端安装nrpe 插件 (10.10.10.11)
[[email protected] ~]$ yum -y install openssl openssl-devel
[[email protected] ~]$ cd && tar -zxvf nrpe-2.12.tar.gz 
[[email protected] ~]$ cd nrpe-2.12
[[email protected] ~]$ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/ 
[[email protected] ~]$ make all 
[[email protected] ~]$ make install-plugin 

  1. commands.cfg 定义外部构件 nrpe (10.10.10.11)
[[email protected] ~]$ vim /usr/local/nagios/etc/objects/commands.cfg
define command{
     
	command_name check_nrpe 
	command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}
  1. 定义 linux.cfg
[[email protected] ~]$ cd /usr/local/nagios/etc/objects
[[email protected] ~]$ cp -a windows.cfg linux.cfg
[[email protected] ~]$ sed -i 's/windows/linux/g' linux.cfg
[[email protected] ~]$ vim linux.cfg
define host{
    
        use             linux-server    ; Inherit default values from a template
        host_name       linux     ; The name we're giving to this host        alias           My linux Server ; A longer name associated with the host
        address         10.10.10.12     ; IP address of the host #(客户端 IP 既被监控的 IP)
        }
 #dG,光标以后全部删除,然后添加如下内容
define service{
      #负载检测
	use                   generic-service 
	host_name             linux 
	service_description   check-load 
	check_command         check_nrpe!check_load 
}


define service{
     #用户数
	 use                   generic-service 
	 host_name             linux 
	 service_description   check-users 
	 check_command         check_nrpe!check_users 
}

define service{
     #总进程
	 use                   generic-service 
	 host_name             linux 
	 service_description   otal_procs 
	 check_command         check_nrpe!check_total_procs 
 }

[[email protected] ~]$ vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
cfg_file=/usr/local/nagios/etc/objects/linux.cfg


#检测配置有没有错误
[[email protected] ~]$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

[[email protected] ~]$ service nagios restart

3.2.7 配置 windos 端监控

1)被监控端安装 NSClient+±0.3.8-Win32.msi
2)安装完成后修改配置文件 NSC.ini 把需要的库都打开
3)在监控服务器上修改 nagios 配置文件 nagios.cfg

[[email protected] ~]$ vim /usr/local/nagios/objects/windows.cfg
define host{
     
	use                windows-server ; Inherit default values from a template 
	host_name          winserver ; The name we're giving to this host 
	alias              My Windows Server ; A longer name associated with the host 
	address            10.10.10.99 ; 你主机的 IP
 }
[[email protected] ~]$ vim //usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg


[[email protected] ~]$ service nagios restart


四、Zabbix 监控服务器 【常用】

使用的最多

4.1 Zabbix 介绍

4.1.1 Zabbix 是什么?

  zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 ( 基于 GPL V2 ) zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent


4.1.2 Zabbix 工作架构

常用组件

  • zabbix agent:部署在被监控主机上,负责收集被监控主机的数据,并将数据发送给zabbix server。
  • zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
  • zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
  • zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
  • zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。

在这里插入图片描述
Zabbix监控原理:

  Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)


4.1.3 Zabbix 进程构成

zabbix 安装完成后会产生 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、 zabbix_serverzabbix_java_gateway 是可选,这个需要另外安装

  1. zabbix_agentd: 部署在被监控主机上,客户端守护进程,此进程收集客户端数据,例如 cpu 负载、内存、硬盘使用情况 等
  2. zabbix_get: zabbix 工具,单独使用的命令,通常用于排错
  3. zabbix_sender: zabbix 工具,用于发送数据给 server 或者 proxy ,在脚本完成之后使用 sender 主 动将数据提交
  4. zabbix_server: zabbix 服务端守护进程,所有的数据都是被提交或主动提交到 zabbix_server 端
  5. zabbix_proxy: zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它需要 把收集到的数据提交/被提交到 server 里
  6. zabbix_java_gateway: zabbix2.0 之后引入的一个功能。顾名思义:Java 网关,类似 agentd,但是 只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终 会给到 server 或者 proxy

4.1.4 Zabbix 硬件需求

在这里插入图片描述
Zabbix监控概念

主机(host):                被监控的网络设备,可以写IP或者DNS;
主机组(host group):        主机组用于管理主机,可以批量设置权限;
监控项(item):              具体监控项,items值由独立的keys进行识别;
触发器(trigger):           为某个items设置触发器,达到触发器会执行action动作;
事件(event):               例如达到某个触发器,称之为一个事件;
动作(action):              对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;
报警升级(escalation):       发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
媒介(media):               发送通知的方式,可以支持Mail、SMS、Scripts等;
通知(notification):        通过设置的媒介向用户发送的有关某事件的信息;
远程命令                      达到触发器,可以在被监控端执行命令;
模板(template):            可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;
web场景(web scennario)      用于检测web站点可用性,监控HTTP关键词;
web前端(frontend):         Zabbix的web接口;
图形(graph)                 监控图像;
屏幕(screens)               屏幕显示;
幻灯(slide show)            幻灯显示;


4.2 构建 Zabbix 监控服务器

环境构建

操作系统
centos7,最小化安装

网络类型: 两个网卡,一个仅主机模式,一个nat模式
在这里插入图片描述
【编辑】----【虚拟网络编辑器】----修改仅主机的网卡。关闭DHCP服务,子网改成10.10.10.0
在这里插入图片描述

#第一块网卡
[[email protected] ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #修改此处,改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=48f11f35-eb9f-40de-92f8-85492b0258c5
DEVICE=ens33
ONBOOT=yes     #开机自启,改为yes 
IPADDR=10.10.10.11   #ip地址
NETMASK=255.255.255.0   #子网掩码



#第二块网卡
[[email protected] ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #修改此处,改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=48f11f35-eb9f-40de-92f8-85492b0258c5
DEVICE=ens34
ONBOOT=yes     #开机自启,改为yes


[[email protected] ~]$ yum -y install net-tools

关闭防火墙

[[email protected] ~]$ systemctl stop firewalld && systemctl disable firewalld

关闭selinux

[[email protected] ~]$ setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[[email protected] ~]$ getenforce

设置yum源可以参考之前的文章
https://blog.csdn.net/w918589859/article/details/109191537

安装常用工具

[[email protected] ~]$ yum -y install lrzsz vim gcc gcc-c++

保存快照

4.2.1 安装 LAMP 环境

zabbix需要有lamp环境

#安装mariadb http php,数据库centos7是mariadb,和mysql一样的
[[email protected] ~]$ yum -y install mariadb mariadb-server httpd php php-mysql 

[[email protected] ~]$ systemctl start httpd && systemctl enable httpd 
[[email protected] ~]$ systemctl start mariadb && systemctl enable mariadb

#mariadb不会初始化数据库,这里需要手动初始化一下
[[email protected] ~]$ mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): #mysql的root密码,还没设置,直接回车即可
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y #是否设置root密码,输入y是
New password: root  #输入密码
Re-enter new password: root #再次数据密码,两次需要一致
Password updated successfully!
Reloading privilege tables..
 ... Success!

....

Remove anonymous users? [Y/n] y #移除匿名用户,输入y是
....

Disallow root login remotely? [Y/n] y #拒绝远程登陆,输入y是
....

Remove test database and access to it? [Y/n] y #移除测试数据库,输入y是
....

Reload privilege tables now? [Y/n] y #刷新权限表,输入y是
....


All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!


==========================================


[[email protected] ~]$ mysql -uroot -proot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB 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)]> 




4.2.2 安装 Zabbix 程序 (服务端)

#安装的时候显示安装进度,安装zabbix官网yum源安装包
[[email protected] ~]$ rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

#导入密钥
[[email protected] ~]$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

#安装zabbix连接数据库,web页面,agent部署在被监控的主机上
#被监控端只需要部署agent即可
[[email protected] ~]$ yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent



初始化数据库(zabbix-server端操作)

[[email protected] ~]$ mysql -uroot -proot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB 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 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to [email protected] identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)


#导入zabbix初始化数据
#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix -e "use zabbix;"
#zcat,先解压,在通过cat打开
[[email protected] ~]$ cd /usr/share/doc/zabbix-server-mysql-3.2.11
[[email protected] ~]$ zcat create.sql.gz | mysql -uroot -p zabbix

#查看表
[[email protected] ~]$ mysql -uroot -proot << EOF
use zabbix;
show tables;
EOF

配置zabbix_server的配置文件

[[email protected] ~]$ vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #连接数据库地址
DBName=zabbix #连接数据库名
DBUser=zabbix #连接数据库用户名
DBPassword=zabbix #连接数据库用户密码

[[email protected] ~]$ systemctl start zabbix-server && systemctl enable zabbix-server 

编辑Zabbix前端的PHP配置,zabbix_web
sed -i “s/;date.timezone =/date.timezone = Asia/Shanghai/g” /etc/php.ini

[[email protected] ~]$ vim /etc/httpd/conf.d/zabbix.conf
    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Shanghai #修改为上海的时区
    </IfModule>
 
 [[email protected] ~]$ systemctl restart httpd

调整时间同步

[[email protected] ~]$ yum -y install ntpdate 
[[email protected] ~]$ ntpdate cn.pool.ntp.org

修改apached的配置文件设置访问路径

[[email protected] ~]$ cd /usr/share/zabbix/
[[email protected] ~]$ vim /etc/httpd/conf/httpd.conf
DocumentRoot "/usr/share/zabbix/" #修改为/usr/share/zabbix/ 


[[email protected] ~]$ systemctl restart httpd

浏览器输入10.10.10.11(zabbix服务端的ip)或者10.10.10.11/zabbix,就能访问


4.2.2 通过web页面进行zabbix安装

在这里插入图片描述


检测的php的相关依赖,点击下一步

在这里插入图片描述


配置数据库相关信息

在这里插入图片描述


zabbix服务器端的相关信息,默认就行,下一步

在这里插入图片描述


输出了刚才设置的信息,直接点下一步

在这里插入图片描述


安装成功
在这里插入图片描述

然后就跳到登录界面了,用户名是Admin,密码是zabbix
在这里插入图片描述

server web展示显示中文

在这里插入图片描述


4.2.3 添加本机监控 (被监控端)

#修改被监控端的配置文件,agent前面已经安装
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf 
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050

ServerActive=10.10.10.11 #zabbix-server的ip

Hostname=10.10.10.11 #本机的ip地址,或者可解析的主机名

[[email protected] ~]$ systemctl start zabbix-agent && systemctl enable zabbix-agent

[[email protected] ~]$ netstat -anpt | grep :10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      13538/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      13538/zabbix_agentd 



=================================================================

#如果需要监控的主机比较多,可以使用ansible部署agent
---
 - hosts: test
   remote_user: root
   gather_facts: False
   tasks:
   - name: get localhost ip  #获取ip
     shell : ip addr show ens33|grep 'inet\b'|awk '{print $2}'|awk -F '/' '{print $1}'   
     register : info
   - name: rpm1
     shell: "rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm"
   - name: yum_zabbix
     shell: "yum install -y zabbix-agent zabbix-get"
   - name: update_Server
     lineinfile:
       path: /etc/zabbix/zabbix_agentd.conf
       regexp: '^Server='
       line: Server=10.3.118.200 #zabbix-server的ip
   - name: update_ServerActive
     lineinfile:
       path: /etc/zabbix/zabbix_agentd.conf
       regexp: '^ServerActive='
       line: ServerActive=10.3.118.200 #zabbix-server的ip
   - name: update_hostname
     lineinfile:
       path: /etc/zabbix/zabbix_agentd.conf
       regexp: '^Hostname='
       line: Hostname={
    {
    info.stdout}}  #获取上面info变量的信息
       #Hostname=10.10.10.11 #本机的ip地址,或者可解析的主机名

4.2.4 在web页面添加监控

点击配置—主机,删除这个停用的监控,自己进行配置
在这里插入图片描述


点击创建主机

在这里插入图片描述


下面是主机的添加过程

首先创建一个主机组
配置-----> 主机群组-----> 创建主机群组(web页面右上角)-----> 添加组名,如:Zabbix agents(在弹出框中输入组名)----->添加

添加一个主机
配置 ----->主机 -----> 右上角在群组那里选择Zabbix agents-----> 点击创建主机

在这里插入图片描述


给此主机引用一条模板,模板定义了监控那些选项数据

在这里插入图片描述

然后点击模板弹框下面的选择,这里就会添加上刚才勾选的,然后点击添加才能添加上

在这里插入图片描述

然后返回主机添加页面,点击下面的添加即可
在这里插入图片描述

下面是添加完的效果图

在这里插入图片描述

最后看下图形效果
检测中-----> 图形----->然后就是选择要看什么了,如下图:
在这里插入图片描述
由上图可以看出,所有的汉字都是白框没有显示出来。


修改中文乱码问题

按Win+R键,输入fonts回车,将windows端的msyh.ttf字体文件(随便一个字体都可以)上传到 zabbix-server 服务器端的/var/www/html/zabbix/fonts目录中。
在这里插入图片描述
在这里插入图片描述

然后字体上传到zabbix-server服务器

#把上传的字体放到zabbix的fonts目录下
[[email protected] ~]$ mv msyh.ttc /usr/share/zabbix/fonts/
[[email protected] ~]$ cd /usr/share/zabbix/fonts/

#修改ttf的后缀
[[email protected] ~]$ cd /usr/share/zabbix/fonts/
[[email protected] ~]$ mv msyh.ttc msyh.ttf && chmod a+x msyh.ttf

#修改php配置文件
[[email protected] ~]$ vim /usr/share/zabbix/include/defines.inc.php
#修改 zabbix php 页面配置,将'graphfont' 修改为 msyh
define('ZBX_GRAPH_FONT_NAME',           'msyh'); // font file nam

刷新页面就会正常显示中文
在这里插入图片描述

4.3 添加监控主机 / 自动发现

4.3.1 添加监控主机

监控另外一台linux服务器(10.10.10.12) 本次使用的是centos6系统,选择对应的版本,centos7源码包也提供了

所需软件百度网盘
链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
提取码:ton9

#上传zabbix-agent的rpm包,进行安装
[[email protected] ~]$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm 

[[email protected] ~]$ service httpd start && chkconfig httpd on
[[email protected] ~]$ echo "1111111" >> /var/www/html/index.html


==================================================


#修改被监控端的配置文件
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf 
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050
ServerActive=10.10.10.11 #zabbix-server的ip
Hostname=10.10.10.12 #本机的ip地址,或者可解析的主机名



[[email protected] ~]$ service zabbix-agent start && chkconfig zabbix-agent on

然后在web页面添加一个主机,步骤和 4.2.4 章节一致
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.3.2 配置自动发现 (批量添加监控节点)

如果服务器比较多,一台一台在web页面配置比较麻烦,接下来配置自动发现规则,自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法

4.3.2.1 服务器初始化

两台centos6服务器
10.10.10.13--------agent(被监控端)
10.10.10.14--------agent(被监控端)

两台agent都要执行以下初始化操作

#从别的主机复制zabbix-agent的rpm包,进行安装
[[email protected] ~]$ scp [email protected].10.10.12:/root/zabbix-agent-3.2.1-1.el6.x86_64.rpm /root
[[email protected] ~]$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm 

[[email protected] ~]$ service httpd start && chkconfig httpd on
[[email protected] ~]$ echo "1111111" >> /var/www/html/index.html


==================================================


#修改被监控端的配置文件
[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf 
Server=10.10.10.11 #zabbix-server的ip
# ListenPort=10050 默认监听段口是tcp10050
ServerActive=10.10.10.11 #zabbix-server的ip
Hostname=10.10.10.13 #本机的ip地址,或者可解析的主机名
#Hostname=10.10.10.14 #另一台是14



[[email protected] ~]$ service zabbix-agent start && chkconfig zabbix-agent on

配置自动发现步骤
在web页面点击【配置】------> 【自动发现】----->【创建发现规则】添加一个自动发现规则,定时扫描一个网段的机器有没有在线,然后在 【配置】------> 【动作】----->【事件源】选择自动发现的动作,告诉他,一旦自动发现 发现了一台机器后,就添加到主机监控里

4.3.2.2 先配置动作

配置】------> 【动作】----->【事件源】选择自动发现的动作,然后点击【创建动作
在这里插入图片描述

接下来就会跳转动作配置页面
在这里插入图片描述

然后点击操作,添加操作细节
在这里插入图片描述

最后点击【添加
在这里插入图片描述



4.3.2.3 配置自动发现规则

在web页面点击【配置】------> 【自动发现】----->【创建发现规则】添加一个自动发现规则

在这里插入图片描述

接下来就会跳转自动发现规则配置页面
在这里插入图片描述
在这里插入图片描述


然后点击【监测中】------> 【自动发现】会发现两台主机已经被自动发现
在这里插入图片描述


点击【**配置**】------> 【**主机**】会发现两台主机已经被自动添加上,以后再有10.10.10.13-100这个网段的ip会被自动添加

在这里插入图片描述

4.4 Zabbix 监控 Nginx 并发(自定义监控项、模板)

把10.10.10.12服务从zabbix-web配置页面删掉,然后停了这台主机的httpd服务

使用之前10.10.10.12服务器操作

4.4.1 源码编译安装 Nginx 服务器并开启状态统计模块

源码编译安装 Nginx 服务器

[[email protected] ~]$ service httpd stop

#上传nginx源码包
[[email protected] ~]$ tar -zxvf nginx-1.2.6.tar.gz && cd nginx-1.2.6

#安装相关依赖
[[email protected] ~]$ mount -t iso9660 /dev/cdrom /mnt/cdrom #使用了本地yum源
[[email protected] ~]$ yum -y install pcre pcre-devel zlib zlib-devel

[[email protected] ~]$ useradd -s /sbin/nologin -M nginx
[[email protected] ~]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[[email protected] ~]$ make && make install #编译安装
[[email protected] ~]$ echo "123" >> /usr/local/nginx/html/index.html

[[email protected] ~]$ /usr/local/nginx/sbin/nginx #启动nginx

开启健康检测功能

[[email protected] ~]$ vim /usr/local/nginx/conf/nginx.conf
...
server {
    

        location / {
    
            root   html;
            index  index.html index.htm;
        }
        #添加如下内容
        location /nginx-status {
     #开启健康统计
                stub_status on;
        }

.......
}
.....

#检测配置文件
[[email protected] ~]$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#重载
[[email protected] ~]$ kill -HUP $( cat /usr/local/nginx/logs/nginx.pid)

浏览器输入服务ip地址/nginx-status
在这里插入图片描述

4.4.2 编写 Nginx 监控脚本,在被监控端

[[email protected] ~]$ vim nginx-status.sh
#!/bin/bash 
HOST="127.0.0.1" 
PORT="80"

 # 检测 nginx 进程是否存在
function ping {
     
  	/sbin/pidof nginx | wc -l 
}
  
# 检测 nginx 性能 
function active {
    
 	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' 
} 

function reading {
     
	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' 
}

function writing {
     
	/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
 
function waiting {
     
	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' 
}

function accepts {
     
	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $1}' 
}

function handled {
    
 	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $2}' 
}

function requests {
     
	/usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}

# 执行 function 
$1


#添加执行权限
[[email protected] ~]$ chmod a+x nginx-status.sh
[[email protected] ~]$ bash nginx-status.sh active

[[email protected] ~]$ mv nginx-status.sh /etc/zabbix/zabbix_agentd.d/





#10.10.10.13执行操作
[[email protected] ~]$ while 2>1
do
curl 10.10.10.12
done

将自定义的 UserParameter 加入配置文件,然后重启 agentd

[[email protected] ~]$ vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 #是否开启自定义脚本,改为1
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx-status.sh $1 #添加这一行

[[email protected] ~]$ service zabbix-agent restart

zabbix_get 获取数据 (10.10.10.11)
zabbix-server端操作

[[email protected] ~]$ yum -y install zabbix-get

[[email protected] ~]$ zabbix_get -s 10.10.10.12 -k 'nginx.status[requests]' 
170580

[[email protected] ~]$ zabbix_get -s 10.10.10.12 -k 'nginx.status[ping]' 
1

4.4.3 导入模板,配置nginx监控主机

然后在web配置页面,点击【 配置 】-----> 【 模板 】------>【 导入

模板文件百度网盘
链接:https://pan.baidu.com/s/1QI21w149bcucJLfTU9onpA
提取码:jvpu

在这里插入图片描述

在这里插入图片描述

然后配置nginx主机监控

配置】-------->【主机】--------->【创建主机

在这里插入图片描述

然后添加模板

在这里插入图片描述

发现刚才添加的已经生效
在这里插入图片描述

4.5 web场景 / 组合图

web场景用于模拟客户端访问,检测服务器是否还正常

组合图把重要的参数放到一张图展示

4.5.1 web场景

创建web场景

配置】-------->【主机】--------->【nginx服务器

在这里插入图片描述


然后点击【应用集
在这里插入图片描述


创建一个应用集

在这里插入图片描述

点击【添加
在这里插入图片描述

http-code有了以后,点击【web场景

在这里插入图片描述


创建web场景
在这里插入图片描述
在这里插入图片描述


选择【步骤】,点击【添加
在这里插入图片描述

#nginx服务器添加一个测试页面10.10.10.12
[[email protected] ~]$ echo "test" >> /usr/local/nginx/html/test.html

会弹出web方案步骤页面
在这里插入图片描述

最后点击【场景】,点击下面的【添加】,场景构建完成
在这里插入图片描述

场景只会收集http-code,并不会报警,所以还要创建触发器

配置】-------->【主机】--------->选择这个nginx服务器,然后点击【触发器

在这里插入图片描述


点击【创建触发器

在这里插入图片描述

会跳转到触发器配置页面
在这里插入图片描述

#删除测试页面 10.10.10.12
[[email protected] ~]$ rm -f /usr/local/nginx/html/test.html

[[email protected] ~]$ echo "test" >> /usr/local/nginx/html/test.html

等一会 会发现,有一条报警的信息
在这里插入图片描述

4.5.2 组合图

【检测中】------> 【聚合图形】------->【创建聚合图形】

在这里插入图片描述


会跳转到聚合图形配置页面

在这里插入图片描述

点击刚才创建的聚合图形

在这里插入图片描述

点击【编辑聚合图形

在这里插入图片描述

点击【更改
在这里插入图片描述

添加一个图形
在这里插入图片描述


点击+号,就会又多一列,然后点击更改
在这里插入图片描述

选择时钟,显示当前时间

在这里插入图片描述


依次类推,可以选择多个图形
在这里插入图片描述

4.6 Zabbix 联合钉钉实现终端报警

4.6.1 报警设置 (web页面)

点击这个小人,正在发送的消息,设置报警信息

在这里插入图片描述

4.6.2 钉钉实现终端报警

4.6.2.1 添加钉钉机器人

登陆钉钉,创建一个群聊,最少两个人,点击群设置,点击群机器人,点击自定义,添加一个机器人,会有一个webhook,复制下来
添加机器人步骤

详细请看这篇文章
https://blog.csdn.net/qq_44895681/article/details/103125523

安全模式选择关键词
监控报警
服务器
告警

zabbix-server服务端操作

[[email protected] ~]$ vim tocken.sh
#!/bin/bash
to=$1  #给谁
subject=$2  #标题
text=$3  #内容
curl 'https://oapi.dingtalk.com/robot/send?access_token=758cefbfde6108910a29fad7e35edd9ff76255df5ac16871ad7cf03b2262a7fc' \ #改成自己钉钉的webhook
	-H 'Content-Type: application/json' \
	-d '
	{"msgtype": "text",
		"text": {
		"content": "'"$text"'"
	},
	"at":{
    
		"atMobiles": [ 
			"'"$1"'" 
		],
		"isAtAll": false
		}
	}'
[[email protected] ~]$ chmod a+x tocken.sh
[[email protected] ~]$ chown zabbix.zabbix tocken.sh

[[email protected] ~]$ ./tocken.sh 1 2 告警
#由于前面的安全模式设置了内容,所以必须有告警内容

把tocken脚本放到/usr/lib/zabbix/alertscripts/目录下

[[email protected] ~]$ cd /usr/lib/zabbix/alertscripts/
[[email protected] ~]$ mv /root/tocken.sh .

4.6.2.2 web页面配置

1. 创建媒体类型
配置】------> 【报警媒介类型】----->,然后点击【创建媒介类型

在这里插入图片描述

2. 添加监控方式

监控方式添加参数

{
    ALERT.SENDTO} 
{
    ALERT.SUBJECT} 
{
    ALERT.MESSAGE}

在这里插入图片描述


3. 创建报警动作
配置】------> 【动作】----->【触发器】,然后点击【创建动作
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210110175416406.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3c5MTg1ODk4NTk=,size_16,color_FFFFFF,t_70

接下来就会跳转动作配置页面
在这里插入图片描述

4.错误报警信息参数

标题(默认接收人)改为:
故障{
    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}

点击操作,添加操作细节
在这里插入图片描述

5. 错误恢复报警信息设置

点击恢复操作,添加操作细节

标题(默认接收人)改为:
恢复{
    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}

在这里插入图片描述

操作:
默认标题:

  服务器:{
    HOST.NAME}发生: {
    TRIGGER.NAME}故障!

消息内容:
告警主机:{
    HOST.NAME}
告警地址:{
    HOST.IP}
监控项目:{
    ITEM.NAME}
监控取值:{
    ITEM.LASTVALUE}
告警等级:{
    TRIGGER.SEVERITY}
告警信息:{
    TRIGGER.NAME}
告警时间:{
    EVENT.DATE} {
    EVENT.TIME}
事件ID:{
    EVENT.ID}
当前状态:{
    TRIGGER.STATUS}

==================================================================


恢复操作:
默认标题:

  服务器:{
    HOST.NAME}: {
    TRIGGER.NAME}已恢复!

消息内容:

告警主机:{
    HOST.NAME}
告警地址:{
    HOST.IP}
监控项目:{
    ITEM.NAME}
监控取值:{
    ITEM.LASTVALUE}
告警等级:{
    TRIGGER.SEVERITY}
告警信息:{
    TRIGGER.NAME}
告警时间:{
    EVENT.DATE} {
    EVENT.TIME}
恢复时间:{
    EVENT.RECOVERY.DATE} {
    EVENT.RECOVERY.TIME}
持续时间:{
    EVENT.AGE}
事件ID:{
    EVENT.ID}
当前状态:{
    TRIGGER.STATUS}

========================================================

更新操作:
默认标题:

  服务器:{
    HOST.NAME}: 报警确认

消息内容:

  确认人:{
    USER.FULLNAME}
  时间:{
    ACK.DATE} {
    ACK.TIME}
  确认信息如下:
  "{ACK.MESSAGE}"
  问题服务器IP:{
    HOSTNAME1}
  问题ID:{
    EVENT.ID}
  当前的问题是: {
    TRIGGER.NAME}

6. 给用户绑定媒体

管理】------>【用户】选择Admin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试
断掉10.10.10.12(nginx服务)的网卡
在这里插入图片描述
等一会,会发现钉钉已经收到消息
在这里插入图片描述

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w918589859/article/details/112093347

智能推荐

videojs+hls+rtmp网页播放_videojs播放rtsp_不会写代码的一木的博客-程序员秘密

博主后面补充了一篇博文,具体可参考博客:https://www.cnblogs.com/FHC1994/p/11724484.html-----------------------------------------------------------------------------------------------------------------------------------...

【LeetCode】1.TwoSum(两数之和)_public static int[] twosum(int[] nums, int target)_Anabel Chen的博客-程序员秘密

1.TwoSumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not us...

CentOS mini 7下离线安装rabbitmq_澹泊明志 宁静致远的博客-程序员秘密

公司的开发环境没有联网,想要从一台崭新的mini centos7安装rabbitmq。用于后续的开发,由于对linux一点不懂,被这个依赖包的问题折磨完了。不过最终还是找到一个办法。centos下一些命令需要的rpm包可以在此网站下载。http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/比如gcc,autoconf等命令。但是这种适合单独下载某个指定的rpm。但是无法处理关联的依赖问题。所以最简单的还是通过yum这种方式去下载到指定

求两条直线(线段)的交点_iteye_3619的博客-程序员秘密

如图,如何求得直线 AB与直线 CD的交点P?以上内容摘自《算法艺术与信息学竞赛》。思路就是利用叉积求得点P分线段DC的比,然后利用高中学习的定比分点坐标公式求得分点P的坐标。看不懂的可以去复习下 定比分点 的知识。#include &amp;lt;math.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;string.h&amp;gt;...

c++面向对象前言及意见征集(来者不拒)视频课程-师占标-专题视频课程_房桥公司的博客-程序员秘密

从c++面向对象的发展史到面向对象是如何产生的、封装继承多态全面理解深入教学

aws cloud map_Google Cloud击败AWS的11种方式_cxt70571的博客-程序员秘密

aws cloud map 毫无疑问, Amazon Web Services在云中占有不可思议的优势。 该公司已经发布了如此多的产品并创建了许多惊人的工具,以至于市场通过向AWS奖励其在全球业务中所占比例惊人的高价来做出回应。 但这并不意味着AWS是该市唯一的游戏。 Google正在努力运行,并利用其用来构建主导搜索引擎的所有专业知识来创建云产品。 Google Cloud Platfor...

随便推点

nginx配置防止域名恶意解析_防恶意解析配置_伟BigBig的博客-程序员秘密

前几发生一件事情,就是通过nginx日志发现有一个域名恶意指向到了我的服务器,大家可以去查查域名恶意解析可能会造成的危害。由于我是用的nginx配置了一个反向代理,所以直接配置nginx就可以实现域名恶意解析的问题了。首先打开我们的nginx配置文件nginx.conf,然后加入如下配置server { listen 80 default_server; server_name...

在使用“U盘系统盘制作工具”时遇到的问题和有关理解_cai649399010的博客-程序员秘密

题记:不付出代价,有些教训是买不到的。所以面对付出的代价,我们释然。症状一:    我一开始下载了“大白菜U盘启动制作工具”的安装程序,一键把U盘制成USB HDD启动模式后,我打开U盘,发现里面什么东西也没有。我一开始以为是“大白菜U盘启动制作工具”将U盘格式化后,只是把U盘制成如空白光盘般的具有启动作用的存储器。后来我就在网上疯狂地找PE系统,但还是事与愿违。我开始认为“大白菜U盘启动制作工具...

曲线拟和函数lsqcurvefit & nlinfit_nlinfit和lsqcurvefit_Babyfacer的博客-程序员秘密

转载自:http://panda0411.com/2011/08/29/curve-fit-and-function-lsqcurvefitnlinfit/琢磨了好久matlab自带的曲线拟和工具箱, 发现这货只能解决从离散数据得到各种类型的拟和效果, 但是反之貌似没法实现, google一下有这两个函数可以用:lsqcurvefit和nlinfitlsqcurvefit(非线性最小二乘法)hel

Day02-运算符,分支结构_??fengyu的博客-程序员秘密

总结运算符1.数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余,取模)、//(整除)、**(幂运算)+、-、*、/ - 和数学中的加减乘除的功能一摸一样print(4 + 29) # 33print(42 - 132) # -90print(5 / 2) # 2.5print(4 * 2) # 8a = 1 / 7 print(a * 7) # 1.0% - 求余数print(5 % 2) # 1print(9 % 3) # 0应用一:

Java中executeBatch()返回值为-2_niuhea的博客-程序员秘密

PrepareStatement 也是接口,PrepareStatement extends Statement,PrepareStatement 本身没有 int[] executeBatch() throws SQLException 方法,而是继承了Statement的方法,且它们都是接口没有实际实现方法,但Statement接口对executeBatch()方法做了规范:将一批命令提交

Java连接数据库(以Sql Server为例)_f_jy的博客-程序员秘密

2种方法:JDBC和JDBC-ODBC Bridge官方说明如下:http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/bridge.doc.htmlIf possible, use a Pure Java JDBC driver instead of the Bridge and an ODBC driver. This comple