轻量级分布式监控系统fsr

一 、概述

 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监控等监控项;

  • 3.6.1 探点监控

探点监控用于配置需要监控的主机端口或者域名。点击监控中心–探点监控新增一个探点监控,这里配置监控的是nginx的443端口

端口监控
在这里插入图片描述

网页监控
配置网页监控时需要注意的点:格式必须为:HTTP://www.baidu.com。
PS :HTTPS怎么都添加不成功,不知道为什么,也联系了作者,但是作者可以添加成功

在这里插入图片描述

3.6.2 Mysql监控

点击监控中心–MySQL监控,新增一个Mysql监控
在这里插入图片描述

3.6.3 Oracle监控

Oracle监控和Mysql差不多,不在详细说明
在这里插入图片描述

四 测试

停掉Nginx服务,fsr会进行自愈,如果自愈成功或者失败会发送邮件提示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值