openfalcon架构及相关服务配置详解

 

一:openfalcon组件

                    

 

 

 

1.falcon-agent

       数据采集组件

  agent内置了一个http接口,会自动采集预先定义的各种采集项,每隔60秒,push到transfer。

2.transfer

       agent与transfer建立长连接,将数据汇报给tarnsfer

       transfer默认监听在:8433端口上,agent会通过jsonrpc的方式来push数据上来

       transfer将数据发送给judge和graph

3.graph

     graph组件是存储绘图数据、历史数据的组件。transfer会把接收到的数据,转发给graph。

  监听端口为6071,校验方法如下,返回ok表示服务正常。

    #url -s "http://127.0.0.1:6071/health"

4.query

    绘图数据的查询接口,因为graph是分片存储的,如果要传输给dashboard,就需要query组件收集用户的数据进行聚合再返回给用户。

5.dashboard

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

6.judge

  告警判断

7.alarm

  alarm模块是处理报警事件的,judge产生的报警事件写入redis,alarm从redis读取数据。

8.sender

  调用各个公司提供的mail-privider和sms-privider,按照某个并发度,从redis读取邮件,短信并发送,

       alarm生成的报警短信和报警邮件是直接写入redis即可,由sender来发送。

9.mail-privider&&sms-provider

  发送邮件短信接口

10.protal

  配置报警策略的地方

11.HBS

  Heartbeat Server心跳服务,只依赖Protal的DB

 

二:相关服务配置详解

1.falcon-agent

1.进程管理

./open-falcon start agent  启动进程
./open-falcon stop agent  停止进程
./open-falcon monitor agent  查看日志

2.配置文件

{"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}
}

   

2.Transfer

1.进程管理

# 校验服务,这里假定服务开启了6060的http监听端口。检验结果为ok表明服务正常启动。
curl -s "127.0.0.1:6060/health"
# 启动服务
./open-falcon start transfer
# 停止服务
./open-falcon stop transfer
# 查看日志
./open-falcon monitor transfer

  

2.配置文件

           部署完成transfer组件后,请修改agent的配置,使其指向正确的transfer地址。在安装完graph和judge后,请修改transfer的相应配置、使其能够正确寻址到这两个组件。

    debug: true/false, 如果为true,日志中会打印debug信息minStep: 30, 允许上报的数据最小间隔,默认为30秒http- enabled: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等- listen: 表示监听的http端口rpc- enabled: true/false, 表示是否开启该jsonrpc数据接收端口, Agent发送数据使用的就是该端口- listen: 表示监听的http端口socket #即将被废弃,请避免使用- enabled: true/false, 表示是否开启该telnet方式的数据接收端口,这是为了方便用户一行行的发送数据给transfer- listen: 表示监听的http端口 judge- enabled: true/false, 表示是否开启向judge发送数据- batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认- pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认- maxConns: 连接池相关配置,最大连接数,建议保持默认- maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认- replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可- cluster: key-value形式的字典,表示后端的judge列表,其中key代表后端judge名字,value代表的是具体的ip:port  graph- enabled: 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.graph

1.进程管理

# 启动服务
./open-falcon start graph# 停止服务
./open-falcon stop graph# 查看日志
./open-falcon monitor graph

2.配置文件

     部署完graph组件后,请修改transfer和api的配置,使这两个组件可以寻址到graph。

{"debug": false, //true or false, 是否开启debug日志"http": {"enabled": true, //true or false, 表示是否开启该http端口,该端口为控制端口,主要用来对graph发送控制命令、统计命令、debug命令"listen": "0.0.0.0:6071" //表示监听的http端口},"rpc": {"enabled": true, //true or false, 表示是否开启该rpc端口,该端口为数据接收端口"listen": "0.0.0.0:6070" //表示监听的rpc端口},"rrd": {"storage": "./data/6070" // 历史数据的文件存储路径(如有必要,请修改为合适的路)},"db": {"dsn": "root:@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true", //MySQL的连接信息,默认用户名是root,密码为空,host为127.0.0.1,database为graph(如有必要,请修改)"maxIdle": 4  //MySQL连接池配置,连接池允许的最大连接数,保持默认即可},"callTimeout": 5000,  //RPC调用超时时间,单位ms"migrate": {  //扩容graph时历史数据自动迁移"enabled": false,  //true or false, 表示graph是否处于数据迁移状态"concurrency": 2, //数据迁移时的并发连接数,建议保持默认"replicas": 500, //这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可(必须和transfer的配置中保持一致)"cluster": { //未扩容前老的graph实例列表"graph-00" : "127.0.0.1:6070"}}
}

 

4.Api(query)

1.进程管理

# 启动服务
./open-falcon start api# 停止服务
./open-falcon stop api# 查看日志
./open-falcon monitor api

  

