Linux CentOS-7 系统 离线安装部署Zabbix--->自定义监控--->短信报警 详细教程

2023-11-01

在内网环境,我们无法连接外网,这个时候想要使用zabbix,就要进行离线安装了

安装部署zabbix有三种方法:

一是使用源码安装,二是使用RPM包安装,三是使用容器部署,这里讲的是RPM包安装

可以自己线上下载包,也可以用我已经准备好的RPM安装包

目录

一、在自己电脑虚拟机上准备好zabbix所需安装安装包

1、关闭防火墙和SELINUX安全模式

 2、安装zabbix的rpm源

3、下载zabbix所需安装包

        1.下载zabbix service和agent包

        2.下载 Red Hat Software Collections:方便php高版本的安装。

        3.下载 Zabbix前端web软件包。

        4.下载 mysql数据库:

        5. 创建本地yum仓库

二、在内网环境进行离线安装zabbix

1、zabbix服务端准备

        1.配置主机名

        2.关闭防火墙和SELINUX安全模式

2、备份系统YUM源

3、本地yum仓库配置

4、开始安装zabbix

        1.安装zabbix server、agent和Software Collections及mysql数据库。

        2.安装zabbix 前端web。

         3.配置数据库

         4、初始化数据库并设置数据库登录密码

        5、进入数据库,创建zabbix数据库

        6.导入初始架构和数据

         7.修改zabbix_server.conf配置文件

        8.修改 zabbix 的 php 配置文件

        9.启动Zabbix server和agent进程,并为它们设置开机自启 

        10.配置Zabbix前端-web界面安装

 5、客户端zabbix-agent添加

          1.关闭防火墙和SELINUX安全模式

        2.上传zabbix-agent安装包到/tmp下

         3.安装zabbix-agent

        4.配置zabbix-agent

        5.启动zabbix-agent

        6.前端-web界面添加

三、自定义监控

1、脚本编写

2、zabbix前端界面配置操作

        1.新建模板

2.新建应用集

 3.新建监控项

 4.新建触发器

 5.应用模板

6.查看是否成功

 四、信息报警

1、脚本添加

2、在zabbix的操作界面添加短信报警媒介;

3、对指定的用户添加短信报警方式;

4、设置动作何时进行短信报警;

5、测试


一、在自己电脑虚拟机上准备好zabbix所需安装安装包

1、关闭防火墙和SELINUX安全模式

#关闭防火墙并设置开机不启动
systemctl stop firewalld

systemctl disable firewalld

#关闭SElinux安全模式
setenforce 0
    
#设置永久关闭selinux

vi /etc/selinux/config

#修改SELINUX:
SELINUX=disabled

#重启生效
reboot

cced805592664616b37f80cfb8a5b90c.pngba2a22441edb4fba925bfdb192866e7b.png

 2、安装zabbix的rpm源

#使用国内镜像源——阿里云源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

#更改使用国内镜像源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

#清除所有缓存
yum clean all
 

4ab5a20e20a942e7a89b3d4869650aee.png

3、下载zabbix所需安装包

通过yum --downloadonly命令只下载rpm包不安装进行缓存

        1.下载zabbix service和agent包

yum install zabbix-server-mysql zabbix-agent --downloadonly --downloaddir=/tmp/offline_rpm

#如报没有downloadonly功能,下载即可
yum install yum-plugin-downloadonly

        2.下载 Red Hat Software Collections:方便php高版本的安装。

yum install centos-release-scl --downloadonly --downloaddir=/tmp/offline_rpm

#安装 Software Collections。
yum install centos-release-scl -y

#将[zabbix-frontend]下的 enabled 改为 1.
vi /etc/yum.repos.d/zabbix.repo

28c0dee9c50544a3a4f943f0971b86a6.png

        3.下载 Zabbix前端web软件包。

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl --downloadonly --downloaddir=/tmp/offline_rpm

        4.下载 mysql数据库:

yum install mariadb-server.x86_64 --downloadonly --downloaddir=/tmp/offline_rpm

        5. 创建本地yum仓库

使用createrepo来创建repository仓库,如果系统里没有该命令的话需要先进行createrepo的安装

9f8e4b6d807b4c84b1b9617fba62f048.png

yum install createrepo -y
# 使用createrepo来创建repository仓库
createrepo /tmp/offline_rpm

7eed145577594218a86fe37ab66f7ecc.png

#到存储目录下
cd /tmp/offline_rpm/

#查看是否有repodata这个文件夹,有就是创建成功了
ls

