网络监控平台Shinken

标签: 硬件相关 网络和安全 服务器 系统架构 | 发表时间:2014-05-13 10:29 | 作者:Litrin
出处:http://www.litrin.net

Shinken是一个网络监控平台,可以通过一系列直观的方式监控网络内的各种健康状况。Shinken,单单这个名字接近于日语发音的“新建”,Shinken脱胎于Nagios,其实Shinken这个项目本身就是一帮Nagios项目的人无法忍受Nagios,自己跳出来重新用Python重构了一下——较低的版本甚至完全兼容Nagios的配置文件。

要吐漕的是Litrin在尝试安装的时候用了N个版本,0.x的根本找不到文档;1.x的文档很全,插件兼容性有问题;2.x文档有,插件全,就是明显的有bug。只能自 己在github上fork之后提交补丁——好在当天就被采纳了。不过话说这也是开源项目的一个常态,一个项目一旦做到差不多,团队很快就会因为产品定义的不同出现分歧,然后一帮人就fork代码搞个新项目,最终的结果就是“一堆类似功能的项目,多的挑花眼却没有一个是完美的。”

安装前先简单了解下Shinken的架构,相比Shinken借鉴的Nagios,这个明显要复杂很多。

  • 多种角色:不同于传统C/S架构,应该是出于分布式的考虑。Shinken的结构真的有些变态了。
    1. Arbiter(仲裁): Arbiter节点读取本地的配置,然后将配置切分之后分发到多个合适的schedulers节点。
    2. Scheduler(调度): scheduler节点负责分别管理poller和reactionner节点的任务调度。 
    3. Poller(轮询): poller节点通过各类插件执行scheduler节点的任务,获取各种健康指标。
    4. Reactionner(响应): reactionner 节点的任务是一旦满足要求将触发event_handlers机制(比如发送通知等)。
    5. Broker(中间人): broker节点的任务真的是中间人——导出和管理scheduler节点中的数据。
    6. Receiver  (接收人): 可选节点,在某些特定场景下可以通过reciver节点汇总数据(比如汇总私网内部数据,统一转发)。
  • 除了Arbiter节点之外,任何的节点都可以不是唯一的。节点之间的关系也都是多对多的。
  • 每一个节点都支持/依赖插件,或者说Shinken本身只是一个插件的框架而已。
  • 保障性能和可靠性——根据CAP法则,放弃了一致性。

Shinken architecture   说了这么多的理论,开始动手吧! 这次终于使用了Ubuntu1404的Server版。前边也介绍过,N多的版本都不完善,这里只能采用Ubuntu的apt方法来安装。这里为了省去前面的6种节点角色的复杂,只用“主控”和“受控”两种角色粗暴的示范安装过程。

主控端操作

#apt-get install shinken

看看哪些包被安装了

[email protected]:~# dpkg -l | grep shinken
rc shinken 1.4-2 amd64 Flexible monitoring tool - Meta-package
ii shinken-common 1.4-2 amd64 Flexible monitoring tool - Common files
ii shinken-module-broker-webui 1.4-2 amd64 Shinken WebUI broker module
ii shinken-module-broker-webui-cfgpassword 1.4-2 amd64 Shinken cfg_password authentifcation module for WebUI broker
ii shinken-module-broker-webui-sqlitedb 1.4-2 amd64 Shinken Sqlite storage module for WebUI broker
ii shinken-module-retention-picklefile 1.4-2 amd64 Retention module for Arbiter, Scheduler or Broker

安装结束后,正常情况下,在你的/etc/init.d目录下将会有一系列以shinken开头的脚本。这个时候,如果你简单粗暴的server shinken start的话肯定是一堆的报错等着你。好吧,这个问题我找了很久才发现。 编辑/etc/default/shinken,将第34行修改为:

BIN=/usr/lib/python2.7/dist-packages/shinken/bin

这个时候再server shinken start应该会成功。其实shinken start的脚本是启动所有的关联的服务,你可以通过增加或删除/etc/default/shinken 配置中的AVAIL_MODULES选项起到变更角色的目的。 全部OK之后,你可以通过浏览器访问主节点7767端口看到一个Dashboard。不过目前仅仅只是监控本地的健康状况而已。 Shinken_dashboard 下面就假定主控节点监控另一台主机nfs的网络连通状况 vi /etc/shinken/hosts/nfs.cfg

