zoukankan      html  css  js  c++  java
  • 空口无凭:服务器性能监控 ELK实践

    https://server.zol.com.cn/572/5727191_all.html

    本文导航:

    1准备工作

     

      随着项目中服务器越加越多,项目组需要对服务器进行更为完善的性能监控:排查问题故障的时,经常要登录到服务器上查看CPU、内存、网络、磁盘状况。作为一种高吞吐量的分布式发布订阅消息系统,kafka就是其中之一,当然还少不了elasticsearch、spark等。

    空口无凭:服务器性能监控 ELK实践
    kafka

      一般来说,项目中应用集群种类较多,这些集群具备各自的应用监控能力,但是不具备整体的监控入口。在本文中我们先将服务器性能数据收集起来,做简单的展现,后面再将应用的运行信息采集用于定制的展现。这样就能不断扩展监控,第一时间了解整个项目中服务器的运行状况。

      对此云端卫士工程师窦鹏辉和付大伟表示:我们在以往较早项目中已经使用了elasticsearch(1.2)、kibana(3),在了解到ELK版本升级迅速的特点后,考虑使用最新版的ELK来监控服务器性能。

      本文中会提到的软件

      Logstash

      ElasticSearch

      Kibana

      Collectd

      Collectl

      在这里Collectl、Collectd都是性能采集软件,结果输出不同,后面会有介绍。

      主要步骤如下:

      1,服务器上统一安装Collectd软件,收集服务器运行数据发送给logstash。

      2,Logstash接受collectd发送过来的数据,并插入es集群中。

      3,设计kibana报表,统计展现这些性能数据。

      4,如需其他功能还需定制开发web应用。

      5,架构简单示意如下:

    空口无凭:服务器性能监控 ELK实践

      安装配置

      collectd安装配置

      collectd 是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。它会在系统运行和存储信息时周期性的统计系统的相关统计信息

      安装

      在Ubuntu/Debian上:

      # apt-get install collectd [On Debian based Systems]

      在RHEL/CentOS 6.x/5.x上:

      在基于红帽的较旧系统(比如CentOS/Fedora)上,你先需要启用系统下的epel软件库,然后你才能从epel软件库安装collectd程序包。

      # yum install collectd

      在RHEL/CentOS 7.x上:

      在最新版本的RHEL/CentOS 7.x上,你可以从默认的yum软件库安装和启用epel软件库,如下所示。

      # yum install epel-release

      # yum install collectd

      将Collectd安装到CentOS/RHEL/Fedora上

      注意:对Fedora用户而言,不需要启用任何第三方软件库,只要运行yum命令,即可从默认的yum软件库获得collectd程序包

     

    2安装配置

      Hostname "host.example.com"

      LoadPlugin interface

      LoadPlugin cpu

      LoadPlugin memory

      LoadPlugin network

      LoadPlugin df

      LoadPlugin disk

      <Plugin interface>

      Interface "eth0"

      IgnoreSelected false

      </Plugin>

      <Plugin network>

      <Server "192.168.24.122" "25826">  ## logstash 的 IP 地址和 collectd 的数据接收端口号

      </Server>

      </Plugin>

      配置

      位置文件路径:/etc/collectd/collectd.conf

      添加一下配置实现对服务器基本的CPU、内存、网卡流量、磁盘 IO 以及磁盘空间占用

      的监控:

      启动

      # service collectd start  [On Debian based Systems]

      # service collectd start [On RHEL/CentOS 6.x/5.x Systems]

      # systemctl start collectd.service [On RHEL/CentOS 7.x Systems]

      Logstash安装配置

      安装

      下载压缩

      wget https://download.elastic.co/logstash/logstash/logstash-2.2.2.tar.gz

      首先要安装好并配置好java环境,然后解压logstatsh压缩包便完成了安装。

      # apt-get install  java-1.7.0-openjdk [On Debian based Systems]

      # yum install  java-1.7.0-openjdk [On RHEL/CentOS 6.x/5.x Systems]

      #tar zxvf logstash-2.2.2.tar.gz

      配置

      进入logstash安装目录,创建logstash.conf配置文件,添加一下配置来接收collectd采集的信息,并将信息发送到elasticsearch配置

      #input{

      #udp {

      #            port => 25826

      #            buffer_size => 1452

      #            workers => 3

      #            queue_size => 10000

      #            codec => collectd { }

      #            type => "collectd"

      #        }

      #}

      #output{

      #    elasticsearch {

      #        hosts => ["192.168.24.122"]

      #        index => "collectd-monitor-%{type}-%{+YYYY.MM.dd}"

      #        document_type => "%{type}"

      #        workers => 3

      #        template_overwrite => true

      #    }

      #}

     

    3Logstash安装配置

      启动

      #bin/logstash -f logstash.conf

      ElasticSearch安装配置

      安装

      下载elasticsearch压缩包并解压便完成安装:

      #wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.2.0/elasticsearch-2.2.0.tar.gz

      #tar  zxvf  elasticsearch-2.2.0.tar.gz

      配置

      在配置文件中添加如下配置: ( elasticsearch-2.2.0/config/elasticsearch.yml)

      #cluster.name: elk

      #node.name: node-2

      #network.host: 192.168.24.122

      #discovery.zen.ping.unicast.hosts: ["192.168.24.122", "192.168.6.142"]

      启动

      #bin/elasticsearch -d

      kibana安装配置

      安装

      下载并解压完成安装:

      #wget https://download.elastic.co/kibana/kibana/kibana-4.4.1-linux-x64.tar.gz

      #tar zxvf kibana-4.4.1-linux-64.tar.gz

      配置

      配置文件制定elasticsearch的url即可(kibana-4.4.1/config/kibana.yml)如下图:

    空口无凭:服务器性能监控 ELK实践

      启动

      #bin/kibana

      启动后即可访问http://xxx.xxx.xxx.xxx:5601

      Collectl

      collectl不同于collectd,它可以直接给出系统总体运行状态。

      我在使用collectd时,感觉这东西是挺强大的,支持的插件类型非常多。并且有logstash插件类型支持输入。但同时也有一个问题:为了兼容性他将数据拆分了:

    空口无凭:服务器性能监控 ELK实践

      上报的会按照cpu个数生成数据,且每个字段会分别当做一条数据插入。简单说就是它会将一条数据拆分开。同一时刻一台服务器产生的cpu相关数据是64条(8核cpu)。

      如果直接使用kibana来统计展现,统计cpu使用率就要就会非常头疼了。

      如果使用collectl做采集就比较简单了,这里做一下简单介绍:

     

    4centos安装

      centos安装如下:

      # yum install collectl

      安装完成后运行命令:collectl -s+m

    空口无凭:服务器性能监控 ELK实践

      直接可以看到cpu、内存、磁盘、网络的状况。可惜的是他没有插件直接和logstash联动起来。需要自己开发一个小程序采集并发送。

      统计展现

      首先,切换到Visualize选择一种图表,现在我们选择Area Chart

    空口无凭:服务器性能监控 ELK实践

      第二步,选择elasticsearch的索引。

    空口无凭:服务器性能监控 ELK实践

      第三步,过滤我们要展示数据,我们现在要展示内存分布,所以要欧绿memory信息,并制定主机为douph

    空口无凭:服务器性能监控 ELK实践
    图片说明

      第四步,实现图表的展示

      设置metrics区域(左侧)

      Y轴展示的是内存占用大小所以在aggregation中选择Sum,Field为内存值得字段,这里选择value(elasticsearch中的字段)

    空口无凭:服务器性能监控 ELK实践

      buckets部分的x轴的x-Axis 选项中sub aggregation选择Date Histogram Field选择@tempstamp字段,刷新:选择Second;如下图

    空口无凭:服务器性能监控 ELK实践

    空口无凭:服务器性能监控 ELK实践

      buckets部分的Split Area项可以将y轴的值划分为几个部分,对于内存监控需要分为"已使用"、"缓存"、"空闲"是三部分,具体配置如下:

    空口无凭:服务器性能监控 ELK实践

      对于每个部分可以自己添加标签,如图

    空口无凭:服务器性能监控 ELK实践

     

    5总结

      接下来就可以点击编辑区域的运行按钮就可以看到效果了

    空口无凭:服务器性能监控 ELK实践

      最后点击保存将该图标保存,取个名字,save一下就完成了。

      最终效果图:

    空口无凭:服务器性能监控 ELK实践

      总结

      Collectd+ELK确实可以实现服务器性能数据采集、入库、展现。但云端卫士窦鹏辉表示,由于Collectd采集的数据是拆分过的,在统计展现时就需要精心设计了。对于不熟悉ES分组统计的同学会感觉比较头疼。我们设计展现时,考虑需要一个按服务器分组统计的表格页面(整体状况页面)。可以下钻到单台服务器的性能展现(也就是文中的展现)。单台服务器的性能再下钻到单个指标(cpu、内存等)的性能展现(多颗cpu,多块网卡)。

      监控扩展方面。我们在单机上部署的DDoS攻击检测软件,它本身的运行状态情况需要呈现(处理性能、数据队列、内存占用等)。下一步工作是将这些运行状态数据上报到监控系统。相信越加丰富的数据越有助于集群的维护工作展开。

  • 相关阅读:
    Atitit 趋势管理之道 attilax著
    Atitit 循环处理的新特性 for...else...
    Atitit 2017年的技术趋势与未来的大技术趋势
    atitit 用什么样的维度看问题.docx 如何了解 看待xxx
    atitit prj mnrs 项目中的几种经理角色.docx
    Atitit IT办公场所以及度假村以及网点以及租房点建设之道 attilax总结
    Atitit 工具选型的因素与方法 attilax总结
    Atitit.团队文化建设影响组织的的一些原理 法则 定理 效应 p826.v4
    Atiitt 管理方面的误区总结 attilax总结
    Atitit 未来趋势把控的书籍 attilax总结 v3
  • 原文地址:https://www.cnblogs.com/zhoading/p/14743533.html
Copyright © 2011-2022 走看看