美文网首页高级运维
基于Zabbix构建企业级监控

基于Zabbix构建企业级监控

作者: BruceLiu1 | 来源:发表于2017-11-28 20:56 被阅读317次
    图片来自网络

    文/Bruce.Liu1

    文章大纲

    1. Zabbix简介
      1.1. Zabbix介绍
      1.2. Zabbix概述
      1.3. Zabbix进程介绍
      1.4. Zabbix说明
    2. Zabbix最佳实践
      2.1. 背景介绍
      2.2. 安装nginx
      2.3. PHP安装+NGINX配置
      2.4. 安装zabbix
      2.5. 智能监控的实现

    1.Zabbix简介

    1.1.Zabbix介绍

    Zabbix是一个企业级的、开源的、分布式的监控套件解决方案,由一个国外的团队持续维护更新(Alexei Vladishev),当前处于活跃开发状态,Zabbix SIA提供支持;软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。
    官方网站:http://www.zabbix.com

    Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.

    Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司.

    Zabbix是零成本的. 因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的.
    Zabbix公司也提供商业化的技术支持.

    Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持.

    1.2.Zabbix概述

    在知道zabbix是什么之后,我们最关心的是zabbix有什么特性,了解特性之后,我们才能决定是否会使用zabbix在知道zabbix是什么之后,我们最关心的是zabbix有什么特性,了解特性之后,我们才能决定是否会使用zabbix。
    Zabbix是一个高度集成的网络监控套件,通过一个软件包即可提供如下特性:

    数据收集

    • 可用性及性能检测
    • 支持SNMP(trapping及polling)、IPMI、JMX监控
    • 自定义检测
    • 自定义间隔收集收据
    • server/proxy/agents吸能

    灵活的阀值定义

    • 允许灵活地自定义问题阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中

    高级告警配置

    • 可以自定义告警升级(escalation)、接收者及告警方式
    • 告警信息可以配置并允许使用宏(macro)变量
    • 通过远程命令实行自动化动作(action)

    实时绘图

    • 通过内置的绘图方法实现监控数据实时绘图

    扩展的图形化显示

    • 允许自定义创建多监控项视图
    • 网络拓扑(network maps)
    • 自定义的面板(screen)和slide shows,并允许在dashboard页面显示
    • 报告
    • 高等级(商业)监控资源

    历史数据存储

    • 数据存储在数据库中
    • 历史数据可配置
    • 内置数据清理机制

    配置简单

    • 主机通过添加监控设备方式添加
    • 一次配置,终生监控(译者注:除非调整或删除)
    • 监控设备允许使用模板

    模板使用

    • 模板中可以添加组监控
    • 模板允许继承

    网络自动发现

    • 自动发现网络设备
    • agent自动注册
    • 自动发现文件系统、网卡设备、SNMP OID等

    快速的web接口

    • web前端采用php编写
    • 访问无障碍
    • 你想怎么做就能做么做
    • 审计日志

    Zabbix API

    • Zabbix API提供程序级别的访问接口,第三方程序可以很快接入

    权限系统

    • 安全的权限认证
    • 用户可以限制允许维护的列表

    全特性、agent易扩展

    • 在监控目标上部署
    • 支持Linux及Windows

    二进制守护进程

    • C开发,高性能,低内存消耗
    • 易移植

    具备应对复杂环境情况

    • 通过Zabbix proxy可以非常容易的创建远程监控

    1.3.Zabbix进程介绍

    图片来自网络

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

    1.4.Zabbix说明

    具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。

    图片来自网络

    Server
    指安装zabbix服务的服务器(以下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操作系统),采用mysql存储监控数据并使用apache+php的方式呈现。

    proxy
    指安装在被监控设备上的zabbix代理(以下简称代理),被监控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现。

    agent
    指支持SNMP协议的设备(也可以是服务器),通过设定SNMP的参数将相关监控数据传送至服务器端(大部份的交换机、防火墙等网络设备都支持SNMP协议)。

    2. Zabbix最佳实践

    2.1.背景介绍

    2.1.1.软件参考文档

    参考文档:
    官方文档:https://www.zabbix.com/documentation/3.4/

    软件下载:
    NGINX软件:http://nginx.org/download/nginx-1.5.1.tar.gz
    PHP软件:http://www.php.net/downloads.php or http://php.net/get/php-5.5.38.tar.gz/from/a/mirror
    MySQL5.7 Yum Repository:https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpmMySQL5.7
    Zabbix软件:https://www.zabbix.com/download
    redis软件:http://download.redis.io/releases/redis-2.8.23.tar.gz
    python软件:https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
    setuptools软件:https://pypi.python.org/pypi/setuptools
    pip软件:https://pypi.python.org/pypi/pip#downloads

    2.1.2.系统环境介绍
    • 系统版本
      CentOS release 6.7 (Final) x86_64

    • NGINX
      nginx-1.5.1(source code)

    • PHP
      php-5.5.38

    • MySQL版本
      mysql-5.7.20.-x86_64(RPM)

    • Zabbix版本
      zabbix-server-mysql-3.4.4-2
      zabbix-web-3.4.4-2
      zabbix-web-mysql-3.4.4-2
      zabbix-agent-3.4.4-2

    2.1.3.安装系统要求
    • 涉及所有服务器关闭iptables、NetworkManager服务、selinux安全配置
    # /etc/init.d/NetworkManager stop
    # chkconfig NetworkManager off
    # /etc/init.d/iptables stop
    # chkconfig iptables off
    

    /etc/selinux/config 改成disable

    2.2.安装nginx

    2.2.1.必要软件准备
    • 安装pcre
      为了支持rewrite功能,我们需要安装pcre
    yum install pcre* 
    
    • 安装openssl
      需要ssl的支持,如果不需要ssl支持,请跳过这一步
    # yum install openssl*
    
    2.2.2.安装nginx

    --with-http_stub_status_module:支持nginx状态查询
    --with-http_ssl_module:支持https
    --with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持
    --with-pcre:为了支持rewrite重写功能,必须制定pcre

    执行如下命令:

    # ./configure --prefix=/usr/local/nginx-1.5.1 \
    --with-http_ssl_module --with-http_spdy_module \
    --with-http_stub_status_module --with-pcre
    
    2.2.3.启动、关闭、重置nginx
    • 启动:直接执行以下命令,nginx就启动了,不需要改任何配置文件
    /usr/local/nginx-1.5.1/sbin/nginx
    
    • 使用curl命令来读取web信息
    # curl -s http://localhost | grep nginx.com
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    • 关闭:
    /usr/local/nginx-1.5.1/sbin/nginx -s stop
    
    • 重置:当你有修改配置文件的时候,只需要reload以下即可
    /usr/local/nginx-1.5.1/sbin/nginx -s reload
    

    2.3.PHP安装+NGINX配置

    2.3.1.安装PHP 5.5.38
    • 下载
    cd /usr/local/src/
    wget http://www.php.net/get/php-5.5.38.tar.bz2/from/jp1.php.net/mirror
    
    • 安装依赖包
      确保安装之前有安装gd,png,curl,xml等等lib开发库。如果不确定,执行以下命令:
    yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
    
    • 编译安装PHP 5.5.38

    以下参数支持,ftp,图片函数,pdo等支持,因为使用了php自带的mysqlnd,所以不需要额外安装mysql的lib库了.如果你是64位系统,参数后面加上--with-libdir=lib64,如果不是可以跳过。

    tar -xjf php-5.5.38.tar.bz2
    cd php-5.5.38
    ./configure  --prefix=/usr/local/php-5.5.38 \
    --with-config-file-path=/usr/local/php-5.5.38/etc --with-bz2 --with-curl \
    --enable-ftp --enable-sockets --disable-ipv6 --with-gd \
    --with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
    --with-freetype-dir=/usr/local --enable-gd-native-ttf \
    --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar \
    --with-gettext --with-libxml-dir=/usr/local --with-zlib \
    --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd \
    --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
    make
    make install
    

    备注:如果PHP不需要curl和ftp的支持,可以将以上的--with-curl --enable-ftp去掉.

    • 配置php
    cp php.ini-production /usr/local/php-5.5.38/etc/php.ini
    cp /usr/local/php-5.5.38/etc/php-fpm.conf.default /usr/local/php-5.5.38/etc/php-fpm.conf
    
    • 启动php-fpm
    /usr/local/php-5.5.38/sbin/php-fpm
    

    执行以上命令,如果没报错一般情况下表示启动正常,如果不放心,也可以通过端口判断是PHP否启动

    # netstat -lnt | grep 9000
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
    
    2.3.2.配置nginx
    • 安装nginx
      参考以上文章

    • 配置测试站点test.zabbix.com

    mkdir -p /data/logs/nginx/ # 
    mkdir -p /data/site/test.zabbix.com/ # 站点根目录
    vim /data/site/test.zabbix.com/info.php
    <?php
    phpinfo();
    ?>
    
    • nginx配置
      在nginx.conf的http断中加上如下内容:
      /usr/local/nginx-1.5.1/conf/nginx.conf
    user  root;        # root用户启动nginx
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        #
    server {
            listen       80;
            #server_name monitor.ttlsa.com;
            #access_log  /data/logs/nginx/monitor.ttlsa.com.access.log  main;
     
            index index.html index.php index.html;
            root /data/site/test.zabbix.com;        # 测试页面的临时站点
            # root /usr/share/zabbix;        #默认rpm安装的zabbix web前端站点目录就是/usr/share/zabbix
     
            location /
            {
                    try_files $uri $uri/ /index.php?$args;
            }
     
            location ~ ^(.+.php)(.*)$ {
                    fastcgi_split_path_info ^(.+.php)(.*)$;
                    include fastcgi.conf;
                    fastcgi_pass  127.0.0.1:9000;
                    fastcgi_index index.php;
                    fastcgi_param  PATH_INFO          $fastcgi_path_info;
            }
    }
    }
    
    • 配置讲解

    nginx将会连接回环地址9000端口执行PHP文件,需要使用tcp/ip协议,速度比较慢.建议大家换成使用socket方式连接。

    • 启动nginx
    /usr/local/nginx-1.5.1/sbin/nginx
    
    2.3.3.访问测试
    # curl http://localhost/info.php
    
    !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <style type="text/css">
    ......  省略  ......
    

    2.4.安装zabbix

    2.4.1.安装Zabbix Server端
    2.4.1.1.PHP参数

    打开php.ini配置文件,修改如下参数为如下值,否则zabbix安装不了
    /usr/local/php-5.5.38/etc/php.ini

    [PHP]
    
    ......  省略  ......
    max_execution_time = 300
    memory_limit = 128M
    post_max_size = 16M
    upload_max_filesize = 2M
    max_input_time = 300
    date.timezone = Asia/Shanghai
    post_max_size=16M
    max_execution_time=300
    max_input_time=300
    
    [CLI Server]
    
    2.4.1.2.安装Zabbix Web、Server
    • 安装基础开发库
    yum groupinstall "Development tools"
    
    • 下载并安装Zabbix 软件(yum源并不好用,所以直接下载下来安装)

    zabbix-server-mysql-3.4.4-2.el6.x86_64.rpm
    zabbix-web-3.4.4-2.el6.noarch.rpm
    zabbix-web-mysql-3.4.4-2.el6.noarch.rpm

    # yum install zabbix-*
    
    # rpm -qa | grep zabbix
    zabbix-web-mysql-3.4.4-2.el6.noarch
    zabbix-server-mysql-3.4.4-2.el6.x86_64
    zabbix-web-3.4.4-2.el6.noarch
    
    2.4.1.3.创建用户
    • 为了安全考虑zabbix只使用普通用户运行,假如你当前用户叫zabbix,那么你运行他,他便使用zabbix身份运行。但是如果你在root环境下运行zabbix,那么zabbix将会主动使用zabbix用户来运行。但是如果你的系统没有名叫zabbix的用户,你需要创建一个用户,如下:
    # groupadd zabbix
    # useradd -g zabbix zabbix
    
    2.4.1.4.初始化数据库
    • 假设已经准备好一台数据库服务器,并且创建好了用户和相应权限
    shell> mysql -uroot -p<root_password>
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@'192.168.217.%' identified by 'Zabbix';
    mysql> quit;
    
    • Zabbix Server上初始化数据库
    # zcat /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz | mysql -h 192.168.217.130 -P3389 -uzabbix -p'Zabbix' zabbix
    mysql: [Warning] Using a password on the command line interface can be insecure.
    
    2.4.1.5.配置zabbix server
    • 修改zabbix_server配置文件
    # mv /etc/zabbix/zabbix_server.conf  /etc/zabbix/zabbix_server.conf.bak
    # cat /etc/zabbix/zabbix_server.conf.bak | grep -v "^#" | grep -v ^$ > /etc/zabbix/zabbix_server.conf
    # vim /etc/zabbix/zabbix_server.conf
    
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    PidFile=/var/run/zabbix/zabbix_server.pid
    SocketDir=/var/run/zabbix
    DBHost=192.168.217.130
    DBPort=3389
    DBName=zabbix
    DBUser=zabbix
    DBPassword=Zabbix
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    Timeout=4
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000
    
    • 目录授权
    # chmod -R 755 /usr/share/zabbix
    # chmod -R 755 /etc/zabbix/web
    
    • 启动zabbix-server,默认端口10051
    # /etc/init.d/zabbix-server start
    Starting Zabbix server:                                    [  OK  ]
    
    # netstat -ntlp | grep 10051
    tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      126571/zabbix_serve 
    tcp        0      0 :::10051                    :::*                        LISTEN      126571/zabbix_serve 
    
    • 监控日志是否有错误
    # tailf /var/log/zabbix/zabbix_server.log 
    
    ......  省略  ......
     23929:20171129:063930.487 current database version (mandatory/optional): 03040000/03040005
     23929:20171129:063930.488 required mandatory version: 03040000
     23929:20171129:063930.523 server #0 started [main process]
     23932:20171129:063930.526 server #3 started [alerter #2]
     23931:20171129:063930.526 server #2 started [alerter #1]
     23933:20171129:063930.526 server #4 started [alerter #3]
     23930:20171129:063930.529 server #1 started [configuration syncer #1]
     23934:20171129:063930.529 server #5 started [housekeeper #1]
     23936:20171129:063930.529 server #7 started [http poller #1]
     23935:20171129:063930.529 server #6 started [timer #1]
     23938:20171129:063930.532 server #9 started [history syncer #1]
     23937:20171129:063930.532 server #8 started [discoverer #1]
     23939:20171129:063930.535 server #10 started [history syncer #2]
     23940:20171129:063930.538 server #11 started [history syncer #3]
     23942:20171129:063930.538 server #13 started [escalator #1]
     23941:20171129:063930.540 server #12 started [history syncer #4]
     23944:20171129:063930.544 server #15 started [self-monitoring #1]
     23943:20171129:063930.544 server #14 started [proxy poller #1]
     23946:20171129:063930.550 server #17 started [poller #1]
     23948:20171129:063930.550 server #19 started [poller #3]
     23947:20171129:063930.550 server #18 started [poller #2]
     23949:20171129:063930.553 server #20 started [poller #4]
     23950:20171129:063930.553 server #21 started [poller #5]
     23951:20171129:063930.555 server #22 started [unreachable poller #1]
     23952:20171129:063930.555 server #23 started [trapper #1]
     23953:20171129:063930.557 server #24 started [trapper #2]
     23954:20171129:063930.562 server #25 started [trapper #3]
     23945:20171129:063930.564 server #16 started [task manager #1]
     23955:20171129:063930.567 server #26 started [trapper #4]
     23956:20171129:063930.578 server #27 started [trapper #5]
     23957:20171129:063930.580 server #28 started [icmp pinger #1]
     23958:20171129:063930.580 server #29 started [alert manager #1]
     23959:20171129:063930.583 server #30 started [preprocessing manager #1]
     23960:20171129:063930.590 server #31 started [preprocessing worker #1]
     23961:20171129:063930.590 server #32 started [preprocessing worker #2]
     23962:20171129:063930.591 server #33 started [preprocessing worker #3]
    
    2.4.2.配置Zabbix Web端
    • zabbix.conf.php 放到 /etc/zabbix/web/目录下
    # cp -p /usr/share/zabbix/conf/zabbix.conf.php.example /etc/zabbix/web/zabbix.conf.php
    
    • 修改zabbix_web_server配置文件
    # vim /etc/zabbix/web/zabbix.conf.php 
    <?php
    // Zabbix GUI configuration file.
    global $DB;
    
    $DB['TYPE']             = 'MYSQL';
    $DB['SERVER']           = '192.168.1.120';
    $DB['PORT']             = '3389';
    $DB['DATABASE']         = 'zabbix';
    $DB['USER']             = 'zabbix';
    $DB['PASSWORD']         = 'Zabbix';
    // Schema name. Used for IBM DB2 and PostgreSQL.
    $DB['SCHEMA']           = '';
    
    $ZBX_SERVER             = 'localhost';
    $ZBX_SERVER_PORT        = '10051';
    $ZBX_SERVER_NAME        = '';
    
    $IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;
    
    • 将站点根目录指向 zabbix web 前端站点目录
    # vim /usr/local/nginx-1.5.1/conf/nginx.conf
    
    ......  省略  ......
            # root /data/site/test.zabbix.com;        # 测试页面的临时站点
            root /usr/share/zabbix;        #默认rpm安装的zabbix web前端站点目录就是/usr/share/zabbix
    ......  省略  ......
    
    • 重启NGINX服务
    # /usr/local/nginx-1.5.1/sbin/nginx -s stop
    # /usr/local/nginx-1.5.1/sbin/nginx
    

    通过浏览器访问:http://192.168.217.131,默认账户、密码:Admin、zabbix

    图片来自原创
    2.4.3.安装Zabbix Agent端
    • 配置解析hosts文件
    # cat /etc/hosts
    
    ......  省略  ......
    192.168.217.130 db1
    
    • 创建zabbix agent 目录
    # mkdir /etc/zabbix_agentd.conf.d
    # chown -R zabbix:zabbix /etc/zabbix_agentd.conf.d/
    
    • 安装agent软件
    # rpm -ivh zabbix-agent-3.4.4-2.el6.x86_64.rpm 
    warning: zabbix-agent-3.4.4-2.el6.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Preparing...                ########################################### [100%]
       1:zabbix-agent           ########################################### [100%]
    
    • 编辑agent配置文件
    # vim /etc/zabbix/zabbix_agentd.conf
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    EnableRemoteCommands=1
    Server=192.168.217.131
    ListenPort=10050
    StartAgents=10
    ServerActive=192.168.217.131
    Hostname=db1
    BufferSend=5
    BufferSize=2000
    Timeout=30
    Include=/etc/zabbix_agentd.conf.d/
    
    • 重启agent服务
    # /etc/init.d/zabbix-agent restart
    

    如果Server端采集不到数据等问题,zabbix-get-3.4.4-2.el6.x86_64配合 Server 端、Agent端日志进行分析处理

    2.4.4.配置监控一台主机
    • 登录zabbix web
    图片来自原创
    • 创建主机组
    图片来自原创
    • 创建主机
    图片来自原创
    • 将主机挂载监控模板
    图片.png

    如果监控数据还是没有,请使用zabbix_get测试Server和agent之间采集数据是否正常# zabbix_get -s 192.168.217.130 -p 10050 -k agent.ping

    图片.png

    2.5.智能监控的实现

    2.5.1.安装配置redis
    2.5.1.1.编译redis
    • 编译安装
    tar -zxvf redis-2.8.23.tar.gz 
    cd redis-2.8.23
    make
    make install
    
    2.5.1.2.创建redis目录
    mkdir -p /data1/redis/10680/
    mkdir /etc/redis
    
    2.5.1.3.创建配置文件
    # vim /etc/redis/10680.conf
    
    daemonize yes 
    pidfile /var/run/redis_10680.pid
    port 10680
    tcp-backlog 511
    timeout 50
    tcp-keepalive 20
    loglevel notice
    logfile /var/log/redis_10680.log
    databases 1
    dbfilename dump.rdb
    dir /data1/redis/10680/
    
    #requirepass foobared
    #slaveof 192.168.217.131 10680
    #masterauth <master-password>
    #slave-serve-stale-data yes
    
    slave-read-only no
    repl-diskless-sync no
    repl-timeout 6000
    repl-disable-tcp-nodelay no
    repl-backlog-size 100mb
    #repl-backlog-ttl 3600
    slave-priority 100
    
    #rename-command shutdown "" 
    #rename-command flushall "" 
    #rename-command flushdb "" 
    #rename-command keys "" 
    
    maxclients 10000
    maxmemory 8gb 
    maxmemory-policy volatile-lru
    appendonly no 
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite yes
    
    #auto-aof-rewrite-percentage 100
    #auto-aof-rewrite-min-size 64mb
    #aof-load-truncated yes
    
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-entries 512
    list-max-ziplist-value 64
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 0 0 0
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    
    2.5.1.4.redis启停
    # 启动redis
    # redis-server /etc/redis/10680.conf &      
    
    # 链接测试
    # redis-cli -p 10680        
    127.0.0.1:10680> set 192.168.1.120 agent.ping
    OK
    127.0.0.1:10680> get 192.168.1.120
    "agent.ping"
    
    # 关闭redis
    # redis-cli -p 10680 shutdown        
    
    2.5.2.部署python2.7运行环境
    • 编译python2.7
    # yum -y install zlib* #安装必要软件包
    # yum -y install openssl
    # yum -y install openssl-devel
    # tar xvf Python-2.7.13.tgz 
    # cd Python-2.7.13
    # ./configure --prefix=/usr/local/python2.7
    # make && make install
    # cd /usr/local/python2.7/
    
    • 调整系统PATH环境变量
    # vim /etc/profile
    
    ......  省略  ......
    export PATH=/usr/local/python2.7/bin:$PATH
    
    • 安装setuptools
    # unzip setuptools-38.2.3.zip 
    # cd setuptools-38.2.3
    # python setup.py build
    # python setup.py install
    
    • 安装pip工具
    # tar zxvf pip-9.0.1.tar.gz 
    # cd pip-9.0.1
    # python2.7 setup.py build
    # python2.7 setup.py install
    
    • 安装扩展module
    # pip2.7 search pymysql
    # pip2.7 install pymysql
    # pip2.7 install redis
    
    2.5.3.部署MySQL智能监控
    • 添加监控用户
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'zabbix_monitor'@'127.0.0.1' IDENTIFIED BY 'zabbix';
    mysql> flush privileges;
    
    • 创建配置文件目录
    mkdir -p /etc/zabbix_agentd.conf.d/scripts
    
    • 上传配置文件及监控脚本

    monitor_mysql.conf上传至/etc/zabbix_agentd.conf.d
    mysql_monitor.py上传至/etc/zabbix_agentd.conf.d/scripts
    修改mysql_monitor.py 网卡名称 / 数据库账号 / 密码 / redis host / redis port

    • 测试
    # python2.7 mysql_monitor.py 
    {
      "data": [
        {
          "{#MYSQL_DB}": "Master:192.168.1.121:3389"
        }
      ]
    }
    
    # python2.7 mysql_monitor.py Master:192.168.1.121:3389 slave_status
    1
    
    

    扫描下方二维码关注本人微信号!欢迎大家交流学习!

    Bruce.Liu

    相关文章

      网友评论

      • 李丹_d433:这个智能监控是什么?
        BruceLiu1:@李丹_d433 基于zabbix的discovery功能,自己写的监控插件,用于解决Percona监控数据断层问题,以及自适应单机多实例、自动识别主从切换等功能。

      本文标题:基于Zabbix构建企业级监控

      本文链接:https://www.haomeiwen.com/subject/ukzsbxtx.html