Cacti:流量分析和网络监控

来自 Alpine Linux

Cacti 是一个完整的网络监控和数据分析解决方案,使用 RRDTool 的数据存储和绘图功能。它是 ISP 最广泛使用的监控工具,用于以图形方式查看网络。

专用主机预配置

Cacti 对主机有非常特殊和固定的要求。对于生产系统,它必须安装在专用主机上。

注意:这里我们使用 “venenux.net” 作为域名。请更改为您的域名。如果您在本地安装,请使用 “localdomain”

主机名设置

hostname monitor

echo 'hostname="monitor"' > /etc/conf.d/hostname 

echo "monitor" > /etc/hostname

cat > /etc/hosts << EOF
127.0.0.1 monitor.venenux.net monitor localhost.localdomain localhost
151.101.128.249 dl-cdn.alpinelinux.org
::1 localhost localhost.localdomain
EOF

我们添加了 cdn Alpine Linux 的 IP 地址以减少 DNS 服务器流量。

仓库和软件包

不幸的是,有些命令更复杂。我们必须考虑到常用命令只是 busybox 极简版本,因此我们必须进行更改以确保我们使用的是真正的版本。以下命令安装了 bash 以及下面显示的其他一些系统工具。如果它们不存在,Catci 将随机失败

cat > /etc/apk/repositories << EOF
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF

apk update

apk add bash attr dialog binutils findutils readline lsof less nano curl

export PAGER=less

cat > /etc/apk/repositories << EOF
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
http://uk.alpinelinux.org/alpine/edge/main
http://uk.alpinelinux.org/alpine/edge/community
EOF

apk update

apk add utmps

cat > /etc/apk/repositories << EOF
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF

apk update

请注意,如果检索到一个软件包,则必须是唯一的软件包!即不是所有软件包。首先从普通仓库安装所有依赖项和相关文件,然后稍后仅从 edge 安装所需的额外内容!为此,您必须访问 https://pkgs.alpinelinux.org/packages 并从 edge 搜索相关软件包的所有要求。例如 utmps

需求

在安装 Cacti 之前,必须安装和配置许多其他软件包。

  • Web 服务器,例如lighttpd
  • PHP 脚本语言
  • 数据库引擎,例如mariadb
  • 要检索数据,需要 net-snmp 工具
  • 要绘制数据图表,需要 rrdtool 软件包
警告:这些复杂的配置将是必要的,因为 Cacti 对其安装要求很高,以确保完整的功能。


Web 服务器:Lighttpd 安装和配置

Cacti 作为 Web 程序运行,因此我们需要配置 Web 服务器。由于 Apache2 广为人知,我们将仅记录 lighttpd。有很多关于配置选项的信息可用

  • 设置 lighttpd 的端口、缓存引擎、事件处理程序,以及 htdocs
  • 设置 Web 服务器状态页面
  • 设置别名模块以进行别名处理、cgi 处理程序,并使用正确的权限创建目录
  • 设置 Web 服务器启动脚本并启动 Web 服务器以进行测试
  • 添加网络后端处理程序。文件描述符设置并缩短文件缓存检索时间
  • 设置 https 并生成自签名证书
apk add lighttpd gamin

mkdir -p /var/www/localhost/htdocs
sed -i -r 's#\#.*server.port.*=.*#server.port          = 80#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*server.stat-cache-engine.*=.*# server.stat-cache-engine = "fam"#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#\#.*server.event-handler = "linux-sysepoll".*#server.event-handler = "linux-sysepoll"#g' /etc/lighttpd/lighttpd.conf

mkdir -p /var/www/localhost/htdocs/serverinfo
sed -i -r 's#\#.*mod_status.*,.*#    "mod_status",#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*status.status-url.*=.*#status.status-url  = "/serverinfo/server-status"#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*status.config-url.*=.*#status.config-url  = "/serverinfo/server-config"#g' /etc/lighttpd/lighttpd.conf

mkdir -p /var/www/localhost/cgi-bin
sed -i -r 's#\#.*mod_alias.*,.*#    "mod_alias",#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*include "mod_cgi.conf".*#   include "mod_cgi.conf"#g' /etc/lighttpd/lighttpd.conf

mkdir -p /var/lib/lighttpd
chown -R lighttpd:lighttpd /var/www/localhost/
chown -R lighttpd:lighttpd /var/lib/lighttpd
chown -R lighttpd:lighttpd /var/log/lighttpd

