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

01 介绍

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

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

02  open-falcon

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

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

安装 open-falcon 之前,必须确保已成功安装 Redis 和 MySQL,因为 open-falcon 需要使用这两个存储组件。

同时,我们还需要确保已成功安装 Golang 和 Python。

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

安装 open-falcon :

下载源码和初始化数据库

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

编译

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

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

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

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

部署

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

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

启动所有模块

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

安装仪表盘

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

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

安装 Dashboard:

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

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

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

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

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

启动 Dashboard:

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

在浏览器中,打开 http://127.0.0.1:8081

03 falcon-log-agent

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

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

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

安装 falcon-log-agent:

构建

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

修改配置文件

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

部署

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

启动

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

检查

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

策略配置示例:

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

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

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

04 

监控配置

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

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

监控配置操作步骤:

  1. 创建用户组。

  2. 创建模板。

  3. 添加策略,其中 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 个满足阈值条件则报警。
  4. 配置报警接收用户组。

05 总结

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

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

原文链接:https://mp.weixin.qq.com/s/10DUiyIHSon3OZoYQy7VHg

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、容器云、Go、Python开发专业人才培训机构!