Linux——zabbix

Linux——zabbix_第1张图片

 简介

官网:https://www.zabbix.com/

Zabbix 是一个开源的网络监控和警报解决方案。它允许管理员监控网络中的各种设备、服务器和应用程序,并收集有关它们性能和状态的数据。Zabbix 提供了一个集中化的管理界面,通过各种监控方式(如PING、SNMP、JMX 和自定义脚本)来监视系统的资源利用率、网络流量、服务可用性等。此外,Zabbix 还提供了灵活的警报功能,当某些指标超出设定的阈值时可以发送通知或执行特定操作。总的来说,Zabbix 是一个强大的工具,帮助管理员实时监控和管理复杂的 IT 环境。

常见的监控软件:zabbix、promehteus、nagios、cacti、open-falcon等
监控的意义:
    1.需要保障业务时时刻刻正常的运转,一旦出现问题,需要马上知道,赶紧修复
    2.解放人力,提升效率,获得更加多的幸福感和安全感

监控软件:
    1.开源的软件  zabbix,prometheus,cacti,nagios、open-falcon 等
    2.自研的,自己研发 falcon  

zabbix能监控什么?

Linux——zabbix_第2张图片

架构

参考:https://www.cnblogs.com/mysql-dba/p/5010902.html 

Linux——zabbix_第3张图片

重要组件说明:

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3)web interface:zabbix的GUI接口;

4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

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

一个监控系统运行的大概的流程是这样的:

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

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

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

【主动监测】通信过程如下:

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:

 获取ACTIVE ITEMS列表

  • Agent打开TCP连接(主动检测变成Agent打开)
  • Agent请求items检测列表
  • Server返回items列表
  • Agent 处理响应
  • 关闭TCP连接
  • Agent开始收集数据

主动检测提交数据过程如下:

  • Agent建立TCP连接
  • Agent提交items列表收集的数据
  • Server处理数据,并返回响应状态
  • 关闭TCP连接

【被动监测】通信过程如下:

  • Server打开一个TCP连接
  • Server发送请求agent.ping\n
  • Agent接收到请求并且响应
    1
  • Server处理接收到的数据1
  • 关闭TCP连接

这里,有人可以看出来,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。

还有人会问,那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:

1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。

2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

安装和使用

1. 安装zabbix环境

官网

根据Centos的版本进入官网www.zabbix.com选择要下载的zabbix版本

安装zabbix服务器的源

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

安装zabbix相关软件

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

安装前端相关的软件并修改配置

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

修改仓库文件,启用前端的源

[root@zabbix ~]# vim /etc/yum.repos.d/zabbix.repo

安装web相关的软件

[root@zabbix ~]# yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl

安装数据库

如果已经存在mysql的centos系统,则不需要重新安装数据库

如果系统中没有数据库,需要进行安装

[root@zabbix ~]# yum install mariadb mariadb-server -y

mariadb-server 服务器端的软件包

mariadb 提供客户端命令的软件包启动数据库

[root@zabbix ~]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service

设置mariadb数据库开机启动

[root@zabbix ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

查看mysql的进程是否运行

[root@zabbix ~]# ps aux|grep mysqld
mysql      2574  0.0  0.1 113412  1596 ?        Ss   11:22   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      2739  0.1  8.2 968920 81684 ?        Sl   11:22   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root       2794  0.0  0.0 112824   980 pts/0    R+   11:26   0:00 grep --color=auto mysql

查看端口号

[root@zabbix ~]# yum install net-tools -y
[root@zabbix ~]# netstat -antplu|grep mysqld
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2739/mysqld   

登录mysql

[root@zabbix ~]# mysql -uroot -p
Enter password:    #没有密码,直接回车
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 367
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)]> 

创建初始数据库

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  #创建zabbix数据库
MariaDB [(none)]> create user zabbix@localhost identified by 'sc123456';   #创建用户 
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;   #对用户进行授权
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;

导入初始架构和数据,系统将提示您输入新创建的密码

