Cacti:流量分析和网络监控

来自 Alpine Linux
(重定向自 设置 Cacti

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 以及下面显示的其他一些系统工具。如果它们不存在,Cacti 将会随机失败。

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 服务器状态页面
  • 设置 alias mod 以进行别名设置、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 运行,对于高负载生产和海量数据系统来说,这是一个更好的选择。我们只记录了 mysql,因为 postgresql 需要复杂的调整参数。


注意: 您可以安装 adminer 以通过 Web 浏览器管理数据库。请参阅 Adminer in production LAMP systems,它可以通过 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 用户的当前密码(如果没有,直接回车):必须提供密码,因为我们之前已经设置了密码。正确的响应是 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 log 和 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.

在网页中单击

-> 下一步

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

-> 新安装,下一步
警告: 请注意,自 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 安装 部分中的所有步骤。

参见