当前位置: 首页 > 科技观察

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

时间:2023-03-15 11:09:21 科技观察

1、介绍小米开源监控系统open-falcon和滴滴开源日志采集工具falcon-log-agent作为一组黄金搭档,被互联网公司广泛使用。本文介绍如何使用这群黄金搭档来监控业务系统的日志。2.open-falconopen-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-falconcd$GOPATH/src/github.com/open-falcongitclonehttps://github.com/open-falcon/falcon-plus.gitcd$GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema/#初始化数据库mysql-h127.0.0.1-uroot-p<1_uic-db-schema.sqlmysql-h127.0.0.1-uroot-p<2_portal-db-schema.sqlmysql-h127.0.0.1-uroot-p<3_dashboard-db-schema.sqlmysql-h127.0.0.1-uroot-p<4_graph-db-schema.sqlmysql-h127.0.0.1-uroot-p<5_alarms-db-schema.sqlcompilecd$GOPATH/src/github.com/open-falcon/falcon-plus/#makeallmodulesmakeall#makespecifiedmodulemakeagent#packallmodulesmakepack执行makepack后得到一个压缩包open-falcon-vx.x.x.tar.gzmakepack后得到一个压缩包open-falcon-vx.x.x.tar.gz如果我们要修改各个模块的配置文件。在执行makepack之前,我们可以修改模块的config/xxx.json在makepack之前,我们可以修改模块的config/xxx.json。需要注意的是,在模块的配置文件中,MySQL的默认账号和密码分别为root和empty。如果我们的MySQL账号和密码不同,需要编辑模块的配置文件进行修改。root和empty,如果我们的mysql账号和密码不同,需要编辑模块的配置文件修改。部署我们可以将得到的压缩包解压到指定目录下进行部署,例如:-falcon./open-falconstart#Checkmodulestatus./open-falconcheckInstallDashboard在安装Dashboard之前,我们需要先安装依赖:#Centosyuminstall-ypython-virtualenvyuminstall-ypython-develyuminstall-yopenldap-develyuminstall-ymysql-develyumgroupinstall"开发工具"#Ubuntuapt-getinstall-ypython-virtualenvapt-getinstall-yslapdldap-utilsapt-getinstall-ylibmysqld-devapt-getinstall-ybuild-essentialapt-getinstall-ypython-devlibldap2-devlibsasl2-devlibssl-dev安装仪表板:cd~/open-falcongitclonehttps://github.com/open-falcon/dashboard.gitcddashboardvirtualenv./env./env/bin/pipinstall-rpip_requirements.txt需要注意的是这里有个bug,会导致无法注册account在dashboard上(点击按钮没有反应),需要将falconapi的端口号从18080改为8080,18080改为8080。cd~/open-falcon/dashboardvimrrd/config.py#在启动Dashboard之前将端口18080更改为8080API_ADDR=os.environ.get("API_ADDR","http://81.70.201.193:8080/api/v1"),查看open-falcon的api模块是否启动:cd~/open-falcon./open-falconcheckStartDashboard:$cd~/open-falcon/dashboard$./controlstart在浏览器中打开http:///127.0.0.1:8081。http://127.0.0.1:8081。3.falcon-log-agentfalcon-log-agent与ELK不同,它不是日志查看系统,而是日志计算系统。它通过插件日志采集方式实时读取日志文件内容,实时计算,并将计算结果直接推送给open-falcon。它有几个限制,即日志必须包含时间,不支持文件软链接,日志时间必须是有序的。安装falcon-log-agent:buildmake-p$GOPATH/src/github.com/didi&&cd$_gitclonehttps://github.com/didi/falcon-log-agent.gitmakebuild修改配置文件cd$GOPATH/src/github.com/didi/falcon-log-agentcpcfg/dev.cfgcfg/cfg.json#基础配置cfg/strategy.dev.jsoncfg/strategy.json#策略配置部署cd$GOPATH/src/github.com/didi/falcon-log-agentmakepackmkdir~/open-falcon/falcon-log-agenttar-zxvffalcon-log-agent.tar.gz-C~/open-falcon/falcon-log-agentstartcd~/open-falcon/falcon-log-agent./controlstart检查http://ip:8003/healthHealth检查http://ip:8003/strategt查看有效策略Policy配置示例:本文使用的agent模块open-falcon以日志为例介绍如何配置新策略。[{"id":10,#多个策略,id必须唯一"name":"agentsenddatacount",#对应open-falcon中的metric(监控项)"file_path":"/root/open-falcon/agent/logs/agent.log",#日志路径(支持动态路径)"time_format":"yyyy/mm/ddHH:MM:SS",#timeformat"pattern":"Total=(\\d+)",#匹配正则表达式"exclude":"",#排除正则表达式"step":60,#日志采集周期,单位秒"tags":{},对应open-falcon中的标签"func":"cnt",#logcollectionmethod,cnt,avg,sum,max,min"degree":6,#accuracy"comment":"",#comment"parse_succ":true}]重启falcon-log-agent,我们你可以在Dashboard的Couters列表中看到代理发送数据计数。代理发送数据计数。4.监控配置我们已经介绍了open-falcon和falcon-log-agent的安装和启动。自动收集日志并将计算数据上报给open-falcon。下面介绍如何配置日志数据的监控。监控配置步骤:创建用户组。创建模板。添加策略,其中metric对应falcon-log-agent策略配置文件中的配置项名称,max为最大告警数,P为告警级别(<3:同时发送短信和邮件,>=3:只发邮件),run是策略生效的时间(不填表示全天生效),if是条件。报警条件支持函数如下:报警条件支持函数如下:all(#3)如果最近3个点满足阈值条件,则发出报警。max(#3)最近3个点,如果最大值满足阈值条件,则发出报警。min(#3)最近3个点,如果最小值满足阈值条件,就会发出报警。sum(#3)最近的3个点,如果和满足阈值条件,就会发出警报。avg(#3)最近3个点,如果平均值满足阈值条件,则报警。diff(#3)将历史上最新的3个点(subtrahend)减去最新的pushedpoint(minuend)得到3个差值,其中一个差值满足阈值条件会触发报警。pdiff(#3)历史上最新的3个点(minuend)减去最新推入的点(minuend)得到3个差值,然后将3个差值除以减数得到3个商值,如果一个商值满足阈值条件,将发出警报。lookup(#2,3)如果最近3个点中有2个满足阈值条件则报警。配置告警接收用户组。5.总结在本文中,我们介绍了基于Go语言开发的开源监控系统和日志收集工具的安装和使用。建议读者朋友们手工操作。需要注意的是,尽量严格按照本文的目录结构。参考:https://github.com/open-falcon/falcon-plushttps://github.com/open-falcon/dashboardhttps://github.com/didi/falcon-log-agent