open-falcon 小米开源监控

1.open-falcon介绍

监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题

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

5.6以开发者的模式启动

./env/bin/python wsgi.py

5.7 开启8081端口

5.7.1 防火墙永久开启8081端口

firewall-cmd --add-port=8081/tcp --permanent

5.7.2重新载入防火墙配置

firewall-cmd --reload

6.web界面



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  
o语言环境(要求Go >= 1.6)





  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值