Bosun快速入门

Bosun快速入门

本文档是Bosun的快速安装文档。根据本文档,你可以搭建一个完整的bosun服务,可以把指定机器的各种信息聚合起来,并且实现相关信息的报警。

Bosun

这篇文档中,bosun的安装依赖docker。如果不希望使用docker,可以从 bosun.org中自行下载bosun二进制文件,但是这样就需要自己安装OpenTSDB和HBase。

Docker

安装Docker

如果系统中没有安装Docker,可以参考此处进行安装 https://docs.docker.com/installation/。 安装完毕后,不要忘记将docker守护进程起开。

安装Boson

一旦docker安装完毕,可以使用下面的命令安装bosun,可能需要sudo权限。

    docker run -d -p 8070:8070 stackexchange/bosun

这条命令,告诉docker进程为bosun启动一个后台进程,端口是8070。稍等15秒,bosun服务启动完毕,这样bosun的server端就搭建并启动完毕,我们可以使用浏览器进行访问了,http://yourip:8070

向Bosun中推送数据

即使没有任何的slave,buson server自身也会产生很多的数据。下面也会讲如何启动bosun slave。

bosun检查数据

假设bosun slave已经启动,server和slave已经通过8070端口建立了连接,那么bosun server就会收到slave的各种信息。我们可以通过http://docker-server-ip:8070/items来查看当前已经连接上的slave节点。如果看到一堆的参数,那么恭喜,bosun正在收集数据。在页面的底部或者第二列展示的是当前正在产生数据的slave节点。点击某个slave,然后点击“Available Metrics”,就会看到当前slave可以被监控的数据类型,如cpu、内存等等。

新建Alert

现在我们的server已经在收集各种信息了,但监控系统的关键作用在于当异常情况发生时,系统会给出报警。报警也是bosun重点支持的。

Bosun提供一套工作流,它使设计、测试、推送一条报警更简单。我们看到bosun首页的导航条,包括"Items", "Graph", "Expression", "Rule"和"Test Config",其实这也是我们新建一条Alert的步骤。一般情况下,我们需要先选择一条item(metric),这是Alert的基础。然后,我们观察这条item绘制的曲线,了解它的动态。之后,我们将这个曲线转化成表达式,再次这个表达式整理成规则。之后,我们可以测试这条规则,无误后,将其推送到bosun server中。

下面是一个新建Alert的例子,我们监控cpu的使用情况,如果cpu idle过低,就报警。这里我们使用的metric是“os.cpu”。当某台机器的cpu idle持续一小时过低时,我们就发送一条报警。打开bosun首页,下面开始配置。

Items

点击“Items”标签页。会看到bosun当前监控的所有的项。点击“os.cpu”,页面跳转到“Graph”页面。

Graph

在Graph页面,我们能看到bosun预加载了所有slave的图表。我们想看单台slave的信息,在host输入框中,输入我们的机器名,点击蓝色的"Query"按钮,buson就会将指定机器的最近一个小时的cpu使用情况画出来。

现在,我们看到了cpu利用率的曲线。在页面的底部,有个“Queries”区域。它表示的是生成当前曲线所用的表达式。
在Queries区域,还有“Expression”和“Rule”超链接,这两个链接直接链接到本页面曲线的表达式和规则页面。在本教程中,我们点击“Expression” 链接。

Expression

在表达式页面,我们可以通过我们的query条件,来调整结果集的大小。本页面的查询表达式应该类似"q("sum":rate...)" 通过这条语句,bosun就会去查询过去一个小时内的指定机器的cpu使用情况。我们点击“show”按钮,可以看到这条语句的结果集。每条结果都是 timestamp和value的形式。

