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

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


o语言环境(要求Go >= 1.6)

猜你喜欢

转载自blog.csdn.net/weixin_42280360/article/details/80453766