物联网

基于 Go 语言开发的监控系统

字号+作者:创站实验室来源:物联网2025-11-26 18:53:11我要评论(0)

​1.介绍小米开源的监控系统 open-falcon 和滴滴开源的日志采集工具 falcon-log-agent 作为一组黄金搭档,被互联网公司广泛使用。本文介绍怎么使用这组黄金搭档监控业务系统的日志

​1.介绍

小米开源的基于监控系统 open-falcon 和滴滴开源的日志采集工具 falcon-log-agent 作为一组黄金搭档 ,被互联网公司广泛使用。开发控系

本文介绍怎么使用这组黄金搭档监控业务系统的基于日志 。

2.open-falcon

open-falcon 使用 Golang 和 Python 开发,开发控系其中 Python 主要开发的基于是 Dashboard。

限于篇幅,开发控系本文不准备介绍 open-falcon 的基于原理 ,仅介绍如何安装。开发控系

安装 open-falcon 之前,基于必须确保已成功安装 Redis 和 MySQL,开发控系因为 open-falcon 需要使用这两个存储组件 。香港云服务器基于

同时 ,开发控系我们还需要确保已成功安装 Golang 和 Python。基于

需要注意的开发控系是,我们还需要确保已设置 $GOPATH 和 $GOROOT 环境变量(也可以使用默认值) 。基于

安装 open-falcon :

下载源码和初始化数据库

复制mkdir -p $GOPATH/src/github.com/open-

falcon

cd $GOPATH/src/github.com/open-

falcon

git clone https://github.com/open-falcon/falcon-plus.gitcd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema/

# 初始化数据库

mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sqlmysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sqlmysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sqlmysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sqlmysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql1.2.3.4.5.6.7.8.9.10.

编译

复制cd $GOPATH/src/github.com/open-falcon/falcon-plus/

# make all modules

make all

# make specified module

make agent

# pack all modules

make pack1.2.3.4.5.6.7.8.9.10.

在执行 make pack​ 之后 ,我们得到一个压缩包 open-falcon-vx.x.x.tar.gzmake pack 之后,我们得到一个压缩包 open-falcon-vx.x.x.tar.gz

如果我们想要修改每个模块的配置文件,在执行 make pack​ 之前 ,我们可以修改模块的 config/xxx.jsonmake pack 之前 ,我们可以修改模块的 config/xxx.json

需要注意的是亿华云,模块的配置文件中 ,MySQL 的账号和密码 ,默认分别是 root 和空  ,如果我们的 MySQL 账号和密码与之不同 ,我们需要编辑模块的配置文件进行修改 。root 和空,如果我们的 MySQL 账号和密码与之不同 ,我们需要编辑模块的配置文件进行修改 。源码下载

部署

我们可以将得到的压缩包解压缩到指定目录进行部署 ,例如 :

复制make ~/open-

falcon

tar -zxvf open-falcon-vx.x.x.tar.gz -C ~/open-falcon1.2.

启动所有模块

复制cd ~/open-

falcon

./open-

falcon start

# 检查模块状态

./open-falcon check1.2.3.4.5.

安装仪表盘

在安装 Dashboard 之前,我们需要先安装依赖项:

复制# Centos

yum install -y python-

virtualenv

yum install -y python-

devel

yum install -y openldap-

devel

yum install -y mysql-

devel

yum groupinstall "Development tools"

# Ubuntu

apt-get install -y python-

virtualenv

apt-get install -y slapd ldap-

utils

apt-get install -y libmysqld-

dev

apt-get install -y build-

essential

apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev1.2.3.4.5.6.7.8.9.10.11.12.13.

安装 Dashboard :

复制cd ~/open-

falcon

git clone https://github.com/open-falcon/dashboard.git

cd dashboard

virtualenv ./

env

./env/bin/pip install -r pip_requirements.txt1.2.3.4.5.

需要注意的是 ,这里有一个 Bug ,会导致无法在仪表盘注册账号(点击按钮无反应),需要将 falcon api 的端口号 18080​ 改为 8080。18080 改为 8080。

复制cd ~/open-falcon/

dashboard

vim rrd/config.py# 端口 18080 改为 8080API_ADDR = os.environ.get("API_ADDR","http://81.70.201.193:8080/api/v1")1.2.3.4.

在启动 Dashboard 之前 ,我们再检查一下 open-falcon 的 api 模块是否已启动  :

复制cd ~/open-

falcon

./open-falcon check1.2.

启动 Dashboard :

复制$ cd ~/open-falcon/

dashboard

$ ./control start1.2.

在浏览器中,打开 http://127.0.0.1:8081。模板下载http://127.0.0.1:8081  。

3.falcon-log-agent

falcon-log-agent 不同于 ELK,它不是日志查看系统,而是日志计算系统。

