openfalcon+grafana安装配置手册及注意事项

更新时间:2023-12-04 16:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Open-falcon安装配置手册

1.open-falcon介绍

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

监控系统业界有很多杰出的开源监控系统。我们在早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界的一些大的互联网公司做监控,用监控的一些思考出发,设计开发了小米的监控系统:open-falcon。

open-falcon的目标是做最开放、最好用的互联网企业级监控产品。 产品特点:

强大灵活的数据采集:自动发现,支持falcon-agent、snmp、支持用户主动 push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、 metric、key-value tags)

水平扩展能力:支持每个周期上亿次的数据采集、告警判定、历史数据存

储和查询

高效率的告警策略管理:高效的portal、支持策略模板、模板继承和覆盖、

多种告警方式、支持callback调用

人性化的告警设置:最大告警次数、告警级别、告警恢复通知、告警暂停、

不同时段不同阈值、支持维护周期

高效率的graph组件:单机支撑200万metric的上报、归档、存储(周

期为1分钟)

高效的历史数据query组件:采用rrdtool的数据归档策略,秒级返回上

百个metric一年的历史数据

dashboard:多维度的数据展示,用户自定义Screen

高可用:整个系统无核心单点,易运维,易部署,可水平扩展

开发语言: 整个系统的后端,全部golang编写,portal和dashboard

使用python编写。

Open-falcon通过十几个组件结合使用,达到监控告警目的。

2.环境准备

依赖组件 安装redis

yum install -y redis 安装mysql

yum install -y mysql-server

初始化mysql表结构

# open-falcon所有组件都无需root账号启动,推荐使用普通账号安装,提升安全性。此处我们使用普通账号:work来安装部署所有组件# 当然了,使用yum安装依赖的一些lib库的时候还是要有root权限的。

export HOME=/home/workexport WORKSPACE=$HOME/open-falcon mkdir -p $WORKSPACEcd $WORKSPACE

git clone https://github.com/open-falcon/scripts.git cd ./scripts/

如果我们预备监控windows主机,可先将mysql数据库字符集修改为utf-8,这是由于监控windows主机时,windows主机的网卡信息很可能有中文。 show variables like \

SET XXXXXX='utf8'

mysql -h localhost -u root -p < db_schema/graph-db-schema.sql

mysql -h localhost -u root -p < db_schema/dashboard-db-schema.sql

mysql -h localhost -u root -p < db_schema/portal-db-schema.sql

mysql -h localhost -u root -p < db_schema/links-db-schema.sql

mysql -h localhost -u root -p < db_schema/uic-db-schema.sql

安装环境

open-falcon的后端组件都是使用Go语言编写的,本节我们搭建Go语言开发环境,clone代码

我们使用64位Linux作为开发环境,与线上环境保持一致。如果你所用的环境不同,请自行解决不同平台的命令差异

首先安装Go语言开发环境(ansible golang环境部署): cd ~

wget http://dinp.qiniudn.com/go1.4.1.linux-amd64.tar.gz tar zxf go1.4.1.linux-amd64.tar.gz

mkdir -p workspace/srcecho \.bashrcecho 'export GOROOT=$HOME/go' >> .bashrcecho 'export GOPATH=$HOME/workspace' >> .bashrcecho 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' >> .bashrcecho \接下来clone代码,以备后用 cd $GOPATH/src

mkdir github.comcd github.com

git clone --recursive https://github.com/open-falcon/of-release.git

3.open-falcon安装

解压of-release-v0.1.0.tar.gz获得以下16个压缩包

每个压缩包对应一个组件,创建独立组件目录,将压缩包解压到相应目录即可。

4.组件配置使用

3.1 agent

agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。因此需要被监控的所有主机都需要使用该组件。

配置文件必须叫cfg.json,可以基于cfg.example.json修改

{

\控制一些debug信息的输出,生产环境通常设置为false \采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的

\与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置 \

\默认不开启插件机制

\把放置插件脚本的git repo clone到这个目录 \# 放置插件脚本的git repo地址

\\# 插件执行的log,如果插件执行有问题,可以去这个目录看log },

\

\此处enabled要设置为true

\的地址,端口是hbs的rpc端口 \心跳周期,单位是秒

\连接hbs的超时时间,单位是毫秒 }, \