新建Alert,我们不太关心结果集的大小,我们对于结果集的平均值更感兴趣。为了得到结果集的平均值,可以使用avg()方法,如下:

    q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "")
    avg(q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", ""))

我们点击蓝色的“Test”按钮,我们就会看到结果变成单个数字,这个数字就是cpu在这段时间的平均利用率。现在我们得到了cpu平均值,可以根据这个值的大小,来监控cpu idle过低了。点击“rule”按钮。

Rule

在规则页面,有两个输入框,Alert框和Template框。Alert框展示的就是刚才我们新建的报警规则。Template框展示的是触发报警后的动作,如发送邮件等。当前Alert框,我们的这条规则,bosun会永远识别成“critical”,原因是 crit和warn是boolean类型的,我们把cpu的平均值赋给它,永远是非0值,非0值就是true。我们需要增加一些逻辑判断,如下:

    alert cpu.is.too.high {
        template = test
        $metric = q("sum:rate{counter,,1}:os.cpu{host=your-system-here}", "1h", "")
        $avgcpu = avg($metric)
        crit = $avgcpu > 80
        warn = $avgcpu > 60
    }

如果机器的cpu利用率高于80%,就会触发critical报警;如果高于60%,触发warning报警。到现在为止,我们的这个Alert其实也没多大用处,因为它只监控了一台机器,我们可以通过修改host的值来监控其他机器,或者将host的值设成*,来监控所有机器。如果不想监控某台机器,还可以在Alert body中填写排除语句,但在本教程中不详细讲解了。

点击“Test”按钮,下方会列出所有的crit报警,warn报警和normal情况。点击“Email”按钮,会看到报警邮件的发送情况。默认的报警邮件模板,不太直观,可以改成下面的:

    template test {
    subject = {{.Last.Status}}: {{.Alert.Name}} on {{.Group.host}}
    body = `<p>Alert: {{.Alert.Name}} triggered on {{.Group.host}}
    <hr>
    <p><strong>Computation</strong>
    <table>
        {{range .Computations}}
            <tr><td><a href="{{$.Expr .Text}}">{{.Text}}</a></td><td>{{.Value}}</td></tr>
        {{end}}
    </table>
    <hr>
    {{ .Graph .Alert.Vars.metric }}
    <hr>
    <p><strong>Relevant Tags</strong>
    <table>
        {{range $k, $v := .Group}}
            <tr><td>{{$k}}</td><td>{{$v}}</td></tr>
        {{end}}
    </table>`
}

继续阅读

时间: 2024-10-08 14:12:08

Bosun快速入门的相关文章

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

javaweb-html快速入门

本文主要是进行HTML简单介绍(详细的属性查帮助文档就行了,这里主要为快速入门,赶时间,在最短的时间中看明白一个html文件的代码(如果能称之为代码的话)详细的样式表,布局啥的有时间再研究吧) HTML 1.html的简介 1.1,html的全称:HyperText Mark-up Language ,超文本标记型语言,是网页的语言. 超文本:比文本更加强大(后面还会讲到XML,可扩展标记性语言) 标记:就是标签,html所有操作都是通过标签直接或间接的操作(把需要操作的数据通过标签封装起来)

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话 安装Python 从http://www.python.org/downloads/ 下载安装程序 安装完后,再添加到环境变量. 安装Oracle JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/ 选择要下载的Java版本(推荐Java 7). 选择一个JDK下载并接受许可协议. 一旦下载,运行安装程序. 安装Ant Ant:下载http

bash编程快速入门

首先,我们简单的介绍一下bash,bash是GNU计划编写的Unixshell,它是许多Linux平台上的内定shell,它提供了用户与系统的很好的交互,对于系统运维人员,bash的地位是举足轻重的,bash编程能很快处理日常的任务 bash入门,一个最简单的bash例子 #vim hello.sh #!/bin/bash #This is the first example of the bash #echo "Hello world" 下面,我们就这个简单的bash 脚本来介绍一下

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的

vue.js--60分钟快速入门

Vue.js--60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 本文摘自:http://www.cnblogs.com/keepfool/p/5619070.html 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM

Netty5快速入门及实例视频教程(整合Spring)

Netty5快速入门及实例视频教程+源码(整合Spring) https://pan.baidu.com/s/1pL8qF0J 01.传统的Socket分析02.NIO的代码分析03.对于NIO的一些疑惑04.Netty服务端HelloWorld入门05.Netty服务端入门补充06.Netty客户端入门07.如何构建一个多线程NIO系统08.Netty源码分析一09.Netty源码分析二10.Netty5服务端入门案例11.Netty5客户端入门案例12.单客户端多连接程序13.Netty学习

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

程序员带你十天快速入门Python,玩转电脑软件开发(二)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群538742639.群马上就满了,名额不多. 上节课主要讲解了以下内容: 为什么学习Pyth