它通过外挂式的日志采集方式,实时读取日志文件中的内容 ,实时计算 ,并将计算结果直接推送到 open-falcon  。

它有几个限定条件 ,分别是要求日志必须包含时间,不支持文件软链接 ,免费模板日志时间必须有序 。

安装 falcon-log-agent :

构建

复制make -p $GOPATH/src/github.com/didi &&

cd $_

git clone https://github.com/didi/falcon-log-agent.gitmake build1.2.3.

修改配置文件

复制cd $GOPATH/src/github.com/didi/falcon-log-

agent

cp cfg/dev.cfg cfg/cfg.json

# 基础配置

cp cfg/strategy.dev.json cfg/strategy.json # 策略配置1.2.3.

部署

复制cd $GOPATH/src/github.com/didi/falcon-log-

agent

make pack

mkdir ~/open-falcon/falcon-log-

agent

tar -zxvf falcon-log-agent.tar.gz -C ~/open-falcon/falcon-log-agent1.2.3.4.

启动

复制cd ~/open-falcon/falcon-log-

agent

./control start1.2.

检查

http://ip:8003/health 健康检查http://ip:8003/strategt 查看生效策略

策略配置示例:

本文以 open-falcon 的 agent 模块的日志为例 ,介绍怎么配置一个新策略 。

复制[ { "id":10,

# 多个策略 ,id 必须唯一

"name":"agent send data count", # 对应 open-

falcon 中的 metric(监控项)

"file_path":"/root/open-falcon/agent/logs/agent.log",

# 日志路径(支持动态路径)

"time_format":"yyyy/mm/dd HH:MM:SS",

# 时间格式

"pattern":"Total=(\\d+)",

# 匹配正则表达式

"exclude":"",

# 排除正则表达式

"step":60,

# 日志采集周期 ,单位秒

"tags":{ }, 对应 open-

falcon 中的 tag

"func":"cnt",

# 日志采集方式,cnt、avg 、sum 、max、min

"degree":6,

# 精度

"comment":"",

# 备注

"parse_succ":true }]1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.

重启 falcon-log-agent ,我们在 Dashboard 中的建站模板 Couters 列表中可以看到 agent send data count 。agent send data count。

4.监控配置

我们介绍完 open-falcon 和 falcon-log-agent 的安装和启动。

已实现自动采集日志并将计算数据上报到 open-falcon,接下来 ,我们介绍针对日志数据怎么配置监控。

监控配置操作步骤:

创建用户组。创建模板。添加策略 ,其中 metric 对应 falcon-log-agent 策略配置文件中配置项的 name ,max 是最大报警次数,P 是报警级别(<3 :既发短信也发邮件,>=3:只发邮件),run 是策略生效时间(不填写代表全天生效) ,if 代表条件。告警条件支持函数如下:

告警条件支持函数如下 :

all(#3) 最新 3 个点都满足阈值条件则报警。

max(#3) 最新 3 个点,最大值满足阈值条件则报警 。

min(#3) 最新 3 个点,最小值满足阈值条件则报警。

sum(#3) 最新 3 个点,其和满足阈值条件则报警。

avg(#3) 最新 3 个点,其平均值满足阈值条件则报警。

diff(#3) 将最新 push 过来的点(被减数),与历史最新 3 个点(减数)相减,得到 3 个差 ,有一个差满足阈值条件则报警 。

pdiff(#3) 将最新 push 过来的点(被减数) ,与历史最新 3 个点(减数)相减,得到 3 个差,再将 3 个差值分别除以减数 ,得到 3 个商值 ,有一个商值满足阈值条件则报警 。

lookup(#2,3) 最新的 3 个点中有 2 个满足阈值条件则报警。

配置报警接收用户组。5.总结

本文我们介绍了基于 Go 语言开发的开源监控系统和日志采集工具的安装和使用方式 。

建议读者朋友们动手操作一遍,需要注意的是,尽量严格按照本文的目录结构操作。

参考资料:

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

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

https://github.com/didi/falcon-log-agent

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 更安全的API集成,塑造更安全的酒店入驻体验

    更安全的API集成,塑造更安全的酒店入驻体验

    2025-11-26 18:31

  • 笔记本电脑卡慢问题解决方案(让您的电脑恢复顺畅运行的有效方法)

    笔记本电脑卡慢问题解决方案(让您的电脑恢复顺畅运行的有效方法)

    2025-11-26 18:26

  • 台积电充电宝(便携、高效、安全的充电宝,让你无忧充电)

    台积电充电宝(便携、高效、安全的充电宝,让你无忧充电)

    2025-11-26 17:44

  • 安卓手机USB调试在哪打开?安卓手机USB调试模式

    安卓手机USB调试在哪打开?安卓手机USB调试模式

    2025-11-26 17:06

网友点评