• zabbix监控


    监控系统服务器的状态、网站的流量指标、进程服务的运行状态,保证整个集群的工作正常

    1、定义

    基于web界面提供的一种可视化的监控服务软件,已分布式的方式系统监控以及网络监控、硬件监控等的开源软件

    2、组织架构

    (1)C/S模式:客户端和服务端组成。zabbix server服务端,zabbix agent客户端

    (2)B/S模式:浏览器和服务端组成。通过浏览器可以直接访问服务器数据

    3、zabbix的组件程序

    (1)zabbix server:服务端,通过一系列的组件SNMP,zabbix agent,ping,通过端口远程监控客户端的数据,把数据收集到服务端进行展示,以及提供用户分析的界面web

    (2)zabbix agent:客户端,被监控的目标机器,把需要收集的数据以及自定义的监控数据,发送给zabbix server

    (3)zabbix_proxy:代理服务器,安装在监控的目标系统上的软件组件,可以代替zabbix_server收集数据,然后由代理软件传送给服务端zabbix_server,减轻主服务器的压力

    (4)zabbix_get:可选组件(不是必要的),提供命令行的工具(zabbix的命令行)

    (5)zabbix_sender:可选组件(不是必要的),提供命令行的工具(zabbix的命令行),可以将自定义数据发送到zabbix服务器,对于不直接由zabbix代理监控的数据或从脚本传送来的数据来说较方便

    4、工作方式

    5、部署zabbix实验

    实验目的:监控服务,可视化界面展示

    实验条件:

    主机名

    作用

    IP地址

    组件

    硬件

    (最少)

    test1

    server

    服务端

    20.0.0.10

    时间同步+SCL+mysql和apache的web组件+mariadb(数据库)+zabbix-agent+zabbix-server-mysql

    4核8G

    test2

    agent

    客户端

    20.0.0.20

    时间同步+zabbix-agent2

    2核4G

    实验步骤:

    端口

    主机

    10050

    server服务端

    10051

    agent监控端(客户端)

    1、安装时间同步【所有服务器】

    yum install ntpdate -y

    ntpdate ntp.aliyun.com

    2、部署zabbix服务端

    (1)获取 zabbix 的下载源

    rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

    (2)更换 zabbix.repo 为阿里源

    cd /etc/yum.repos.d

    sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

    yum clean all && yum makecache

    yum install -y zabbix-server-mysql zabbix-agent

    zabbix-server-mysql

    指定安装zabbix后,使用mysql作为数据库后端(也可以使用其他的)

    zabbix-agent

    可以把主服务器也加入到监控目标中

    (3)安装SCL

    yum install -y centos-release-scl

    便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4

    (4)修改 zabbix-front 前端源

    (5)安装mysql和apache的web组件

    yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

    (6)安装 zabbix 所需的数据库

    yum install -y mariadb-server mariadb

    (7)初始化数据库

    mysql_secure_installation

    (8)添加数据库用户,以及 zabbix 所需的数据库信息

    mysql -u root -p123

    CREATE DATABASE zabbix character set utf8 collate utf8_bin;

    #创建一个名为 "zabbix" 的 MySQL 数据库,字符集为 UTF-8,排序规则为 utf8_bin

    GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';

    flush privileges;

    (9)导入数据库信息

    rpm -ql zabbix-server-mysql   #查询 sql 文件的位置

    zcat /usr/share/doc/zabbix-server-mysql-5.0.40/create.sql.gz | mysql -uroot -p123 zabbix

    #导入 Zabbix 监控系统所需的 MySQL 数据库架构

    (10)修改 zabbix server 配置文件,修改数据库的密码

    vim /etc/zabbix/zabbix_server.conf

    (11)修改 zabbix 的 php 配置的时区文件

    vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

    (12)启动 zabbix 相关服务

    systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

    systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

    (13)测试。服务端浏览器访问

    20.0.0.10/zabbix

    出现错误:Time zone for PHP is not set (configuration parameter "date.timezone").

    未设置PHP的时区(配置参数“date.timezone”)

    原因:配置文件错误

    解决:改成正确的配置文件

    切换成中文

    解决 zabbix-server Web页面中文乱码问题

    yum install -y wqy-microhei-fonts

    \cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

    (2)修改 agent2 配置文件

    vim /etc/zabbix/zabbix_agent2.conf

    (3)启动 zabbix-agent2

    systemctl start zabbix-agent2

    systemctl enable zabbix-agent2

    netstat -natp | grep zabbix

    (4)在服务端验证 zabbix-agent2 的连通性

    yum install -y zabbix-get

    #安装 zabbix 主动获取数据的命令

    zabbix_get -s '20.0.0.20' -p 10050 -k 'agent.ping'

    zabbix_get -s '20.0.0.20' -p 10050 -k 'system.hostname'

    (5)修改服务端的agent2 配置文件

    (6)在 Web 页面中添加主机

    添加agent主机【监控客户端】

    (7)自定义监控内容

    who | wc -l

    ①创建 zabbix 的监控项配置文件,用于自定义 key【脚本实现】

    vim /etc/zabbix/zabbix_agent2.conf

    注意点:监控配置文件都在此目录下

    cd /etc/zabbix/zabbix_agent2.d/

    vim UserParameter_login.conf

    UserParameter=login.user,who|wc -l

    systemctl restart zabbix-agent2

    ②在服务端验证新建的监控项

    zabbix_get -s '20.0.0.20' -p 10050 -k 'login.user'

    (8)在 Web 页面创建自定义监控项模板

    ①创建模板②创建应用集(用于管理监控项的)③创建监控项④创建触发器⑤创建图形⑥将主机与模板关联起来(一个主机可以关联多个模板)⑦设置邮件报警

    ⑦模拟故障

    超过3台agent主机会发送邮件,并且触发器有动作记录

    (8)监控nginx服务

    ①安装nginx服务②打开nginx状态,关闭访问日志

    ③创建nginx脚本

    #!/bin/bash

    #Description:Automated monitoring nginx performance and process nginx_status scripts

    HOST="localhost"

    PORT=80

    stub_status="stub_status"

    NGINX_COMMAND=$1

    nginx_check() {

        if [ -f /sbin/pidof ]; then

           /sbin/pidof nginx | wc -w

        else

           ps aux | grep -v "grep" | grep -c "nginx:"

        fi

    }

    nginx_active(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Active/ {print $NF}'

    }

    nginx_reading(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Reading/ {print $2}'

    }

    nginx_writing(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Writing/ {print $4}'

    }

    nginx_waiting(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Waiting/ {print $6}'

    }

    nginx_accepts(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $1}'

    }

    nginx_handled(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $2}'

    }

    nginx_requests(){

        /usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $3}'

    }

    case $NGINX_COMMAND in

        check)

            nginx_check

            ;;

        active)

            nginx_active

            ;;

        reading)

            nginx_reading

            ;;

        writing)

            nginx_writing

            ;;

        waiting)

            nginx_waiting

            ;;

        accepts)

            nginx_accepts

            ;;

        handled)

            nginx_handled

            ;;

        requests)

            nginx_requests

            ;;

        *)

            echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"

    esac

    赋权脚本文件④创建监控nginx服务的脚本nginx.sh 是一个脚本文件的路径,而 $1 是脚本接受的第一个参数

    ⑤在服务端测试连接客户端

    zabbix_get -s '20.0.0.20' -p 10050 -k nginx.status[check]

    ⑥在 Web 页面创建自定义监控项模板

    创建模板创建应用集(用于管理监控项的)创建监控项

    注意:键值必须要与自定义的监控项配置文件中设置的保持一致

    创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)创建图形将主机与模板关联起来(一个主机可以关联多个模板)⑦测试监控nginx服务故障问题1:nginx服务出现故障,无法发送故障邮件到邮箱原因:无法解析主机名:无法解析主机:smtp.qq.com;未知错误解决:添加一个本地网关

    问题2:报警类型被拒绝解决:更新一下报警媒介

    (9)监控mysql的I/O线程【面试题】

    注意:

    用zabbix监控服务器状态、硬件信息、内存、磁盘读写、进程服务器

    用普罗米修监控容器,zabbix监控容器会出现假告警

    工作流程:在监控的服务器上自定义监控脚本,并创建脚本筛选出IO线程,设置故障触发条件,在zabbix界面添加主机、创建模板、应用集、监控项、触发器等,即可监控mysql的IO线程

    ①yum安装mysql【编译安装不适用此方法】

    ②创建查看mysql 的IO线程的脚本赋权脚本文件

    ③自定义监控mysql 的I/O线程脚本

    注意:必须放在/etc/zabbix/zabbix_agent2.d/目录下创建监控脚本

    ④在服务端测试客户端

    ⑤在 Web 页面创建自定义监控项模板

    创建模板创建应用集创建监控项创建触发器

    错误:无法检测mysql的IO故障

    原因:触发器条件设置错误解决:须符合/opt/test_mysql.sh的脚本文件设置的触发条件创建图形【可有可无】主机关联模板⑥测试监控mysql的IO故障问题1:客户端和服务端时间不同步

    解决:安装时间同步

    yum install ntpdate -y

    ntpdate ntp.aliyun.com

    问题2:模拟mysql故障后,重启mysql无法解决故障

    原因:查看仪表板发现所有检测的主机与服务均没有波动,zabbix相关服务挂了

    解决:重启zabbix相关服务,自动解决无法恢复故障的问题

    客户端systemctl start zabbix-agent2

    服务端systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm

  • 相关阅读:
    《Docker极简教程》--Docker的高级特性--Docker Swarm的使用
    C++设计模式-单例模式,反汇编
    Java编程练习题Demo51-Demo60
    9.0 堆体系结构概述之GC
    如何使用 Redis 缓存
    Kerberos
    如果再写for循环,我就锤自己了
    批量检查多台服务器 高亮打印每个IP 绿底红字
    图片拼接:如何将一堆杂乱无章的图片变成一个有意义的、协调的整体
    今天分享关于短视频的标题,内容,时长和点赞与播放的关联问题
  • 原文地址:https://blog.csdn.net/2303_79207100/article/details/134755508