centos 7 部署 open-falcon 0.2.1
一、环境准备
操作系统:centos7(minimal,www.centos.org下载的包是CentOS-7-x86_64-Minimal-1611.iso)
1.1 更换阿里yum(个人习惯)
步骤:
1)下载wget
yum install -y wget
2)备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup
3)设置新的yum目录
mkdir /etc/yum.repos.d
4)下载阿里yum配置到该目录中
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5)重建缓存
yum clean all
yum makecache 6)升级所有包(改变软件设置和系统设置,系统版本内核都升级,故需要几分钟耐心等待)
yum update -y
1.2 安装vim(个人习惯)
yum install -y vim
1.3 安装git
yum install -y git
安装结束后安全起见,确认是否满足官方要求的Git >= 1.7.5
git version
1.4 安装go语言环境(因为官方yum和阿里yum都没有go的安装包,故只能通过fedora的epel仓库来安装)
yum install -y epel-release
yum install golang -y
安装结束后安全起见,确认是否满足官方要求的Go >= 1.6
go version
1.5 安装redis
由于部署go时已经安装了epel,故直接执行下面的安装命令(如果没有装epel,会提示No package redis available,也就是没有安装包可用,因为官方yum和阿里yum都没有redis,故只能通过fedora的epel仓库来安装)
yum install redis -y
启动redis
systemctl start redis
设置redis开机启动
systemctl enable redis
可以用下面的语句查看redis是否开启
systemctl status redis
1.6 安装mysql
步骤:
1)下载repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2)安装该rpm包(安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo)
rpm -ivh mysql-community-release-el7-5.noarch.rpm
3)安装mysql
yum install mysql-server -y
4)启动mysql
systemctl start mysql
可以用下面的语句查看mysql是否开启
systemctl status mysql
1.7 设置环境变量GOROOT和GOPATH
export GOROOT=/usr/lib/golang
export GOPATH=/home1.8 初始化数据库
cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git
cd /tmp/falcon-plus/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
rm -rf /tmp/falcon-plus/ 再运行“mysql -h..................”时会提示“Enter password”,如果mysql的root没有设置密码,回车即可。
二、部署后端 {两种方法:1)源码编译,2)下载编译好的二进制文件。【两者选其一】}
1).源码编译
1.1 将open-falcon的源码从github上get下来
步骤:
1)创建GOPATH下的一个本地的路径
mkdir -p $GOPATH/src/github.com/open-falcon
2)进入该路径
cd $GOPATH/src/github.com/open-falcon
3)将源码get到本地
git clone https://github.com/open-falcon/falcon-plus.git
1.2 编译源码并打包
步骤:
1)进入本地源码路径下
cd $GOPATH/src/github.com/open-falcon/falcon-plus/
2)使用go get获取rrdtool工具包(make过程卡壳的一个点)
go get github.com/open-falcon/rrdlite
这一步是官方教程没有提到的内容,如果不获取该工具包make的时候会报错。
3)编译所有模块
make all
4)打包
make pack
在$GOPATH/src/github.com/open-falcon/falcon-plus/目录下就多了刚才的压缩包“open-falcon-v0.2.1.tar.gz”。
2.1 创建工作目录
export WORKSPACE=/home/work
mkdir -p $WORKSPACE2.2 解压二进制包(包名根据实际进行修改)
由于我是根据本教程编译源码获得的压缩包,故需要切换到“$GOPATH/src/github.com/open-falcon/falcon-plus/”路径下。
包名由于make pack的时候就是open-falcon-v0.2.0.tar.gz,具体根据实际情况。
cd $GOPATH/src/github.com/open-falcon/falcon-plus/
tar -xzvf open-falcon-v0.2.0.tar.gz -C $WORKSPACE
2.3 修改配置文件cfg.json
猜测部分模块依赖连接数据库,因为如果不修改配置文件,aggregator模块会出现无法启动,graph、hbs、nodata、api、alarm模块会出现开启不报错但是状态为开启失败的情况。(个人认为这块的设计值得作为open-falcon优化的一个点,连接本机mysql如果失败是可以收到错误提示的,第一时间有报错提示总比什么都不显示或显示开启但实际开启失败强,如果别人服务都不知道怎么开起来,系统功能再强大有多少人硬着头皮部署下去而不是选择换个系统试试呢)
如果需要每个模块都能正常启动,需要将上面模块的cfg.json的数据库信息进行修改。根据本教程的配置,需要修改配置文件所在的目录:
模块 | 配置文件所在路径 |
aggregator | /home/work/aggregator/config/cfg.json |
graph | /home/work/graph/config/cfg.json |
hbs | /home/work/hbs/config/cfg.json |
nodata | /home/work/nodata/config/cfg.json |
api | /home/work/api/config/cfg.json |
alarm | /home/work/alarm/config/cfg.json |
1)修改aggregator的配置文件
vim /home/work/aggregator/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
2)修改graph的配置文件
vim /home/work/graph/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
3)修改hbs的配置文件
vim /home/work/hbs/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
4)修改nodata的配置文件
vim /home/work/nodata/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
5)修改api的配置文件
vim /home/work/api/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
6)修改alarm的配置文件
vim /home/work/alarm/config/cfg.json
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。
2.4 启动后端模块
cd $WORKSPACE
./open-falcon start可以用下面的命令检查各个模块的启动情况
./open-falcon check
更多命令的用法(命令的例子是启动agent模块)
# ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent
./open-falcon check
falcon-graph UP 53007
falcon-hbs UP 53014
falcon-judge UP 53020
falcon-transfer UP 53026
falcon-nodata UP 53032
falcon-aggregator UP 53038
falcon-agent UP 53044
falcon-gateway UP 53050
falcon-api UP 53056
falcon-alarm UP 53063
For debugging , You can check $WorkDir/$moduleName/log/logs/xxx.log
2)下载编译好的二进制文件
2.1 创建工作目录
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falconmkdir -p $WORKSPACE
2.2 下载解压二进制包
tar -xzvf open-falcon-v0.2.1.tar.gz -C $WORKSPACE
2.3 修改各配置文件中数据库账号密码
cd $WORKSPACE
grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:/real_user:real_password/g'
2.4 启动
cd $WORKSPACE
./open-falcon start
./open-falcon check
更多命令用法
# ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent
./open-falcon check
falcon-graph UP 53007
falcon-hbs UP 53014
falcon-judge UP 53020
falcon-transfer UP 53026
falcon-nodata UP 53032
falcon-aggregator UP 53038
falcon-agent UP 53044
falcon-gateway UP 53050
falcon-api UP 53056
falcon-alarm UP 53063
三、部署前端
3.1 创建工作目录
export HOME=/home/work
export WORKSPACE=$HOME/open-falcon
mkdir -p $WORKSPACE
cd $WORKSPACE3.2 获取前端代码
cd $WORKSPACE
git clone https://github.com/open-falcon/dashboard.git3.3 安装依赖包
yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools"
cd $WORKSPACE/dashboard/
virtualenv ./env
./env/bin/pip install -r pip_requirements.txt
3.4 修改配置
dashboard的配置文件为: 'rrd/config.py',请根据实际情况修改
## API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"
## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为"" 3.5 开启8081端口
1)防火墙添加8081端口永久开放
firewall-cmd --add-port=8081/tcp --permanent
2)重新载入防火墙配置
firewall-cmd --reload
3.6 在生产环境启动
bash control start
3.7 以开发者模式启动
./env/bin/python wsgi.py
open http://127.0.0.1:8081 in your browser.
3.8 查看日志
bash control tail
dashbord用户管理
dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
超级管理员可以给普通用户分配权限管理。
小提示:注册账号能够被任何打开dashboard页面的人注册,所以当给相关的人注册完账号后,需要去关闭注册账号功能。只需要去修改api组件的配置文件cfg.json,将signup_disable配置项修改为true,重启api即可。当需要给人开账号的时候,再将配置选项改回去,用完再关掉即可。
四、客户端agent部署
【linux】
4.1 可以使用服务端包open-falcon-v0.2.1.tar.gz解压,也可以单独复制agent目录(需安装go环境)
./open-falcon start agent 启动进程
./open-falcon stop agent 停止进程
./open-falcon monitor agent 查看日志 4.2 配置说明
配置文件必须叫cfg.json,可以基于cfg.example.json修改
{
"debug": true, # 控制一些debug信息的输出,生产环境通常设置为false
"hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
"ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
"plugin": {
"enabled": false, # 默认不开启插件机制
"dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录
"git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址
"logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log
},
"heartbeat": {
"enabled": true, # 此处enabled要设置为true
"addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口
"interval": 60, # 心跳周期,单位是秒
"timeout": 1000 # 连接hbs的超时时间,单位是毫秒
},
"transfer": {
"enabled": true,
"addrs": [
"127.0.0.1:18433"
], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
"interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
"timeout": 1000 # 连接transfer的超时时间,单位是毫秒
},
"http": {
"enabled": true, # 是否要监听http端口
"listen": ":1988",
"backdoor": false
},
"collector": {
"ifacePrefix": ["eth", "em"], # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
"mountPoint": []
},
"default_tags": {
},
"ignore": { # 默认采集了200多个metric,可以通过ignore设置为不采集
"cpu.busy": true,
"df.bytes.free": true,
"df.bytes.total": true,
"df.bytes.used": true,
"df.bytes.used.percent": true,
"df.inodes.total": true,
"df.inodes.free": true,
"df.inodes.used": true,
"df.inodes.used.percent": true,
"mem.memtotal": true,
"mem.memused": true,
"mem.memused.percent": true,
"mem.memfree": true,
"mem.swaptotal": true,
"mem.swapused": true,
"mem.swapfree": true
}
} 4.3 验证
./falcon-agent --check
【windows】
4.1 下载windows-agent
首先安装go环境
agent包
把 windows-agent-release-1.0.2.zip解压到windows-agent-master目录下
4.2 修改配置文件
配置文件请参照cfg.example.json,修改该文件名为cfg.json
{
"debug": true,
"logfile": "windows.log", //日志的输出路径
"hostname": "",
"ip": "",
"iis":{
"enabled": false,
"websites": [
"Default Web Site" //web 的站点,可以留空,默认会采集_Total的
]
},
"mssql":{
"enabled": false,
"addr":"127.0.0.1",
"port":1433,
"username":"sa",
"password":"123456",
"encrypt":"disable",
//disable - 不加密
//false - 除认证报文外不加密
//true -加密
//SQL Server 2008 和 SQL Server 2008 R2 必须选择 disable,否则无法正常认证。要修复这个问题,需要升级 SQL Server 2008 R2 SP2,或 SQL Server 2008 SP3
"instance": [ //要采集数据库实例名
"test"
]
},
"heartbeat": {
"enabled": true,
"addr": "127.0.0.1:6030",
"interval": 60,
"timeout": 1000
},
"transfer": {
"enabled": true,
"addrs": [
"127.0.0.1:8433"
],
"interval": 60,
"timeout": 1000
},
"http": {
"enabled": true,
"listen": ":1988",
"backdoor": false
},
"collector": {
"ifacePrefix": ["本地连接"] //所采集的网卡名,注意 falcon 默认不支持中文名的tag,因此需要修改 graph 表的编码为 uft8
},
"ignore": {
"cpu.busy": true,
}
}
4.3 运行
以下命令需在管理员模式下运行开 cmd 或 Powershell
先试运行一下
.\windows-agent.exe
2016/08/08 13:44:31 cfg.go:96: read config file: cfg.json successfully
2016/08/08 13:44:31 var.go:31: logging on windows.log
2016/08/08 13:44:31 http.go:64: listening :1988
等待1-2分钟,观察输出,确认运行正常 使用 nssm 注册为 Windows 服务。
.\nssm.exe install windows-agent
启动服务
.\nssm.exe start windows-agent
4.3 测试
http 信息维护接口
curl http://127.0.0.1:1988/health
正常则返回 ok
curl http://127.0.0.1:1988/version
返回版本
curl http://127.0.0.1:1988/workdir
返回工作目录
curl http://127.0.0.1:1988/config
返回配置
http 转发接口
http://127.0.0.1:1988//v1/push