百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Zabbix 5.0监控平台搭建与被监控端的添加

yuyutoo 2024-11-10 13:48 2 浏览 0 评论

一、Zabbix概述

1、Zabbix简介

?zabbix是一个基于WEB界面的提供 分布式系统监控以及网络监控功能 的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由zabbix server与可选组件zabbix agent两部分组成:

  • zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
  • zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

2、Zabbix监控工作原理

?Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。

?当Zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。

agent收集数据分为主动和被动两种模式:

  • 主动: agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。
  • 被动: server向agent请求获取监控项的数据,agent返回数据。

3、Zabbix的常用组件

?Zabbix Web Gui: 提供Web界面。

Zabbix Databases:提供数据库存储功能并用于存储配置信息。以及采集到的数据。

?Zabbix Server : 接收来自Agent采集数据的核心组件。

?Zabbix Agent :部署在被监控的主机上,用于采集本地的数据。

?Zabbix Proxy: 当监控节点较多时,用于减轻Server压力组件,也可用于分布式。监控系统,由Proxy接收数据后统一发送给Server。

4、Zabbix支持的数据采集协议

?SNMP(Simple Network Managerment Protocol):这是一个非常古老的且通用的监控协议,几乎任何设备都支持用此方式进行系统的监控。

?Agent:在监控端安装专门的监控程序,将数据采集后通过Agent发送至Server。

?IPMI:智能平台管理接口,即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。

?JMX:Java Managerment Exlensions。



5、常见进程


?zabbix-_agentd:客户端守护进程,负责收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

?zabbix_get:zabbix数据接收工具,单独使用的命令,通常在Server或者Proxy端执行获取远端客户信息的命令。通常客户排错。例如在Server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

?zabbix_sender:zabbix数据发送工具,用于发送数据给Server或者Proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

?zabbix--_proxy:zabbix代理守护进程。功能类似Server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到Server里。

?zabbix-_java-_gateway:Java网关,类似agentd,但是只用于Java方面。它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到Server或者proxy。

二、Zabbix监控平台搭建

环境介绍:

?CentOS 7.5

?Zabbix-server(监控端)192.168.2.128

?Zabbix-agent (被监控端)192.168.2.129

1.基础环境配置:

[root@localhost ~]# systemctl disable firewalld   #禁止防火墙服务启动

[root@localhost ~]# systemctl stop firewalld    #关闭防火墙服务

[root@localhost ~]# setenforce = 0     #临时关闭SELinux        

[root@localhost ~]# vim /etc/sysconfig/selinux    #修改将“SELINUX=enforcing”更改为“SELINUX=disabled”,永久关闭SELINUX
...
SELINUX=disabled
...

[root@localhost ~]# getenforce
Disabled

[root@localhost ~]# yum install tree net-tool net-snmp vim ntpdate  wget                 #安装部分基础软件包

[root@localhost ~]# cd /etc/yum.repos.d/         #修改yum源 更改为阿里云 

