⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 民工哥技术之路 www.exyb.cn/news/show-146464.html blog.csdn.net/2302_77582029/article/details 「民工哥技术之路」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

前面介绍了 企业级监控概述及发展、企业监控运维、常见运维工具、数据库监控、Zabbix 等开源监控系统对比分析相关的知识点,今天我将详细的为大家介绍 Zabbix入门与安装相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!

Zabbix简介

在企业网络运维过程中,管理员必须随时关注各服务器和网络的运行状况,以便及时发现问题,尽可能减少故障的发生。当网络中的设备,服务器等数量较多时,为了更加方便,快捷的获得监控信息,通常会借助于一些集中监测软件。

想要实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的途径。

就目前而言,有服务器的地方就少不了监控系统,现有的监控系统软件很多,但是zabbix可灵活的监控服务器资源,并且集cacti与nagios两者的优点于一身且功能更强大,实现企业级分布式监控,所以在市场应用更广。

Zabbix 是一个基于 web 界面的企业级开源监控套件,由C语言编写而成的底层架构(server端和agent端),由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。世界上很多大小不同的组织机构都依赖与zabbix作为自己的一个主要的监控平台,尤其是现在很多互联网企业都在使用它。

提供分布式系统监控与网络监控功能,具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表,图表的绘制等功能。

检测的对象可以是linux或windows服务器,也可以是路由器,交换机等网络设备,通过SNMP(Simple network protocol 简单网络管理协议),zabbix agent,ping,端口监视等方法提供对远程网络服务器等监控,数据收集等功能,并提供通知机制使系统管理员可以快速定位,解决系统中存在的各种问题。

Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。

  • 被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据
  • Server端:通过收集SNMP和agent发送的数据,写入MySQL数据库,再通过php+apache在web前端展示。

Zabbix运行条件

  • Server:Zabbix Server 需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。
  • Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HP(Unix)、Oracle(Solaris)、windows等。
  • SNMP:支持各类常见的网络设备。

Zabbix 主要功能

  • 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP等通用协议监控、多种告警方式、详细的报表图表绘制);
  • 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现);
  • 支持分布式,能集中展示、管理分布式的监控点,扩展性强;
  • server提供通用接口(api功能),可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置;
  • 数据收集,支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET;
  • 自定义的检测;
  • 自定义收集数据的频率;
  • 服务器/代理和客户端模式;
  • 灵活的触发器,可以定义非常灵活的问题阈值,称为触发器;
  • 高可定制的报警,发送通知,可定制的报警升级,收件人,媒体类型;
  • CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等;

zabbix的系统架构

Zabbix 优劣势

优点

  • 开源,无软件成本投入;
  • Server对设备性能要求低(实际测试环境:虚拟机Redhat EL AS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);
  • 支持设备多;
  • 支持分布式集中管理;
  • 开放式接口,扩展性强;
  • 当监控的item比较多服务器队列比较大时可以采用被对状态,被监控客户端主动从server端去下载需要监控的item然后取数据上传到server端。这种方式对服务器的负载比较小。

缺点

  • 无厂家支持,出现问题解决比较麻烦
  • 需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。

zabbix的监控原理

组件说明

  • zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
  • database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
  • web interface:zabbix的GUI接口;
  • proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
  • agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端。

监控流程

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。

这里agentd收集数据分为主动和被动两种模式:

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

客户端守护进程

此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

zabbix_get

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

zabbix_sender

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

zabbix_server

zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server。

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

zabbix_proxy:

zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。

zabbix_java_gateway:

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

zabbix的监控架构

在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构:server-client 、master-node-client、server-proxy-client三种 。

server-client架构

也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。

server-proxy-client架构

其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。

master-node-client架构

该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。

zabbix的安装部署

配置要求

关于Zabbix 6.0的一些介绍可以参考:https://www.zabbix.com/documentation/6.0/zh/manual/introduction/whatsnew600

初始环境

关闭系统防火墙

[root@Zabbix ~]# systemctl  stop firewalld 
[root@Zabbix ~]# systemctl disable firewalld
[root@Zabbix ~]# vim /etc/selinux/config
SELINUX=disabled

关闭交换分区

[root@Zabbix ~]# swapoff  -a 
[root@Zabbix ~]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0

部署各类软件

部署nginx+php环境

安装配置nginx

