轻量级分布式监控系统fsr
一 、概述 fsr是基于python3+django 开发的集资产管理系统。包括:监控系统+简单自愈系统为一体的运维管理故障自愈系统。 可以用作资产管理,也可以用于定时任务,自愈执行定义好的动作异步远程调用执行。监控可以对接zabbix nagios 等告警信息发送到自愈系统。是devops 的有利工具。可以无agent 进行主机cpu 内存等监控,以及mysql 指标监控。方便查看历史监控指标。
一 、概述
fsr是基于python3+django 开发的集资产管理系统。功能包括:监控系统+简单自愈系统为一体的运维管理故障自愈系统。 可以用作资产管理,也可以用于定时任务,自愈执行定义好的动作异步远程调用执行。监控可以对接zabbix nagios 等告警信息发送到自愈系统。是devops 的有利工具。可以无agent 进行主机cpu 内存等监控,以及mysql 指标监控。方便查看历史监控指标。
1.1 主要功能
- 资产管理,支持excel csv格式批量导入资产主机
- 定时任务
- 自带url和端口监控
- zabbix nagios等第三方监控系统告警信息接入
- 告警信息归类触发自定义动作达到自愈目的
- 告警和自愈历史查看
- 通过API触发自定义动作
- 无需agent即可对远程主机cpu,内存,进程数等进行图表监控,方便历史查看分析
- mysql 添加了 qps,tps,连接数,流量,IO,KEY BUFFER等监控,并增加了mysql慢查询功能
1.2 运行环境
- 系统: Unix & Linux 平台安装
- 语言: python 3.6 版本
- 数据库:: Mysql 5.6+、Mariadb10.2+
- redis : 无版本要求
二 、安装
2.1 安装python3
已安装过python3、Mariadb和Redis的可以直接从2.4开始查看
为保证兼容,推荐使用python3.6.8,超过以上版本有可能出错。
下载python3.6.8
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
解压
tar xvf Python-3.6.8.tar
安装
mkdir -p /opt/python3
cd Python-3.6.8/
./configure --prefix=/opt/python3 --enable-optimizations
make
make install
备份python2.7
mv /usr/bin/python /usr/bin/python2.7.5
mv /usr/bin/pip /usr/bin/pip2.bak
创建python3软连接
ln -s /opt/python3/bin/python3.6 /usr/bin/python
ln -s /opt/python3/bin/pip3 /usr/bin/pip
测试是否安装成功
python -V
Python 3.6.8
如果出错:python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
执行如下命令
复制python3下的libpython3.6m.so.1.0到/user/lib64即可
cp /opt/python3/lib/libpython3.6m.so.1.0 /usr/lib64/
python3安装成功以后,有可能造成YUM无法运用,修复如下:
vim /usr/bin/yum
# 修改头部 #!/usr/bin/python
# 改为 #!/usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
# 修改头部改为 #!/usr/bin/python2
更新PIP
pip install --upgrade pip
pip -V
pip 21.3.1 from /opt/python3/lib/python3.6/site-packages/pip (python 3.6) # 更新成功
更新时如果提示报错:
Exception:
Traceback (most recent call last):
使用命令强制更新
easy_install -i http://mirrors.aliyun.com/pypi/simple/ --upgrade pip
在不行,就强制重装。。。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall
2.2 安装Mariadb
已安装Mariadb或者Mysql的可以跳过此步。以下教程以Mariadb为主,需要Mysql的百度其他教程
添加Mariadb10.2 YUM源
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.2"
YUM安装Mariadb
yum install MariaDB-server
修改数据库位置为/home/mysql下:
创建新的目录
mkdir -p /home/mysql
停止数据库并复制mariadb数据库文件到新的目录
service stop mariadb
mv /var/lib/mysql/* /home/mysql
修改权限
chown -R mysql:mysql /home/mysql
修改my.cnf文件
# 如果有就修改为新的路径,没有就新增
datadir = /home/mysql # 数据库存文件新放路径
basedir = /home/mysql # 新安装目录
slow_query_log_file = /home/mysql/slow.log # 慢查询日志路径
log-bin = /home/mysql/bin-log.log # bin-log存放路径
log-error = /home/mysql/err.log # 错误日志路径
修改目录保护
vi /usr/lib/systemd/system/mariadb.service
# 大概64行
ProtectHome=true
# 修改为
ProtectHome=false
重载服务并启动Mariadb客户端
systemctl daemon-reload
systemctl start mariadb
创建mysql.sock软连接
ln -s /dev/shm/mysql.sock /var/lib/mysql/mysql.sock
初始化:设置root密码,删除匿名用户,删除test库,禁止root远程连接
mysql_secure_installation
Mariadb安装完成
2.3 安装redis
以6.0.4为例,其他版本下载地址为:http://download.redis.io/releases/
下载、解压redis6.0.4
wget http://download.redis.io/releases/redis-6.0.4.tar.gz
tar zvf redis-6.0.4.tar.gz
安装依赖包
yum install -y gcc centos-release-scl devtoolset-9-gcc*
切换gcc版本,否则无法编译
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
source /etc/profile
编译、安装redis
make
make PREFIX=/ install
创建redis用户
useradd -b /var/lib -s /sbin/nologin redis
创建redis配置文件
vim /etc/redis
# 添加如下文件
daemonize yes
dir /var/lib/redis
port 6379
bind 0.0.0.0
# io-threads 4
# io-threads-do-reads yes
tcp-backlog 5120
unixsocket /dev/shm/redis.sock
unixsocketperm 777
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
创建redis服务
vim redis.service
# 添加如下内容
[Unit]
Description=redis server
After=syslog.target network.target
[Service]
LimitNOFILE=65535
Type=forking
User=redis
Group=redis
ExecStart=/bin/redis-server /etc/redis.conf
ExecStop=/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
创建好的文件复制到/usr/lib/systemd/system/
cp redis.service /usr/lib/systemd/system/
启动redis服务,创建开机启动
systemctl start redis
systemctl enable redis
设置redis密码
redis密码默认为空,需要配置一个密码
redis-cli 6379 # 登录redis
config get requirepass # 查看密码
1) "requirepass"
2) "" # 密码为空
config set requirepass 123456 # 设置密码为123456
如果怕影响其他redis,可以新建一个配置文件,另外起一个redis服务
# 复制一个redis配置文件,端口改为6377
cp /etc/redis.conf /etc/redis_6377.conf
vim /etc/redis_6377.conf
port 6377 # 6379改为6377
# redis指定配置文件启动新服务
/usr/local/bin/redis-server /etc/redis_6377.conf
redis安装完成
2.4 安装fsr
安装有2种方法,1是普通下载,安装,另外通过gitee克隆项目。推荐使用gitee,方便更新。
2.4.1 普通下载、解压fsr
去项目地址下载并解压完成fsr.项目地址https://gitee.com/haocx/fsr/
2.4.2 gitee克隆仓库方式
创建本地仓库
mkdir -p /home/www/fsr
cd /home/www/fsr
git init
添加远程仓库、拉取代码
git remote add origin https://gitee.com/haocx/fsr.git
git pull origin master
拉取更新
git pull
绑定分支
git branch --set-upstream-to=origin/master
2.4.3 创建fsr数据库
在Maridb或者Mysql执行建库语句
CREATE DATABASE IF NOT EXISTS fsr DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.4.4 创建fsr.conf配置文件
我的fsr安装在/var/www/下
cp /var/www/fsr/conf/db.conf.demo /var/www/fsr/conf/db.conf
vim /var/www/fsr/conf/db.conf
# 根据实际情况修改配置文件
# redis配置
[redis]
host = #redis服务ip地址
port = #redis服务端口号
password = #redis密码
db = 2 #默认是2,可以修改
# mysql配置
[mysql_config]
db = fsr #数据库名称
host = yourip #数据库地址
user = youruser #连接数据库用户
passwd = yourpassword #连接数据库密码
port = 3306 #连接数据库端口,默认3306
charset = utf8 #默认编码
timeout = 600 #超时时间
# 告警邮箱配置,这里千万不要配置,可以等fsr部署完成后在告警里配置
[mail_celery]
host = yourhost #邮件服务器地址
username = username #邮箱账号
password = password #邮箱密码
user = user #显示邮件是谁发送
#celery异步配置,使用redis.
[CeleryConfig]
#celery BROKER地址,数据库默认使用5
BROKER_URL = redis://:password@yourip:yourport/5
#celery RESULT_BACKEND地址,数据库默认使用5
CELERY_RESULT_BACKEND = redis://:password@yourip:yourport/5
CELERY_ACCEPT_CONTENT = application/json
CELERY_TASK_SERIALIZER = json
CELERY_RESULT_SERIALIZER = json
CELERY_TIMEZONE = Asia/Shanghai
2.4.5 配置fsr虚拟环境
# 进入fsr根目录,执行如下命令
python -m venv env
# 进入虚拟环境
source env/bin/activate
# 安装环境
cd install && pip install -r pip_list.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
2.4.6 初始化表结构
cd ../cmdb/
# 首次初始化创建表结构执行,会执行一段时间
python manage.py migrate
# 如果表结构已经初始化过,需要在次执行,请用如下命令请
python manage.py makemigrations
创建超级管理员用户、密码、邮箱。默认用户名为:root
# 执行此语句创建超级管理员用户、密码、邮箱
python manage.py createsuperuser
Username (leave blank to use 'root'): admin # 输入需要创建的超级管理员用户名,默认为root
Email address: # 输入超级管理员密码
Password: # 创建密码
Password (again):
Superuser created successfully # 创建成功
如果需要修改密码,请执行
python manage.py changepassword
2.4.7 启动fsr
fsr默认的登录端口为12000,如果修改登录端口,请修改/cmdb/start 里的port=12000,为指定的端口即可
# 启动脚本,在cmdb/下
sh startup.sh start
三、配置、使用fsr
3.1 登录界面
登录,默认的登录端口为:ip:12000
3.2 配置告警
作为fsr核心功能之一,告警功能对于运维人员尤其重要;fsr支持外部Zabbix和nagios告警和本地邮箱告警。这里以本地邮箱告警为例,
点击系统管理–报警服务设置,输入邮箱信息点击“测试并提交”
。这里需要有几点注意:
- 1.发送账号一定要开启smtp服务,并且要获得邮箱授权码;
- 2.密码填写的是
授权码
,且不是你注册时的邮箱密码
;
配置完成后:在fsr/conf/db.conf
里需要更新邮箱配置,配置完成以后记得重启fsr服务!
记得重启fsr服务!记得重启fsr服务!
3.3 添加用户、用户组
fsr支持对用户进行分组,方便进行管理;点击用户–用户组管理,添加新的用户组;注:这里添加的用户为登录运维系统的人员!报警人员另需添加
如果其他人不登录fsr系统,使用超级管理员足够了,因为报警人员需要另外配置,这一块不太合理,已经联系作者了,希望只添加一次。
使用超级管理员进行管理的,可以跳过此步!
点击用户管理–创建用户,添加一个新的用户,请注意邮箱一定要填写,密码是系统自动生成发送至邮箱的;注:超级管理员可以修改注册用户密码
角色安全和访问控制可以授权账户时普通用户和超级管理员;
失效日期:自定义账户有效时间,为必填项目
个人信息,添加运维人员联系方式。输入完成点击提交完成添加
3.3 资产管理
3.3.1 资产组
fsr支持手动添加主机以及EXCEL批量导入,并且可以对运维机器进行分组,方便管理;
首先创建一个资产组,点击资产管理–资产组,输入信息点击提交完成添加
3.3.2 资产用户
配置登录服务器的用户名,支持密码和ssh-key登录
;
点击资产用户–添加资产用户,新增一个用户输入服务器信息,用户名和密码,添加提交完成资产用户添加;
3.3.3 资产主机
添加服务器前,请先使用yum install sshpass
安装sshpass,sshpass为linux下免密码交互的ssh工具,必须安装,否则无法完成添加服务器!
配置需要管理的服务器或者虚拟机。点击资产主机–添加服务器,新增一个需要管理的服务器
资产用户为登录服务器的用户名和密码,如果有多个依次添加!
输入服务器信息,点击提交完成添加
添加成功可以看到服务器连接状态和配置信息
如果需要批量导入,请下载fsr目录下/home/www/fsr/client/demo.csv到本地,填写服务器信息,完成后
点击资产主机–EXCEL导入主机信息即可;
3.4 故障自愈
添加报警后出发的执行动作,这里我配置了重启Mysql 和Nginx2个服务;告警动作请配置shell命令
;
在自愈列表里可以看到详细信息
3.5 报警中心
查看告警历史记录,配置联系人和联系组
3.5.1 添加报警联系人、告警组
点击报警中心–报警联系人,新增一个报警人;
点击报警中心–报警联系组,新增一个报警联系组
3.6.2 报警自愈中心
3.6 监控中心
监控中心用于配置主机监控和Mysql监控、Oracle监控等监控项;
探点监控用于配置需要监控的主机端口或者域名
。点击监控中心–探点监控新增一个探点监控,这里配置监控的是nginx的443端口
端口监控
网页监控
配置网页监控时需要注意的点:格式必须为:HTTP://www.baidu.com。
PS :HTTPS怎么都添加不成功,不知道为什么,也联系了作者,但是作者可以添加成功
3.6.2 Mysql监控
点击监控中心–MySQL监控,新增一个Mysql监控
3.6.3 Oracle监控
Oracle监控和Mysql差不多,不在详细说明
四 测试
停掉Nginx服务,fsr会进行自愈,如果自愈成功或者失败会发送邮件提示
更多推荐
所有评论(0)