zoukankan      html  css  js  c++  java
  • 企业级的分布式开源监控解决方案 zabbix v5.0 LTS

    zabbix简介

    Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。并设定自定义脚本,做到一定的自恢复功能

    Zabbix 作为企业级分布式监控系统的优点:分布式监控,支持 node 和 proxy 分布式模式;自动化注册,根据规则,自动注册主机到监控平台,自动添加监控模板;支持 agentd、snmp、ipmi 和 jmx 等很多通信方式

    服务模块

    zabbix-server 提供数据处理
    zabbix web GUI 提供web展示
    zabbix Database 提供数据存储
    zabbix-agent 被监控端安装的模块,上报数据到zabbix-server中
    SNMP: 支持各类常见的网络设备

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

    客户端守护进程

    此进程收集客户端数据,例如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。

    监控流程

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

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

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

    功能拆解

    1. zabbix服务搭建
    2. 监控告警外发
    3. 自定义监控脚本
    4. 自定义执行触发脚本
    5. 配置Grafana页面显示
    6. 主机批量发现

    zabbix用户手册 https://www.zabbix.com/documentation/5.0/zh/manual

    安装 zabbix 5.0 LTS

    参考官网 zabbix 5.0.12-1.el7

    image

    # env --> CentOS Linux release 7.9.2009 (Core) mininal install
    
    # 1  Install Zabbix repository
    rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
    yum clean all
    
    # 2 Install Zabbix server and agent
    yum -y install zabbix-server-mysql zabbix-agent
    
    # 3 Install Zabbix frontend (5.0版本要求高版本的php)
    ## 3.1 enable zabbix-frontend repository
    yum install centos-release-scl -y
    sed -i 11cenabled=1 /etc/yum.repos.d/zabbix.repo
    ## 3.2 Install Zabbix frontend packages
    yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl
    
    # 4 初始化数据库
    # docker run -d  --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /data/mysql:/var/lib/mysql --restart=always mysql:5.7.34
    create database zabbix character set utf8 collate utf8_bin;
    create user zabbix@'192.168.1.%' identified by '123456';
    grant all privileges on zabbix.* to zabbix@'192.168.1.%';
    
    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -h192.168.1.113 -p zabbix
    
    # 5 为Zabbix server配置数据库
    # sed -i.bak /# DBPassword=/aDBPassword=123456 /etc/zabbix/zabbix_server.conf
    cat >  /etc/zabbix/zabbix_server.conf << eof
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    PidFile=/var/run/zabbix/zabbix_server.pid
    SocketDir=/var/run/zabbix
    DBHost=192.168.1.113
    DBName=zabbix
    DBUser=zabbix
    DBPassword=123456
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    Timeout=4
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
    eof
    
    # 6 为Zabbix前端配置PHP
    sed -i.bak /;date.timezone =/adate.timezone=Asia/Shanghai /etc/opt/rh/rh-php72/php.ini
    ## 6.1配置nginx server
    sed -n 1,3p /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
    server {
            listen          80;
            server_name     192.168.1.113;
    # 6.2 配置php用户与时区
    sed -i.bak /listen.acl_users/c'listen.acl_users = apache,nginx' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
    echo 'php_value[date.timezone] = Asia/Shanghai' >> /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
    ## cat /etc/zabbix/web/zabbix.conf.php
    
    # 7 启动Zabbix server和agent进程
    systemctl enable --now zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
    
    # 8 连接Zabbix前端 Admin@zabbix
    http://192.168.1.113
    

    zabbix-server相关优化

    1. 字体汉化

    对于以上环境和场景的安装,zabbix的汉化仍然会有乱码现象,重新载入自定义字体

    #1. 上传字体
    Windows控制面板 -- 字体 -- simkai.ttf字体 -- 上simkai.ttf传字体到 /usr/share/fonts/dejavu/目录中
    cat /var/lib/alternatives/zabbix-web-font
    #2. 重新连接字体
    ln -sf /usr/share/fonts/dejavu/simkai.ttf /etc/alternatives/zabbix-web-font
    #3. 验证
    

    image

    安装zabbix agent

    使用二进制包安装

    # 下载与解压包
    wget https://www.zabbix.com/cn/download_agents?version=5.0+LTS&release=5.0.12&os=Linux&os_version=3.0&hardware=amd64&encryption=No+encryption&packaging=Archive&show_legacy=0 -P /tmp
    mkdir /usr/local/zabbix-agent
    tar -xf  zabbix_agent-5.0.12-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix-agent
    useradd zabbix -s /sbin/nologin
    
    # 配置
    cat > /usr/local/zabbix-agent/conf/zabbix_agentd.conf << eof
    # Passive checks related #被动检查相关配置
    Server=192.168.1.113 #指向当前zabbix server
    # Option: ListenPort
    #ListenPort=10050 #监听端口
    # Option: StartAgents
    StartAgents=3 #被动状态时默认启动的实例数(进程数),为0不监听任何端口
    # Option: Hostname
    Hostname=192.168.1.103  #区分大小写且在zabbix server唯一的值
    LogFile=/tmp/zabbix_agentd.log
    # PidFile=/tmp/zabbix_agentd.pid
    eof
    
    # 启动
    echo '/usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/conf/zabbix_agentd.conf' >> /etc/rc.local
    . /etc/rc.local
    
    # server添加主机
    配置 -- 主机 -- 添加主机 -- 模板关联
    

    使用包安装

    https://repo.zabbix.com/zabbix/

    yum -y install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.12-1.el7.x86_64.rpm
    
    cat > /etc/zabbix/zabbix_agentd.conf << eof
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    Server=192.168.1.113
    ServerActive=192.168.1.113
    Hostname=192.168.1.107
    Include=/etc/zabbix/zabbix_agentd.d/*.conf
    eof
    
    systemctl enable --now zabbix-agent
    

    PS

  • 相关阅读:
    后台数值往前台传值,能获取到值,页面显示不出来的问题
    总结jquery中对select和option的基本操作
    使用<input type="image" src="...">标签会引发页面刷新的问题
    用java来实现验证码功能。
    用java来实现验证码功能(本帖为转载贴),作为个人学习收藏用
    使用java实现发送邮件的功能
    java中的中文参数存到数据库乱码问题
    模糊查询时,页面没有数据,数据库编辑器里可以正常显示数据
    c# 无法加载 DLL xxxxxxxx找不到指定的模块。 (异常来自HRESULT:0x8007007E)。的一个解决方法
    关于C#调用C++ 的DLL传送字符串显示乱码的解决
  • 原文地址:https://www.cnblogs.com/firewalld/p/14831618.html
Copyright © 2011-2022 走看看