2.相关配置

  • 部署完成api组件后,请修改dashboard组件的配置、使其能够正确寻址到api组件。
  • 请确保api组件的graph列表 与 transfer的配置 一致。
{"log_level": "debug","db": {  //数据库相关的连接配置信息"faclon_portal": "root:@tcp(127.0.0.1:3306)/falcon_portal?charset=utf8&parseTime=True&loc=Local","graph": "root:@tcp(127.0.0.1:3306)/graph?charset=utf8&parseTime=True&loc=Local","uic": "root:@tcp(127.0.0.1:3306)/uic?charset=utf8&parseTime=True&loc=Local","dashboard": "root:@tcp(127.0.0.1:3306)/dashboard?charset=utf8&parseTime=True&loc=Local","alarms": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&parseTime=True&loc=Local","db_bug": true},"graphs": {  // graph模块的部署列表信息"cluster": {"graph-00": "127.0.0.1:6070"},"max_conns": 100,"max_idle": 100,"conn_timeout": 1000,"call_timeout": 5000,"numberOfReplicas": 500},"metric_list_file": "./api/data/metric","web_port": ":8080",  // http监听端口"access_control": true, // 如果设置为false,那么任何用户都可以具备管理员权限"salt": "pleaseinputwhichyouareusingnow",  //数据库加密密码的时候的salt"skip_auth": false, //如果设置为true,那么访问api就不需要经过认证"default_token": "default-token-used-in-server-side",  //用于服务端各模块间的访问授权"gen_doc": false,"gen_doc_path": "doc/module.html"
}

  

5.Dashboard

1.进程管理

#以开发者模式启动
./env/bin/python wsgi.py#以生产环境启动
bash control start#停止dashboard运行bash control stop#查看日志
bash control tail

2,.相关配置文件

dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
超级管理员可以给普通用户分配权限管理。
dashboard的配置文件为: 'rrd/config.py',请根据实际情况修改## API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1" ## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""

  

6.HBS

1.进程管理

# 启动
./open-falcon start hbs# 停止
./open-falcon stop hbs# 查看日志
./open-falcon monitor hbs

  

2.相关配置

       如果你先部署了agent,后部署的hbs,那咱们部署完hbs之后需要回去修改agent的配置,把agent配置中的heartbeat部分enabled设置为true,addr设置为hbs的rpc地址。

       如果hbs的配置文件维持默认,rpc端口就是6030,http端口是6031,agent中应该配置为hbs的rpc端口,小心别弄错了。

{"debug": true,"database": "root:password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true", # Portal的数据库地址"hosts": "", # portal数据库中有个host表,如果表中数据是从其他系统同步过来的,此处配置为sync,否则就维持默认,留空即可"maxIdle": 100,"listen": ":6030", # hbs监听的rpc地址"trustable": [""],"http": {"enabled": true,"listen": "0.0.0.0:6031" # hbs监听的http地址}
}

  

7.Judge

1.进程管理

# 启动
./open-falcon start judge# 停止
./open-falcon stop judge# 查看日志
./open-falcon monitor judge

2.相关配置文件

{"debug": true,"debugHost": "nil","remain": 11,"http": {"enabled": true,"listen": "0.0.0.0:6081"},"rpc": {"enabled": true,"listen": "0.0.0.0:6080"},"hbs": {"servers": ["127.0.0.1:6030"], # hbs最好放到lvs vip后面,所以此处最好配置为vip:port"timeout": 300,"interval": 60},"alarm": {"enabled": true,"minInterval": 300, # 连续两个报警之间至少相隔的秒数,维持默认即可"queuePattern": "event:p%v","redis": {"dsn": "127.0.0.1:6379", # 与alarm、sender使用一个redis"maxIdle": 5,"connTimeout": 5000,"readTimeout": 5000,"writeTimeout": 5000}}
}

  

8.Alarm

1.进程管理

# 启动
./open-falcon start alarm# 停止
./open-falcon stop alarm# 查看日志
./open-falcon monitor alarm

2.相关配置文件

{"log_level": "debug","http": {"enabled": true,"listen": "0.0.0.0:9912"},"redis": {"addr": "127.0.0.1:6379","maxIdle": 5,"highQueues": ["event:p0","event:p1","event:p2"],"lowQueues": ["event:p3","event:p4","event:p5","event:p6"],"userIMQueue": "/queue/user/im","userSmsQueue": "/queue/user/sms","userMailQueue": "/queue/user/mail"},"api": {"im": "http://127.0.0.1:10086/wechat",  //微信发送网关地址"sms": "http://127.0.0.1:10086/sms",  //短信发送网关地址"mail": "http://127.0.0.1:10086/mail", //邮件发送网关地址"dashboard": "http://127.0.0.1:8081",  //dashboard模块的运行地址"plus_api":"http://127.0.0.1:8080",   //falcon-plus api模块的运行地址"plus_api_token": "default-token-used-in-server-side" //用于和falcon-plus api模块服务端之间的通信认证token},"falcon_portal": {"addr": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&loc=Asia%2FChongqing","idle": 10,"max": 100},"worker": {"im": 10,"sms": 10,"mail": 50},"housekeeper": {"event_retention_days": 7,  //报警历史信息的保留天数"event_delete_batch": 100}
}

  

 

转载于:https://www.cnblogs.com/yaohong/p/9218400.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DBeaver连接达梦|虚谷|人大金仓等国产数据库

前言 工作中有些项目可能会接触到「达梦、虚谷、人大金仓」等国产数据库,但通常这些数据库自带的连接工具使用并不方便,所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版,下文以达梦为例(其他国产数据库连接操作方式一样&…

[js] script所在的位置会影响首屏显示时间吗

[js] script所在的位置会影响首屏显示时间吗 会,如果script放在头部,js的执行会阻塞dom树的构建个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

luogu4462 异或序列

题目大意 给出n,m,k,有n个数的序列,m次询问一段区间,问异或和等于K的子区间的个数。 题解 本题一看就是莫队。但要解决该题需要以下性质: 定理: $$a\oplus bc\Leftrightarrow a\oplus cb\Leftrightarrow b\oplus ca$$ …

Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常

前言 今天看群里小伙伴问了一个非常有意思的问题&#xff1a; 使用 Map<String,Object> 对象接收前端传递的参数&#xff0c;在后端取参时&#xff0c;因为接口文档中明确该字段类型为 Long &#xff0c;所以对接收的参数进行了强转&#xff0c;即 (Long)参数 &#xf…

adb无法连接安卓手机

确保已安装好手机驱动&#xff08;在设备管理器中能找到安卓的设备&#xff09;查看设备的VID信息找到你的模拟器存放的目录&#xff0c;<例如&#xff1a;C:\Users\Administrator\.android 下找到或新建一个adb_usb.ini文件。文档内容写入VID即可 在cmd上输入adb kill-serv…

那些对你说学历不重要,技术重要的人,他们大部分都是有学历的。

随便唠叨几句 最近有挺多小伙伴在微信上私信我&#xff0c;咨询提升学历问题的&#xff0c;希望我能给点意见&#xff0c;当然&#xff0c;这里面大部分是涉及到专升本&#xff0c;因为自己是过来人&#xff0c;所以感触比较深&#xff0c;耐心的给予了回复&#xff0c;整理后…

前端学习(2856):简单秒杀系统学习之定时器循环显示

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>javascrip</title></head><body ><script>function show() {console.log(每过1秒展示);}function show2(str) {…

SpringBoot中的Tomcat是如何启动的

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>添加如上 Web 的依赖&#xff0c;Spring Boot 就帮我们内置了 Servlet 容器&#xff0c;默认使用的是 Tomcat&a…

json传输二进制的方案【转】

本文转自&#xff1a;http://wiyi.org/binary-to-string.html json 是一种很简洁的协议&#xff0c;但可惜的是&#xff0c;它只能传递基本的数型(int,long,string等)&#xff0c;但不能传递byte类型。如果想要传输图片等二进制文件的话&#xff0c;是没办法直接传输。 本文提供…

IDEA社区版(Community)和付费版(UItimate)的区别

比对类型Ultimate(终极版,付费)Community(社区版,免费)语言支持JavaJavaGroovyGroovyKotlinKotlinScala&#xff08;通过插件&#xff09;Scala&#xff08;通过插件&#xff09;Python 和 Jython&#xff08;通过插件&#xff09;Python 和 Jython&#xff08;通过插件&#x…

从使用传统Web框架到切换到Spring Boot后的总结

1、前言 其实我接触 Spring Boot 的时间并不长&#xff0c;所以还算一个初学者&#xff0c;这篇文章也算是我对 Spring Boot 学习以及使用过程中的复盘&#xff0c;如果文章出现描述错误或表达不清晰的地方&#xff0c;欢迎大家在评论区留言互动。 没想到 Spring Boot 这两年…

前端学习(2859):简单秒杀系统学习之前端界面布局

<html><head><meta charset"utf-8"><link rel"stylesheet" type"text/css" href"miao.min.css" charset"utf-8"><title>秒杀系统</title></head><body><div class"…

Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M

之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包&#xff0c;Spring Boot 应用程序不用额外部署到外部容器中&#xff0c;可以直接通过 Maven 命令将项目编译成可执行的 jar 包&#xff0c;然后通过 java -jar 命令启动即可&#xff0c;…

基于Docker搭建RabbitMQ(多图)

1、一点废话&#xff08;可直接跳转至标题2&#xff09; 通常在拉取镜像之前&#xff0c;除了通过命令执行 docker search xxx 之外&#xff0c;我们还可以通过 Docker 镜像仓库查询指定的镜像。 如下是 rabbitmq 镜像的搜索结果&#xff1a; 一般拉取下载数 stars 数相对比…

基于Docker搭建Redis集群(主从集群)

最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题&#xff0c;我觉得之前写的这篇 《基于Docker的Redis集群搭建》 文章一定是有问题了&#xff0c;所以我花了几分钟浏览之前的文章总结了下面几个问题&#xff1a; redis 数量太少&#xff0c;只创建了 3 个实例&…

洛达AirPods鉴别检测工具AB153x_UT,支持1562a 1562f

推荐阅读&#xff1a;AB1562_UT软件分辨真假洛达1562A&#xff0c;洛达1562a怎么鉴别&#xff1f; 洛达 1536u 1562a 1562f 1562m 检测工具&#xff0c; 可根据协议检测出实际使用芯片&#xff0c;免拆机检测华强北airpods使用芯片 一、使用方法 蓝牙连接安卓手机后&#x…