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

​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.git
cd $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.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

编译

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

# make all modules
make all

# make specified module
make agent

# pack all modules
make pack

在执行 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-falcon

启动所有模块

cd ~/open-falcon
./open-falcon start

# 检查模块状态
./open-falcon check

安装仪表盘

在安装 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-dev

安装 Dashboard:

cd ~/open-falcon
git clone https://github.com/open-falcon/dashboard.git
cd dashboard
virtualenv ./env
./env/bin/pip install -r pip_requirements.txt

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

cd ~/open-falcon/dashboard
vim rrd/config.py
# 端口 18080 改为 8080
API_ADDR = os.environ.get("API_ADDR","http://81.70.201.193:8080/api/v1")

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

cd ~/open-falcon
./open-falcon check

启动 Dashboard:

$ cd ~/open-falcon/dashboard
$ ./control start

在浏览器中,打开 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.git
make build

修改配置文件

cd $GOPATH/src/github.com/didi/falcon-log-agent
cp cfg/dev.cfg cfg/cfg.json # 基础配置
cp cfg/strategy.dev.json cfg/strategy.json # 策略配置

部署

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-agent

启动

cd ~/open-falcon/falcon-log-agent
./control start

检查

  • 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
}
]

重启 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

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/136023.html<

(0)
管理的头像管理
上一篇2025-03-01 21:39
下一篇 2025-03-01 21:40

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注