define host{
    use linux
    address 10.239.21.24 
    host_name nfs
}
define service{
    use ssh ; Name of service template to use

    host_name nfs
    service_description SSH check
    retry_interval 1
    check_interval 5
    max_check_attempts 2
   check_command check_ssh
   notifications_enabled 0
}

重起shinken之后就会看到一个对NFS主机SSH端口的监控。

如果你只需要拿到远端主机ping状态,TCP端口之类简单的几个指标的话,这种模式已经足够了,可如果需要知道远端主机的进程数量、磁盘空间等数据,那就需要在被控端上做文章。这里就简单的介绍下通过被控端上安装poller的方式实现。

被控端操作

开始都差不多,照贴

#apt-get install shinken

编辑/etc/default/shinken,将第34行修改为:

BIN=/usr/lib/python2.7/dist-packages/shinken/bin

由于被控端只需要一个poller即可,可以关闭其他服务,修改39行

AVAIL_MODULES="poller"

启动shinken:

[email protected]:/etc/shinken/hosts# service shinken start
Starting poller:
 ...done.

启动列表确实短了很多

回到主控端操作

vi /etc/shinken/hosts/test.cfg,添加被控端指标

define host{
use linux
host_name test
address 10.239.21.49 #被控端IP
}

define service{

         use local-service ; Name of service template to use
         host_name test
         service_description PING
         check_command check_ping!100.0,20%!500.0,60%
}

define service{
         use local-service ; Name of service template to use
         host_name test
         service_description Root Partition
         check_command check_local_disk!20%!10%!/
       }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       test
        service_description             Total Processes
        check_command                   check_local_procs!250!400!RSZDT
        }

vi /etc/shinken/shinken-specific/poller.cfg,追加一个新的poller

define poller {
    poller_name     poller-test  #poller名称
    address         10.239.21.49 #被控端IP
    port            7771         #端口,默认就是7771

    ## Optional
    manage_sub_realms   0   ; Does it take jobs from schedulers of sub-Realms?
    min_workers         0   ; Starts with N processes (0 = 1 per CPU)
    max_workers         0   ; No more than N processes (0 = 1 per CPU)
    processes_by_worker 256 ; Each worker manages N checks
    polling_interval    1   ; Get jobs from schedulers each N minutes
    timeout             3   ; Ping timeout
    data_timeout        120 ; Data send timeout
    max_check_attempts  3   ; If ping fails N or more, then the node is dead
    check_interval      60  ; Ping node every N seconds

    ## Interesting modules that can be used:
    # - NrpeBooster     = Replaces the check_nrpe binary. Therefore it
    #                       enhances performances when there are lot of NRPE
    #                       calls.
    # - CommandFile     = Allow the poller to read a nagios.cmd named pipe.
    #                       This permits the use of distributed check_mk checks
    #                       should you desire it.
    # - SnmpBooster     = Snmp bulk polling module
    #modules     NrpeBooster, CommandFile
    modules

    ## Advanced Features
    #passive         0       ; For DMZ monitoring, set to 1 so the connections
                            ; will be from scheduler -> poller.
    #poller_tags     None
    realm   All
}

重起主控端shinken服务,配置生效后,你会在webUI的’All’选项中发现新增test主机的各项指标。

相关 [网络监控 平台 shinken] 推荐:

网络监控平台Shinken

- - 开源小站
Shinken是一个网络监控平台,可以通过一系列直观的方式监控网络内的各种健康状况. Shinken,单单这个名字接近于日语发音的“新建”,Shinken脱胎于Nagios,其实Shinken这个项目本身就是一帮Nagios项目的人无法忍受Nagios,自己跳出来重新用Python重构了一下——较低的版本甚至完全兼容Nagios的配置文件.

开源监控系统 Shinken

- Le - 开源中国社区最新软件
Shinken是一款类似于Nagios的开源监控工具,由scratch重新设计和重写. 它的主要目的是迎合当前系统监控的需要同时具备Nagios一样的能力.

