1.open-falcon介绍
1.1特点
容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。
告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。
告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期,支持告警合并。
历史数据高效查询:秒级返回上百个指标一年的历史数据。
Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能
1.2架构
每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标,这些指标包括不限于以下几个方面,共计200多项指标。
- CPU相关
- 磁盘相关
- IO
- Load
- 内存相关
- 网络相关
- 端口存活、进程存活
- ntp offset(插件)
- 某个进程资源消耗(插件)
- netstat、ss 等相关统计项采集
- 机器内核配置参数
只要安装了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