[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

为Zabbix server配置数据库

[root@zabbix ~]# vim  /etc/zabbix/zabbix_server.conf

为Zabbix前端配置PHP

[root@zabbix ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

[root@zabbix ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

将zabbix的nginx更换为默认80端口

修改默认nginx中的配置,防止与zabbix中的nginx抢占端口

修改默认的nginx为8080端口

[root@zabbix ~]# vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf

重新启动zabbix

[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

2. 测试访问

访问http://192.168.107.16

需要做初始化操作才能出现下面画面

首次登陆的账号密码:

账号:Admin

密码:zabbix

至此zabbix环境就搭建成功了!

3.  在要监控的服务器上安装zabbix-agent服务

这里以一台机器为例,其他机器操作一致

安装zabbix服务器的源

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

安装zabbix-agent服务

[root@ansible ~]# yum install zabbix-agent -y

修改zabbix_agentd.conf 配置文件,让zabbix-server服务器能来拿数据

[root@ansible ~]# cd /etc/zabbix
[root@ansible zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@ansible zabbix]# vim zabbix_agentd.conf 

重启zabbix-agnt服务

[root@ansible zabbix]# service zabbix-agent restart
Redirecting to /bin/systemctl restart zabbix-agent.service

4. 在zabbix-server服务器上安装zabbix-get服务

[root@zabbix fonts]# yum install zabbix-get

5. 获取数据

[root@zabbix zabbix]# zabbix_get -s 192.168.31.67 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.14 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.15 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.17 -p 10050 -k "system.cpu.load[all,avg1]"
0.290000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.18 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.19 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@zabbix zabbix]# zabbix_get -s 192.168.107.20 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000

至此,zabbix-server就可以获取到要监控的服务器的数据了

6. 在web页添加监控主机

添加每一台主机都是一样的操作,这里只展示其中一台 

把文字换成中文

添加监控主机

选择模板

也可以不使用模板,自己添加各种应用集和监控项

查看数据图像

可以看到已经有数据

注意:图像下面的文字方框是语言问题,把语言换成英文再看就可以了

至此,zabbix监控web集群外的服务器就完成了!

除了使用模板,还可以自己设置应用集、监控项、触发器、图形、告警等! 

自定义监控项

当zabbix自带的模板不能满足公司的需求的时候,就需要设置自定义监控项。

这里以监控ssh服务为例

前提是已经执行了上面的安装配置

1. 在agent上编写监控脚本,监控sshd进程是否启动

[root@ansible ~]# cd /etc/zabbix
[root@ansible zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@ansible zabbix]#cd zabbix_agentd.d
[root@ansible zabbix_agentd.d]# vim monitor_sshd.sh
#!/bin/bash

#统计sshd进程的数量
num=$( ps aux|grep /usr/sbin/sshd|wc -l)
echo  $num

给予脚本可执行权限

[root@ansible zabbix_agentd.d]# chmod +x monitor_sshd.sh 

编写自定义监控的配置文件 

[root@ansible zabbix_agentd.d]# vim userparameter_ssh.conf 
UserParameter=sc.ssh.status,/etc/zabbix/zabbix_agentd.d/monitor_sshd.sh

2. 在server上测试获取数据

[root@zabbix ~]# zabbix_get -s 192.168.107.20 -p 10050 -k sc.ssh.status
1

3. 在web页面上添加应用集和监控项出图

Linux——zabbix_第4张图片

Linux——zabbix_第5张图片

Linux——zabbix_第6张图片

Linux——zabbix_第7张图片

Linux——zabbix_第8张图片

Linux——zabbix_第9张图片

Linux——zabbix_第10张图片

Linux——zabbix_第11张图片

Linux——zabbix_第12张图片

添加触发器报警

Linux——zabbix_第13张图片

Linux——zabbix_第14张图片

Linux——zabbix_第15张图片

Linux——zabbix_第16张图片

Linux——zabbix_第17张图片

{ssh:sc.ssh.status.last(#2)}=1 这个表达式表示,当输出结果为1时,就报警

Zabbix设置微信报警

参考:https://blog.csdn.net/whell_scl/article/details/106722721

你可能感兴趣的:(zabbix)