\此处enabled要设置为true \\\

], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA

\# 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer

\连接transfer的超时时间,单位是毫秒 }, \

\是否要监听http端口 \如果监听的话,监听的地址 },

\

\[\\# 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息 },

\默认采集了200多个metric,可以通过ignore设置为不采集 \\ } }

进程管理

./control start 启动进程 ./control stop 停止进程 ./control restart 重启进程 ./control status 查看进程状态

./control tail 用tail -f的方式查看var/app.log

验证

看var目录下的log是否正常,或者浏览器访问其1988端口。另外agent提供了一个--check参数,可以检查agent是否可以正常跑在当前机器上 ./falcon-agent --check

/v1/push接口

我们设计初衷是不希望用户直接连到Transfer发送数据,而是通过agent的/v1/push接口转发,接口使用范例:

ts=`date +%s`; curl -X POST -d \\\\

$ts,\\\\\\

3.2 transfer

transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。

# 校验服务,这里假定服务开启了6060的http监听端口。检验结果为ok表明服务正常启动。

curl -s \

服务启动后,可以通过日志查看服务的运行状态,日志文件地址为./var/app.log。可以通过调试脚本./test/debug查看服务器的内部状态数据,如 运行 bash ./test/debug 可以得到服务器内部状态的统计信息。 Configuration

debug: true/false, 如果为true,日志中会打印debug信息

http

- enable: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等 - listen: 表示监听的http端口 rpc

- enable: true/false, 表示是否开启该jsonrpc数据接收端口, Agent发送数据使用的就是该端口 - listen: 表示监听的http端口

socket #即将被废弃,请避免使用

- enable: true/false, 表示是否开启该telnet方式的数据接收端口,这是为了方便用户一行行的发送数据给transfer - listen: 表示监听的http端口

judge

- enable: true/false, 表示是否开启向judge发送数据

- batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值

- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认

- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认

- pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认

- maxConns: 连接池相关配置,最大连接数,建议保持默认 - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认 - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可

- cluster: key-value形式的字典,表示后端的judge列表,其中key代表后端judge名字,value代表的是具体的ip:port

graph

- enable: true/false, 表示是否开启向graph发送数据

- batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值

- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认

- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认

- pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认

- maxConns: 连接池相关配置,最大连接数,建议保持默认 - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认 - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可

- cluster: key-value形式的字典,表示后端的graph列表,其中key代表后端graph名字,value代表的是具体的ip:port(多个地址用逗号隔开, transfer会将同一份数据发送至各个地址,利用这个特性可以实现数据的多重备份)

tsdb

- enabled: true/false, 表示是否开启向open tsdb发送数据 - batch: 数据转发的批量大小,可以加快发送速度

- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认

- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认

- maxConns: 连接池相关配置,最大连接数,建议保持默认 - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认 - retry: 连接后端的重试次数和发送数据的重试次数

- address: tsdb地址或者tsdb集群vip地址, 通过tcp连接tsdb.

3.3 Graph

graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理query组件的查询请求、返回绘图数据。 # 校验服务,这里假定服务开启了6071的http监听端口。检验结果为ok表明服务正常启动。

curl -s \

启动服务后,可以通过日志查看服务的运行状态,日志文件地址为./var/app.log;如果需要详细的日志,可以将配置项debug设置为true。可以通过调试脚本./test/debug查看服务器的内部状态数据,如 运行 bash ./test/debug 可以得到服务器内部状态的统计信息。

配置说明 {

\是否开启debug日志 \

\表示是否开启该http端口,该端口为控制端口,主要用来对graph发送控制命令、统计命令、debug命令 \表示监听的http端口 }, \

\表示是否开启该rpc端口,该端口为数据接收端口

\表示监听的rpc端口 }, \

\绝对路径,历史数据的文件存储路径(如有必要,请修改为合适的路) }, \

\//MySQL的连接信息,默认用户名是root,密码为空,host为127.0.0.1,database为graph(如有必要,请修改),如果需要密码,在root:后跟密码 \连接池配置,连接池允许的最大连接数,保持默认即可 },

\调用超时时间,单位ms \扩容graph时历史数据自动迁移