[root@Zabbix ~]# rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
[root@Zabbix ~]# mkdir /web
[root@Zabbix ~]# vim /etc/nginx/conf.d/zabbix.conf
server {listen 80;server_name localhost;root /web;location / {index index.php index.html;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
[root@Zabbix ~]# systemctl enable nginx
[root@Zabbix ~]# systemctl start nginx

安装并配置php

[root@Zabbix ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Zabbix ~]# yum -y install epel-release
[root@Zabbix ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@Zabbix ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #webtatic源,一个web服务的源#安装php7及其它依赖软件
[root@Zabbix ~]# yum -y install gcc gcc-c++ php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd[root@Zabbix ~]# cd /web/
[root@Zabbix web]# vim index.php #创建php测试页
<?php
phpinfo();
?>
[root@Zabbix web]# systemctl enable php-fpm
[root@Zabbix web]# systemctl start php-fpm

部署数据库

注:zabbix6.0不支持mariadb5.5,要安装新版本数据库。

配置mariadb源

[root@Zabbix web]# vim  /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB?spm=a2c6h.25603864.0.0.33b75602iN6BeE
gpgcheck = 1
enable = 1

下载并启动

[root@Zabbix web]# yum -y install mariadb-server
[root@Zabbix web]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@Zabbix web]# systemctl start mariadb

初始化数据库

[root@Zabbix web]# mysql_secure_installation
Enter current password for root (enter for none): #回车
Switch to unix_socket authentication [Y/n] n #是否更改套接字
Change the root password? [Y/n] y #改root密码
Remove anonymous users? [Y/n] y #清除匿名用户
Disallow root login remotely? [Y/n] y #是否允许root远程登录
Remove test database and access to it? [Y/n] y #清除测试数据库
Reload privilege tables now? [Y/n] y #刷新表权限

创建zabbix用户及数据库

[root@Zabbix web]# mysql -uroot -padmin@123
MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin;
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> grant all on zabbix.* to zabbix@'10.10.10.%' identified by 'zabbix';
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.001 sec)

编译安装Zabbix-server

下载zabbix6.0包

[root@Zabbix web]# wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.9.tar.gz

安装依赖

[root@Zabbix web]# yum -y install  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

编译安装zabbix

[root@Zabbix web]# tar xzf zabbix-6.0.9.tar.gz 
[root@Zabbix web]# cd zabbix-6.0.9
[root@Zabbix zabbix-6.0.9]# ./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
[root@Zabbix zabbix-6.0.9]# make install

修改zabbix服务端配置文件

[root@Zabbix zabbix-6.0.9]# vim /etc/zabbix/zabbix_server.conf
[root@Zabbix zabbix-6.0.9]# grep -n '^[a-Z]' /etc/zabbix/zabbix_server.conf
12:ListenPort=10051
38:LogFile=/tmp/zabbix_server.log
87:DBHost=localhost
99:DBName=zabbix
115:DBUser=zabbix
123:DBPassword=zabbix
507:Timeout=4
593:LogSlowQueries=3000
708:StatsAllowedIP=127.0.0.1

向数据库中导入zabbix的库表及数据

#注意导入的顺序
[root@Zabbix zabbix-6.0.9]# cd database/mysql/
[root@Zabbix mysql]# mysql -uroot -pzabbix zabbix < schema.sql
[root@Zabbix mysql]# mysql -uroot -pzabbix zabbix < images.sql
[root@Zabbix mysql]# mysql -uroot -pzabbix zabbix < data.sql
[root@Zabbix mysql]# mysql -uroot -pzabbix zabbix < double.sql
[root@Zabbix mysql]# mysql -uroot -pzabbix zabbix < history_pk_prepare.sql

移动zabbix前端页面到网站根目录

[root@Zabbix ~]# cp -r /web/zabbix-6.0.9/ui/*  /web/

配置zabbix系统启停命令

[root@Zabbix mysql]# vim /usr/lib/systemd/system/zabbix.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
[root@Zabbix mysql]# systemctl daemon-reload #加载配置文件
[root@Zabbix mysql]# systemctl enable zabbix
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix.service to /usr/lib/systemd/system/zabbix.service.
[root@Zabbix mysql]# systemctl start zabbix

进入访问页面及后续问题解决

浏览器访问zabbix

网页输入IP自动跳转安装页面

点击下一步会遇到报错如下图,这时候需要修改php配置文件

[root@Zabbix mysql]# vim /etc/php.ini 
[root@Zabbix mysql]# egrep -n '^max_.*_time|post_max' /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
[root@Zabbix mysql]# systemctl restart php-fpm

配置数据库

其它设置

安装完成需要创建zabbix.conf.php文件,可以根据页面提示保存到相对位置下

[root@Zabbix mysql]# cd /web/conf/
[root@Zabbix conf]# ll
总用量 12
drwxr-xr-x 2 root root 6 10月 14 15:30 certs
-rw-r--r-- 1 root root 1036 10月 14 15:30 maintenance.inc.php
-rw-r--r-- 1 root root 1732 10月 14 15:48 zabbix.conf.php
-rw-r--r-- 1 root root 1710 10月 14 15:30 zabbix.conf.php.example

登录

解决Zabbix中文乱码问题

字体设置中文后查看图标会出现如下图的问题

上传一个中文的ttf字体替换zabbix自用的字体即可

[root@Zabbix conf]# cd /web/assets/fonts/
[root@Zabbix fonts]# ll
总用量 740
-rw-r--r-- 1 root root 756072 10月 14 15:30 DejaVuSans.ttf
[root@Zabbix fonts]# rz -E
rz waiting to receive.
[root@Zabbix fonts]# ll
总用量 4780
-rw-r--r-- 1 root root 756072 10月 14 15:30 DejaVuSans.ttf
-rw-r--r-- 1 root root 4135804 3月 9 2020 simkai.ttf
[root@Zabbix fonts]# rm -rf DejaVuSans.ttf
[root@Zabbix fonts]# mv simkai.ttf DejaVuSans.ttf

安装 Zabbix-agent

当我们把监控端配置启动以后,我们需要来设置一下我们的被监控端,我们在被监控的主机安装好zabbix-agent,设置好他的所属的监控端server,并把他添加到server端,就能将其纳入我们的监控系统中去了。

# 配置阿里云下载源
vim /etc/yum.repos.d/zabbix.repo
内容如下:
[zabbix]
name=Zabbix Official Repository
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

# 清除yum安装包建立新的缓存
yum clean && yum makecache
# 安装zabbix
yum install -y zabbix-agent

zabbix 配置文件详解

server端配置文件

如下所示

主要参数及其作用如下所示:

DBHost #数据库主机地址
DBName #数据库名称
DBUser、DBPassword #数据库用户名和数据库密码
DBPort #数据库连接端口
AlertScriptPath #告警脚本存放路径
CacheSize #缓存大小
CacheUpdateFrequency #缓存更新时间
DebugLevel #日志级别
LogFile #日志文件名称
LogFileSize #日式文件大小,超出指定的值会进行自动切割
LogSlowQueries #数据库慢查询时间,单位为毫秒
PidFile #PID文件
ProxyConfigFrequency #在Proxy被动模式下,Server主动向Proxy同步配置文件的时间
ProxyDataFrequency #在Proxy被动模式下,Server主动向Proxy请求历史数据时间
StartDiscovers #发现规则的线程数
Timeout #链接Agent超时时间
TrendCacheSize #历史数据缓存大小
User #执行zabbix监控的用户
HistoryCacheSize #历史记录缓存大小
ListenIP #监听的IP地址
ListenPort #监听的端口号
LoadModule #加载的模块
LoadModulePath #加载模块的路径

zabbix agent端配置文件

主要参数及其作用如下:

EnableRemoteCommand  #是否允许服务端远程执行命令或者脚本
HostName #客户端主机名
ListenIP #客户端监听的IP地址,如果zabbix处于被动模式下,zabbix客户端也需要监听端口,以对服务端的请求进行响应。
ListenPort #客户端监听的端口号,默认为10050。
LoadModulePath #加载模块路径
LogFile #日志文件
PidFile #PID文件
Server #服务端IP地址,在被动模式下,该地址相当于授权。
ServerActive #主动模式下服务端IP地址。
StartAgentsAgent #启动进程,如果设置为0,则表示禁止被动监控。
Timeout #超时时间
Userzabbix #客户端运行的用户
UserParameter #用户自定义key
BuffeSize #缓冲区大小
DebugLevel #日志级别

以上就是关于Zabbix的一些简单介绍与安装等入门的知识点总结。

文章目录
  1. 1. Zabbix简介
  2. 2. Zabbix运行条件
  3. 3. Zabbix 主要功能
  4. 4. zabbix的系统架构
  5. 5. Zabbix 优劣势
    1. 5.0.1. 优点
    2. 5.0.2. 缺点
  • 6. zabbix的监控原理
    1. 6.0.1. 组件说明
    2. 6.0.2. 监控流程
    3. 6.0.3. 客户端守护进程
    4. 6.0.4. zabbix_get
    5. 6.0.5. zabbix_sender
    6. 6.0.6. zabbix_server
    7. 6.0.7. zabbix_proxy:
    8. 6.0.8. zabbix_java_gateway:
  • 7. zabbix的监控架构
    1. 7.0.1. server-client架构
    2. 7.0.2. server-proxy-client架构
    3. 7.0.3. master-node-client架构
  • 8. zabbix的安装部署
    1. 8.0.1. 初始环境
  • 9. 部署各类软件
    1. 9.0.1. 部署nginx+php环境
    2. 9.0.2. 部署数据库
    3. 9.0.3. 编译安装Zabbix-server
  • 10. 进入访问页面及后续问题解决
    1. 10.0.1. 浏览器访问zabbix
    2. 10.0.2. 解决Zabbix中文乱码问题
    3. 10.0.3. 安装 Zabbix-agent
  • 11. zabbix 配置文件详解
    1. 11.0.1. server端配置文件
    2. 11.0.2. zabbix agent端配置文件