小米开源监控软件 - open-falcon 安装篇
open-falcon官网地址:http://open-falcon.org/
相关的文档地址(v2.0):https://book.open-falcon.org/zh_0_2/intro/
官网的架构示意图

这里尽量以我的理解来说一下这个架构图每个组件的作用(大部分来自官网):
- falcon-agent是部署在每一台被监控的主机上的,主要作用是负责数据采集和数据上报,另外它还有一个proxy-gateway的接口提供给用户使用,这样用户就可以自定义一些数据,然后上报给agent,agent再上报到transfer
- transfer是一个无状态的集群(可单点)。transfer接收agent上报的数据,然后使用一致性哈希进行数据分片、并把分片后的数据转发给graph、judge集群(transfer还会打一份数据到opentsdb)。其消耗的资源 主要是网络和CPU
- transfer辐射的一个组件是graph,graph组件用于存储、归档作图数据,可以集群部署。每个graph实例会处理一个分片的数据: 接收transfer发送来的分片数据,归档、存储、生成索引;接受query对该数据分片的查询请求。graph会持久存储监控数据,频繁写入磁盘,状态数据会缓存在内存,因此graph消耗的主要资源是磁盘存储、磁盘IO和内存资源。
- 图中API的用途是处理终端用户请求,收到查询请求后,会去多个graph里面,查询不同metric的数据,汇总后统一返回给用户。
- 这里顺便说一下dashboard,是一个可视化的用户管理ui,用户可以以多个维度来搜索endpoint列表,即可以根据上报的tags来搜索关联的endpoint。
- Aggregato 的作用是聚合监控数据,比如说多个机器的某个指标,提供给dashboard显示
- nodata 组件的作用是检测监控数据的上报异常,比如agent.alived,异常可以返回-1,重新push到transfer,从而触发告警。
- tranfer辐射的还有一个叫judge的插件,judge用于实现报警策略的触发逻辑。judge实现触发计算时,会在本地缓存 触发逻辑的中间状态和定量的监控历史数据,因此会消耗较多的内存资源和计算资源。
- 告警judge触发需要一些触发条件,这里需要heartbeat server的策略下发,hbs是open-falcon的配置中心,负责 适配系统的配置信息、管理agent信息等。
- 这样judge收到告警策略(portal ui组件配置)之后进行告警判断,符合规则的就放到redis队列中,然后视配置情况进行告警或者合并告警(links组件),告警使用的是alarm组件,alarm需要调用sender(email, 短信api…)
https://book.open-falcon.org/zh_0_2/practice/deploy.html
编译安装后端
这里我机器的原因我只会进行单机的安装,有条件的可以实现以下集群安装:
安装环境:
1 | OS:CentOS Linux release 7.3.1611 (Core) |
这里我的mysql是源码安装以外,其它都使用yum安装方式。
yum install git golang redis
基础环境配置之后,设置一下GOPATH环境变量
1 | vim ~/.bashrc |
#这个是自定义的,可以理解成你放go代码的地方,通常地下还需要有src(放源码),pkg,bin 三个目录,而这个路径又叫做workspace
#这里务必写对,除了GOPATH是你自定义的,其他请按照这个来,不然编译的时候会出错
1 | mkdir -p $GOPATH/src/github.com/open-falcon |
创建需要的数据库
先来看看需要导入的5个sql文件
导入到mysql数据库1
2
3
4cd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema
for i in \`ls ./\` ;
do mysql -uroot -P4400 -h127.0.0.1 -p123456 < $i;
done
创建编译后的文件地址
mkdir /opt/open-falcon
编译open-falcon后端服务
1 | cd $GOPATH/src/github.com/open-falcon/falcon-plus/ |
执行成功出现下边这个压缩包:
open-falcon-v0.2.1.tar.gz
1 | tar -xf open-falcon-v0.2.1.tar.gz -C /opt/open-falcon/ |
修改mysql的端口和密码,否则启动失败
1 | cd /opt/open-falcon |
启动后端:
./open-falcon start
观察一下成功输出
检查后端:
./open-falcon check
观察一下check输出
安装前端
选择性安装依赖:
1 | yum install -y python-virtualenv python-devel openldap-devel mysql-devel |
安装dashboard
1 | cd /opt/open-falcon |
创建一个虚拟python环境env
1 | cd dashboard |
使用虚拟环境安装python依赖,独立于宿主机
1 | ./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple |
修改一下rrd的配置文件,主要是mysql的配置,其他按需修改
1 | vim rrd/config.py |
启动前端:
./env/bin/python wsgi.py #这是以开发者模式启动,将会阻塞终端
或者./control start #以生产环境启动,另外./control stop就是停止dashboard
查看日志
./control tail #查看日志
其他各相关的日志在各自模块下的log文件夹下
使用的相关端口
[root@int-test-1 dashboard]# netstat -tunpl | grep fa
tcp6 0 0 :::6055 :::* LISTEN 7166/falcon-aggrega
tcp6 0 0 :::6090 :::* LISTEN 7158/falcon-nodata
tcp6 0 0 :::6060 :::* LISTEN 7552/falcon-transfe
tcp6 0 0 :::14444 :::* LISTEN 7186/falcon-gateway
tcp6 0 0 :::6030 :::* LISTEN 7136/falcon-hbs
tcp6 0 0 :::6031 :::* LISTEN 7136/falcon-hbs
tcp6 0 0 :::8080 :::* LISTEN 7195/falcon-api
tcp6 0 0 :::8433 :::* LISTEN 7552/falcon-transfe
tcp6 0 0 :::6070 :::* LISTEN 7122/falcon-graph
tcp6 0 0 :::6071 :::* LISTEN 7122/falcon-graph
tcp6 0 0 :::9912 :::* LISTEN 7209/falcon-alarm
tcp6 0 0 :::3000 :::* LISTEN 994/grafana-server
tcp6 0 0 :::4444 :::* LISTEN 7552/falcon-transfe
tcp6 0 0 :::16060 :::* LISTEN 7186/falcon-gateway
tcp6 0 0 :::6080 :::* LISTEN 7147/falcon-judge
tcp6 0 0 :::18433 :::* LISTEN 7186/falcon-gateway
tcp6 0 0 :::6081 :::* LISTEN 7147/falcon-judge
tcp6 0 0 :::1988 :::* LISTEN 7176/falcon-agent
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 10660/python
8081端口是dashboard的端口,访问前端:
http://192.168.36.183:8081/
使用dashboard
登录之后需要先注册一个账号

填写相关的信息,注意邮箱地址,告警的时候会使用到

登录之后可以修改用户信息

查看dashboard

查看/过滤 endpoint 和counter

查看监控图像

好了,到这里就可以简单的查看监控的counter和监控图像了,接下来一篇会部署agent到其他节点,部署告警策略。