1.open-falcon介绍
1.1特点
容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。
告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。
告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期,支持告警合并。
历史数据高效查询:秒级返回上百个指标一年的历史数据。
Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能
1.2架构
每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标,这些指标包括不限于以下几个方面,共计200多项指标。
只要安装了falcon-agent的机器,就会自动开始采集各项指标,主动上报,不需要用户在server做任何配置(这和zabbix有很大的不同),这样做的好处,就是用户维护方便,覆盖率高。当然这样做也会server端造成较大的压力,不过open-falcon的服务端组件单机性能足够高,同时都可以水平扩展,所以自动多采集足够多的数据,反而是一件好事情,对于SRE和DEV来讲,事后追查问题,不再是难题。
另外,falcon-agent提供了一个proxy-gateway,用户可以方便的通过http接口,push数据到本机的gateway,gateway会帮忙高效率的转发到server端
2.准备环境
2.1配置yum源
mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum update -y
2.2安装git
(要求Git >= 1.7.5)
[root@10~]# git version
gitversion 1.8.3.1
2.3安装go语言环境(go>=1.6)
[root@10 ~]# yum install -y epel-release
[root@10 ~]# yum install golang -y
[root@10 ~]# go version
go version go1.9.4 linux/amd64
2.4安装redis
由于部署go时已经安装了epel,故直接执行下面的安装命令
[root@10 ~]# yum install redis -y
[root@10 ~]# systemctl start redis
[root@10 ~]# systemctl enable redis
[root@10 ~]# systemctl status redis
2.5安装MySQL
2.5.1配置epel源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2.5.2安装rpm包
安装这个包后,会获得两个mysql的yum repo源
/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo
[root@10 ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
2.5.3安装MySQL 并且查看
[root@10 ~]# yum install mysql-server -y
[root@10 ~]# systemctl start mysql
[root@10 ~]# systemctl status mysql
3.后端安装
3.1环境准备
[root@10 ~]# mkdir -p /home/src/github.com/open-falcon/
[root@10 ~]# cd /home/src/github.com/open-falcon/
[root@10 /home/src/github.com/open-falcon]# git clone https://github.com/open-falcon/falcon-plus.git
3.2初始化数据库
[root@10 /home/src/github.com/open-falcon]# cd 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
3.3编译源码打包
[root@10 /home/src/github.com/open-falcon]# cd falcon-plus
[root@10 /home/src/github.com/open-falcon/falcon-plus]# go get github.com/open-falcon/rrdlite
[root@10 /home/src/github.com/open-falcon/falcon-plus]# make all
[root@10 /home/src/github.com/open-falcon/falcon-plus]# make pack
在/home/src/github.com/open-falcon/falcon-plus/目录下就多了刚才的压缩包“open-falcon-v0.2.0.tar.gz”
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html中官方有提供编译包,如果编译过程不顺利可以直接下载编译包
4.部署后端
4.1环境准备
mkdir -p /home/work
cd /home/src/github.com/open-falcon/falcon-plus
tar -xzvf open-falcon-v0.2.0.tar.gz -C /home/work
4.2修改配置
因为如果不修改配置文件,aggregator模块会出现无法启动,graph、hbs、nodata、api、alarm模块会出现开启不报错但是状态为开启失败的情况
4.3模块及配置文件所在位置
模块 配置文件所在路径
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
4.4修改aggregator的配置文件
[root@10/home/src/github.com/open-falcon]# vim /home/work/aggreg
mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”
其他几个配置文件与之相同
4.5启动后端模块检查
[root@10 /home/src/github.com/open-falcon]# cd /home/work/
[root@10 /home/src/github.com/open-falcon]# ./open-falcon start
[root@10 /home/work]# ./open-falcon check
falcon-graph UP 3277
falcon-hbs UP 3280
falcon-judge UP 3285
falcon-transfer UP 3291
falcon-nodata UP 3305
falcon-aggregator UP 3308
falcon-agent UP 3315
falcon-gateway UP 3323
falcon-api UP 3334
falcon-alarm UP 3338
5 前端部署
5.1环境准备
mkdir-p /home/front/open-falcon
5.2 获取前端的代码 安装依赖
cd /home/front/open-falcon
git clone https://github.com/open-falcon/dashboard.git
yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools" -y
5.3安装Dashboard
dashboard是面向用户的查询界面,在这里,用户可以看到push到graph中的所有数据,并查看其趋势图
[root@10 /home/front/open-falcon]# cd /home/front/open-falcon/dashboard/
[root@10 /home/front/open-falcon/dashboard]# virtualenv ./env
[root@10 /home/front/open-falcon/dashboard]# ./env/bin/pip install -r pip_requirements.txt
5.4注意
1. yum install -ypython-virtualenv 时可能报错
2. error: command 'gcc' failed with exit status1
3.错误:python-develconflictswithpython-2.7.5-16.el7.x86_64
解决方案:
解决依赖关系
由于是提醒低版本导致错误,需要高版本,那我删除掉低版本
[root@10 /dev]# rpm -qa|greppython-2.7.5-34.el7.x86_64|xargs rpm -e --nodeps
[root@10/dev]# rpm -qa|grep python-2.7
python-2.7.5-68.el7.x86_64
5.5启动open-falcon
[root@10 /home/src/github.com]# cd /home/front/open-falcon/dashboard/
[root@10 /home/front/open-falcon/dashboard]# bash control start
[root@10 /home/front/open-falcon/dashboard]# bash control status
falcon-dashboard now is running, pid=11657
6web界面
6安装open-falcon之agent
功能
采集数据,解析数据,上报数据至transfer
基本涵盖了系统层面监控指标,直接将数据转换为metricValue形式,上报至transfer
支持插件采集,代码插件可受git管理,放置在plugin目录,从HBS中获取执行周期,版本等
支持数据直接上报,提供HTTPAPI,将收到的数据转换为mtricValue形式,上报到transfer
支持HTTP API对自身控制
配置文件:
设置采集数据的脚本更新地址
指定agent的上游模块的地址,包括heartbeat和transfer模块
agent开放的HTTP的端口
采集数据的过滤条件6.1搭建
通过scp命令把open-falcon server服务器/home/work/目录下的agent和open-falcon发送到需要监控的服务器上
6.2配置详解
[root@db02 /home/work/agent/config]# vim cfg.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
}
}
6.3启动并查看
[root@db02 /home/work]# ./open-falcon start agent #启动
[falcon-agent] 2225
[root@db02 /home/work/agent/bin]# ./falcon-agent --check
netstat ... ok
ss -s ... ok
ps aux ... ok
df.bytes ... ok
net.if ... ok
disk.io ... ok
memory ... ok
ss -tln ... ok
du -bs ... ok
kernel ... ok
loadavg ... ok
cpustat ... ok