• Linux——zabbix


     简介

    官网: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能监控什么?

    架构

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

    重要组件说明:

    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 提供客户端命令的软件包启动数据库

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

    设置mariadb数据库开机启动

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

    查看mysql的进程是否运行

    1. [root@zabbix ~]# ps aux|grep mysqld
    2. mysql 2574 0.0 0.1 113412 1596 ? Ss 11:22 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
    3. 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
    4. root 2794 0.0 0.0 112824 980 pts/0 R+ 11:26 0:00 grep --color=auto mysql

    查看端口号

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

    登录mysql

    1. [root@zabbix ~]# mysql -uroot -p
    2. Enter password: #没有密码,直接回车
    3. Welcome to the MariaDB monitor. Commands end with ; or \g.
    4. Your MariaDB connection id is 367
    5. Server version: 5.5.68-MariaDB MariaDB Server
    6. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    7. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    8. MariaDB [(none)]>

    创建初始数据库

    1. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #创建zabbix数据库
    2. MariaDB [(none)]> create user zabbix@localhost identified by 'sc123456'; #创建用户
    3. MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost; #对用户进行授权
    4. MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
    5. 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

    1. [root@zabbix ~]# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
    2. [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服务器能来拿数据

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

    重启zabbix-agnt服务

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

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

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

    5. 获取数据

    1. [root@zabbix zabbix]# zabbix_get -s 192.168.31.67 -p 10050 -k "system.cpu.load[all,avg1]"
    2. 0.000000
    3. [root@zabbix zabbix]# zabbix_get -s 192.168.107.14 -p 10050 -k "system.cpu.load[all,avg1]"
    4. 0.000000
    5. [root@zabbix zabbix]# zabbix_get -s 192.168.107.15 -p 10050 -k "system.cpu.load[all,avg1]"
    6. 0.000000
    7. [root@zabbix zabbix]# zabbix_get -s 192.168.107.17 -p 10050 -k "system.cpu.load[all,avg1]"
    8. 0.290000
    9. [root@zabbix zabbix]# zabbix_get -s 192.168.107.18 -p 10050 -k "system.cpu.load[all,avg1]"
    10. 0.000000
    11. [root@zabbix zabbix]# zabbix_get -s 192.168.107.19 -p 10050 -k "system.cpu.load[all,avg1]"
    12. 0.000000
    13. [root@zabbix zabbix]# zabbix_get -s 192.168.107.20 -p 10050 -k "system.cpu.load[all,avg1]"
    14. 0.000000

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

    6. 在web页添加监控主机

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

    把文字换成中文

    添加监控主机

    选择模板

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

    查看数据图像

    可以看到已经有数据

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

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

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

    自定义监控项

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

    这里以监控ssh服务为例

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

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

    1. [root@ansible ~]# cd /etc/zabbix
    2. [root@ansible zabbix]# ls
    3. zabbix_agentd.conf zabbix_agentd.d
    4. [root@ansible zabbix]#cd zabbix_agentd.d
    5. [root@ansible zabbix_agentd.d]# vim monitor_sshd.sh
    6. #!/bin/bash
    7. #统计sshd进程的数量
    8. num=$( ps aux|grep /usr/sbin/sshd|wc -l)
    9. echo $num

    给予脚本可执行权限

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

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

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

    2. 在server上测试获取数据

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

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

    添加触发器报警

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

    Zabbix设置微信报警

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

  • 相关阅读:
    Spring Boot常用注解@ConfigurationProperties、松散绑定、数据校验
    Centos7安装Redis6.2.7-sentinel高可用步骤
    MATLAB算法实战应用案例精讲-【智能优化算法】算术优化算法-AOA(附matlab代码)
    rabbitMQ的direct模式的生产者与消费者使用案例
    医疗大数据系统
    Linux 监控网络流量
    ClickHouse与Elasticsearch压测实践
    CAXA 3D实体设计2024:塑造未来的创新引擎
    Spring Cloud Alibaba Seata 实现分布式事物
    论文阅读-FCD-Net: 学习检测多类型同源深度伪造人脸图像
  • 原文地址:https://blog.csdn.net/ZhouXin1111112/article/details/132702180