rc-update add lighttpd default

rc-service lighttpd restart

checkset="";checkset=$(grep 'noatime' /etc/lighttpd/lighttpd.conf);[[ "$checkset" != "" ]] && \
echo listo || sed -i -r 's#server settings.*#server settings"\nserver.use-noatime = "enable"\n#g' /etc/lighttpd/lighttpd.conf

checkset="";checkset=$(grep 'network-backend' /etc/lighttpd/lighttpd.conf);[[ "$checkset" != "" ]] && \
echo listo || sed -i -r 's#server settings.*#server settings"\nserver.network-backend = "linux-sendfile"\n#g' /etc/lighttpd/lighttpd.conf

checkset="";checkset=$(grep 'max-fds' /etc/lighttpd/lighttpd.conf);[[ "$checkset" != "" ]] && \
echo listo || sed -i -r 's#server settings.*#server settings\nserver.max-fds = 2048\n#g' /etc/lighttpd/lighttpd.conf

rc-service lighttpd restart
警告:以下步骤是推荐的但可选的,Cacti 可以仅使用 https 进行主机监控器和其余被监控设备之间的流量!Cacti 应该仅通过 TLS (https) 访问。否则,密码和用户数据将被暴露。以下步骤将生成一个自签名证书文件,该文件将需要在 Web 浏览器上接受自定义例外,但所有 https 流量都将使用 TLS/SSL。


apk add openssl

mkdir -p /etc/ssl/certs/

openssl req -x509 -days 1460 -nodes -newkey rsa:4096 \
   -subj "/C=VE/ST=Bolivar/L=Upata/O=VenenuX/OU=Systemas:hozYmartillo/CN=localhost" \
   -keyout /etc/ssl/certs/localhost.pem -out /etc/ssl/certs/localhost.pem

chmod 755 /etc/ssl/certs/localhost.pem

cat > /etc/lighttpd/mod_ssl.conf << EOF
server.modules += ("mod_openssl")
\$SERVER["socket"] == "0.0.0.0:443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/ssl/certs/localhost.pem"
    ssl.cipher-list = "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
    ssl.honor-cipher-order = "enable"
}
\$HTTP["scheme"] == "http" {
    \$HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0\$0")
    }
}
EOF

sed -i -r 's#\#.*mod_redirect.*,.*#    "mod_redirect",#g' /etc/lighttpd/lighttpd.conf

itawxrc="";itawxrc=$(grep 'include "mod_ssl.conf' /etc/lighttpd/lighttpd.conf);[[ "$itawxrc" != "" ]] && echo listo || \
sed -i -r 's#.*include "mime-types.conf".*#include "mime-types.conf"\ninclude "mod_ssl.conf"#g' /etc/lighttpd/lighttpd.conf

sed -i -r 's#ssl.pemfile.*=.*#ssl.pemfile   = "/etc/ssl/certs/localhost.pem"#g' /etc/lighttpd/lighttpd.conf

rc-service lighttpd restart

PHP:安装和配置

下一个要求是 PHP 脚本语言。因为 Cacti 是用 PHP 构建的,所以它支持 LDAP。

注意:Cacti 支持 PHP5 和 PHP7。在下一节中,我们将仅介绍 PHP7,因为这是唯一可用于最新 Alpine 版本的版本。如果您使用较旧的 Alpine 主机进行测试,则可以使用此命令检测要安装的内容 export phpmax=$(debver=$(cat /etc/alpine-release|cut -d '.' -f1);[ $debver -ge 6 ] && echo 7|| echo 5),shel var phpmax 指示基于 Alpine 版本,在命令行中使用 5 或 7 php,例如: apk add php$phpmax

导致混乱的提交位于:https://git.alpinelinux.org/aports/commit/community/cacti/cacti.php-fpm.conf?id=4272e802a1be191657becb739e6a248c1d0411a7,其中为 cacti 创建了 php-fpm 的特定池。这很混乱,因为它没有文档记录。如果要正确配置通用池,我们必须避免并忽略它