\表示graph是否处于数据迁移状态 \数据迁移时的并发连接数,建议保持默认

\这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可(必须和transfer的配置中保持一致) \未扩容前老的graph实例列表 \ } } }

3.4 query

query组件,提供统一的绘图数据查询入口。query组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。

# 校验服务,这里假定服务开启了9966的http监听端口。检验结果为ok表明服务正常启动。

curl -s \

服务启动后,可以通过日志查看服务的运行状态,日志文件地址为./var/app.log。可以通过查询脚本./scripts/query读取绘图数据,如 运行 bash ./scripts/query \可以查询Endpoint=\对应的绘图数据。

配置说明

注意: 请确保 graph.replicas和graph.cluster 的内容与transfer的配置完全一致 {

\是否开启debug日志 \

\是否开启http.server \监听地址&端口 }, \

\单位是毫秒,与后端graph建立连接的超时时间,可以根据网络质量微调,建议保持默认

\单位是毫秒,从后端graph读取数据的超时时间,可以根据网络质量微调,建议保持默认

\连接池相关配置,最大连接数,建议保持默认 \32, // 连接池相关配置,最大空闲连接数,建议保持默认 \这是一致性hash算法需要的节点副本数量,应该与transfer配置保持一致

\后端的graph列表,应该与transfer配置保持一致;不支持一条记录中配置两个地址 \\ },

\适配grafana需要的API配置

\的http地址 \的http地址 \返回结果的最大数量 } } }

部署完成query组件后,请修改dashboard组件的配置、使其能够正确寻址到query组件。请确保query组件的graph列表 与 transfer的配置 一致。

3.5 dashboard

dashboard是面向用户的查询界面。在这里,用户可以看到push到graph中的所有数据,并查看其趋势图。

Dashboard是个Python的项目。安装&部署Dashboard时,需要安装一些依赖库。依赖库安装,步骤如下,

# 安装virtualenv。需要root权限。 yum install -y python-virtualenv

安装pip1.2.1,否则Python3.1以下版本会出现ssl验证错误。easy_install pip==1.2.1

# 安装依赖。不需要root权限、使用普通账号执行就可以。需要到dashboard的目录下执行。

****************yum install mysql-devel cd /path/to/dashboard/ virtualenv ./env

./env/bin/pip install -r pip_requirements.txt

对于ubuntu用户,安装mysql-python时可能会失败。请自行安装依赖libmysqld-dev、libmysqlclient-dev等。

服务启动后,可以通过日志查看服务的运行状态,日志文件地址

为./var/app.log。可以通过http://localhost:8081访问dashboard主页(这里假设 dashboard的http监听端口为8081)。 配置说明

dashboard有两个需要更改的配置文件: ./gunicorn.conf 和 ./rrd/config.py。./gunicorn.conf各字段,含义如下 - workers,dashboard并发进程数 - bind,dashboard的http监听端口 - proc_name,进程名称 - pidfile,pid文件全名称 - limit_request_field_size,TODO - limit_request_line,TODO

配置文件./rrd/config.py,各字段含义为 # dashboard的数据库配置 DASHBOARD_DB_HOST = \

DASHBOARD_DB_PORT = 3306 DASHBOARD_DB_USER = \DASHBOARD_DB_PASSWD = \DASHBOARD_DB_NAME = \# graph的数据库配置 GRAPH_DB_HOST = \GRAPH_DB_PORT = 3306 GRAPH_DB_USER = \GRAPH_DB_PASSWD = \GRAPH_DB_NAME = \# dashboard的配置 DEBUG = True

SECRET_KEY = \

SESSION_COOKIE_NAME = \

PERMANENT_SESSION_LIFETIME = 3600 * 24 * 30 SITE_COOKIE = \# query服务的地址

QUERY_ADDR = \

