因为现在的cacti在虚拟机中,宿主面临升级的问题,该虚拟机无法迁移,所以只能重装,最近又在学习docker,于是找了个docker版本进行部署,非官方版本,官方目前还没有docker版,此docker版同时运行两个容器,cacti和mariadb
原服务器备份数据
原服务器需要备份两个内容:
1.数据库的数据,主要是cacti的一些配置信息
2.rra文件夹,这个看具体情况,比较大。
有这两个文件就可以恢复cacti数据,也可以先进行部署docker,因为我第一次折腾时间比较长,从这个数据导入新环境还是断了半天的数据。
docker-compose启动docker
docker 作者链接:
https://github.com/scline/docker-cacti
需要更改一些连接如:时区、数据库用户名、密码
version: '3'
services:
cacti:
image: "smcline06/cacti"
container_name: cacti
domainname: example.com
hostname: cacti
ports:
- "80:80"
- "443:443"
environment:
- DB_NAME=cacti
- DB_USER=cacti
- DB_PASS=password
- DB_HOST=db
- DB_PORT=3306
- DB_ROOT_PASS=password
- INITIALIZE_DB=1
- TZ=Asia/Shanghai
volumes:
- cacti-data:/cacti
- cacti-spine:/spine
- cacti-backups:/backups
links:
- db
db:
image: "mariadb:10.3"
container_name: cacti_db
domainname: example.com
hostname: db
ports:
- "3306:3306"
command:
- mysqld
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --max_connections=200
- --max_heap_table_size=128M
- --max_allowed_packet=32M
- --tmp_table_size=128M
- --join_buffer_size=128M
- --innodb_buffer_pool_size=1G
- --innodb_doublewrite=ON
- --innodb_flush_log_at_timeout=3
- --innodb_read_io_threads=32
- --innodb_write_io_threads=16
- --innodb_buffer_pool_instances=9
- --innodb_file_format=Barracuda
- --innodb_large_prefix=1
- --innodb_io_capacity=5000
- --innodb_io_capacity_max=10000
environment:
- MYSQL_ROOT_PASSWORD=password
- TZ=Asia/Shanghai
volumes:
- cacti-db:/var/lib/mysql
volumes:
cacti-db:
cacti-data:
cacti-spine:
cacti-backups:
以上docker-compose更改了3处的密码和2个容器的时区,一共五处,也可以直接复制我这个。
启动docker
docker容器使用docker-compose up进行启动
启动会比较慢,因为cacti容器中会进行初始化配置和下载更新源,大概3-5min,依网络情况,你们懂得。
docker容器跑起来之后正常应该可以访问cacti,使用ip:port进行访问,至此服务已经正常。
有两个文件夹说一下:
这两个文件夹一个是cacti数据,一个是数据库数据,数据库数据不用改动,直接登录数据库更改就好。
cacti文件夹是存放cacti的插件、rra等这些配置文件和数据库文件的,也是折腾了很长时间。
现在咱们要做数据迁移,所以进行导入数据库。
数据库导入数据
进入到mariadb容器:
进去后默认的cacti数据库直接删除:
DROP DATABASE cacti;
删除后新建cacti数据库
create database cacti;
导入数据:
use cacti
source /root/cacti.sql
修改数据库
数据导入完成后,先连接新服务器的数据库,做如下更改:
将配置改成如图就可以,因为正常安装cacti的话路径一般会在/var/www/html/cacti,如果使用这个目录的话会找不到路径和文件,第一个cacti.log导致访问cacti页面无权限,下面两个是cacti取数据轮询工具,不改的话无法画图。
改了这两个后按照一路下一步时可以正常启动cacti并进入初始化配置,配置完成后会显示升级,会比较慢,我是卡在35%大概卡了5分钟吧,不要着急。
如果以上都正常,那么应该已经可以用之前cacti的用户名密码进入新的cacti,并且数据什么的已经可以看见了。
一开始我没法出图,我重建了轮询,但后来也可能是因为spine的路径问题,记不太清楚了,重建轮询的话进入到cacti容器使用命令运行:
php -q /cacti/cli/rebuild_poller_cache.php
操作完以上的操作已经可以正常出流量图了
插件
由于我要使用气象图插件,0.88升级到1.2的版本过度太大,导致气象图用不了,从git找了个气象图的插件 PHP Network Weathermap 0.98a,1.x的版本原作者不更新了,都是老外们自己改的,链接如下:https://github.com/thurban/plugin_weathermap
我用的是这款
更改后直接复制进宿主的这个文件夹,复制完成后进去cacti能看见气象图插件
启动起来,有可能会报错,名字需要改成weathermap,气象图插件安装好后发现之前的气象图没有了
导入气象图
找到原来的服务器的气象图文件夹,里面有configs全部复制过来
复制过来以后我等了会儿,发现图出来了,但是流量不显示,是因为原来的气象图配置的rra路径不正确。
原气象图的配置文件中TARGET是这样,但是cacti找不到这个路径,变更为下面图的TARGET
用sed将TARGET更改为现有路径,等了会儿,气象图可以正常使用。
至此,cacti折腾了一天后,写了这个笔记。
还有个问题没有解决,就是cpu和memery目前没法获取数据,不知道是spine的问题还是哪里的问题,已经向原作者提issue,希望可以解决吧。
目前cpu出图问题已经解决,源cacti已经删除了,不好考证,不知道是迁移过来oid变了还是原来的cacti和新版cacti oid匹配问题
原来oid值
现在oid值
.1.3.6.1.4.1.9.9.109.1.1.1.1.5.1正确的是这个,也可以填最新的.1.3.6.1.4.1.9.2.1.58.0(新版cacti自带模板-cisco cpu)
有问题欢迎讨论。谢谢。