fe75de618b434375af2a023dc0f3993b.png

二、在内网环境进行离线安装zabbix

将 /tmp/offline_rpm 的这个offline_rpm文件夹全部拷入内网准备的zabbix服务端上的/tmp目录下。

1、zabbix服务端准备

        1.配置主机名

hostnamectl set-hostname zabbix-server

bash

        2.关闭防火墙和SELINUX安全模式

#关闭防火墙并设置开机不启动
systemctl stop firewalld

systemctl disable firewalld

#关闭SElinux安全模式
setenforce 0
    
#设置永久关闭selinux

vi /etc/selinux/config

#修改SELINUX:
SELINUX=disabled

#重启生效
reboot

2、备份系统YUM源

cd /etc/yum.repos.d

#创建备份文件夹
mkdir bak

#所有的repo文件移动到bak下
mv *.repo bak

e1c6d6d4048440be9fc2f19573ccd388.png

3、本地yum仓库配置

        1.在/etc/yum.repos.d/下新建一个repo文件。

vi /etc/yum.repos.d/new.repo

        2.写入如下内容。

[New]
name=New
baseurl=file:///tmp/offline_rpm
gpgcheck=0
enabled=1
        3.清除所有缓存
yum clean all

2ea4abe0c27244028d15687b723fa0ae.png

4、开始安装zabbix

        1.安装zabbix server、agent和Software Collections及mysql数据库。

        因为已经配了了的yum仓库里有包了,用命令直接安装即可

yum install zabbix-server-mysql zabbix-agent -y


yum install centos-release-scl -y


yum -y install mariadb-server.x86_64 

        安装zabbix server、agent和Software Collections后,/etc/yum.repos.d 下会生成两个新的.repo文件,将其移到bak下

ls

mv CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.repo bak

ls

df8774c2ffa84bebb7a5865601b99a8e.png

   注:如果不移走,会报以下错误

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

        2.安装zabbix 前端web。

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y

         3.配置数据库

#启动
systemctl start mariadb

#设置开机自启动
systemctl enable mariadb

#查看
systemctl status mariadb

0c4556c38e5d4bd0bb3b576bc64b0137.png

         4、初始化数据库并设置数据库登录密码

mysql_secure_installation
[root@zabbix-servre yum.repos.d]# 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): #此处直接回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
8、创建zabbix数据库。
Set root password? [Y/n] y #此处y
New password: #输入密码
Re-enter new password: #再次输入密码
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y #此处y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n #此处n
... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y #此处y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y #此处y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@zabbix-servre yum.repos.d]#

        5、进入数据库,创建zabbix数据库

        注意:设置编码格式为utf-8。

#进入数据库
mysql -u root -p

#创建数据库
create database zabbix character set utf8 collate utf8_bin;

#创建用户(注意修改password,这是之前初始化输入的密码)
create user zabbix@localhost identified by 'password';

#授权
grant all privileges on zabbix.* to zabbix@localhost;

#修改生效
flush privileges;

#退出
quit;

        6.导入初始架构和数据

        系统将提示您输入密码。

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

         7.修改zabbix_server.conf配置文件

#为zabbix server配置数据库
#修改内容
#DBPassword=password(你之前输的密码)
vi /etc/zabbix/zabbix_server.conf 

218550ffcccf450a858743fecb443796.png

        8.修改 zabbix 的 php 配置文件

#修改内容
#将注释;去掉,并修改为
#php_value[date.timezone] = Asia/Shanghai
vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 

e1fca5227c5e46ac83b0e05104f09edd.png

        9.启动Zabbix server和agent进程,并为它们设置开机自启 

#启动
systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm

#设置开机自启动
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

#查看
systemctl status zabbix-server zabbix-agent httpd rh-php72-php-fpm

        10.配置Zabbix前端-web界面安装

        连接Zabbix前端:http://IP/zabbix

b944d0f5743644748dd7c6dee6993e8c.png

         检查所有条件

2881f727ec254d07ad5edc8f6ae18b55.png

         配置数据库信息

1300719378de414ab7e7b1aaf65daccf.png

        服务器基本信息 

cedc615fe1a94ca0a504ea8c8b813ed3.png

        确认信息

ba81d0a9847c4428a26aa51923da025b.png

         安装完成

ba211da24ea046afa9f950129c177a99.png

         登录前端页面:系统默认的用户名和密码Admin/zabbix(注意大小写)

18d22bccebab4ab08e7a219ccbd3d682.png

         修改为中文