BASE_DIR = \LOG_PATH = os.path.join(BASE_DIR,\try:

from rrd.local_config import *except: pass

3.6 短信发送接口(接口定义,无需安装)

这个组件没有代码,需要各个公司自行提供。

监控系统产生报警事件之后需要发送报警邮件或者报警短信,各个公司可能有自己的邮件服务器,有自己的邮件发送方法;有自己的短信通道,有自己的短信发送方法。falcon为了适配各个公司,在接入方案上做了一个规范,需要各公司提供http的短信和邮件发送接口

短信发送http接口:

method: post params:

- content: 短信内容

- tos: 使用逗号分隔的多个手机号

邮件发送http接口: method: post params:

- content: 邮件内容 - subject: 邮件标题

- tos: 使用逗号分隔的多个邮件地址

3.7 sender

上节我们利用http接口规范屏蔽了邮件、短信发送的问题。Sender这个模块专门用于调用各公司提供的邮件、短信发送接口。

sender这个模块和redis队列部署在一台机器上即可。公司即使有几十万台机器,一个sender也足够了。 配置说明 {

\\\

\ }, \

\此处配置的redis地址要和后面的judge、alarm配置成相同的 \ }, \

\\# 短信队列名称,维持默认即可,alarm中也会有一个相同的配置

DB_USER = \DB_PASS = \

DB_NAME = \

# SECRET_KEY尽量搞一个复杂点的随机字符串 SECRET_KEY = \SESSION_COOKIE_NAME = \PERMANENT_SESSION_LIFETIME = 3600 * 24 * 30

# 我们可以cp config.py local_config.py用local_config.py中的配置覆盖config.py中的配置# 嫌麻烦的话维持默认即可,也不用制作local_config.pytry:

from frame.local_config import *except Exception, e: print \

启动之后要看看log是否正常,log在var目录。

然后浏览器访问之,发现首页404,这是正常的。之后alarm模块会用到links。

或者我们可以这么验证:

curl http://links.example.com/store -d \例:curl http://10.192.40.151:5090/store -d \

上面命令会返回一个随机字符串,拿着这个随机字符串拼接到links地址后面,浏览器访问之即可。比如返回的随机字符串是dot9kg8b,浏览器访问:http://links.example.com/dot9kg8b 即可

3.13 alarm

alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理

alarm是个单点。对于未恢复的告警是放到alarm的内存中的,alarm还需要做报警合并,故而alarm只能部署一个实例。后期需要想办法改进。 配置说明 {

\\

\\

\# 未恢复的告警就是通过alarm的http页面来看的 }, \

\需要与sender配置成相同的,维持默认即可 \ }, \

\与judge、sender相同的redis地址 \\\\ ], \\\\\\ ],

\这两个queue维持默认即可 \ }, \

\内网可访问的portal的地址,实例\

\内网可访问的uic(或fe)的地址,实例\

\外网可访问的links的地址,实例\ } }

api部分portal和uic可以配置成内网可访问的地址,速度比较快,但是links要配置成外网可访问的地址,注意喽

如果某个核心服务挂了,可能会造成大面积报警,为了减少报警短信数量,我们做了报警合并功能。把报警信息写入links模块,然后links返回一个url地址给alarm,alarm将这个url链接发给用户,这样用户只要收到一条短信(里边是个url地址),点击url进去就是多条报警内容。

highQueues中配置的几个event队列中的事件是不会做报警合并的,因为那些是高优先级的报警,报警合并只是针对lowQueues中的事件。如果所有的事件都不想做报警合并,就把所有的event队列都配置到highQueues中即可

alarm搭建完成了,我们可以回去修改fe的配置,把fe模块的

shortcut:falconAlarm配置成alarm的http地址,是浏览器可访问的alarm的http地址

3.14 task

task是监控系统一个必要的辅助模块。定时任务,实现了如下几个功能: index更新。包括图表索引的全量更新 和 垃圾索引清理。

falcon服务组件的自身状态数据采集。定时任务了采集了transfer、graph、task这三个服务的内部状态数据。

falcon自检控任务。 配置说明

debug: true/false, 如果为true,日志中会打印debug信息 http

- enable: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对task发送控制命令、统计命令、debug命令等 - listen: 表示http-server监听的端口 index

- enable: true/false, 表示是否开启索引更新任务

- dsn: 索引服务的MySQL的连接信息,默认用户名是root,密码为空,host为127.0.0.1,database为graph(如有必要,请修改)

- maxIdle: MySQL连接池配置,连接池允许的最大空闲连接数,保持默认即可

- cluster: 后端graph索引更新的定时任务描述。一条记录的形如: \地址:执行周期描述\,通过设置不同的执行周期,来实现负载在时间上的均衡。