apk add php7-fpm php7-bcmath php7-bz2 php7-ctype php7-curl php7-dom \
 php7-enchant php7-exif php7-gd php7-gettext php7-gmp php7-iconv \
 php7-imap php7-intl php7-json php7-mbstring php7-opcache php7-openssl \
 php7-phar php7-posix php7-pspell php7-recode php7-session php7-simplexml \
 php7-sockets php7-sysvmsg php7-sysvsem php7-sysvshm php7-tidy php7-tokenizer \
 php7-xml php7-xmlreader php7-xmlrpc php7-xmlwriter php7-xsl php7-zip php7-sqlite3 \
 php7-gd php7-gmp php7-ldap php7-openssl php7-pdo_mysql php7-posix php7-sockets php7-xml

apk add php7-pdo php7-pdo_mysql php7-mysqli php7-pdo_sqlite php7-sqlite3 \
 php7-odbc php7-pdo_odbc php7-dba

以下配置适用于 2G RAM 服务器上的高负载或巨大负载,有关在 Alpine Linux 上配置 PHP 的更多信息,请参阅 Production LAMP system: Lighttpd + PHP + MySQL wiki 页面。

sed -i -r 's|.*cgi.fix_pathinfo=.*|cgi.fix_pathinfo=1|g' /etc/php*/php.ini
sed -i -r 's#.*safe_mode =.*#safe_mode = Off#g' /etc/php*/php.ini
sed -i -r 's#.*expose_php =.*#expose_php = Off#g' /etc/php*/php.ini
sed -i -r 's#memory_limit =.*#memory_limit = 512M#g' /etc/php*/php.ini
sed -i -r 's#upload_max_filesize =.*#upload_max_filesize = 56M#g' /etc/php*/php.ini
sed -i -r 's#post_max_size =.*#post_max_size = 128M#g' /etc/php*/php.ini
sed -i -r 's#^file_uploads =.*#file_uploads = On#g' /etc/php*/php.ini
sed -i -r 's#^max_file_uploads =.*#max_file_uploads = 12#g' /etc/php*/php.ini
sed -i -r 's#^allow_url_fopen = .*#allow_url_fopen = On#g' /etc/php*/php.ini
sed -i -r 's#^.default_charset =.*#default_charset = "UTF-8"#g' /etc/php*/php.ini
sed -i -r 's#^.max_execution_time =.*#max_execution_time = 90#g' /etc/php*/php.ini
sed -i -r 's#^max_input_time =.*#max_input_time = 90#g' /etc/php*/php.ini
sed -i -r 's#.*date.timezone =.*#date.timezone = America/Panama#g' /etc/php*/php.ini

sed -i -r 's|.*events.mechanism =.*|events.mechanism = epoll|g' /etc/php*/php-fpm.conf
sed -i -r 's|.*emergency_restart_threshold =.*|emergency_restart_threshold = 12|g' /etc/php*/php-fpm.conf
sed -i -r 's|.*emergency_restart_interval =.*|emergency_restart_interval = 1m|g' /etc/php*/php-fpm.conf
sed -i -r 's|.*process_control_timeout =.*|process_control_timeout = 8s|g' /etc/php*/php-fpm.conf

sed -i -r 's|^.*pm.max_requests =.*|pm.max_requests = 10000|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm.max_children =.*|pm.max_children = 12|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm.start_servers =.*|pm.start_servers = 4|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm.min_spare_servers =.*|pm.min_spare_servers = 4|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm.max_spare_servers =.*|pm.max_spare_servers = 8|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm.process_idle_timeout =.*|pm.process_idle_timeout = 8s|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*pm =.*|pm = ondemand|g' /etc/php*/php-fpm.d/www.conf

mkdir -p /var/run/php-fpm7/

chown lighttpd:root /var/run/php-fpm7

sed -i -r 's|^.*listen =.*|listen = /run/php-fpm7/php7-fpm.sock|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^pid =.*|pid = /run/php-fpm7/php7-fpm.pid|g' /etc/php*/php-fpm.conf
sed -i -r 's#^user =.*#user = lighttpd#g' /etc/php*/php.ini
sed -i -r 's#^group =.*#group = lighttpd#g' /etc/php*/php.ini
sed -i -r 's|^.*listen.owner =.*|listen.owner = lighttpd|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*listen.group =.*|listen.group = lighttpd|g' /etc/php*/php-fpm.d/www.conf
sed -i -r 's|^.*listen.mode =.*|listen.mode = 0660|g' /etc/php*/php-fpm.d/www.conf

rc-update add php-fpm7 default

service php-fpm7 restart

在您准备好 php 后,让我们将其集成到当前预安装的 Web 服务器中。我们选择了 lighttpd,所以命令是