1f796dcdf9d34e95a15506039e6fa0a3.png

b33e29fda83c446dace1512306f3c9d1.png

 5、客户端zabbix-agent添加

          1.关闭防火墙和SELINUX安全模式

#关闭防火墙并设置开机不启动
systemctl stop firewalld

systemctl disable firewalld

#关闭SElinux安全模式
setenforce 0
    
#设置永久关闭selinux

vi /etc/selinux/config

#修改SELINUX:
SELINUX=disabled

#重启生效
reboot

        2.上传zabbix-agent安装包到/tmp下

        之前offline_rpm文件夹里有

b04995ac698843ea8406c4022ce2f1bd.png

         3.安装zabbix-agent

        cd到存放文件目录下安装

cd /tmp

#查看
ls

#安装
yum install zabbix-agent-5.0.32-1.el7.x86_64.rpm -y

0db9f82d1cf041e68ba9046563d88dfc.png

        4.配置zabbix-agent

vi /etc/zabbix/zabbix_agentd.conf

修改内容如下
# zabbix 服务端地址
Server=192.168.222.23
# zabbix活动服务器地址
ServerActive=192.168.222.23
# 主机名,也就是要监控的那台主机名,在web页面添加主机时需设置相同
Hostname=zabbix-agent

        5.启动zabbix-agent

#启动
systemctl start zabbix-agent

#设置开机自启动
systemctl enable zabbix-agent

#查看
systemctl status zabbix-agent

        6.前端-web界面添加

f2c70bbefce44789968dbd5984585fc1.png

a287063cb4044870ba079a3effc4b25e.png b1935ea5d1d74802a8c32519b2d406e8.png

         查看被监控主机是否连接上,状态是否正常

a5c144cd527e4c1c95557e898809ec26.png

 如果报下面的错,等10分即可,这个是说客服端正常运行时间小于10分钟a1d2c287e36f4b3fa9ecdc3552d7da48.png

三、自定义监控

1、脚本编写

        1.到需要监控的IP的zabbix-agent存放脚本的目录下创建一个新脚本

#进入/etc/zabbix/zabbix_agentd.conf查看自定义脚本存放路径
vi /etc/zabbix/zabbix_agentd.conf


#脚本要以.conf 结尾
#Include后面跟着的路径就是自定义脚本存放路径

cd /etc/zabbix/zabbix_agentd.d/

#创建一个新脚本,key很重要(就是命名),要记得,最好取容易看出是什么意思的
#脚本格式:UserParameter=<key>,<shell command>
#df -h|grep '/dev/mapper/centos-root'|awk '{print $5}'|awk -F "%" '{print $1}'  这个是查看内存还有百分之多少的
#样列:UserParameter=memory,df -h|grep '/dev/mapper/centos-root'|awk '{print $5}'|awk -F "%" '{print $1}'
#脚本得出的结果就是要监控的数据

vi memory.conf

#新脚本创建后,要重启zabbix-agent服务才生效

#前往服务端使用命令查看是否成功  命令自行修改
#呢此命令要安装zabbix_get才能使用

yum -y install zabbix-get-3.2.1-1.el7.x86_64.rpm

#如果安装失败,可在外网下载个zabbix-get安装包后上传到内网安装(或用我网盘包里zabbix-get,解压后搜索找到上传安装即可)

zabbix_get -s 客户端ip -p 10050 -k "key值"

zabbix_get命令常用参数:

-s 指定客户端主机名或者IP
-p 客户端端口,默认:10050
-I 指定源IP
-k 想要获取的key

2、zabbix前端界面配置操作

        1.新建模板

        如已有需要的模板,可跳过

 如果已有模板,但还需要新增一些功能项,可选择链接模板,此处我就不演示了,不做选择

2.新建应用集

一个应用集代表一个类型的监控项,如已有可不新建

 3.新建监控项

需要自定义监控的项目

 

 4.新建触发器

如果没有报警要求,可不设触发器

 5.应用模板

模板应用后,后继添加的应用集、监控项、触发器都会自己添加到该主机下面,如有不想用的,到该主机下面停用即可

6.查看是否成功

 四、信息报警

1、脚本添加

#查看zabbix_server配置文件zabbix_server.conf,确认信息报警脚本位置

vi /etc/zabbix/zabbix_server.conf

#AlertScriptsPath参数的路径为脚本路径,如果没有自行创建

我这用python来调用,也可用shell来调用(没有短信接口的,可用钉钉机器人来发送报警信息,教程自行百度)