eg. 后端部署了两个graph实例,cluster可以配置为 \

\周0-5,每天的00:00:00,开始执行索引全量更新;\为quartz表达式

\周0-5,每天的00:30:00,开始执行索引全量更新 }

- autoDelete: true|false, 是否自动删除垃圾索引。默认为false

collector

- enable: true/false, 表示是否开启falcon的自身状态采集任务 - destUrl: 监控数据的push地址,默认为本机的1988接口 - srcUrlFmt: 监控数据采集的url格式, %s将由机器名或域名替换 - cluster: falcon后端服务列表,用具体的\表示,module取值可以为graph、transfer、task等

部署完成task组件后,请修改collector配置、使task能够正确采集transfer & graph的内部状态,请修改monitor配置、使task模块能够自检控Open-Falon的各组件(当前支持transfer、graph、query、judge等)。

3.15 gateway

如果您没有遇到机房分区问题,请直接忽略此组件。

如果您已经遇到机房分区问题、并急需解决机房分区时监控数据回传的问题,请使用该组件。更多的资料在:

https://github.com/open-falcon/gateway

3.16 nodata

nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善。

这一节是写给Open-Falcon老用户的,新用户请忽略本小节、直接跳到源码编译部分即可。如果你已经使用Open-Falcon有一段时间,本次只是新增加一个nodata服务,那么你需要依次完成如下工作:

?

确保已经建立mysql数据表falcon_portal.mockcfg。其中,falcon_portal为portal组件的mysql数据库,mockcfg为存放nodata配置的数据表。mockcfg的建表语句,如下。

确保已经更新了portal组件。portal组件中,新增了对nodata配置的UI支持。

安装nodata后端服务。即本文的后续部分。 USE falcon_portal;SET NAMES 'utf8'; /**

* nodata mock config

*/DROP TABLE IF EXISTS `mockcfg`;CREATE TABLE `mockcfg` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'name of mockcfg, used for uuid',

`obj` VARCHAR(10240) NOT NULL DEFAULT '' COMMENT 'desc of object',

`obj_type` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'type of object, host or group or other',

`metric` VARCHAR(128) NOT NULL DEFAULT '', `tags` VARCHAR(1024) NOT NULL DEFAULT '', `dstype` VARCHAR(32) NOT NULL DEFAULT 'GAUGE', `step` INT(11) UNSIGNED NOT NULL DEFAULT 60,

`mock` DOUBLE NOT NULL DEFAULT 0 COMMENT 'mocked value when nodata occurs',

`creator` VARCHAR(64) NOT NULL DEFAULT '', `t_create` DATETIME NOT NULL COMMENT 'create time',

`t_modify` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'last modify time',

?

?

PRIMARY KEY (`id`),

