Centos6.10下Open-falcon的分布式安装(虚拟机伪分布式)和前端界面安装

官方文档地址,还在开发阶段,文档部分有点乱

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文件,把库信息填写完毕保存

https://downloads.mariadb.org/mariadb/repositories/#mirror=neusoft&distro=CentOS&distro_release=centos6-x86--centos6&version=10.0

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,结果

看一下输出信息

查了一下,https://stackoverflow.com/questions/7929460/django-400-bad-request-syntax-what-does-this-message-mean

换成了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学习记录(一)——自定义数据采集、历史查询、进程监控

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章