mkdir -p /var/www/localhost/cgi-bin

sed -i -r 's#\#.*mod_alias.*,.*#    "mod_alias",#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*include "mod_cgi.conf".*#   include "mod_cgi.conf"#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*include "mod_fastcgi.conf".*#\#   include "mod_fastcgi.conf"#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#.*include "mod_fastcgi_fpm.conf".*#   include "mod_fastcgi_fpm.conf"#g' /etc/lighttpd/lighttpd.conf

cat > /etc/lighttpd/mod_fastcgi_fpm.conf << EOF
server.modules += ( "mod_fastcgi" )
index-file.names += ( "index.php" )
fastcgi.server = (
    ".php" => (
      "localhost" => (
        "socket"                => "/var/run/php-fpm7/php7-fpm.sock",
        "broken-scriptfilename" => "enable"
      ))
)
EOF

sed -i -r 's|^.*listen =.*|listen = /var/run/php-fpm7/php7-fpm.sock|g' /etc/php*/php-fpm.d/www.conf

sed -i -r 'php-fpm7 restart

rc-service lighttpd restart

echo "<?php echo phpinfo(); ?>" > /var/www/localhost/htdocs/info.php

要测试 PHP 是否正常工作,请浏览到 http://ipaddress/info.php 将 “ipaddrs” 更改为 Web 服务器的 IP 地址。

数据库:MariaDB 安装和配置

警告:Cacti 也可以与 PostgreSQL 一起运行,对于负载繁重的生产系统和海量数据系统来说,PostgreSQL 是更好的选择。我们仅记录了 mysql,因为 postgresql 需要复杂的调整参数


注意:您可以安装 adminer 以通过 Web 浏览器管理数据库。请参阅 生产 LAMP 系统中的 Adminer,它可以通过 GUI 管理任何类型的数据库
apk add mysql mysql-client tzdata

mysql_install_db --user=mysql --datadir=/var/lib/mysql

rc-service mariadb start

mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql

sed -i "s|.*max_allowed_packet\s*=.*|max_allowed_packet = 100M|g" /etc/my.cnf.d/mariadb-server.cnf

sed -i "s|.*bind-address\s*=.*|bind-address=127.0.0.1|g" /etc/mysql/my.cnf
sed -i "s|.*bind-address\s*=.*|bind-address=127.0.0.1|g" /etc/my.cnf.d/mariadb-server.cnf

cat > /etc/my.cnf.d/mariadb-server-default-charset.cnf << EOF
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
EOF

cat > /etc/my.cnf.d/mariadb-server-default-highload.cnf << EOF
[mysqld]
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
max_heap_table_size = 32M
tmp_table_size      = 32M
join_buffer_size    = 62M
innodb_file_format  = Barracuda
innodb_large_prefix = 1
innodb_buffer_pool_size = 512M
innodb_flush_log_at_timeout = 3
innodb_read_io_threads  = 32
innodb_buffer_pool_instances = 1
innodb_io_capacity     = 5000
innodb_io_capacity_max = 10000
EOF

rc-service mariadb restart

rc-update add mariadb default

运行这些命令后,运行 mysql_secure_installation 脚本,并按如下方式回答

  1. 输入 root 用户的当前密码(如果没有密码,请按 Enter 键):必须提供密码,因为我们之前已设置过密码。正确的响应是 OK, successfully used password, moving on...
  2. 切换到 unix_socket 身份验证 [Y/n] 不使用。必须禁用,回答 NO,响应将是 ... skipping.
  3. 更改 root 密码? [Y/n] 仅当您提供了好的密码时才按 “n”,否则请更改它!
  4. 删除匿名用户? [Y/n]生产系统中,我们必须删除它们,因此回答 Y,正确的响应是 ... Success!
  5. 禁止 root 用户远程登录? [Y/n] 回答 Y,正确的响应是 ... Success!
  6. 删除测试数据库并拒绝访问权限? [Y/n] 您应该删除它,因此回答 Y,正确的响应是 ... Success!
  7. 现在重新加载权限表? [Y/n] 回答 Y,正确的响应是 ... Success!

在您回答完所有问题后,使用 rc-service mariadb restart 重启服务

工具:net-snmp 和 rrdtool