#到该路径下
cd /usr/lib/zabbix/alertscripts/


#创建脚本
vi sms.py


#----python告警脚本(post)

#!/usr/bin/python
# -*- coding:utf-8 -*-

import json
import sys
import requests

url = 'api地址信息'

post_headers = {'Content-Type': 'application/json'}

post_data = {

"moban":"gj",
"num":sys.argv[1],
#"first":sys.argv[2],
"keyword1":"信息",
"remark":sys.argv[3],
"people":"key值"

}

ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)

print(ret.text)
#设置脚本和日志文件权限
touch /tmp/SMS.log

chown zabbix:zabbix /tmp/SMS.log

chown zabbix:zabbix /usr/lib/zabbix/alertscripts/sms.py

chmod +x /usr/lib/zabbix/alertscripts/sms.py

2、在zabbix的操作界面添加短信报警媒介;

调用脚本发送短信

 消息模板在zabbix中有,注意格式,如有报一大串字符,请手打短信模板试试,不要粘贴

 这提供两个模板

##告警
主机名称:{HOST.NAME}
IP地址:{HOST.IP}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警信息:{TRIGGER.NAME}
告警级别:{TRIGGER.SEVERITY}
检查项:{TRIGGER.KEY1}
当前状态:{TRIGGER.STATUS}
值={ITEM.LASTVALUE}
故障已持续{EVENT.AGE}

##恢复
主机名称:{HOST.NAME}
IP地址:{HOST.IP}
告警时间:{EVENT.DATE}{EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE}{EVENT.RECOVERY.TIME}
故障时长:{EVENT.AGE}
告警信息:{TRIGGER.NAME}
告警级别:{TRIGGER.SEVERITY}
检查项:{TRIGGER.KEY1}
当前状态:{TRIGGER.STATUS}
值={ITEM.VALUE}

测试

3、对指定的用户添加短信报警方式;

以管理员“admin”用户为例

4、设置动作何时进行短信报警;

5、测试

新增一个ip登录数的监控,触发器,每多一个远程控制界面,就多一个用户数

脚本内容

#查看有多少个连接数

UserParameter=user_sum,who  |wc -l

 添加自定义监控项跟前面教程来就行

弄成10s一更新,方便测试

大于等于6报警,小于6不报警,恢复正常

 弄好后自行测试是否成功(要在动作把这个报警添加上去)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux CentOS-7 系统 离线安装部署Zabbix--->自定义监控--->短信报警 详细教程 的相关文章

  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • 为什么 RHEL 上的 bash 中 `read -t` 没有超时?

    Why read t在 RHEL5 或 RHEL6 上从管道读取时不会超时 这是我的示例 在从管道读取数据时 我的 RHEL 盒子不会超时 tail f logfile log grep something read t 3 variabl
  • 有没有办法让 Linux CLI IO 重定向持久化?

    我有多个管道命令 如下所示 find options grep options xargs grep options 它们中的每一个都可能产生我不感兴趣的错误 权限错误 文件名空格错误等 因此 我想将所有错误重定向到 dev null 我知
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • Tk 初始化失败:无显示名称且无 $DISPLAY 环境变量

    我试图从 Ubuntu 终端调用 Centos 服务器上的工具 我收到以下错误 Tk 初始化失败 没有显示名称 也没有 DISPLAY 环境变量 请帮我解决这个问题 提前致谢 连接到你的 CentOS 机器ssh Y其中 每man ssh
  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • mod_perl 无法看到 /tmp 中的文件

    我有一些 mod perl 代码试图访问 tmp 下的文件 但它抛出 没有这样的文件或目录 错误 我在代码中添加了一个 ls al tmp 来查看 Perl 在目录中看到的内容 它只给了我 和 drwxrwxrwt 2 root root
  • 如何将字符串推送到标准输入?在启动时通过 stdin 提供输入,然后以交互方式读取 stdin 输入 [重复]

    这个问题在这里已经有答案了 有没有办法在调用程序时将字符串 推送 到程序的标准输入流 这样我们就可以达到这样的效果 echo something my program 但不是在之后读取 EOF something my program将从原
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 我可以告诉 Linux 不要交换特定进程的内存吗?

    有没有办法告诉 Linux 它不应该将特定进程的内存交换到磁盘 它是一个 Java 应用程序 所以理想情况下我希望有一种方法可以从命令行执行此操作 我知道您可以将全局交换性设置为 0 但这明智吗 您可以通过以下方式执行此操作姆洛克尔 2 h

随机推荐