精华内容
下载资源
问答
  • 监控服务器搭建

    万次阅读 2019-09-18 15:51:14
    我们为什么要搭建监控服务器,搭建监控服务器的好处 监控服务器可以替我们监视系统的运行状况,暴恐数据的吞吐量,反应时间,使用率等等,减少人工参与.监控能够提前发现问题,对服务器的性能进行调整,知道系统哪里出现...

    我们为什么要搭建监控服务器,搭建监控服务器的好处
    监控服务器可以替我们监视系统的运行状况,暴恐数据的吞吐量,反应时间,使用率等等,减少人工参与.监控能够提前发现问题,对服务器的性能进行调整,知道系统哪里出现问题,及时解决,减少损失.

    监控的资源
    监控可以监控的资源类别分为公开数据和私有数据
    公开数据包括-Web, FTP , SSH , 数据库等应用服务,通过TCP或UDP端口链接
    私有数据CPU, 内存, 磁盘, 网卡流量等使用情况,用户, 进程等运行信息

    监控软件
    Cacti 基于snmp协议的监控软件,具有强大的绘图能力
    Nagios 基于agent监控,强大的状态检查与报警机制,插件极多,自己写监控监本潜入到Nagios非常方便
    Zabbix 基于多种监控机制,支持分布式监控

    常用的额系统监控命令
    ps 查看端口
    ifconfig 查看网卡信息
    uptime 查看系统使用及运行时间
    netstat或者ss 查看端口或进程
    free 内存
    ping 检查网络
    swapon -s 检查系统磁盘
    traceroute 检查网络链接信息
    df -h 检查分区磁盘信息
    iostat 分析IO

    我们今天使用Zabbix软件实现对服务器的监控
    Zabbix是一个高度集成的监控解决方案
    可以实现企业级的开源分布式监控
    Zabbix通过C/S模式采集监控数据
    Zabbix通过B/S模式实现Web管理

    我们实现Zabbix监控需要监控通过SNMP或Agent采集数据
    数据可以写入mysql或oracle等数据库中
    使用nginx实现web的管理
    被监控的主机需要安装Agent

    一丶部署lnmp

    1.安装nginx

    首先安装nginx的依赖包
    pcre-devel zlib-devel openssl-devel

    [root@zabbix ~]# yum -y install gcc  pcre-devel zlib-devel openssl-devel
    
    

    源码安装nginx
    支持加密http

    [root@zabbix Zabbix]# tar -xf nginx-1.12.2.tar.gz 
    [root@zabbix Zabbix]# cd nginx-1.12.2/
    [root@zabbix nginx-1.12.2]# ./configure --with-http_ssl_module
    [root@zabbix nginx-1.12.2]# make
    [root@zabbix nginx-1.12.2]# make install
    

    2.安装php以及数据库

    [root@zabbix nginx-1.12.2]# yum -y install php  php-mysql  
    [root@zabbix nginx-1.12.2]# yum -y install mariadb mariadn-devel mariadb-server
    [root@zabbix nginx-1.12.2]# yum -y install php  php-mysql  
    
    

    3.修改nginx配置

    修改nginx配置,使nginx支持php功能
    在配置文件65-71行有模板

    [root@zabbix nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf;
            }
    
    

    4.启动服务并对php页面进行测试

    启动服务

    [root@zabbix nginx-1.12.2]# systemctl start mariadb
    [root@zabbix nginx-1.12.2]# systemctl start php-fpm
    [root@zabbix nginx-1.12.2]# /usr/local/nginx/sbin/nginx 
    

    进行测试

    首先在nginx的页面目录下建里一个文件
    [root@zabbix nginx-1.12.2]# vim /usr/local/nginx/html/test.php
    <?php
    $i=555;
    echo $i;
    ?>
    
    [root@zabbix nginx-1.12.2]# curl http://localhost/test.php
    555
    [root@zabbix nginx-1.12.2]# 
    

    二丶安装Zabbix

    1.源码安装Zabbix

    安装依赖

    [root@zabbix nginx-1.12.2]# yum -y install net-snmp-devel  curl-devel libevent-devel
    

    源码安装Zabbix
    我们安装之前要建立一个zabbix用户,用于启动zabbix服务

    [root@zabbix nginx-1.12.2]# useradd zabbix
    [root@zabbix nginx-1.12.2]# cd ..
    [root@zabbix Zabbix]# tar -xf zabbix-3.4.4.tar.gz 
    [root@zabbix Zabbix]# cd  zabbix-3.4.4/
    [root@zabbix zabbix-3.4.4]# ./configure --enable-server  --enable-proxy  --enable-agent   --with-mysql=/usr/bin/mysql_config  --with-net-snmp  --with-libcurl
    [root@zabbix zabbix-3.4.4]# make install
    
    

    关于zabbix的应用程序

    [root@zabbix zabbix-3.4.4]# ls /usr/local/etc/
    zabbix_agentd.conf    zabbix_proxy.conf    zabbix_server.conf
    zabbix_agentd.conf.d  zabbix_proxy.conf.d  zabbix_server.conf.d
    [root@zabbix zabbix-3.4.4]# ls /usr/local/bin/
    eip  setip  zabbix_get  zabbix_sender
    [root@zabbix zabbix-3.4.4]# ls /usr/local/sbin/
    zabbix_agentd  zabbix_proxy  zabbix_server
    [root@zabbix zabbix-3.4.4]# 
    

    2.初始化准备

    2.1创建数据库与授权用户

    创建zabbix库,zabbix用户,密码是zabbix

    [root@zabbix zabbix-3.4.4]# mysql
    MariaDB [(none)]> create database zabbix  character set utf8;
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> grant all on zabbix.* to zabbix@"localhost" identified by 'zabbix'
        -> ;
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> exit
    
    

    2.2存入数据

    [root@zabbix mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql 
    [root@zabbix mysql]# mysql -uzabbix -pzabbix zabbix < images.sql 
    [root@zabbix mysql]# mysql -uzabbix -pzabbix zabbix < data.sql 
    

    2.3上线zabbix页面

    进入/root/Zabbix/zabbix-3.4.4/frontends/php目录
    把目录下的东西专一到nginx的页面目录下,并给予权限

    [root@zabbix zabbix-3.4.4]# cd frontends/php/
    [root@zabbix php]# ls
    actionconf.php                 favicon.ico                  popup_trexpr.php
    adm.gui.php                    fonts                        profile.php
    adm.housekeeper.php            graphs.php                   queue.php
    adm.iconmapping.php            history.php                  report2.php
    adm.images.php                 host_discovery.php           report4.php
    adm.macros.php                 hostgroups.php               robots.txt
    adm.other.php                  hostinventoriesoverview.php  screenconf.php
    adm.regexps.php                hostinventories.php          screenedit.php
    adm.triggerdisplayoptions.php  host_prototypes.php          screen.import.php
    adm.triggerseverities.php      host_screen.php              screens.php
    adm.valuemapping.php           hosts.php                    scripts_exec.php
    adm.workingtime.php            httpconf.php                 search.php
    api_jsonrpc.php                httpdetails.php              services.php
    app                            image.php                    setup.php
    applications.php               images                       slideconf.php
    audio                          img                          slides.php
    auditacts.php                  imgstore.php                 srv_status.php
    auditlogs.php                  include                      styles
    authentication.php             index.php                    sysmap.php
    browserwarning.php             items.php                    sysmaps.php
    chart2.php                     js                           templates.php
    chart3.php                     jsLoader.php                 toptriggers.php
    chart4.php                     jsrpc.php                    tr_comments.php
    chart5.php                     latest.php                   tr_events.php
    chart6.php                     local                        trigger_prototypes.php
    chart7.php                     locale                       triggers.php
    chart.php                      maintenance.php              tr_logform.php
    charts.php                     map.import.php               tr_status.php
    conf                           map.php                      tr_testexpr.php
    conf.import.php                overview.php                 usergrps.php
    correlation.php                popup_httpstep.php           users.php
    discoveryconf.php              popup_media.php              zabbix.php
    disc_prototypes.php            popup.php
    [root@zabbix php]# cp -a * /usr/local/nginx/html/
    [root@zabbix php]# chmod -R 777 /usr/local/nginx/html/*
    
    

    2.4修改nginx配置

    在http里面添加一下内容
    fastcgi_buffers 8 16k; 缓存php生成的页面内容
    fastcgi_buffer_size 32k; 缓存php生成的头部信息
    fastcgi_connect_timeout 300; 链接php的超时时间
    fastcgi_send_timeout 300; 发送请求的超时时间
    fastcgi_read_timeout 300; 读取请求的超时时间

    [root@zabbix php]# vim /usr/local/nginx/conf/nginx.conf
    
    http {
            fastcgi_buffers 8 16k;
            fastcgi_buffer_size  32k;
            fastcgi_connect_timeout 300;
            fastcgi_send_timeout  300;
            fastcgi_read_timeout  300;
    

    重新启动nginx

    [root@zabbix php]# /usr/local/nginx/sbin/nginx  -s stop
    [root@zabbix php]# /usr/local/nginx/sbin/nginx 
    

    2.5安装依赖软件

    [root@zabbix php]# yum -y install php-gd  php-xml php-ldap php-bcmath php-mbstring
    

    2.6修改php配置文件

    [root@zabbix php]# vim /etc/php.ini 
    date.timezone = Asia/Shanghai       设置时区
    
    max_execution_time = 300    最大执行时间,秒
    
    post_max_size = 32M      post数据最大容量
    
    max_input_time = 300    服务器接受数据的时间限制
    
    

    重启php-fpm服务

    [root@zabbix php]# systemctl restart php-fpm
    

    3.访问页面

    3.1输入http://192.168.2.70/index.php 输监控服务器的ip

    在这里插入图片描述

    3.2查看配置是否成功在这里插入图片描述

    3.3 输入数据库信息

    在这里插入图片描述

    3.4查看输入的信息是否正确

    在这里插入图片描述

    3.5配置成功 进入监控系统

    在这里插入图片描述
    在这里插入图片描述

    启动服务

    [root@host5 ~]# vim /usr/local/etc/zabbix_server.conf
    LogFile=/tmp/zabbix_server.log  设置日志
    DBHost=localhost    设置主机
    DBName=zabbix       设置数据库名称
    DBUser=zabbix         设置数据库账户
    DBPassword=zabbix    设置数据库密码
    
    [root@host5 ~]# zabbix_server 
    [root@host5 ~]# ss -utnlp | grep 10051
    tcp    LISTEN     0      128       *:10051    *:*         user
    
    展开全文
  • 二.Cacti监控服务器的的搭建 1.服务器端: a,安装基础环境 b.安装RRDTOOL c.部署cacti,设置数据库连接 d.添加检测数据的用户账户,更改权限保证读写数据正常 e.授权数据库用户,导入初始化数据 f.修改cacti配置文件 ...

    三种监控服务器的搭建

    一.引子:

    笔者关于网络服务的整理也差不多了,开始进入收尾环节,说实话,在我们的生产环境中,在服务搭建完成之后,更重要的是怎么在它发生错误之前将及时发现,及时解决。这时候我们的监控服务器就派上用场了。真是很棒棒有没有。以下三种监控服务器,是我们生产环境中大概率会遇到的。当然这三款服务器最常见的还是Zabbix,功能最强大,最优异的也是Zabbix.

    二.监控服务器的种类

    1.Cacti(流量和性能监测为主)
    LAMP (底层环境)
    数据收集:SNMP(j简单网络管理协议)
    数据展示:B/S RRDTOOL(图片展示)

    2.Nagios(服务和性能监控为主)
    数据收集:C/S
    数据展示:B/S

    3.Zabbix(全新型的监控软件)可以分布式运行
    数据收集:C/S
    数据展示:B/S

    4.promethus(云原生,贴近容器)

    三.Cacti监控服务器的的搭建

    1.服务器端:

    公网同步时间ntpdate -u ntpl.aliyun.com
    rz -e
    a,安装基础环境
    $yum -y install snmp snmp-util(199端口)
    $ yum -y install httpd mysql mysql-server mysql-devel libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC php php-mysql php-pdo

    $ service httpd start
    $ service mysqld start

    $ yum -y install net-snmp net-snmp-utils net-snmp-libs lm_sensors

    b.安装RRDTOOL
    $ tar -zxf rrdtool-1.4.5.tar.gz
    $ cd rrdtool
    $ ./configure --prefix=/usr/local
    $ make && make install

    如出错,按以下步骤解决
    $ tar zxvf cgilib-0.5.tar.gz
    $ cd cgilib-0.5
    $ make
    $ cp libcgi.a /usr/local/lib
    $ cp cgi.h /usr/include

    $ yum -y install libart_lgpl-devel

    $ yum -y install pango-devel* cairo-devel*

    c.部署cacti,设置数据库连接
    $ tar -zxf cacti-0.8.7g.tar.gz
    $ mv cacti-0.8.7g/ /var/www/html/cacti
    $ cd !$
    $ patch -p1 -N <~/data_source_deactivate.patch
    $ patch -p1 -N <~/graph_list_view.patch
    $ patch -p1 -N <~/html_output.patch
    $ patch -p1 -N <~/ldap_group_authenication.patch
    $ patch -p1 -N <~/script_server_command_line_parse.patch
    $ patch -p1 -N <~/ping.patch
    $ patch -p1 -N <~/poller_interval.patch

    d.添加检测数据的用户账户,更改权限保证读写数据正常
    $ useradd runct
    $ chown -R root.root ./
    $ chown -R runct.runct rra/ log/

    e.授权数据库用户,导入初始化数据
    $ mysql -u root -p
    $ create database cactidb default character set utf8;
    $ grant all on cactidb.* to ‘cactiuser’@‘localhost’ identified by ‘pwd@123’;
    $ quit
    $ mysql -u cactiuser -p cactidb < cacti.sql
    f.修改cacti配置文件
    $ vim include/config.php
    mysql
    cactidb
    localhost
    cactiuser
    pwd@123
    3306
    g.调整http配置
    $ vim /etc/httpd/conf/httpd.conf

        Listen 80
    1.    DocumentRoot "/var/www/html/cacti"
    2.    <Directory "/var/www/html/cacti">
             options None
             AllowOverride None 
             Order allow,deny
             Allow from all
        </Directory>
    3.    DirectoryIndex index.php index.html
    4.    AddDefaultCharset utf-8
    

    $ service httpd restart

    $ http://192.168.66.11/install
    h.打开snmp文件
    $ yum -y install net-snmp net-snmp-utils lm_sensors

    $ vim /etc/snmp/snmpd.conf
    41 服务器地址 默认为default 共同体名称 默认为public
    62 开放所有的SNMP查询权限 all 默认为SystemView
    85 支持各种查询与访问 取消注释符号
    i.收集数据
    $ su - runct
    php /var/www/html/cacti/poller.php(让RRPTOOL工作)

    $ crontab -e (自动工作)
    */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null(五分钟一次)

    $ service crond start
    j.安装插件(图形界面勾选)
    $ tar -zxf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
    $ mysql -u cactiuser -p cactidb < cacti-plugin-arch/pa.sql(还原数据)
    $ cd /var/www/html/cacti
    $ patch -p1 -N < ~/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff

    $ cd /var/www/html/cacti/plugins

    $ tar -zxf ~/monitor-0.8.2.tar.gz(进入解压目录还原SQL文件)

    2.客户端配置

    公网同步时间:ntpdate -u ntpl.aliyun.com
    a.安装基础软件包
    $ yum -y install net-snmp net-snmp-utils lm_sensors

    $ vim /etc/snmp/snmpd.conf
    41 服务器地址 默认为default 共同体名称 默认为public
    62 开放所有的SNMP查询权限 all 默认为SystemView
    85 支持各种查询与访问 取消注释符号

    四.Nagios监控服务器的的搭建

    1.服务器端配置

    公网同步时间ntpdate -u ntpl.aliyun.com

    a.解决安装 Nagios 的依赖关系
    $ yum -y install httpd gcc glibc glibc-common php php-mysql openssl openssl-devel
    $cd /mnt/cdrom/Package/
    $yum -y gd

    b.创建运行身份
    $ groupadd nagcmd
    $ useradd -m nagios
    $ usermod -a -G nagcmd nagios
    $ usermod -a -G nagcmd apache

    c.编译安装 nagios
    mkdir /mnt/iso
    mount -o loop nagios.iso /mnt/iso/
    $ tar zxf nagios-3.1.2.tar.gz
    $ cd nagios-3.1.2
    $ ./configure --with-command-group=nagcmd --enable-event-broker
    $ make all
    $ make install
    $ make install-init
    $ make install-config
    $ make install-commandmode

    $ vi /usr/local/nagios/etc/objects/contacts.cfg
    email nagios@localhost #这个是默认设置

    $ make install-webconf
    $ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
    $ service httpd restart

    d.编译、安装 nagios-plugins
    $ tar zxf nagios-plugins-1.4.15.tar.gz
    $ cd nagios-plugins-1.4.15
    $ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql --enable-perl-modules
    $ make
    $ make install

    e.配置并启动 Nagios
    $ chkconfig --add nagios
    $ chkconfig nagios on
    $ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    $ service nagios start
    http://your_nagios_IP/nagios

    2.监控端配置

    a.创建用户
    useradd nagios

    b.为了安装 nrpe,先安装 nagios-plugins-1.4.15.tar.gz 插件

    正式步骤
    $ tar zxf nagios-plugins-1.4.15.tar.gz
    $ cd nagios-plugins-1.4.15
    $ ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    $ make all
    $ make install

    c.安装 nrpe
    $ tar -zxvf nrpe-2.12.tar.gz
    $ cd nrpe-2.12.tar.gz
    $ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/
    $ make all
    $ make install-plugin
    $ make install-daemon
    $ make install-daemon-config

    d.配置 nrpe 信息
    $ vim /usr/local/nagios/etc/nrpe.cfg
    allowed_hosts=192.168.216.251,127.0.0.1
    $ /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

    e.服务器端安装nrpe插件
    $ cd nagios-nrpe_2.8.1
    $ ./configure --enable-ssl --with-ssl-lib=/usr/lib64/
    $ make all
    $ make install-plugin

    f.commands.cfg 定义外部构件 nrpe
    $ vi /usr/local/nagios/etc/objects/commands.cfg

    		define command{
    				command_name check_nrpe
    				command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    		}
    
    g.定义 mylinux.cfg
    define host{
        use    linux-server
        host_name    mylinux/IP
        alias    mylinux
        address    192.168.0.27
    }
    
    define service{
        use    generic-service
        host_name    mylinux
        service_description    check-load
        check_command    check_nrpe!check_load
    }
    
    define service{
        use    generic-service
        host_name    mylinux
        service_description    check-users
        check_command    check_nrpe!check_users
    }
    	
    define service{
        use    generic-service
        host_name    mylinux
        service_description    otal_procs
        check_command    check_nrpe!check_total_procs
    }
    

    五.Zabbix监控服务器的的安装部署

    1.初始化系统设置
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config
    2.安装 LAMP 环境
    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    yum clean all
    yum makecache
    yum -y install mariadb mariadb-server httpd php php-mysql
    systemctl enable httpd
    systemctl restart httpd
    systemctl enable mariadb
    systemctl restart mariadb
    mysql_secure_installation
    #Zabbix 初始化
    安装 Zabbix 软件包
    rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
    yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
    #初始化数据库
    mysql -u root -p
    CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
    grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;
    #还原数据库
    cd /usr/share/doc/zabbix-server-mysql-3.2.1
    #启动 Zabbix 服务
    vim /etc/zabbix/zabbix_server.conf

        DBHost=localhost
        DBName=zabbix
        DBUser=zabbix
        DBPassword=zabbix
    
    systemctl start zabbix-server
    systemctl enable zabbix-server
    
    #编辑 zabbix 前端 php 配置
    
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Shanghai
    

    #调整时间同步
    ntpdate cn.pool.ntp.org

    #重启 Apache 服务生效
    systemctl restart httpd
    #可做可不做
    vim /vim /etc/httpd/conf/httpd.conf (将主页文件修改为zabbix的主页文件,)
    /usr/share/zabbix
    在这里插入图片描述
    有关监控服务器的搭建笔者就整理在此了,下一篇·我们将去发现Zabbix监控服务器的各种功能,助我们在服务器的管理过程中一臂之力。(感谢大家浏览和阅读)

    展开全文
  • Linux-服务监控搭建

    千次阅读 2018-08-24 16:03:46
    监控服务 监控是什么?监控的重要性是什么?为什么要做监控?需要监控什么? 从应用层来角度来看: 你公司业务的WEB 服务器拒绝连接了? 客户无法给你们的邮箱发邮件了? 论坛的大量用户无法登陆? DNS 无法正常...

    监控服务

    监控是什么?监控的重要性是什么?为什么要做监控?需要监控什么?

    从应用层来角度来看:

    你公司业务的WEB 服务器拒绝连接了?
    客户无法给你们的邮箱发邮件了?
    论坛的大量用户无法登陆?
    DNS 无法正常解析?
    数据库服务器宕机了,用户无法写入数据了?
    ...
    

    从服务器、应用和网络设备的角度来看:

    目前服务器的CPU 负载多少,一天中那个时刻负载高,一个月中哪一天服务器CPU 的负载比较高?
    磁盘的使用率是多少?
    内存的使用率是多少?
    ...
    

    我想上面的任何一个问题出现的话,对我们的业务造成的影响都是巨大的。

    不同的公司,不同的应用,就会增加更多需要监控的对象。通过上面列举的比较常见的问题,我想,监控的重要性就不言而喻了。我们如何及时的获得这些应用的运行状态信息,在出现问题时能够及时知道,这就是监控要做的事情。

    当然今天不是来说:ZABBIX (比较火的一个开源的企业级的监控服务方案),但是会做一个简单的介绍。

    ZABBIX

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。开源这个很舒服。
    zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
    zabbix由2部分构成,zabbix server与可选组件zabbix agent。
    注意:
    要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。

    今天主要是就服务端口监控来说一个小demo,所以我们直接上正文吧。想要学习zabbix的可以到官网了解一下。
    ZABBIX官网https://www.zabbix.com

    基于端口的监控服务

    刚好我的服务器上刚刚装了swoole,我们就以swoole里的websocket服务为例,来做一个监控ws服务的监控服务。
    1.首先我们启动ws服务,注意我的端口是:9503
    这里写图片描述
    因为我们是写demo,所以不用展示Ws.php的代码了。这个端口你测试的时候可以拿mysql的3306,redis的6379等等,所以,他只是为了启动一个服务。
    我们看下,这个服务到底启动了没,再开个窗口看下:
    这里写图片描述
    ok,完美启动了。

    2.那么我们怎么监控呢
    我们先来看下这条命令吧(以当前demo监控的9503端口为例)

    netstat -anp | grep 9503 | grep LISTEN | wc -l
    //意思就是说这个端口一共有多少行的意思,启动了当然就是1行,如果没有启动就是0行

    试着运行一下这条命令看一下,你会发现,打印出来了一个数字:1
    这里写图片描述
    我们就可以拿这个数字做文章。
    有些人会问了,为什么这时候我打印这条命令的时候和上图类似显示了一条提示语句,然后跟了一个数字1,有的却是像下面一样只显示一个数字1呢?
    这里写图片描述
    注意:一定要注意你的用户什么,第一张是以guwenjie普通用户进行查看的,那条提示语句也说的很明显(…but you should be root),第二章是以root用户身份进行查看的,so…
    所以我们需要将那条提示语处理掉,我们只需要那个数字才对。像这样:

    netstat -anp 2>/dev/null | grep 9503 | grep LISTEN | wc -l

    将多余的信息输出过滤到/dev/null
    这里写图片描述

    接下来就好做了:在Ws.php目录下创建一个Guard.php文件

    <?php
    /**
     * Created by PhpStorm.
     * User: 0375
     * Date: 2018/8/24
     * Time: 15:03
     */
    class Guard{
        const PORT = 9503;
    
        public function port()
        {
            $shell = "netstat -anp 2>/dev/null | grep ".self::PORT." | grep LISTEN | wc -l";
            $result = shell_exec($shell);//PHP执行shell脚本函数(shell_exec())
            if($result != 1){
                //说明此事端口已经挂掉,发送报警服务,比如向管理员邮箱发送邮件或者直接发送短信提醒
                echo date("Y-m-d H:i:s")."-ERROR\n";
            }else{
                echo date("Y-m-d H:i:s")."-SUCCESS\n";
            }
        }
    }
    (new Guard())->port();

    ok,;来测试一波吧(如果服务正常肯定走else区间否则就是if区间,我先测试启动情况然后测试未启动情况)
    这里写图片描述
    未启动的时候:
    这里写图片描述

    定时任务实现实时监控

    上面的程序已经实现了监控功能,但是我们需要的是它自己实时监测,说白了就是需要一个定时任务。
    那么,可以采取两种方案。

    1.Linux中的crontab定时任务
    2.使用swoole的定时任务
    

    crontab定时任务的粒度为分钟,就是最小是精确到分钟的,而swoole的定时任务的粒度是毫秒级,当然也包括秒了。所以如果你想要更精确的监控可以采用swoole的定时任务,分钟级crontab也是没问题的。

    如果你对crontab定时任务不太熟悉,可以查看我另一篇关于crontab定时任务的文章:Linux中的Crontab定时任务详解
    在这里,我们使用swoole的定时任务来实现这个实时监控。
    swoole,可能有些人会说不知道怎么安装,这种教程网上一大把,之后我也会写一个swoole的编译安装的文章,最好自己动手操作下,就是,下载,解压,./configure make -j make install 然后在php.ini配置文件中加入swoole.so扩展文件,扩展的编译安装大同小异,自己动手几次就学会了。

    我们使用这个方法:swoole_timer_tick()
    仔细看一下其中的参数说明和使用案例。那么上面的代码稍作改动即可:

    <?php
    /**
     * Created by PhpStorm.
     * User: 0375
     * Date: 2018/8/24
     * Time: 15:03
     */
    class Guard{
        const PORT = 9503;
    
        public function port()
        {
            $shell = "netstat -anp 2>/dev/null | grep ".self::PORT." | grep LISTEN | wc -l";
            $result = shell_exec($shell);
            if($result != 1){
                //说明此时端口已经挂掉,发送报警服务,比如向管理员邮箱发送邮件或者直接发送短信提醒
                echo date("Y-m-d H:i:s")."-ERROR\n";
            }else{
                echo date("Y-m-d H:i:s")."-SUCCESS\n";
            }
        }
    }
    
    //2000毫秒,每两秒执行一次
    swoole_timer_tick(2000,function ($timer_id){
        (new Guard())->port();
    });

    来试试吧,
    这里写图片描述
    可以很明显的看到,两秒钟打印一次,刚开始服务未开启,ERROR,开启后变为SUCCESS。

    后台服务化

    到此已经实现了实时监控了,但是我们总不可能一直开一个窗口放在这里,所以,我们需要把他做成后台服务,让他在后台自己去监控,然后将打印的信息输出到日志文件中,这样的效果会更好。

    这个时候,只需要执行以下命令即可:

    //nohup 用途:不挂断地运行命令。
    nohup /usr/local/php/bin/php /home/wwwroot/script/Guard.php > /home/wwwroot/script/guard-log.txt &

    注意:首先php一定要带上php所在路径,后面的路径信息一定要使用你的,以上都是我的路径信息,最后的 & 符号一定不要落掉。该命令表示,在后台不间断运行Guard.php脚本,并且日志信息输出到guard-log.txt文件中
    这里写图片描述
    这个时候你会发现那个日志文件就会不停的打印进东西:
    这里写图片描述
    PS:tail -f 挺好用的,比vim方便

    如果你想查看该服务是否在后台运行,除了上面的查看日志文件也可以这样:

    ps aux | grep /home/wwwroot/script/Guard.php

    上面执行完nohub命令后,会返回进程号,如果你想要终止这个后台进程可以暴力杀死即可,例如:kill 27317

    好了,一个简单的监控服务就搭建完成了,你也可以用来监控不通的服务。

    展开全文
  • Cacti 是一套基于php ,mysql、RRDtool 开发的网络流量监测图形分析工具。 Cacti 通过 snm pgepge 获取数据,使用 RRDtRRDt oolool 绘画图形。最后通过 web 方式,呈现出来
  • 1.使用vmstat命令监控内存及磁盘I/O信息 2.使用iostat命令监控CPU处理器及磁盘的I/O信息 3.使用sar命令监控系统最近的CPU/内存等活动
  • 服务器监控系统搭建

    千次阅读 2019-04-25 10:42:54
    https://blog.csdn.net/w958660278/article/details/80484486
    展开全文
  • centos7.6搭建监控服务器zabbix

    千次阅读 2019-04-21 15:55:16
    zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,...
  • 服务器搭建个人网站(阿里云服务器

    万次阅读 多人点赞 2018-01-29 16:47:32
    服务器搭建个人网站 一丶购买服务器 这里我选的是阿里云服务器,进入阿里云官网https://www.aliyun.com 阿里云提供了几种服务器,云服务器ESC、轻量应用服务器,ESC更好一点儿,我选了轻量级应用服务器。购买好了...
  • 该文档是美团cat监控系统的服务器搭建,主要描述的是windows系统下,单机部署美团cat监控系统,客户端的使用请看下一个文件。
  • 监控流媒体服务器搭建和使用

    千次阅读 2019-06-02 18:18:04
    国内主流监控方案厂商都有自己的流媒体服务器平台,为什么要还需要通用的流媒体服务器产品呢?这个问题可以从几个方面回答:1)经济性: 传统监控厂商的流媒体服务器,由于主要面向城市建设和大型安防项目,往往造价...
  • 此时去Graph中,输入框输入node可以发现有很多node开头的监控项了,都是和机器状态有关的,可以自己执行看一看。 安装Grafana: https://grafana.com/grafana/download ps:如果下载很慢可以联系博主qq 可以发文件给...
  • 搭建炫酷的服务器监控平台

    千次阅读 2019-07-08 21:02:10
    本文所使用的工具为如下:Telegraf「数据采集」InfluxDB「数据存储」Grafana「数据可视化」一般的我们如果需要搭建服务器监控平台,需要去读取服务器实时的内...
  • 一个摄像头,usb 接口,mipi接口都可以,能在电脑/开发板中正常工作3,一台群晖服务器本文使用的硬件设备:1,一台x86 电脑2,一个usb摄像头3,一台群晖服务器思路:1,摄像头接入电脑,电脑就可以实时监控家里。...
  • 搭建本地服务器,Web服务器——保姆级教程! 本文首发于https://chens.life/How-to-build-your-own-server.html。 先上图!大致思路就是如此。 前言 暑假因为疫情在家无事可做,便白嫖了阿里云大半年的虚拟主机。...
  • 搭建linux服务器监控的目的是自己有一台阿里云服务器内存是2g的,多开一些软件就会把内存和cpu使用率弄的很高,最终导致服务器卡死.所以基于这个痛点,想知道当前的cpu和内存是多少.阿里云ecs控制台中也提供对服务器的...
  • 检查服务器各种状态。2、通过远程控制卡监控。ipmi是一种标注。ipmi获取不到硬盘状态,比如硬盘坏了,硬盘可以用MegaCli工具。ipmi简介:...
  • Helix Serber流媒体服务器搭建步骤,是在Window Server2008上搭建
  • 如何借助Monit搭建服务器监控系统-.docx
  • 压测过程中,我们需要监控服务器、数据库的各项性能指标。最简单的方式,我们可以在服务器上通过一些linux命令,比如:top, free, netstat等等。这些命令虽然方便,但也有明显的缺陷: 这些命令只能呈现实时的数据...
  • 搭建服务器时,除了部署webapp之外,还需要服务的异常信息与服务器性能指标进行监控,一旦有异常则通知管理员。服务器使用Linux+Nginx-1.9.15+Tomcat7+Java搭建的。编写脚本检测错误日志和服务器性能指标,一旦...
  • Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://status.wanghualong.cn 前言 要搭建服务器监控平台,总共分三步...
  • 搭建日志服务器

    千次阅读 2021-03-16 17:08:29
    日志服务器作用: 为了维护自身系统资源的运行状况,计算机系统一般都会有相应的日志记录系统有关日常事件或者误操作警报的日期及时间戳信息。这些日志信息对计算机犯罪调查人员非常有用。所谓日志(Log)是指系统所...
  • rp源文件 认证系统监控预警/认证监控预警/统计分析/基础环境
  • 1、需要配置一台FTP服务器,可以LINUX服务器搭建一个FTP服务即可。 2、监控服务器需要与FTP服务器网络连通。 3、需要修改LINUX脚本中的FTP服务器地址,用户名和密码。 4、需要在每台...
  • Zabbix监控环境搭建说明Zabbix监控环境搭建说明Zabbix监控环境搭建说明
  • 视频监控环境搭建

    千次阅读 2018-03-01 22:01:01
    在国内视频监控领域,海康威视和大华算是鼎鼎有名的了,今天这篇文章将搭建海康威视和大华的环境各一套 设备列表 客户现场已经有硬盘录像机,所以我们的项目属于改造项目,增加新的能力,但不能更换设备,主要是...
  • 第一步docker中安装启动grafana看板服务 #docker自己研究安装 [root@zf ~]# docker search grafana NAME DESCRIPTION STARS OFFIC...
  • 教你搭建自己的Git服务器

    万次阅读 2016-10-18 10:04:05
    现在我们将要学习如何搭建 git 服务器,如何编写自定义的 Git 钩子来在特定的事件触发相应的动作(例如通知),或者是发布你的代码到一个站点。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,858
精华内容 36,743
关键字:

怎么自己搭建监控服务器