警告:不要设置 agentAddress tcp:161,tcp6:[::1]:161,默认情况下,软件包添加了 udp 161 协议,因此如果您设置它,它将仅监听并仅使用 ipv6 显示信息


apk add net-snmp net-snmp-tools rrdtool

cat > /etc/snmp/snmpd.conf << EOF
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
rocommunity  public localhost
rocommunity  public default -V systemonly
sysLocation    Bolivar Upata Venezuela
sysContact     infoadmin <info@pacificnetwork.com>
sysServices    72
EOF

rc-update add snmpd default

rc-service snmpd restart

这里我们只需要 cacti 的命令。有关该主题的更多信息,请参阅

Cacti 安装

从 Alpine 3.12 开始,Cacti 仍然在 edge 分支中,因此首先我们预安装依赖软件包。之后,从 edge,我们仅安装 cacti。

安装 Cacti 软件包

警告:从 Alpine 3.5 开始,Cacti 只是一个软件包,即 “cacti”。从 Alpine 3.6 开始,cacti 软件包被拆分为多个软件包。导致所有混乱的提交是为 cacti 创建了 php-fpm 的特定池。这很混乱,因为它没有文档记录。如果要正确配置通用池,我们必须避免并忽略它


cat > /etc/apk/repositories << EOF
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF

apk update

apk add bash busybox coreutils net-snmp-tools perl rrdtool ttf-dejavu php7-snmp

apk add cacti cacti-setup cacti-php7 cacti-lang

Cacti 预配置

Cacti 在 cacti 用户下运行。我们暂时将文件权限设置为全局可写,稍后,我们将正确设置它们。

cat > /etc/lighttpd/mod_cacti.conf << EOF
alias.url += (
     "/cacti/"	    =>    "/usr/share/webapps/cacti/"
)
\$HTTP["url"] =~ "^/cacti/" {
    dir-listing.activate = "disable"
}
EOF

sed -i -r 's#\#.*mod_alias.*,.*#    "mod_alias",#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#\#.*mod_accesslog.*,.*#    "mod_accesslog",#g' /etc/lighttpd/lighttpd.conf
sed -i -r 's#\#.*mod_setenv.*,.*#    "mod_setenv",#g' /etc/lighttpd/lighttpd.conf

sed -i -r 's#.*include "mod_cgi.conf".*#   include "mod_cgi.conf"#g' /etc/lighttpd/lighttpd.conf

checkssl="";checkssl=$(grep 'include "mod_cacti.conf' /etc/lighttpd/lighttpd.conf);[[ "$checkssl" != "" ]] && echo listo || sed -i -r 's#.*include "mod_cgi.conf".*#include "mod_cgi.conf"\ninclude "mod_cacti.conf"#g' /etc/lighttpd/lighttpd.conf

rc-service lighttpd restart

Cacti 在 cacti 用户下运行,但 Web 服务器用户(apache2、lighttpd)也需要访问权限。因此启用组访问,正如我们所说,暂时设置全局可写文件权限

  1. 授予 Web 服务器临时访问权限
  2. 创建 cacti 数据库并填充它
  3. 授予 Cacti MySQL 用户访问权限(为其提供更安全的密码)
  4. 退出 Mysql 命令提示符
  5. 导入初始 Cacti MySQL 数据库
  6. 将用户、密码和数据库名称设置为 cacti 配置文件
  7. 暂时授予 cacti 日志和 lib 目录全局可写权限
chown -R cacti:lighttpd /usr/share/webapps/cacti/;chown -R cacti:lighttpd /var/lib/cacti/

mysql -u root -p -e "CREATE DATABASE cacti;"

mysql -u root -p -e "GRANT ALL ON cacti.* TO 'cactiuser'@'localhost' IDENTIFIED BY 'cactipassword';FLUSH PRIVILEGES;

mysql -u root -p -e "GRANT GRANT OPTION ON cacti.* TO 'cactiuser'@'localhost';FLUSH PRIVILEGES;"

mysql -u root -p -e "GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@'localhost';"

mysql --user=cactiuser -p cactipassword cacti < /usr/share/webapps/cacti/cacti.sql

sed -i -r 's#\$database_default.*=.*;#\$database_default  = 'cacti';#g' /etc/cacti/config.php
sed -i -r 's#\$database_username.*=.*;#\$database_username  = 'cactiuser';#g' /etc/cacti/config.php
sed -i -r 's#\$database_password.*=.*;#\$database_password  = 'cactipassword';#g' /etc/cacti/config.php