12 个网络监控工具

- - 博客 - 伯乐在线
如果你有一个网站,有可能出现一些问题,利用一些网络监控工具可以帮助你监督这些问题、帮助您采取预防措施. 这里我们列举了12个的网络监测工具,供你参考. Splunk 是一款顶级的日志分析软件  , 如果你经常用 grep、awk、sed、sort、uniq、tail、head 来分析日志,那么你需要 Splunk.

欣欣向荣的网络监控产业

- - Solidot
paopao 写道 "厦门市美亚柏科信息股份有限公司是仅有的电子数据取证行业两家上市企业中的一家,厦门超级计算中心就落户在美亚柏科. 谷歌搜索出的“美亚柏科财务报表(PDF)”中透露,该公司2014年营业收入和利润大幅增长. 大致包括:中央关于数据收集使用的整体规划,在技术和项目上形成重点;地方采集上报和承包负责机制,需要大量的数据项目支持.

平台的逻辑

- - 胡泳的BLOG
              平台的逻辑.                      胡泳 郝亚洲. 这是一个言必称“平台”的商业语境,尤其是当平台和“商业模式”、“公司战略”联系在一起的时候. 但笔者想在这里首先纠正这两大认识误区,平台既不是“商业模式”,也不是“公司战略”,而是一种天然属性. 这种天然属性客观存在,但是能否展现出来却和主体的意愿、能力、外界的环境有很大关系,也即,企业需不需要做平台,有没有能力做平台和做平台的时机.

谈电商平台

- - 人月神话的BLOG
一个完整的电商平台模块本身应该如何划分,可以从两个维度来进行思考,一个维度是本身电商的端到端业务和流程角度出发,可以分为哪些大的阶段,每个大阶段可对应为模块;另外一个维度则是从电商业务中的核心主数据和业务单据出发,围绕数据来考虑模块的划分. 电商平台核心模块从基础数据层面包括了产品管理,客户管理,供应商,经销商管理,在产品和供应商管理中可能又会拆分单独的价格库模块,维护产品价格和价格策略信息.

监控平台-Hawtio

- - 人月神话的BLOG
Hawt IO是一个新的可插入式 HTML5 面板,设计用来监控 ActiveMQ, Camel, Karaf, Fuse Fabric, Tomcat 和其他系统. 可通过其提供的 一堆插件提供额外的监控. 访问地址: http://hawt.io/. 由于Servicemix本身是基于Karaf组件容器的,因此可以使用Hawtio来监控Sericemix和Camel,对于Hawtio在Servicemix下的安装,一种方法是直接内嵌式安装,一种是采用单独的服务器进行监控平台的安装.

EA:FIFA 2012登陆Mac平台

- 洞箫 - cnBeta.COM
FIFA隶属全球最大互动娱乐软件开发商EA旗下,这个足球游戏的受欢迎程度已经不必过多介绍了. 虽然很流行,但是喜欢FIFA的Mac用户却一直为此抱怨,因为它一直都没有能够进入Mac平台当中,直到今天.

Zynga CityVille进驻Google+平台

- 志强 - 月光博客
  据Zynga官方博客报道,Zynga旗下的知名社交游戏“CityVille”已经进入谷歌社交网站Google+,CityVille目前是Zynga在Facebook上用户数最多的社交游戏,每月活跃用户数量超过1亿,但却无法从中国访问.   Zynga表示,“CityVille现已成为该公司在Facebook上推出的最大的社交游戏.

桔子平台介绍

- 高春辉 - 新媒体营销观察站
从爱德威离开到加入九城已经接近一年了,很多朋友问我现在在做的是什么项目,都以为是在做九城游戏中心,因为这个项目名声在外,大家都知道,现在我们的项目也已经正式基本完工,在11月3日4日北京CSDN开发者大会上,就将正式对外推出了,产品名字---桔子,我现在QQ群的名字就叫桔子,很多人第一反应是桔子酒店,第二是桔子手机,说明桔子酒店的PR做的相当到位嘛,接下来就看我们这颗“桔子”的发挥了.