zoukankan      html  css  js  c++  java
  • 性能监控工具——Cacti安装文档

    一、Cacti安装说明

    一般性的安装说明,详细的操作系统具体的安装说明可用于Linux.

    • RRDTool 1.2.x或更高版本
    • MySQL 4.1.x5.x更高版本
    • PHP 4.3.65.x或更高版本
    • Apache 2.2或者更高版本
    • Perl 5.10.1 或者更高版本


    二、安装在Unix/Linux

    验证httpdmysqld是在系统启动时启动,确保yum源是原始的源。

    2.需要包基于yum的操作系统

    • php
    • httpd
    • php-mysql
    • php-snmp
    • php-ldap (when using LDAP authentication)
    • php-xml
    • mysql
    • mysql-server
    • mysql-devel
    • net-snmp (depending on the distro, net-snmp-utils may be required)
    • Spine (depending on the net-snmp-devel openssl-devel may be required)
    • crond (cron, cronie or the like)
    • gcc
    • gcc-c++
    • Perl
    • Perl-libwww-perl
    • Python
    • Python easy_install

    3 。对于安装官方补丁,您将需要一些工具

    1.1     php安装步骤

    1. 使用root用户登录服务器
    #yum makecache
    #yum install php-xml php-mysql php-snmp php-ldap php-pdo php-devel php 
    1. 安装成功
    2. 参考php配置文件修改

    1.2     RRDTool安装步骤

    1. 使用root用户登录服务器
    #yum install rrdtool
    1. 安装成功

    1.3     httpd安装步骤

    1. 使用root用户登录服务器
    #yum install httpd httpd-tools
    1. 安装成功
    2. 参考Apache配置文件修改

    1.4     net-snmp安装步骤

    1. 使用root用户登录服务器
    #yum install net-snmp net-snmp-libs net-snmp-utils
    1. 安装成功
    2. 参考snmp配置文件修改

    1.5     Perl安装步骤

    1. 使用root用户登录服务器,安装perl
    #yum install perl perl-libwww-perl
    1. 安装成功

    1.6     Mysql安装步骤

    1. 使用root用户登录服务器,安装mysql
    #yum install mysql mysql-server mysql-devel mysql-libs
    1. 安装成功

    1.7     Python安装步骤

    1. 使用root用户登录服务器,安装python

    #yum install python

    1. 安装python easy_install模块
    #wget https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.5.tar.gz#md5=066e16290f8edcbc8b4b67808b2cbdb2
    #tar –xvf setuptools-12.0.5.tar.gz
    #cd setuptools-12.0.5
    #python setup.py install
    1. 安装boto模块
    #easy_install python boto

    1.8     Cacti安装步骤

    1. 使用root用户登录服务器,安装cacti
    #yum wget
    #wget http://www.cacti.net/downloads/cacti-0.8.8c.tar.gz
    #tar –xvf cacti-0.8.8c.tar.gz
    #mv cacti-0.8.8c cacti
    #mv cacti /var/www/html
    #chmod –R 755 /var/www/html/cacti
    1. 安装成功
    2. 参考Cacti配置文件修改

    1.9     Cacti基础插件Spine安装步骤

    1. 使用root用户登录服务器
    2. 安装依赖包
    #yum install -y net-snmp-devel openssl-devel
    #wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8c.tar.gz 
    #tar -xvf cacti-spine-0.8.8c.tar.gz
    #cd cacti-spine-0.8.8c
    #mkdir /usr/local/spine
    #chmod +x /usr/local/spine
    #./configure --prefix=/usr/local/spine
    #make && make install
    1. 参考Cacti基础插件Spine配置文件修改

    1.10  Cacti基础插件Monitorsettingsthold安装步骤

    1. 使用root用户登录服务器
    #wget http://docs.cacti.net/_media/plugin:monitor-v1.3-1.tgz 
    #mv plugin:monitor-v1.3-1.tgz monitor-v1.3-1.tgz
    #tar -xvf monitor-v1.3-1.tgz
    #cp -R monitor /var/www/html/cacti/plugins/
    #wget http://docs.cacti.net/_media/plugin:settings-v0.71-1.tgz
    #mv plugin:settings-v0.71-1.tgz settings-v0.71-1.tgz
    #tar –xvf settings-v0.71-1.tgz
    #cp –R settings /var/www/html/cacti/plugins/
    #wget http://docs.cacti.net/_media/plugin:thold-v0.5.0.tgz
    #mv plugin: thold-v0.5.0.tgz thold-v0.5.0.tgz
    #tar –xvf thold-v0.5.0.tgz
    #cp –R thold /var/www/html/cacti/plugins/
    1. 参考Cacti基础插件monitorsettingsthold配置文件修改

    2.1     基础监控插件安装步骤

    1. 使用root用户登录监控服务器,安装监控基础模板
    #wget http://www.percona.com/downloads/percona-monitoring-plugins/1.1.4/percona-monitoring-plugins-1.1.4.tar.gz
    #tar –xvf percona-monitoring-plugins-1.1.4.tar.gz
    #cd percona-monitoring-plugins-1.1.4cactiscripts
    #cp * /var/www/html/cacti/scripts/
    #mkdir /var/www/html/cacti/resource/percona
    #cd percona-monitoring-plugins-1.1.4cacti
    #cp –R * /var/www/html/cacti/resource/percona
    #chmod –Rf 755 /var/www/html/cacti/resource/percona

    2.2     net-snmp安装步骤

    1. 使用root用户登录受控服务器
    #yum install net-snmp net-snmp-libs net-snmp-utils
    1. 安装成功
    2. 参考snmp配置文件修改

    2.3     编译安装nginx

    1. 使用root用户登录监控服务器
    #wget http://nginx.org/download/nginx-1.6.2.tar.gz
    #cp *.pl /var/www/html/cacti/scripts/
    1. 使用root用户登录受控服务器,重新编译安装nginx
    #mkdir /usr/local/nginx/
    #chmod +x /usr/local/nginx/
    #./configure --prefix=/usr/local/nginx --with-http_stub_status_module
    #make && make install
    1. 参考监控nginx配置文件修改

    四、修改各个配置文件

    1.PHP配置文件修改

    1.1     配置php.ini

    1. 使用root 用户登陆系统
    #vi /etc/php.ini
     
    safe_mode=Off
    data.timezone=”Asia/manila”
    file_uploads=On
    extension_dir="/usr/lib64/php/modules/"或者extension_dir=/etc/php.d

    注:如果是php4.3.6以上版本。请注释掉seesion.save_path=/tmp

    2.Apache配置文件修改

    2.1     配置httpd.conf

    1. 使用root用户登录监控服务器
    #vi /etc/httpd/conf/httpd.conf
     
    incldue conf.d/*.conf

    2.2     配置cacti.conf

    1. 使用root用户登录监控服务器
    #cp /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/cacti.conf
    1. 按照这个信息配置cacti.conf
    #vi /etc/httpd/conf.d/cacti.conf

    2.3     配置php.conf

    1. 使用root用户登录服务器
    2. 检查php.conf是否有这些信息
    #more /etc/httpd/conf.d/php.conf

    3.snmp配置文件修改

    3.1     配置snmpd.conf

    1. 使用root用户登录监控或受控服务器
    #vi /etc/snmp/snmpd.conf
     
    原:
    view    systemview    included   .1.3.6.1.2.1.1
    改:
    view    systemview    included   .1.3.6.1.2.1
     
    原:
    com2sec notConfigUser default public
    改:
    com2sec notConfigUser 监控端IP public
     
    原:
    access notConfigGroup "" any noauth exact systemview none none
    改:
    access notConfigGroup "" any noauth exact all none none
     
     #view all included .1 80 前面的 # 注释去掉
    添加监控服务器ip
    rocommunity serverIP
    1. 保存退出
    2. 重启snmpd服务
    #service snmpd restart

    3.2     设置snmpd开机启动

    #chkconfig snmpd on

    4.Cacti配置文件修改

    4.1     设置目录权限

    #useradd cactiuser
    #chown -R cactiuser rra/ log/

    4.2     创建一个mysqls数据库

    mysqladmin -user=root create cacti
    cd /var/www/html/cacti
    1. 导入cacti数据库
    mysql cacti<cacti.sql

    mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
    mysql> flush privileges;

    4.3     配置计划任务

    1. 使用root用户登录监控服务器
    #vi /etc/crontab
     
    */1 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
    1. 退出保存

    4.4     配置global.php

    1. 使用root用户登录监控服务器

    #vi /var/www/html/cacti/include/global.php

    $database_type = "mysql";
    $database_default = "cacti";
    $database_hostname = "127.0.0.1";
    $database_username = "cacti";
    $database_password = "cacti";
    $database_port = "3306";
    1. 退出保存

    4.5     设置开机启动服务

    1. 使用root用户登录监控服务器
    #chkconfig snmpd on
    #chkconfig httpd on
    #chkconfig mysqld on
    #chkconfig crond on

    4.6     配置IPTABLES

    1. 使用root用户登录监控服务器

     

    #iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

    4.7     配置SELINUX

    1. 使用root用户登录监控服务器
    #vi /etc/sysconfig/selinux
    原:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    改:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX= disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    #SELINUXTYPE=targeted

    4.8     页面配置

    1. 浏览器中输入:http://www.yourdomain.com/cacti/

    默认用户名:admin 密码:admin

    1. 更改密码
    2. 安装指南
    3. 提示这个直接next
    4. new install 然后next
    5. 直接点完成
    6. 登陆界面,登陆之后会提示你重置下密码

    5.Cacti基础插件Spine配置文件修改

    5.1     配置spine.conf

    1. 使用root用户登录监控服务器
    #cp  /usr/local/spine/etc/spine.conf.dist  /usr/local/spine/etc/spine.conf
    # vi /usr/local/spine/etc/spine.conf
     
    DB_Host         localhost
    DB_Database     cacti
    DB_User         cactiuser
    DB_Pass         123456
    DB_Port         3306
    DB_PreG         0

    5.2     修改Cacti使用的Poller Type

    1. admin用户登录到Cacti
    2. Console -> Cacti Settings->Poller->Poller Type

    ”Poller Type”下拉框设置中,选择”spine”

    5.3     cacti里设置spine路径

    1. admin用户登录到Cacti
    2. Console -> Configuration -> Settings -> Paths -> Alternate Poller Path -> Spine Poller File Path

    输入Spine可执行程序的完整路径,我的是/usr/local/spine/bin/spine,保存设置。

    6.Cacti基础插件monitorsettingsthold配置文件修改

    6.1     导入基础数据

    #mysql -uroot -p cacti </home/www/cacti/plugins/monitor/monitor.sql

    6.2     配置config.php

    1. 使用root用户登录监控服务器
    #vi /var/www/html/cacti/include/config.php
     
    $database_type = "mysql";
    $database_default = "cacti";
    $database_hostname = "localhost";
    $database_username = "cactiuser";
    $database_password = "somepassword";
     
    /* load up old style plugins here */
    $plugins = array();
    $plugins[] = 'thold';
    $plugins[] = 'monitor';
    $plugins[] = 'settings';
    $plugins[] = 'discovery';
    /*
       Edit this to point to the default URL of your Cacti install
       ex: if your cacti install as at http://serverip/cacti/ this
       would be set to /cacti/
    */
    $url_path = "/cacti/";
     
    /* Default session name - Session name must contain alpha characters */
    #$cacti_session_name = "Cacti";
    1. 退出保存

    6.3     页面配置

    1. admin用户登录到Cacti
    2. Console -> Configuration -> Plugin Management

    配置如下图所示:

     

    7.监控nginx配置文件修改

    7.1     配置nginx.conf

    1. 使用root用户登录受控服务器
    2.  nginx.conf中添加如下(粗体字部分)
    #vi /usr/local/nginx/conf/nginx.conf
     
        server {
            listen       80;
            server_name  localhost;
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            location / {
                root   /data/web_server/index;
                index  index.html index.htm;
            }
     
            location /nginx_status {
                # Turn on nginx stats
                stub_status on;
                # I do not need logs for stats
                access_log   off;
                # Security: Only allow access from 192.168.1.100 IP #
                #allow 192.168.1.100;
                # Send rest of the world to /dev/null #
                #deny all;
            }
    }

    7.2     页面确认

    1. 通过http://127.0.0.1/nginx_status访问

    返回结果类似于:

    Active connections: 1 
    server accepts handled requests
     655 655 1985 
    Reading: 0 Writing: 1 Waiting: 0 

    8.监控redis配置文件修改

    8.1     配置ss_get_by_ssh.php

    注:此文件在检出监控插件中安装

    1. 使用root用户登录受控服务器
    #vim /var/www/html/cacti/scripts/
     
    $ssh_user   = 'root';                          # SSH username 
    $ssh_port   = 22;                               # SSH port 
    $ssh_iden   = '-i/root/.ssh/id_rsa';   # SSH identity 
    ##修改根据你的配置,你的ssh连接用户,还有认证私钥的位置
     
    $redis_port    = 6379;                    # Which port redis listens on

    8.2     配置ssh公私钥无需密码登录

    注: 因为cacti监控redis是需要登录到redis的服务端运行redis的状态获取命令,所以需要ssh连接登录。需要配置非交互式帐号密码登录。这里采用公私钥模式。

    1. 使用root用户登录监控服务器
    2. 在监控服务器生成一对公私钥
    ssh-keygen  ##如果是root用户,生成的默认目录为/root/.ssh2个文件id_rsa(公钥) id_rsa.pub(私钥)
    cd /root/.ssh/ && chmod 600 id_rsa*     ##把这2个文件修改权限,为600 
    ssh-copy-id -i /root/.ssh/id_rsa root@192.168.200.1  #加被监控节点公私钥认证

    8.3     上传redis监控模板

    1. 在本机下载监控模板
    http://www.percona.com/downloads/percona-monitoring-plugins/1.1.4/percona-monitoring-plugins-1.1.4.tar.gz
    1. 解压percona-monitoring-plugins-1.1.4.tar.gz
    2. 上传监控模板Console-> Import Templates
    cacti_host_template_percona_redis_server_ht_0.8.6i-sver1.1.4.xml

    9.监控mysql配置文件修改

    9.1     创建受控Mysql需要的账户以及权限

    1. 使用root用户登录受控服务器
    2. 配置MySQL服务器

    cacti所在机器能够访问MySQL服务器的状态信息,必须拥有”process”权限。如果要监控InnoDB状态,还必须有”SUPER”权限。

    mysql> grant process,super on *.* to 'cacti'@'%' identified by 'cacti';
    mysql> grant all privileges on cacti.*  to cacti@"%" identified by "cacti";

     

    9.2     配置ss_get_mysql_stats.php

    1. 使用root用户登录监控服务器
    vim /var/www/html/cacti/scripts/scriptsss_get_mysql_stats.php

    9.3     上传mysql监控模板

    1. 在本机下载监控模板
    http://www.percona.com/downloads/percona-monitoring-plugins/1.1.4/percona-monitoring-plugins-1.1.4.tar.gz
    1. 解压percona-monitoring-plugins-1.1.4.tar.gz
    2. 上传监控模板Console-> Import Templates
    cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml

    10.监控php配置文件修改

    10.1  创建php监控脚本

    1. 使用root用户登录监控服务器
    vim /var/www/html/cacti/scripts/get_php_fpm_status.php
     
    <?php
    #!/usr/bin/php -q
    /* do NOT run this script through a web browser */
    if (!isset($_SERVER["argv"][0]) || isset($_SERVER['REQUEST_METHOD'])  || isset($_SERVER['REMOTE_ADDR'])) {
       die("<br><strong>This script is only meant to run at the command line.</strong>");
    }
     
    $default['host'] = '';                   # server host
    $default['script'] = '/status';       # test script (absolute path starting at / - root directory -)
    $default['port'] = 80;                   # tcp port
    $default['timeout'] = 3;                 # timeout in seconds
     
    $args = array();
    @list(, $args['host'], $args['script'], $args['port'], $args['timeout']) = $_SERVER["argv"];
    foreach($args as $key => $value)
            $args[$key] = ($value)? $value : $default[$key];
     
    if (($args['host'] == '') || ($args['port'] == '')) {
      print "Usage: get_php_fpm_status.php <host> [<test script>] [<port>] [<timeout seconds>]
    ";
      exit(-1);
    }
    #get resouce
    $con = curl_init();
    curl_setopt($con, CURLOPT_URL, 'http://' . $args['host'] . ':' . $args['port'] . $args['script'] );
    curl_setopt ($con, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($con, CURLOPT_CONNECTTIMEOUT,10);
    $content = curl_exec($con);
    curl_close($con);
     
    $result = preg_match("/accepted conn:s+(d+)s*
    /i", $content, $matches);
    $conn['accepted'] = ($result)? $matches[1] : 'n/a';
    $result = preg_match("/idle processes:s+(d+)s*
    /i", $content, $matches);
    $conn['idle'] = ($result)? $matches[1] : 'n/a';
    $result = preg_match("/active processes:s+(d+)s*
    /i", $content, $matches);
    $conn['active'] = ($result)? $matches[1] : 'n/a';
    $result = preg_match("/total processes:s+(d+)s*
    /i", $content, $matches);
    $conn['total'] = ($result)? $matches[1] : 'n/a';
    echo 'accepted:' . $conn['accepted'] . ' idle:' . $conn['idle'] . ' active:'. $conn['active'] . ' total:' . $conn['total']; 
    1. 保存退出,赋予权限
    chmod 755 /var/www/html/cacti/scripts/get_php_fpm_status.php

    10.2  配置php.ini

    1. 使用root用户登录监控服务器
    cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
    vim /etc/php-fpm.d/www.conf
     
    原:
    allow_url_fopen = Off
    改:
    allow_url_fopen = On
     
    原:
    #user_agent="PHP"
    改:
    user_agent="PHP"

    10.3  上传mysql监控模板

    1. 在本机下载监控模板
    1. 解压PHP-FPM-Template.tar
    2. 上传监控模板Console-> Import Templates
    Custom_PHP-FPM.xml





  • 相关阅读:
    PythonのTkinter基本原理
    使用 Word (VBA) 分割长图到多页
    如何使用 Shebang Line (Python 虚拟环境)
    将常用的 VBScript 脚本放到任务栏 (Pin VBScript to Taskbar)
    关于 VBScript 中的 CreateObject
    Windows Scripting Host (WSH) 是什么?
    Component Object Model (COM) 是什么?
    IOS 打开中文 html 文件,显示乱码的问题
    科技发展时间线(Technology Timeline)
    列置换密码
  • 原文地址:https://www.cnblogs.com/snifferhu/p/4600408.html
Copyright © 2011-2022 走看看