UNIQUE KEY `uniq_name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

配置说明

## Configuration {

\\\

\的http服务监听地址 },

\组件相关的配置

\查询数据时http连接超时时间,单位ms \查询数据时http请求处理超时时间,单位ms \组件的http监听地址,一般形如\ },

\配置信息 \

\

\true&wait_timeout=604800\的数据库连接信息,默认数据库为falcon_portal

\连接池空闲连接数 },

\数据采集相关的配置 \

\一次数据采集的条数,建议使用默认值 \采集并发度,建议使用默认值 },

\发送mock数据相关的配置 \

\发送数据时http连接超时时间,单位ms \发送数据时http请求超时时间,单位ms

\的http监听地址,一般形如\

\发送数据时,每包数据包含的监控数据条数 \阻塞设置

\是否开启阻塞功能.默认不开启此功能

\触发nodata阻塞操作的阈值上限.当配置了nodata的数据项,数据上报中断的百分比,大于此阈值上限时,nodata阻塞mock数据的发送 } } }

3.17 Aggregator

如果你已经安装过open-falcon了,那么请检查: 检查你的portal中是否有这个代码:

https://github.com/open-falcon/portal/blob/master/web/model/cluster.py,如果有了,说明版本OK,否则,需要升级原来的portal为最新版代码。

falcon_portal数据库中加入了一张新表: USE falcon_portal;SET NAMES 'utf8';

DROP TABLE IF EXISTS cluster;CREATE TABLE cluster (

id INT UNSIGNED NOT NULL AUTO_INCREMENT, grp_id INT NOT NULL, numerator VARCHAR(10240) NOT NULL, denominator VARCHAR(10240) NOT NULL, endpoint VARCHAR(255) NOT NULL, metric VARCHAR(255) NOT NULL, tags VARCHAR(255) NOT NULL, ds_type VARCHAR(255) NOT NULL, step INT NOT NULL,

last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

creator VARCHAR(255) NOT NULL, PRIMARY KEY (id) )

ENGINE =InnoDB

DEFAULT CHARSET =latin1;

配置说明

## Configuration {

\\\

\ }, \

\

\\

\模块可以部署多个实例,这个配置表示当前实例要处理的数据库中cluster表的id范围 \ }, \

\注意修改为你的portal的ip:port

\注意修改为你的transfer的ip:port

\注意修改为你的query的ip:port } }

3.18 Agent-updater

每台机器都要部署falcon-agent,如果公司机器量比较少,用pssh、ansible、fabric之类的工具手工安装问题也不大。但是公司机器量多了之后,手工安装、升级、回滚falcon-agent将成为噩梦。

个人开发了agent-updater这个工具,用于管理falcon-agent,agent-updater也有一个agent:ops-updater,可以看做是一个超级agent,用于管理其他agent的agent,呵呵,ops-updater推荐在装机的时候一起安装上。ops-updater通常是不会升级的。

具体参看:http://ulricqin.com/project/ops-updater/

5.Grafana配置

grafana安装

wget https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.4-1464167696.x86_64.rpm rpm -ivh grafana-3.0.4-1464167696.x86_64.rpm (grafana编译似乎不太好使,godep store需要下载golang的lib库,有些下不下来,一直无法通过)

3.通过grafana-cli安装Open-falcon插件

grafana-cli plugins install fastweb-openfalcon-datasource chown -R grafana:grafana /var/lib/grafana 4.编辑/etc/grafana/grafana.ini配置文件,添加插件PATH [plugin.openfalcon] ;path = /var/lib/grafana/plugins/fastweb-openfalcon-datasource (path前面;一定要有,一开始没加,坑爹了很久)

5.启动grafana

[root@linux plugins]# /etc/init.d/grafana-server restart OKopping Grafana Server ... [ OK ] Starting Grafana Server: .... OK

6.浏览器访问http://ip:3000

7.添加数据源

数据源地址:falcon主机query地址,例如当前http://192.168.20.200:9966/api/grafana

8.新建dashboard

9.建立一个模板

etc/mon.cfg [default]

log_file=mymon.log # 日志路径和文件名 # Panic 0 # Fatal 1 # Error 2 # Warn 3 # Info 4 # Debug 5

log_level=4 # 日志级别

falcon_client=http://127.0.0.1:1988/v1/push # falcon agent连接地址

#自定义endpoint

endpoint=127.0.0.1 #若不设置则使用OS的hostname

[mysql]

user=root # 数据库用户名 password= # 数据库密码

host=127.0.0.1 # 数据库连接地址 port=3306 # 数据库端口

MySQL metrics

请参考./metrics.txt,其中的内容,仅供参考,根据MySQL的版本、配置不同,采集到的metrics也有差别。

8.redis 监控

需求:Python >= 2.6python-simplejson yum install python-simplejson -y

使用方法

1. 根据实际部署情况,修改有注释位置附近的配置 2. 测试: python redis-monitor.py 3. 将脚本加入crontab执行即可 注意:

1.修改redis-monitor.py时,_redis_cli = '/usr/local/bin/redis-cli'路径一定要正确,修改前whereis redis_cli检查确认其路径。

2.#inst_list中保存了redis配置文件列表,程序将从这些配置中读取port和password,建议使用动态发现的方法获得,如:

# inst_list = [ i for i in commands.getoutput(\/etc/ -name 'redis*.conf'\使用推荐的redis配置列表获取方式 insts_list

=

[

i

for

i

in

commands.getoutput(\

/opt/redis-3.0.2/cluster/ -name 'redis*.conf'\

3.修改Openfalcon监控主机地址

url = 'http://10.192.40.151:1988/v1/push' 4.修改主机host

本文来源:https://www.bwwdw.com/article/knbt.html

Top