[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak    #备份文件    

[root@localhost ~]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo            #下载阿里云镜像仓库

[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo     #下载epel仓库

[root@localhost ~]# yum clean all    #清理缓存            

[root@localhost ~]# yum makecache   #重新生成缓存                                                     

2.安装Mysql数据库

[root@localhost ~]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm       //下载Mysql 5.7 Yum源

[root@localhost ~]# ls mysql57-community-release-el7-11.noarch.rpm 
mysql57-community-release-el7-11.noarch.rpm

[root@localhost ~]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm      //安装Mysql Yum源

[root@localhost ~]# yum -y install mysql-server    //安装mysql

[root@localhost ~]# systemctl start mysqld   //启动Mysqld服务

[root@localhost ~]# systemctl enable mysqld    //开机自启mysql

[root@localhost ~]# ss -antulp | grep :3306
tcp    LISTEN     0      80     [::]:3306               [::]:*                   users:(("mysqld",pid=54086,fd=21))

[root@localhost ~]# grep 'root@localhost:' /var/log/mysqld.log   //查看初始密码
2020-03-20T00:57:34.072739Z 1 [Note] A temporary password is generated for root@localhost: hsQ(7(so_cgX

[root@localhost ~]# mysql -hlocalhost -uroot -p'hsQ(7(so_cgX' //使用初始密码登陆
mysql: [Warning] Using a password on the command line interface can be insecure.
...
Server version: 5.7.29
...
mysql>

mysql> alter user root@"localhost" identified by "123qqq...A";   修改登陆密码

[root@localhost ~]# mysql -uroot -p123qqq...A    //使用新密码登陆

3.安装Zabbix 5.0监控平台

?安装Zabbix Yum源仓库

[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

[root@localhost ~]# yum clean all

?安装Zabbix Server 与 Zabbix agent

[root@localhost ~]# yum -y install zabbix-server-mysql zabbix-agent

注意:
?如果安装中报错:Delta RPMs disabled because /usr/bin/applydeltarpm not installed,则安装 deltarpm软件。

yum -y  install deltarpm

?安装Zabbix frontend

[root@localhost ~]# yum -y install centos-release-scl

[root@localhost ~]# vim /etc/yum.repos.d/zabbix.repo
...
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1        //将0修改为1
...

?安装Zabbix前端包

[root@localhost ~]# yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl

?创建和初始化数据库

[root@localhost ~]# mysql -uroot -p123qqq...A
...
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> create user zabbix@localhost identified by '123qqq...A';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

?导入Zabbix数据库结构和数据

[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123qqq...A zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.

?其中-uzabbix是前面在数据库中创建的用户,-p123qqq...A是前面数据库中创建的用户的密码,后面的zabbix是前面创建的数据库。


4.配置Zabbix server

[root@localhost ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
#        listen          80;
#        server_name     example.com;
取消以上两行注释修改后为以下:
server {
        listen          80;
        server_name     example.com;
...

[root@localhost ~]# cat /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
        listen          80;
        server_name     example.com;

        root    /usr/share/zabbix;

        index   index.php;

        location = /favicon.ico {
                log_not_found   off;
        }

        location / {
                try_files       $uri $uri/ =404;
        }

        location /assets {
                access_log      off;
                expires         10d;
        }

        location ~ /\.ht {
                deny            all;
        }

        location ~ /(api\/|conf[^\.]|include|locale) {
                deny            all;
                return          404;
        }

        location ~ [^/]\.php(/|$) {
                fastcgi_pass    unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;

                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;

                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout         60;
                fastcgi_send_timeout            180;
                fastcgi_read_timeout            180;
                fastcgi_buffer_size             128k;
                fastcgi_buffers                 4 256k;
                fastcgi_busy_buffers_size       256k;
                fastcgi_temp_file_write_size    256k;
        }
}

[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
...
116 DBUser=zabbix     //用户名要与数据库中创建的供zabbix访问的用户名一致
...
124 DBPassword=123qqq...A      //去掉注释,添加创建的zabbix用户的数据库密码
...

为Zabbix前端配置PHP

[root@localhost ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx       //添加一个nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/opt/rh/rh-php72/lib/php/session/

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[max_input_vars] = 10000
; php_value[date.timezone] = Europe/Riga     
--》取消注释将Europe/Riga时区修改为以下:
php_value[date.timezone] = Aisa/Shanghai

6.开启服务

[root@localhost ~]# systemctl restart zabbix-server zabbix-agent  httpd rh-php72-php-fpm

[root@localhost ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

[root@localhost ~]# ss -antulp | grep :80
tcp    LISTEN     0      128      :::80                   :::*                   users:(("httpd",pid=5619,fd=4),("httpd",pid=5618,fd=4),("httpd",pid=5617,fd=4),("httpd",pid=5616,fd=4),("httpd",pid=5614,fd=4),("httpd",pid=5585,fd=4))

[root@localhost ~]# ps -aux | grep zabbix
......
apache     5677  0.0  0.3 336672  7316 ?        S    16:36   0:00 php-fpm: pool zabbix
root       5809  0.0  0.0 112736   976 pts/0    S+   16:47   0:00 grep --color=auto zabbix

7.访问








报错:



检查设置时区的配置文件,发现是时区写错了


[root@localhost ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
...
php_value[date.timezone] = Aisa/Shanghai     //错误,应该是Asia/Shanghai
修改:
php_value[date.timezone] = Asia/Shanghai

[root@localhost ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm     //重启服务



?可以看到已经登录到zabbix 5.0监控界面了,上面的红色提示不是报错,只是提示之前“2次登录尝试失败..”刷新一下提示就消失了。


修改Zabbix 5.0界面语言为中文:




三、被监控端Zabbix-agent添加

永久关闭防火墙

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld     //永久关闭防火墙


[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/6/x86_64/zabbix-agent-5.0.0-1.el6.x86_64.rpm

[root@localhost ~]# ll -h zabbix-agent-5.0.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 436K 5月  11 20:06 zabbix-agent-5.0.0-1.el6.x86_64.rpm

[root@localhost ~]# rpm -ivh zabbix-agent-5.0.0-1.el6.x86_64.rpm
警告:zabbix-agent-5.0.0-1.el6.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
错误:依赖检测失败:
        libpcre.so.0()(64bit) 被 zabbix-agent-5.0.0-1.el6.x86_64 需要

注意:

?如果下载的zabbix-agent 5.0安装包使用rpm安装时提示“错误:依赖检测失败:libpcre.so.0()(64bit)”,则可以使用zabbix 5.0 Yum源来安装zabbix-agent 5.0软件。

----> 传送门 安装zabbix-agent5.0 报错解决

安装Zabbix Yum源仓库

[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

[root@localhost ~]# yum clean all

?使用Zabbix 5.0 Yum源文件安装zabbix-agent 5.0软件,并且将gpgcheck=1修改为gpgcheck=0,防止出现“获取GPG密钥失败”报错。

修改Zabbix 5.0 Yum源配置文件:

[root@localhost ~]# sed -i "s/gpgcheck=1/gpgcheck=0/g" /etc/yum.repos.d/zabbix.repo

[root@localhost ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0          //修改gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=0        //修改gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0        //修改gpgcheck=0

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0        //修改gpgcheck=0

[root@localhost ~]# yum -y install zabbix-agent     //安装zabbix-agent 5.0软件
...
已安装:
  zabbix-agent.x86_64 0:5.0.0-1.el7

完毕!

修改zabbix-agent配置文件:

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
119 Server=127.0.0.1,192.168.2.128   //Zabbix-server地址,多个用","隔开
160 ServerActive=192.168.2.128     //主动检查本主机数据发送给Zabbix-server
171 #Hostname=Zabbix server
172 Hostname=192.168.2.129     //客户端IP地址

[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent

[root@localhost ~]# ss -antulp | grep :10050
tcp    LISTEN     0      128       *:10050                 *:*                   users:(("zabbix_agentd",pid=3389,fd=4),("zabbix_agentd",pid=3388,fd=4),("zabbix_agentd",pid=3387,fd=4),("zabbix_agentd",pid=3386,fd=4),("zabbix_agentd",pid=3385,fd=4),("zabbix_agentd",pid=3384,fd=4))
tcp    LISTEN     0      128      :::10050                :::*                   users:(("zabbix_agentd",pid=3389,fd=5),("zabbix_agentd",pid=3388,fd=5),("zabbix_agentd",pid=3387,fd=5),("zabbix_agentd",pid=3386,fd=5),("zabbix_agentd",pid=3385,fd=5),("zabbix_agentd",pid=3384,fd=5))








如果你觉得这篇文章还不错,就请动动你的发财手为本文点赞-评论-转发吧,因为这将是我持续输出更多优质文章的最强动力,谢谢!

相关推荐

jQuery VS AngularJS 你更钟爱哪个?

在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...

Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0

在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...

如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例

要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...

编程技巧:Jquery实时验证,指定长度的「负小数」

为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

编程技巧:Jquery实时验证,指定长度的「正小数」

为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...

jquery.validate检查数组全部验证

问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...

Vue进阶(幺叁肆):npm查看包版本信息

第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...

layui中使用lay-verify进行条件校验

一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...

jQuery是什么?如何使用? jquery是什么功能组件

jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...

django框架的表单form的理解和用法-9

表单呈现...

jquery对上传文件的检测判断 jquery实现文件上传

总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...

Nodejs之MEAN栈开发(四)-- form验证及图片上传

这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...

大数据开发基础之JAVA jquery 大数据java实战

上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...

推荐四个开源的jQuery可视化表单设计器

jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...

取消回复欢迎 发表评论: