官方文档地址,还在开发阶段,文档部分有点乱
https://book.open-falcon.org/zh_0_2/distributed_install/
伪分布式安装,只有一台虚拟机,重在学习每个组件
1 环境准备
1.1 配置epel源
必备操作,很多软件官方源没有
sudo yum install -y epel-release
1.2 Redis安装与启动
sudo yum install -y redis
现在来创建一份自己的配置,官方的配置放在/etc/redis.conf,复制到自己喜欢的目录
sudo mkdir /etc/redis
sudo cp /etc/redis.conf /etc/redis/6379.conf
修改/etc/init.d/redis文件,把配置的目录REDIS_CONFIG这一项换成自己的配置文件,然后启动
sudo /etc/init.d/redis start
查看一下日志,默认目录在/var/log/redis/redis.log,看到下面的信息就算成功
1.3 Mysql安装与启动
我们用的是MariaDB,需要先卸载Mysql相关,再按照官网的安装方法,在下面的页面选择自己的操作系统,然后新建/etc/yum.repos.d/MariaDB.repo文件,把库信息填写完毕保存
MariaDB我没有安装最新版,10.3版在装dashboard的时候,会装不上mysql-python这个模块,提示‘MYSQL’ has no member named ‘reconnect’错误,所以我装了个10.0版
sudo yum remove -y mysql*
sudo vim /etc/yum.repos.d/MariaDB.repo
#填写下面的文字
#[mariadb]
#name = MariaDB
#baseurl = http://yum.mariadb.org/10.0/centos6-x86
#gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
#gpgcheck=1
sudo yum -y install MariaDB-server MariaDB-devel
sudo service mysql start #启动
mysql默认的root用户没有密码,修改一下
sudo mysqladmin -u root password "这里写你的密码"
1.4 Go安装
cd ~
wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
echo "PATH=$PATH:/usr/local/go/bin" >> .bashrc
source .bashrc
go //测试,看到帮助信息输出就算安装成功
rm go1.11.linux-amd64.tar.gz
#设置一下GOROOT和GOPATH
vim ~/.bashrc
#添加
export GOROOT=/usr/local/go #go默认安装在这个目录
export GOPATH=/home/tuan/mygo #这个可以随便你喜好设置,go的工作目录
source .bashrc
1.5 Git安装
新机器啥都没有
sudo yum install -y git
1.6 GCC安装
sudo yum install -y gcc
2 Open-falcon编译
一共需要编译三个个模块,主模块(对应falcon-plus,包括agent、judge、graph、transfer等大部分模块)、task模块(貌似可选)和agent-updater(管理agent版本的组件,可选)
2.1 falcon-plus编译
我用了go get工具,第一次接触go语言项目的时候还不理解为什么要用这种src/github.com/open-falcon的目录结构,原来是为了go get
go get github.com/open-falcon/falcon-plus #会在$GOPATH/src目录下创建相应的目录
cd $GOPATH/src/github.com/open-falcon/falcon-plus
make all
make pack
mkdir ~/open-falcon //创建工作目录
tar -xzf open-falcon-v0.2.1.tar.gz -C ~/open-falcon //解压到工作目录,你要部署到哪里就把这个包解压到哪里
顺便初始化一个Mysql表结构,每次都会让你输入root用户的密码
cd scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
2.2 task编译
编辑好之后的压缩包就可以拿去部署了
go get https://github.com/open-falcon/task
go get https://github.com/open-falcon/common
cd $GOPATH/src/github.com/open-falcon/task
./control build
./control pack
mkdir ~/open-falcon/task //建立工作目录
tar -xzf falcon-task-0.0.10.tar.gz -C ~/open-falcon/task //解压到工作目录
3 部署
cd ~/open-falcon
3.1 Agent
agent用于采集机器负载监控指标,隔60秒push给Transfer,每个组件的启动、查询指令都很类似
另外安装了Agent的机器要开放1988端口,用于web页面监控使用
#开放1988端口
sudo vi /etc/sysconfig/iptables
#在开放22端口的下一行添加如下规则
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 1988 -j ACCEPT
sudo service iptables restart
./open-falcon start agent #启动agent
./open-falcon monitor agent #查看日志
./falcon-agent --check #查看agent状态
这个时候日志是会报错的,因为hbs这个组件还没启动,连接不上
3.2 Transfer
transfer负责数据转发,把agent上报的数据按照哈希规则进行分片,然后push给graph和judge等组件
./open-falcon start transfer
3.3 Graph
负责存储绘图数据,也处理api组件的查询请求,返回绘图数据
显然他是要配置一下数据库密码的
./open-falcon start graph
3.4 API
提供统一的restAPI操作接口,也要修改配置文件配置数据库密码
./open-falcon start api
3.5 Heartbeat Server
所有agent每分钟向该服务器发送一次心跳信息,同时上报hostname、ip、agent version、plugin等数据,HBS负责更新host表
HBS还从数据库获取所有报警策略,存在内存里,Judge组件再从HBS获取所有报警策略,这样可以减少Judge组件对数据库的访问,减少数据库压力
这里要修改一下配置文件,配置一下数据库的东西
#这一项的root和password改成数据库的用户名和密码
"database": "root:password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true", # Portal的数据库地址
./open-falcon start hbs
3.6 Judge
告警预判,Transfer传递的数据通过一致性哈希分片,传给不同judge,每个judge的压力不会过大
./open-falcon start judge
3.7 Alarm
处理报警event,judge产生的报警event写入redis,alarm从redis读取处理
已经发送的告警信息会写入MySQL保存,所以alram当然也是需要配置数据库密码的
因为alarm对优先级低的报警进行了报警合并,所以alarm是个单点
./open-falcon start alarm
3.8 Nodata
检测监控数据的上报异常,辅助judge工作,要配置数据库密码
./open-falcon start nodata
3.9 Aggregator
集群聚合
这个也需要修改配置文件里面的数据库信息
./open-falcon start aggregator
3.10 DashBoard
这一步要求python2.7,然而Centos6.10自带python2.6,同时yum还是依赖python2.6的
首先把python2.6的备份为python_yum,然后打开yum脚本,让其使用python2.6的解释器
在我的系统上,/usr/bin下有python2.6的目录,/usr/bin/python连接到这个目录上
直接打开yum脚本,修改第一行为python_yum
sudo vim /usr/bin/yum
#修改第一行为#!/usr/bin/python-yum
sudo cp /usr/bin/python2.6 /usr/bin/python-yum
现在开始安装python2.7,用的这篇博客里的源码编译安装https://blog.csdn.net/LoveCarpenter/article/details/74011641
#安装依赖
sudo yum install -y zlib* openssl openssl-devel sqlite-devel
cd ~
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
mkdir python
tar -vxzf Python-2.7.15.tgz
cd Python-2.7.15
./configure
vim ./Modules/Setup
#找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz这一行,去掉注释
make
sudo make install
python #测试是否打开了python2.7.15
sudo rm /usr/bin/python
sudo ln -s /usr/local/bin/python /usr/bin/python #创建链接
#清理现场
cd ~
sudo rm -r Python-2.7.15
rm Python-2.7.15.tgz
安装一下pip
cd ~
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
rm get-pip.py
然后开始安装前端
cd ~
git clone https://github.com/open-falcon/dashboard.git
#安装各种依赖
sudo yum install -y openldap-devel
sudo yum groupinstall "Development tools"
#virtualenv官方使用yum安装,但是yum安装的是python2.6的版本,导致python2.7不能用,干脆用了pip安装
#安装python依赖
sudo /usr/local/bin/pip install virtualenv
cd dashboard
virtualenv env
env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple #注意这一步的pip用的是env的pip
修改rrd/config.py,主要修改数据库的密码那两项,分别是PORTAL_DB和ALARM_DB,然后终于可以启动,需要暴露8081端口,修改一下防火墙设置
#开放8081端口
sudo vi /etc/sysconfig/iptables
#在开放22端口的下一行添加如下规则
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT
sudo service iptables restart
#开启前端服务,以下两种启动方法
.env/bin/python wsgi.py
bash control start #生产模式
然后开心地打开浏览器,输入https://ip:8081,结果
看一下输出信息
换成了http://ip:8081就可以打开页面
注册,第一个注册名为root的人就是管理员……进去一看UI,这个UI为何如此简洁
我尝试了QQ浏览器、火狐浏览器和IE浏览器,除了火狐浏览器其他渲染出来的画面都是这么极简主义
火狐的倒是蛮好看的
3.11 Task
定时任务,负责index更新(图表索引的全量更新和垃圾索引清理,暂时不理解)、falcon组件状态数据采集和falcon自检
cd ~/task
cp cfg.example.json cfg.json #配置文件必须名为cfg.json
vim cfg.json #修改数据库的密码
bash control start #启动服务
#开启一下防火墙的8002端口
sudo vi /etc/sysconfig/iptables
#在开放22端口的下一行添加如下规则
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8002 -j ACCEPT
sudo service iptables restart
可以用浏览器访问一下http://ip地址:8002/health,可以看到下面这种简洁大气的界面
3.12 Agent-updater
管理客户端的版本
go get github.com/open-falcon/ops-updater
4 启停
#!/bin/bash
#启动redis
sudo /etc/init.d/redis start
#启动mysql
sudo /etc/init.d/mysql start #如果用的是mysql,启动mysqld
#启动open-falcon
cd ~/open-falcon
./open-falcon start agent
./open-falcon start transfer
./open-falcon start graph
./open-falcon start api
./open-falcon start hbs
./open-falcon start judge
./open-falcon start alarm
./open-falcon start nodata
./open-falcon start aggregator
#启动task
cd ~/task
bash control start
#启动dashboard
cd ~/dashboard
bash control start
5 简单主机监控
http://IP地址:8081,打开后可以看到一个登陆界面,先注册一个名为root的root账户,然后登陆
登陆后点击HostGroups,开始添加主机组,点击右边那个“+”号添加,名字随便起
然后点击operation那里的hosts,开始添加主机,输入IP地址,点击Add Host即可
添加完成点击Back返回,直接点击hostname,就可以跳转到主机监控页面
6 后续
请参考本人其他关于Open-falcon的博文
Centos6.10下Open-falcon微信、邮件告警安装、配置及使用
Centos6.10下Open-falcon学习记录(零)——主机监控、Nodata组件、集群监控
Centos6.10下Open-falcon学习记录(一)——自定义数据采集、历史查询、进程监控