chmod 777 /var/log/cacti
chmod 666 /var/log/cacti/*.log

Cacti Web 安装设置

使用以下信息登录

Password= admin user= admin

接下来将提示您更改密码

change password.

在 Web 页面中单击

-> 下一步

然后选择全新安装(如果未选中)

-> 全新安装,下一步
警告:请注意,自 cacti 1.2.8 起,直到 cacti 1.2.10,安装程序对于 Cacti_Stats.xml.gz 模板存在多个错误,因此最后一个 “check” 没有描述。您必须取消选中最后一个,如此处所述:https://github.com/Cacti/cacti/issues/3313#issuecomment-594114681 该模板稍后可以通过 cli 安装,命令为:php -d max_execution_time=90 /usr/share/webapps/cacti/cli/import_package.php --filename=Cacti_Stats.xml.gz 在 cacti 安装的模板目录下,但目前它挂起并且永远不会安装。已在 https://github.com/Cacti/cacti/issues/3313#issuecomment-601508135 中报告


然后完成

-> 完成

添加到 crontab

Cacti 后配置

chmod 775 /var/log/cacti
chmod 664 /var/log/cacti/*.log

Pooler 和 crontab

正如我们所说,cacti 需要 crontab 用于池收集数据!从 Alpine 3.7 开始,这些步骤不是必需的,因为 cacti 软件包安装了所有必要的文件。

注意:这些步骤仅适用于 Alpine 版本 3.6 及更早版本的 cacti 软件包。从版本 3.7 开始,cacti 软件包安装了用于数据收集的 crontab
cd /etc/crontabs
vi root

复制到文件末尾

*/5 * * * * lighttpd php /var/www/localhost/htdocs/cacti/poller.php > /dev/null 2>&1

如果您使用其他 Web 服务器,则必须修改 “lighttpd” 用户。

*/5 * * * * "web server user" php /var/www/localhost/htdocs/cacti/poller.php > /dev/null 2>&1

添加您的设备,您就可以开始监控了!

cacti 插件

如果您使用了最新的 cacti,则必须使用每个插件的最新开发版本,特别是如果您在 Web 服务器上使用 php7

00

cd /usr/share/webapps/cacti/plugins/

wget https://github.com/Cacti/plugin_mikrotik/archive/master.tar.gz -O cacti-1.2.11-plugin-monitor.tar.gz
wget https://github.com/Cacti/plugin_gexport/archive/master.tar.gz -O cacti-1.2.11-plugin-gexport.tar.gz
wget https://github.com/Cacti/plugin_routerconfigs/archive/master.tar.gz -O cacti-1.2.11-plugin-routerconfigs.tar.g
wget https://github.com/Cacti/plugin_monitor/archive/master.tar.gz cacti-1.2.11-plugin-reportit.tar.gz
wget https://github.com/Cacti/plugin_reportit/archive/master.tar.gz -O cacti-1.2.11-plugin-reportit.tar.gz

解压所有文件后,更改并修复权限

cd /usr/share/webapps/cacti/plugins/

chown -R cacti:lighttpd /usr/share/webapps/cacti/

chown -R cacti:lighttpd /var/lib/cacti/

通过 Web 界面转到 cacti 配置和插件以安装并启用所有插件。

重新安装 Cacti

假设您把所有事情都搞砸了,并且想从头开始重新安装所有内容。让我们开始吧

清除所有与 cacti 相关的内容

  1. 删除已安装的软件包
  2. 删除配置文件
  3. 从 mysql/postgresql 中删除数据库和用户(此处仅以 mysql 为例)
  4. 重新配置为不加载 cacti Web 服务器配置
  5. 重启服务,因为 cacti 池已被删除,lighttpd 必须重新加载其配置文件
apk del cacti cacti-setup cacti-php7 cacti-lang

rm -rf /var/log/cacti

rm -rf /usr/share/webapps/cacti

rm -rf /etc/cacti

mysql -u root -p -e "DROP DATABASE cacti;"

mysql -u root -p -e "DROP USER 'cactiuser'@'localhost'"

sed -i "/include \"mod_cacti.conf\"/d" /etc/lighttpd/lighttpd.conf

rc-service php-fpm7 restart

rc-service lighttpd restart

完成所有这些步骤后,重复 Cacti 安装 部分中的所有步骤。

参见