监控 | open-falcon | 安装
监控 | open-falcon | 安装
1. 简介
主要看中了它的水平扩展,画图比zabbix要友好,告警支持简单压缩。

- 绿色:基础组件;
- 蓝色:作图链路
- 红色:报警链路
- 橙色:域名
1.1 基础组件
agent
每台实例上都需安装,agent从hbs上拉取配置信息,采集数据后上报(push)给transfer。
transfer
transfer是一个无状态的集群,挂掉1台或多台均无影响。transfer接收agent上报的数据,然后使用一致性哈希进行数据分片、并把分片后的数据转发给graph、judge集群(transfer还会打一份数据到opentsdb)。类似zabbix里的proxy角色。transfer 提供jsonRpc接口和telnet接口两种方式
transfer集群可使用域名,让agent通过域名来访问,从而实现高可用性和自动切换,同时DNS还可以保证优先用本机房内的transfer
transfer的数据来源,一般有三种:
- falcon-agent采集的基础监控数据
- falcon-agent执行用户自定义的插件返回的数据
- client library:线上的业务系统,都嵌入使用了统一的perfcounter.jar,对于业务系统中每个RPC接口的qps、latency都会主动采集并上报
center-status
中心存储,包括mysql、redis。mysql用于存储配置信息、索引数据。redis用于报警缓存队列。
1.2 作图链路
graph
graph组件用于存储、归档作图数据,可以集群部署。每个graph实例会处理一个分片的数据: 接收transfer发送来的分片数据,归档、存储、生成索引;接受query对该数据分片的查询请求。
query
数据分片存储在graph上,用户查询起来比较麻烦。query负责提供一个统一的查询入口、屏蔽数据分片的细节。query的使用场景主要有:(1)dashboard图表展示 (2)使用监控数据做二次开发。
建议将query集群挂载到一个域名下。考虑到高可用,query至少部署两个实例(当前,两个实例部署的IDC、机架等需要负责高可用的规范)。
dashboard
dashboard用户监控数据的图表展示,是一个web应用
1.3 报警链路
judge
judge用于实现报警策略的触发逻辑
hbs
hbs是Open-Falcon的配置中心,负责 适配系统的配置信息、管理agent信息等。hbs单实例部署,每个实例都有完整的配置信息
protal
portal提供监控策略管理相关的UI,使用频率较低、系统负载很小。
uic
uic是用户信息管理中心,提供用户管理的UI,使用频率较低、系统负载较小
alarm(sender)
alarm负责整理报警信息,使变成适合发送的形式。alarm做了一些报警合并相关的工作,当前只能单实例部署(待优化)
links
links负责报警合并后的详情展示工作。
2. 安装
open-falcon安装主要有3部分
- 环境准备(gcc, go mysql)
- 后端部署
- 前端部署
2.1 环境准备
更新yum源
http://mirrors.163.com/.help/centos.html放入/etc/yum.repos.d/目录yum clean all清空缓存
安装gcc
yum -y install gcc*安装gcc库
安装git
yum install -y git 安装git,版本>=1.7.5即可
安装go
tar -C /usr/local -xzf go1.8XXX下载go并解压缩
vim ~/.bashrc添加环境变量
export PATH=$PATH:/usr/local/go/bin
source ~/.bashrc执行生效,可用go version命令检查版本
安装Redis
安装扩展源yum install -y epel-release
systemctl start redis启动
systemctl enable redis设置开机启动
systemctl status redis查看启动状态
安装mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 获取扩展源
rpm -ivh mysql-community-release-el7-5.noarch.rpm安装
yum install mysql-server
安装完毕后启动
systemctl start mysql启动
systemctl status mysql 查看启动状态
设置环境变量
export GOROOT=/usr/lib/golang
export GOPATH=/hom
初始化mysql表结构
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设置密码
systemctl status mysql查看mysql运行状态
mysqladmin -u root password 'XXXX' 设置密码
mysql -u root -p登陆测试
2.2 安装后端
下载二进制包
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon
mkdir -p $WORKSPACE
tar -xzvf open-falcon-v0.2.1.tar.gz -C $WORKSPACE
修改配置文件
- aggregator
路径:/home/work/open-falcon/aggregator/config/cfg.json
"database": {
"addr": "real_user:real_password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
"idle": 10....
修改里面database里的用户名密码部分
- graph
路径:/home/work/open-falcon/graph/config/cfg.json
"db": {
"dsn": "real_user:real_password@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true",
"maxIdle": 4
},
修改db部分用户名密码
- hbs
路径:/home/work/open-falcon/hbs/config/cfg.json
"database": "real_user:real_password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
"hosts": "",
- nodata
路径:/home/work/open-falcon/nodata/config/cfg.json
"config": {
"enabled": true,
"dsn": "real_user:real_password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true&wait_timeout=604800",
"maxIdle": 4
}
修改dsn用户密码部分
- api
路径:/home/work/open-falcon/api/config/cfg.json
"db": {
"falcon_portal": "real_user:real_password@tcp(127.0.0.1:3306)/falcon_portal?charset=utf8&parseTime=True&loc=Local",
"graph": "real_user:real_password@tcp(127.0.0.1:3306)/graph?charset=utf8&parseTime=True&loc=Local",
"uic": "real_user:real_password@tcp(127.0.0.1:3306)/uic?charset=utf8&parseTime=True&loc=Local",
"dashboard": "real_user:real_password@tcp(127.0.0.1:3306)/dashboard?charset=utf8&parseTime=True&loc=Local",
"alarms": "real_user:real_password@tcp(127.0.0.1:3306)/alarms?charset=utf8&parseTime=True&loc=Local",
"db_bug": true
},
修改里面所有real_user和real_password部分
- alarm
路径:/home/work/open-falcon/alarm/config/cfg.json
"falcon_portal": {
"addr": "real_user:real_password@tcp(127.0.0.1:3306)/alarms?charset=utf8&loc=Asia%2FChongqing",
"idle": 10,
"max": 100
}
启动后端模块
cd /home/work/open-falcon
./open-falcon start #启动
./open-falcon check #检查启动状况
falcon-graph UP 18987
falcon-hbs UP 18999
falcon-judge UP 19010
falcon-transfer UP 19019
falcon-nodata UP 19028
falcon-aggregator UP 19037
falcon-agent UP 19048
falcon-gateway UP 19058
falcon-api UP 19066
falcon-alarm UP 19080
都是UP则表示启动成功
支持如下命令./open-falcon [start|stop|restart|check|monitor|reload] module
2.3 安装前端
创建前端目录
export FRONTSPACE=/home/front/open-falcon
mkdir -p $FRONTSPACE
下载包
cd $FRONTSPACE
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
cd $FRONTSPACE/dashboard/
virtualenv ./env
./env/bin/pip install -r pip_requirements.txt
修改配置文件
路径:/home/front/open-falcon/dashboard/rrd/config.py
PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","falcon")
PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","falcon")
和
ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")
ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","")
按照实际情况修改DB用户名密码信息
2.4 启动和停止
开发模式启动
bash control start #启动
bash control stop #停止
bash control tail #查看日志
默认没有任何账户,手动注册的第一个root账户自动设置为超级管理员。
3. 使用
3.1 安装交换机监控
open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。这里使用swcollector模块采集。
原理
swcollector根据配置文件中,配置好的交换机IP列表或者IP网段,每隔一个固定的周期,通过SNMP协议,来采集交换机的运行指标,并上报给Open-Falcon。
注意点:
- swcollector需要安装在有交换机SNMP访问权限的服务器上。
- 因ping需要root权限,因此swcollector需要
root权限运行 - 需安装
snmpwalk命令
安装
安装
下载完成后,直接解压后即可使用
chmod +x control
支持的用法:
./control build|pack|start|stop|restart|status|tail
修改配置文件
- cfg.json
该文件为
{
"debug": false,
"debugmetric":{
"endpoints":["vpn-lw"],
"metrics":["AnyconnectSession","ConnectionStat"],
"tags":""
},
"switch":{
"enabled": true,
"ipRange":[
"172.19.0.10" #修改为实际的IP段
],
"gosnmp":true, #修改为false,使用snmpwalk采集
"pingTimeout":300,
"pingRetry":4,
"community":"XXX", #修改为实际的团体字
"snmpTimeout":1000,
"snmpRetry":5,
"ignoreIface": ["Nu","NU","Vlan","Vl"],
"ignoreOperStatus": true,
"speedlimit":0,
"ignorePkt": true,
"pktlimit": 0,
"ignoreBroadcastPkt": true,
"broadcastPktlimit": 0,
"ignoreMulticastPkt": true,
"multicastPktlimit": 0,
"ignoreDiscards": true,
"discardsPktlimit": 0,
"ignoreErrors": true,
"errorsPktlimit": 0,
"ignoreUnknownProtos":true,
"unknownProtosPktlimit": 0,
"ignoreOutQLen":true,
"outQLenPktlimit": 0,
"fastPingMode": true,
"limitConcur": 1000,
"limitCon": 4
},
"switchhosts":{
"enabled":false, #允许修改主机名,启用该功能
"hosts":"./hosts.json"
},
"customMetrics":{
"enabled":false, #启用该功能以便给某项值打metrics
"template":"./custom.json"
},
"transfer": {
"enabled": true,
"addr": "127.0.0.1:8433", #修改为服务器实际地址,端口不变
"interval": 300, #修改数据发送间隔。修改为60S
"timeout": 1000
},
"http": {
"enabled": false,
"listen": ":1989",
"trustIps":["192.168.0.1","192.168.0.2"]
}
}
将ipRange修改为实际的交换机IP段。
host.json
这里主要存储IP地址和主机名的映射关系custom.json
这个主要存储交换机自定义的oid等信息
使用
启动后,在服务器的dashboard上会自动显示出交换机来,且以主机名的形式显示;

选择该交换机后点击“刷新counter列表”会将采集到的所有端口信息显示出来
一直在想交换机的流量图展示如何像zabbix一样通过screen来展示。最重要的是能够自动生成。测试了好几次终于发现counters列表是支持正则表达式的。
交换机的一个端口图展示在一个图里的方法
metric=switch.if.In ifName=40GE1/0/1
metric=switch.if.Out ifName=40GE1/0/1
然后视角选择counter视角即可。
假如让特定类型端口的在一张图上展示,则可以使用正则表达式
metric=switch.if.In ifName=40GE.*$
metric=switch.if.Out ifName=40GE.*$
可以发现所有的都展示出来了,但是一些端口是down的也在里面。
监控 | open-falcon | 安装的更多相关文章
- 强大的开源企业级数据监控利器Lepus安装与配置管理
开篇介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库 ...
- 关于Nagios通过NRPE监控客户端的安装与配置
环境介绍>>>>>>>>>>>>>>>>>>>>>>>> ...
- 小米开源监控系统Open-Falcon安装使用笔记
小米开源监控系统Open-Falcon安装使用笔记-BB保你大-51CTO博客 https://blog.51cto.com/chenguomin/1865550
- 开源监控软件ganglia安装手册
Ganglia是一个监控服务器,集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标. Ganglia的强大在于:g ...
- fpmmm(mpm)监控mysql模块安装
zabbix mpm监控mysql是一个蛮不错的监控模块,不过最近官网已经不叫mpm了,而是叫fpmmm,理由为: fpmmm is the successor of mpm. mpm was ren ...
- zabbix监控系统客户端安装
原文:http://blog.chinaunix.net/uid-25266990-id-3387002.html 测试使用agentd监听获取数据. 服务端的安装可以查看http://blog.ch ...
- 天兔(Lepus)监控操作系统(OS)安装配置
监控和被监控端都要安装和配置snmp: [root@HE1bin]# yum install net-snmp* [root@HE1bin]# vi /etc/snmp/snmpd.conf 41行将 ...
- 天兔(Lepus)监控系统快速安装部署
Lepus安装需要Lamp环境,Lamp环境的安装个人认为比较费劲,XAMPP的一键部署LAMP环境省心省力, lepus官网手册也建议采用XAMPP的方式安装,lepus也是在XAMPP上进行研发的 ...
- zabbix监控windows agent安装配置
下载Windows的zabbix客户端 下载地址:http://www.zabbix.com/download.php 从官方下载Zabbix Agent后,压缩包里面有2个目录,bin和conf,c ...
- Zabbix3.0基础教程之一:系统监控,zabbix安装与基本配置
一.安装环境: 系统环境: 系统版本:CentOS Linux release 7.4.1708 (Core) 内核版本:3.10.0-693.el7.x86_64 关闭Firewall与SELinu ...
随机推荐
- USB设备类学习笔记
usb audio class 版本目前有3个版本 分别是1.0,2.0,3.0:1.0针对各个厂家的设备具有不同的描述符,而2.0则将它们统一简化,3.0则是最新的,还没有与2.0作进一步比较:因 ...
- C pointer again …
记录一个比较基础的东东…… C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...
- PopupWindow计算弹出位置
1.首先自定义PopupWindow popWindowView= LinearLayout.inflate(context, R.layout.popupWindow,null); po ...
- Windows的奇巧淫技(为什么GIF显示不出来??)
谁的电脑里没点小秘密?东藏西藏到最后自己都找不到了有木有?今天教大家个隐藏文件的高招: 将任意文件隐藏到图片中!怎么样?再也不用建什么「马列主义哲学」的文件夹啦!
- NodeJs在windows上安装配置测试
Node.js简介简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个 ...
- 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇
导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...
- 【CSS/JS】如何实现单行/多行文本溢出的省略(...)--老司机绕过坑道的正确姿势
写前端UI的朋友们也许都遇到过这样的问题:我们需要实现这样一个需求,在一个父级元素中隐藏一个可能过长的文本: 这个文本可能是单行的: 也可能是多行的: 下面我就给大家展示如何简单或优雅地实 ...
- 使用 shell 在多服务器上批量操作
需求 日常工作中,我们常需要同时在多台服务器上执行同样的命令,如对比日志.检查服务等.这就需要我们有服务器批量操作的能力. 两年前写过一篇文章,shell实现SSH自动登陆 使用 shell 的 ex ...
- Python编程练习:平方值格式化
问题描述:获得用户输入的一个整数N,计算N的平方值:结果采用宽度20字符方式居中输出,空余字符采用减号(-)填充.如果结果超过20个字符,则以结果宽度为准. 示例: 源码: a = int(input ...
- Hadoop 倒排索引
倒排索引是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎.它主要是用来存储某个单词(或词组)在一个文档或一组文档中存储位置的映射,即提供了一种根据内容来查找文档的方式.由于不是根据文档来确 ...