• 【Linux集群教程】09 集群监控 - 监控简介和Cacti搭建


    1 监控简介

    1.1 重要性

    Windows 的任务管理器工作:监控CPU,内存的占用率,查看相关的进程管理(杀死进程)

    很多人说监控,是运维的眼睛,是稳定性建设中最重要的一环,监控也是运维工程师必须要会的(无监控不运维)。

    监控的主要职责

    1、全天监控

    • 1)负责系统的实时监控、告警确认、处理及跟进工作;
    • 2)记录监控日志及故障记录;

    2、故障的分析、判断及通知

    • 1)及时发现各种网络异常、故障及告警,可以进行故障的初步判断及分析;
    • 2)及时将问题反馈到技术负责人处理,并跟踪问题解决过程,形成闭环记录。

    3、处理相关通知及报告

    • 故障发生前,通过监控的看图巡检,发现隐患;故障发生时,通过实时的告警,快速发现问题,定位问题所在;故障发生后,使用过去的历史数据图表,进行事后复盘,避免下次发生。

    监控很重要,是必不可少的,运维最重要的就是监控和备份

    宕机损失案例:美国呼叫中心 24000 美金/小时


    需要数据

    img

    1.2 常用监控平台

    1.2.1 Cacti

    img

    Cacti是 RRDtool 的前端应用程序(也可以基于命令行就是绘图的工具),RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。

    官网:http://www.cacti.net/

    软件设计目标: 流量与性能监测为主

    数据展示平台: B/S

    数据收集方式: SNMP(Simple Network Management Protocol,简单网络管理协议,监控最主流的协议)

    1.2.2 Nagios

    img

    Nagios 是一款用于监控IT基础架构和查看当前状态、历史日志和基本报告的开源软件工具。 Nagios 用户可以监控系统指标,网络协议,应用程序,服务器,网络基础架构和接收故障警报。Nagios提供三种类型的网络管理工具,Nagios XL,Nagios日志服务器和Nagios网络分析器。其中 Nagios XL 最适合网络监控(尽管其他两种也提供网络监控服务)。

    根据不同业务故障级别发出告警信息(邮件、微信、短信、语音报警、飞信、MSN)给管理员,当故障恢复时也会发出恢复消息给管理员。
    Nagios服务端可以在Unix及类Unix系统上运行,目前无法运行在windows。Windows可以作为被监控的主机,但是无法作为监控服务器。

    官网:http://www.nagios.org/

    软件设计目标: 服务与性能监测为主

    数据展示平台: B/S

    数据收集方式: C/S(预定义/自定义脚本)

    Nagios 的监控指标:OK(正常状态),WARNING(警告级别),CRITICAL(严重警告),UNKNOW(未知),PENGING(等待状态)

    1.2.3 Zabbix

    img

    Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。

    无限扩展:从监控智能家居到多租户企业环境,Zabbix可扩展到任何基础设施

    分布式监控:从中央Web UI部署和扩展分布式Zabbix基础架构,并在所有组件之间提供原生加密支持

    安全可靠:将敏感信息存储在外部vault中,以确保其安全

    高可用:使用Zabbix高可用性解决方案确保Zabbix基础架构7x24全天候正常运行并消除数据丢失的风险

    足够灵活:Zabbix提供了许多不同的方法来收集数据、转换数据、分析数据并将其可视化,监控任何你想要的东西

    合作伙伴支持:Zabbix可为全球客户提供企业级监控和支持,目前合作网络包含全球250多家合作伙伴和多家外部供应商

    官网:http://www.zabbix.com/

    软件设计目标: 全功能监控软件

    数据展示平台: B/S

    数据收集方式: C/S(官方客户端)

    1.2.4 Prometheus

    img

    Prometheus是一个开源的系统监控和警报工具包,最初由SoundCloud开发的,社区活跃,2016年加入了云原生计算基金会成为继Kubernetes之后的第二个托管项目;普罗米修斯以时间序列数据的形式收集并存储度量值;大部分模块由Go语言编写的。

    Prometheus 特性:

    • 多维数据模型,时间序列数据由指标名称和键/值对标识。
    • PromQL灵活的查询语言。
    • 不依赖于分布式存储,单个节点自治。
    • 时间序列收集通过拉模型基于HTTP。
    • 基于网关实现采集监控指标数据的推送。
    • 目标通过服务发现或静态配置。
    • 多种模式的图形化和仪表板支持。
    • 支持分层和水平联合。

    官网:https://prometheus.io/

    适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了 prometheus的发展。

    2 Cacti 监控服务器

    2.1 组件组成

    2.1.1 SNMP

    img

    (简单网络管理协议)用于收集设备内部发生的数据,如负载、磁盘状态、带宽之类

    简单网络管理协议(Simple Network Management Protocol–SNMP)的原来名字叫做简单网关监控协议(Simple Gateway Monitoring Protocol-SGMP)。最早是IETF的研究小组提出来的,在SGMP协议的基础之上,加上新的管理信息结构和管理信息库,让SGMP更加全面。简单性和扩展性是SNMP所体现出来的,其中包含数据库类型(Database Schema),一个应用层协议(Application Layer Protocol)和一些资料文件。SNMP管理协议不光能够加强网络管理系统的效能,而且还可以用来对网络中的资源进行管理和实时监控。

    SNMP 发展至今为止,可以监控众多的数据指标,例如ICMP,UDP,TCP,服务器性能,内存,磁盘等标准化的指标。SNMP 中会有使用到 OID(身份认证标识),它对信息的一个项目是一个独特的标识符,SNMP协议将设备的各种参数按树形结构进行分组,从树的根部开始,每一个层级节点会有一个编码,将这些层级编码以 “.” 作为分隔符,将其拼接起来所形成的一串编码就叫OID,通过OID可以对该OID表示的参数进行操作,SNMP监控的项目就是一个个的OID。

    SNMP 常见的版本:

    • V1 简单 高效 不支持加密以及身份认证
    • V2 身份认证
    • V3 加密

    SNMP 是 Cacti 用于收集监控指标的。

    img

    OID定位:Root用"."表示,

    .1 即iso(1)→.1.3即org(3)→.1.3.6即dod(6)→.1.3.6.1即internet(1)→.1.3.6.1.2即mgmt(2)→.1.3.6.1.2.1即mid(1)→.1.3.6.1.2.1.6即TCP(6)。SNMP 就是找到TCP的性能指标。

    2.1.2 RRDtool

    img

    官方定义: RRDtool 是开源行业标准,高性能的时间序列数据记录和绘图系统。RRDtool 可以很容易 地集成到 shell 脚本、perl、python、ruby、lua 或 tcl 应用程序中。RRDtools 是由 C 语言编写的,效率非常之高,性能非常之强悍。缺点就是由于RRDtool 过于灵活,导致RRDtool 使用起来过于复杂。

    RRDtool (Round Robin Database Tool)就是一个强大的绘图的引擎,很多工具例如MRTG都可以调用rrdtool绘图。

    RRDtool是由Tobias Oetiker 编写并由全球各地的许多人贡献的工具。本篇文档的作者是Alex van den Bogaerdt 主要是帮助你理解RRDtool是什么,它能够帮助你做些什么。 RRDtool的文档对于有些人来说过于技术化。

    你可以一直往下走下去。RRDtool处理RRD数据库。它向RRD数据库存储数据、从RRD数据库中提取数据。

    RRDtool 是 Cacti 中用于绘制图表的。

    2.1.3 Apache

    Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl / Python解释器编译到服务器中。

    Apache 是 Cacti 的展示Web页面

    2.1.4 Cacti 工作架构

    C/S 模式:采集检测数据(由 SNMP 协议完成)

    B/S 模式:管理检测数据,负责展示(由RRDtool绘制图表以后,在Apache将数据展示出来)

    img

    Cacti的工作过程

    首先通过LAMP平台部署Cacti监控工具,之后通过客户端的web登录Cacti进行对其他客户端的设置,可以从下图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。

    小总结:Apache需要构建比较复杂的网页的话,就需要PHP语言,PHP语言会插入和读取数据库的相关配置以及一些模板信息,RRDtool将SNMP收集到的数据绘制成图表,图表会被Apache分享给用户查看。

    2.2 Cacti 监控组件安装配置

    #两台服务器

    10.10.10.11 Cacti 服务器端

    10.10.10.12 客户端(被监控端)

    #都需要将防火墙和SElinux功能关闭

    配置本地 yum 源环境

    (CentOS 6 系统和 CentOS 7.9.2009 系统),我使用的CentOS 7.9.2009系统,CentOS 6的系统也有展示。

    其中CentOS 7的步骤会有些凌乱,需要仔细操作执行。

    2.2.1 安装环境(10.10.10.11)

    扩展:选择什么样的软件包是要考虑我们的目的,源码包经过测试会比RPM包提升20%的并发量。

    但是在监控团队,可以使用RPM包进行部署即可,并发量不是特别大。

    mount -t iso9660 /dev/cdrom /mnt/cdrom 
    #挂载本地yum光盘
    yum install -y httpd mysql mysql-server mariadb-server mysql-devel \
    	libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC \
    	php php-mysql php-snmp php-xml php-ldap php-gd php-pdo php-mbstring php-posix
    
    #CentOS 6系统启动服务
    service httpd start && chkconfig httpd on
    #启动 Apache 
    service mysqld start && chkconfig mysqld on
    #启动 MySQL(使用CentOS6 YUM光盘默认的数据库是mysql)
    service snmpd start && chkconfig snmpd on
    #启动SNMP服务
    
    #安装基础环境 LAMP 
    mysqladmin -uroot password root
    #设置mysql密码
    yum install -y net-snmp net-snmp-utils net-snmp-libs lm_sensors 
    yum install –y net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl
    #安装SNMP、主板信息监控 所需软件包
    
    #查看SNMP信息
    $ snmpwalk -V
    NET-SNMP version: 5.7.2
    #查看是否由抓取一些指标
    $ snmpwalk -v 2c -c public 10.10.10.11 tcp    #显示没有指标信息
    $ snmpwalk -v 2c -c public 10.10.10.11 system #显示有指标信息
    #需要修改配置文件
    $ vim /etc/snmp/snmpd.conf 
    #定义共同体名称
    com2sec notConfigUser  default       public
    
    #支持的SNMP版本
    group   notConfigGroup v1           notConfigUser
    group   notConfigGroup v2c           notConfigUser
    
    #定义了视图
    #       name           incl/excl     subtree         mask(optional)
    view    systemview    included   .1.3.6.1.2.1.1
    view    systemview    included   .1.3.6.1.2.1.25.1.1
    #可以根据需求自行添加
    
    #访问控制功能
    #       group          context sec.model sec.level prefix read   write  notif
    access  notConfigGroup ""      any       noauth    exact  all none none
    #将 systemview 改为 all
    
    #将 .1 isos 下的视图全部进行收集
    ##           incl/excl subtree                          mask
    view all    included  .1                               80
    #将 view all 的行取消注释
    
    #重启SNMP服务
    $ systemctl restart snmpd 
    #再次收集TCP的指标
    $ snmpwalk -v 2c -c public 10.10.10.11 tcp
    $ snmpwalk -v 2c -c public 10.10.10.11 udp
    #以上均有数据即可
    
    ###################################################################################################
    
    #数据库可以正常登录即可
    $ mysql -uroot -proot
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    img

    img

    2.2.2 安装RRDtool(10.10.10.11)

    所需软件百度网盘
    链接:https://pan.baidu.com/s/1wfgE3ISFsBddoO2JuMdRiA
    提取码:ton9

    ### CentOS 6操作
    #上传cacti.iso
    $ yum -y install lrzsz 
    #方便把软件直接拖到xshell里面
    $ mkdir /iso
    $ mount -o loop cacti.iso /iso
    $ cp -a /iso/* .
    $ tar -zxf rrdtool-1.4.5.tar.gz && cd rrdtool-1.4.5 
    #源码编译安装 RRDTOOL 
    $ ./configure --prefix=/usr/local 
    
    #需要先执行以上操作,没有问题就可以跳过下面的步骤
    #如出错,按以下步骤解决,解决源码编译报错依赖
    #第 1 步:编译安装,将库文件存放到库环境变量中,方便调用
    $ cd /root && tar zxvf cgilib-0.5.tar.gz && cd cgilib-0.5 && make 
    $ cp libcgi.a /usr/local/lib && cp cgi.h /usr/include 
    #第 2 步:安装相应的依赖包
    $ yum -y install libart_lgpl-devel pango-devel* cairo-devel*
    
    #重新执行./configure
    $ cd /root/rrdtool-1.4.5
    $ ./configure --prefix=/usr/local 
    $ make && make install 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.2.3 部署Cacti,设置数据库连接(10.10.10.11)

    2.2.3.1 部署源码包,并安装补丁文件
    #CentOS 6的操作
    mkdir -pv /root/cacti ; cd /root/cacti
    #wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz
    tar -zxf cacti-0.8.7g.tar.gz 
    #解压 Cacti 网站 
    mv cacti-0.8.7g/ /var/www/html/cacti 
    #拷贝至 Apache 默认路径
    
    #为 Cacti 代码进行补丁更新(需要使用到百度网盘的资源)
    cd /var/www/html/cacti 
    #数据源补丁
    patch -p1 -N < /root/cacti/data_source_deactivate.patch 
    #图像列表补丁
    patch -p1 -N < /root/cacti/graph_list_view.patch
    #输出补丁
    patch -p1 -N < /root/cacti/html_output.patch 
    #LDAP域补丁
    patch -p1 -N < /root/cacti/ldap_group_authenication.patch
    #脚本服务补丁
    patch -p1 -N < /root/cacti/script_server_command_line_parse.patch
    #ping补丁
    patch -p1 -N < /root/cacti/ping.patch
    #poller池补丁
    patch -p1 -N < /root/cacti/poller_interval.patch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    2.2.3.2 添加检测数据的用户账户,更改权限,保证读写数据正常
    #CentOS 6的操作
    cd /var/www/html/cacti 
    useradd runct 
    #添加 runct 用户,用于 RRDTOOL 运行 
    chown -R root.root ./
    #图片目录,日志目录
    chown -R runct.runct rra/ log/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    2.2.3.3 授权数据库用户,导入初始化数据
    #CentOS 6的操作
    $ mysql -u root -proot 
    #创建 cactidb 数据库 
    mysql> create database cactidb default character set utf8; 
    #把 cactiuser 用 户赋予 cactidb 库的所有权限
    mysql> grant all on cactidb.* to 'cactiuser'@'localhost' identified by 'pwd@123';  
    mysql> quit 
    #cacti 数据库导入
    mysql -uroot -p cactidb < cacti.sql 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    2.2.3.4 修改 Cacti 配置文件
    #CentOS 6的操作
    #配置 cacti 页面连接数据库的认证信息
    $ vim /var/www/html/cacti/include/config.php  
    /* make sure these values refect your actual database/host/user/password */
    $database_type = "mysql";
    $database_default = "cactidb";
    $database_hostname = "localhost";
    $database_username = "cactiuser";
    $database_password = "pwd@123";
    $database_port = "3306";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.2.3.5 部署Spine(CentOS 7操作)

    Cacti默认轮询器cmd.php执行效率有点低,spine为C语言编写的组件,性能要好许多。

    #CentOS 7系统安装及配置spine 和 crond(spine的版本要和cacti版本一致,这两个都下载使用1.2.21,一般没问题,一般也是相互同步的)

    #最新版本的1.2.22 会出现 ssl 头文件的编译安装错误,可能需要在 openssl 方面做功夫(CentOS 7.9.2009)

    #选择性操作

    #下载软件包
    wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.21.tar.gz
    tar zxvf cacti-spine-1.2.21.tar.gz
    mv cacti-spine-1.2.21 /usr/local/spine
    cd /usr/local/spine
    #安装相关依赖包
    yum install -y net-snmp-devel mysql-devel openssl-devel dos2unix autoconf automake \
        binutils libtool gcc gcc-c++ cpp glibc-headers kernel-headers glibc-devel help2man
    sh bootstrap
    #进行源码编译安装(需要有GCC的编译环境)
    #需要注意数据库的版本,根据数据库的版本进行选择性安装
    ./configure
    make && make install
    chown root:root /usr/local/spine/bin/spine
    chmod +s /usr/local/spine/bin/spine 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    img

    #编辑spine/conf 配置文件

    cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
    
    vim  /etc/spine.conf     
    #修改如下部分,我全部使用默认参数,所以以下内容没有改动
    DB_Host       localhost
    DB_Database   cacti
    DB_User       cactiuser
    DB_Pass       cactiuser
    DB_Port       3306
    
    /usr/local/spine/bin/spine  
    #执行此命令,成功后显示如下
    SPINE: Using spine config file [/etc/spine.conf]
    Version 1.2.21 starting
    Time: 0.5283 s, Threads: 1, Devices: 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    img

    #配置creond(crond一般都是默认安装好的,如果没装,就yum install crontabs -y 安装一下)

    yum install -y crontabs
    #如果不配置此功能,图形界面全部会显示The Cacti Poller has not run yet;
    #使用crontab命令添加任务;
    crontab -e
    #添加以下任务,我这里配置成每五分钟运行一次
    */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
    #设置crontab自启动,添加好crontab计划任务后,验证下crond服务是否已经启动,并设置开机自启;
    systemctl status crond
    systemctl enable crond
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    2.2.3.6 调整 Http 配置
    #CentOS 6的操作
    $ vim /etc/httpd/conf/httpd.conf 
    #配置 Apache 对 cacti 的用户权限
    Listen 80
    DocumentRoot "/var/www/html/cacti" 
    #默认网站路径
    <Directory "/var/www/html/cacti">
    	options None 
    	AllowOverride None 
    	Order allow,deny 
    	Allow from al
    </Directory>
    
    DirectoryIndex index.php index.html  
    #默认主页
    AddDefaultCharset utf-8 
    #默认字符集
    
    $ service httpd restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    浏览器输入 10.10.10.11 访问,账户名:admin,密码:admin。

    第一次登录需要重新修改admin密码。

    img

    2.2.4 客户端配置(10.10.10.12)

    #CentOS 6的操作
    $ mount -t iso9660 /dev/cdrom /mnt/cdrom
    #挂载本地yum光盘
    $ yum -y install net-snmp net-snmp-utils lm_sensors
    #安装 SNMP、主板信息监控所需软件包 
    $ vim /etc/snmp/snmpd.conf
    #41服务器地址 默认为 default 共同体名称 默认为 public 
    #62开放所有的 SNMP 查询权限 all 默认为 SystemView 
    #       group          context sec.model sec.level prefix read   write  notif
    access  notConfigGroup ""      any       noauth    exact  all none none
    
    view all    included  .1                               80
    
    #85支持各种查询与访问 取消注释符号
    $ service snmpd start && chkconfig snmpd on
    
    #CentOS 7开启服务
    $ /bin/systemctl start snmpd.service && /bin/systemctl enable snmpd.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.2.5 收集数据(10.10.10.11)

    ###用于RRDTool定时采集数据
    #CentOS 6的操作
    $ su - runct
    $ snmpwalk -v 2c -c public 10.10.10.12 tcp
    $ php /var/www/html/cacti/poller.php 
    #生成对应的监控图表
    $ crontab -e
    */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null 
    #配置 RRDTOOL 的轮训任务 
    #CentOS 6执行操作
    $ service crond start
    #CentOS 7执行操作
    $ systemctl start crond
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: zzw
    Password:
    ==== AUTHENTICATION COMPLETE ===
    
    $ exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    img

    2.3 Cacti 插件添加

    如果管理员需要为 Cacti 附加一个复杂的功能的话,就需要使用到 Cacti 的插件功能。插件是需要插件管理器进行管理的。

    #CentOS 6操作
    $ mkdir /iso ; mkdir ~/cacti-plugin
    $ mount -o loop cacti.iso /iso
    $ cp /iso/cacti-plugin/* ~/cacti-plugin ; cd ~/cacti-plugin
    $ tar -zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
    $ cd cacti-plugin-arch/
    #导入数据库信息
    $ mysql -uroot -p cacti < pa.sql
    
    #将补丁进行添加
    $ cd /var/www/html/cacti/
    $ patch -p1 -N < /root/cacti-plugin/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff
    
    #CentOS 7自带有插件管理
    Cacti 1.2.21版本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    img

    img

    插件管理器就部署完成了。然后就是要进行部署插件了。

    Cacti 全部插件下载地址:[ https://blog.51cto.com/wangsuisheng/827715 ]

    $ cd /root/cacti-plugin
    $ ls -l
    total 544
    -r-xr-xr-x 1 root root  207069 Sep  6 22:49 cacti-plugin-0.8.7g-PA-v2.8.tar.gz
    drwxr-xr-x 3 zzw  users    109 Sep  6 22:52 cacti-plugin-arch
    #使用 monitor 组件进行构建
    -r-xr-xr-x 1 root root  241873 Sep  6 22:49 monitor-0.8.2.tar.gz
    -r-xr-xr-x 1 root root   16823 Sep  6 22:49 settings-0.5.tar.gz
    -r-xr-xr-x 1 root root   79586 Sep  6 22:49 thold-0.4.3.tar.gz
    $ tar -zxvf monitor-0.8.2.tar.gz
    #将组件移动到/var/www/html/cacti/plugins目录下
    $ mv monitor /var/www/html/cacti/plugins
    $ cd /var/www/html/cacti/plugins/monitor/
    #导入数据库
    $ mysql -uroot -proot cacti < monitor.sql
    #就可以在浏览器上查看到,只是这里的我的Cacti版本过高,而monitor版本低造成的
    #Monitor Cacit下载站点:https://docs.cacti.net/plugin:monitor
    #在访问该站点的时候无法正常访问,就没有办法下载较新版本的monitor,若有同学下载到了,就可以重复以上的操作进行部署
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    img

    这里就以Cacti官网的插件示例进行部署,演示出效果即可。

    #选择插件(使用官网的示例操作)
    yum install -y git
    git clone https://github.com/Cacti/plugin_thold.git
    mv plugin_thold /var/www/html/cacti/plugins
    mv plugin_thold thold
    
    • 1
    • 2
    • 3
    • 4
    • 5

    点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息

    img

    img

    根据自己的需要自行设置,和自行添加插件管理。

    2.4 CentOS 7.9.2009 部署Cacti 1.2.21

    官方站点:https://www.cacti.net/

    #Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
    #我的安装环境如下
    [root@localhost  ~]# uname -a 
    Linux node1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    [root@localhost  ~]# cat /etc/redhat-release 
    CentOS Linux release 7.9.2009 (Core)
    
    ###一、准备工作
    #更新系统软件;
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
    yum update -y 
    ###二、安装相关的软件包
    ##2.1 安装httpd和php;
    yum install -y httpd php
    
    ##2.2 安装php扩展;
    yum install –y php-mysql php-snmp php-xml php-ldap php-gd php-mbstring php-posix
    
    ##2.3 设置php,据系统实际情况设定时区;
    $ vim /etc/php.ini 
    [PHP]
    ……
    date.timezone = Asia/Shanghai
    
    ##2.4 启动httpd并设置开机启动;
    systemctl start httpd && systemctl enable httpd
    
    ##2.5 安装MariaDB 10.3数据库;
    yum -y install mariadb mariadb-server
    
    ##2.6 启动mysql数据库服务并设为开机启动;
    systemctl start mariadb && systemctl enable mariadb
    
    ##2.7 配置MariaDB,初始化数据库,设定密码,除了开始直接回车,其他的选择都输入Y;
    $ mysql_secure_installation
    
    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
    ......
    Enter current password for root (enter for none):   //初始数据库密码为空,直接按回车键
    OK, successfully used password, moving on...
    ......
    Set root password? [Y/n] Y    //输入root管理员密码
    New password:
    Re-enter new password:
    Password updated successfully!
    ......
    Remove anonymous users? [Y/n] Y    //删除匿名账号
    ... Success!
    ......
    Disallow root login remotely? [Y/n] Y   //禁止root管理员从远程登录
    ... Success!
    .......
    Remove test database and access to it? [Y/n] Y   //删除test数据库并取消对它的访问权限
    ......
    Reload privilege tables now? [Y/n] Y   //刷新授权表,让初始化后的设定立即生效
    ... Success!
    
    ##2.8 修改MariaDB配置,指定编码为utf8,防止cacti监控在显示时不能显示中文,
    ##也可以在3.2的步骤中,创建cacti数据库时直接指定编码格式为utf8;
    vim /etc/my.cnf.d/server.cnf
    [server]
    # this is only for the mysqld standalone daemon
    character_set_server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
    ##2.9 配置mysql相关参数,将参数设置为cacti安装时推荐的参数;
    vim /etc/my.cnf
    #在[mysql]下新增
    skip-grant-tables
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    max_allowed_packet = 16777216
    max_heap_table_size = 128M
    tmp_table_size = 128M
    join_buffer_size = 256M
    innodb_file_per_table = ON
    innodb_file_format = Barracuda
    innodb_large_prefix = 1
    innodb_buffer_pool_size = 445M
    innodb_additional_mem_pool_size = 80M
    innodb_flush_log_at_trx_commit  = 2
    
    ##2.10 安装net-snmp;
    yum install –y net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl
    
    ##2.11 配置snmp;
    vim /etc/snmp/snmpd.conf
    #修改default为本机(cacti服务器)的ip或者127.0.0.1,修改public为自己的团体名(一般不改),42行
    com2sec notConfigUser 127.0.0.1 public
    #把systemview改成all ,供所有snmp 访问权限  64行
    access notConfigGroup "" any noauth exact all none none
    view all included .1 80 
    # 去掉#号 85行
    
    ##2.12 启动snmp并设置开机启动;
    systemctl start snmpd.service && systemctl enable snmpd.service
    
    ##2.13 安装RRDTool 绘图工具;
    安装编译时可能使用到的软件;
    yum -y install lm_sensors gcc gcc-c++ libart_lgpl-devel zlib-devel \
                   libpng-devel freetype-devel gettext-devel glib2-devel pcre-devel \
                   pango-devel cairo-devel \
                   libxml2-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
    ##yum安装;
    yum install -y rrdtool
    
    ###三、安装及配置cacti 1.2.21
    ##3.1 下载安装包;
    cd /usr/local/src
    wget https://www.cacti.net/downloads/cacti-1.2.21.tar.gz
    tar -zxvf cacti-1.2.21.tar.gz
    mv cacti-1.2.21 /var/www/html/cacti
    
    ##3.2 创建cacti数据库,创建数据库用户cactiuser,设置用户相关授权;
    $ mysql -uroot -proot
    MariaDB [(none)]> create database cacti;
    #(可选:character set utf8 collate utf8_bin;)
    MariaDB [(none)]> grant all on cacti.* to cactiuser@localhost  identified by 'cactiuser';
    MariaDB [(none)]> grant select on mysql.time_zone_name to 'cactiuser'@'localhost' identified by 'cactiuser';
    MariaDB [(none)]> flush privileges;
    
    ##3.3 导入 Cacti 默认数据库;
    MariaDB [(none)]> use cacti;
    MariaDB [cacti]> source /var/www/html/cacti/cacti.sql;
    ......
    MariaDB [cacti]> flush privileges;
    MariaDB [cacti]> quit
    
    ##3.4 配置数据库时区;
    [root@localhost  ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql 
    Enter password:
    Warning: Unable to load '/usr/share/zoneinfo//leapseconds' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//tzdata.zi' as time zone. Skipping it.
    
    ##3.5 据实际情况配置cacti的config.php,我测试的所有按默认值,所以没改,一般是修改第2、4、5行;
    [root@localhost  ~]# vim /var/www/html/cacti/include/config.php 
    ......
    $database_type     = 'mysql';
    $database_default  = 'cacti';
    $database_hostname = 'localhost';
    $database_username = 'cactiuser';
    $database_password = 'cactiuser';
    $database_port     = '3306';
    $database_retries  = 5;
    $database_ssl      = false;
    $database_ssl_key  = '';
    $database_ssl_cert = '';
    $database_ssl_ca   = '';
    ......
    
    ##3.6 创建日志文件,后续安装时用的到;
    touch /var/www/html/cacti/log/cacti.log
    touch /var/www/html/cacti/log/cacti_stderr.log
    
    ##3.7 创建 cacti 系统用户,设置目录权限;
    useradd cactiuser 
    chown apache.apache /var/www/html/cacti/ -R 
    chown cactiuser /var/www/html/cacti/{rra,log}/ -R 
    chmod 777 /var/www/html/cacti/{rra,log}/ -R 
    
    ###四、安装及配置spine和crond
    #(spine的版本要和cacti版本一致,这俩个我都下载的最新版,一般没问题);
    ##4.1 安装spine;
    cd /usr/local/src
    wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.21.tar.gz
    tar zxvf cacti-spine-1.2.21.tar.gz
    mv cacti-spine-1.2.21 /usr/local/spine
    cd /usr/local/spine
    yum install -y net-snmp-devel mysql-devel openssl-devel dos2unix autoconf automake \
    binutils libtool gcc cpp glibc-headers kernel-headers glibc-devel help2man
    #编译安装
    sh bootstrap
    ./configure --with-reentrant
    make && make install
    chown root:root /usr/local/spine/bin/spine
    chmod +s /usr/local/spine/bin/spine
    
    ##4.2 编辑spine.conf;
    $ cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
    $ vim  /etc/spine.conf
    #修改如下部分,我全部使用默认参数,所以以下内容没有改动
    DB_Host       localhost
    DB_Database   cacti
    DB_User       cactiuser
    DB_Pass       cactiuser
    DB_Port       3306
    
    $ /usr/local/spine/bin/spine
    ##执行此命令,成功后显示如下
    SPINE: Using spine config file [/etc/spine.conf]
    Version 1.2.21 starting
    Time: 0.5131 s, Threads: 1, Devices: 1
    
    ##4.3 配置creond (crond一般都是默认安装好的,如果没装,就 yum install crontabs -y 安装一下)
    ##如果不配置此功能,图形界面全部会显示The Cacti Poller has not run yet;
    ##使用crontab命令添加任务;
    crontab -e
    ##添加以下任务,我这里配置成每五分钟运行一次
    */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
    #设置crontab自启动,添加好crontab计划任务后,验证下crond服务是否已经启动,并设置开机自启;
    systemctl status crond
    systemctl enable crond
    ###五、 关闭防火墙和selinux;
    ##5.1  禁用防火墙  (如果是跑在公网的建议放行相关端口,不禁用防火墙);
    systemctl stop firewalld.service
    systemctl disable firewalld
    
    ##5.2 禁用selinux;
    vim /etc/sysconfig/selinux
    #将SELINUX修改为=disabled,然后重启,该操作重启后才会生效,所以一定要重启系统;
    
    ##5.3 重启相关服务;
    systemctl restart httpd.service \
    && systemctl restart mariadb.service \
    && systemctl restart snmpd.service \
    && service httpd restart \
    && service mariadb restart
    
    ##5.4 重启系统;
    shutdown -r now
    
    ##5.6 cacti安装;
    #浏览器中输入http://ip/cacti进入安装界面,
    #初始账号密码为admin/admin,首次登录需要修改密码,密码有复杂性要求,后面基本就是下一步下一步,直到安装完成;
    #安装完成后修改poller参数,cacti默认使用cmd.php,我装了spine,所以改成spine;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227

    浏览器输入 10.10.10.11 访问,账户名:admin,密码:admin。

    第一次登录需要重新修改admin密码。

    img

    根据向导一步一步进行操作完成

    img

    更改为Spine采集类型

    img

    客户端配置 和 2.2.4客户端配置 步骤一致。

    2.4.1 收集数据

    ###用于RRDTool定时采集数据
    #CentOS 6的操作
    $ su - runct
    $ snmpwalk -v 2c -c public 10.10.10.12 tcp
    $ php /var/www/html/cacti/poller.php 
    #生成对应的监控图表
    $ crontab -e
    */5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null 
    #配置 RRDTOOL 的轮训任务 
    #CentOS 6执行操作
    $ service crond start
    
    #CentOS 7执行操作
    #收集数据的步骤在 2.4 CentOS 7.9.2009部署Cacti中已经完成
    $ systemctl start crond
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: zzw
    Password:
    ==== AUTHENTICATION COMPLETE ===
    
    $ exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    img

    2.4.2 访问测试

    Cacti 新版本是支持中文界面,但在 Cacti 旧版本中是并不支持中文显示。

    img

    添加Linux主机

    img

    根据情况选择设备模板,这里我选择"Net-SNMP Device"

    img

    添加Linux主机的监控图像

    img

    img

    img

    img

    添加一棵树

    管理 → 树 → "+"添加树 → “根据向导进行添加”

    img

    编辑树的可用站点(自定义,根据环境不同而不同),可用设备(选择10.10.10.12),可用的图形(选择全部),并点击发布按钮,后保存

    img

    img

    注意:若发现没有数据的展示,那么就要执行2.4.1收集数据以及2.2.5收集数据,两个步骤一样。用于RRDtool来绘制图表的功能。

    2.4.3 Cacti 插件添加

    这里就以Cacti官网的插件示例进行部署,演示出效果即可。

    #选择插件(使用官网的示例操作)
    yum install -y git
    git clone https://github.com/Cacti/plugin_thold.git
    mv plugin_thold /var/www/html/cacti/plugins
    #重命名(Cacti v1.2.22版本不需要进行重命名)
    mv plugin_thold tholdcv 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    点击绿色的启用按钮即可。就可以看到在最上面的选项卡中出现"阈值"的信息

    img

    img

    CentOS 7.9.2009 的Cacti 部署部分就告一段落了。

  • 相关阅读:
    Android根据bootmode设置usb config
    5分钟打造好用好看API文档
    数组:
    设计模式之观察者模式
    用于命名实体识别的模块化交互网络
    自定义频率类和频率源码分析
    艾美捷Immunochemistry FAM FLICA Poly Caspase检测方案
    【scipy 基础】--插值
    OpenHarmony实战开发-多设备自适应能力
    使用transformers增加token
  • 原文地址:https://blog.csdn.net/weixin_40274679/article/details/127449821