zoukankan      html  css  js  c++  java
  • ELK集群之metricbeat(9)

    Metricbeat包的安装及简单使用

            Metricbeat包的安装及简单使用
    系统数据采集
      Python -> ES -> Grafana
    
    metricbeat的安装
      metricbeat -> logstash -> ES -> Grafana系统监控
      Metricbeat解决的问题:手动写Python比较麻烦
      yum localinstall metricbeat-7.6.2-x86_64.rpm -y
    metric默认配置说明
      /etc/metricbeat/metricbeat.yml
      /etc/metricbeat/modules.d/*.yml
    
    metric配置/etc/metricbeat/metricbeat.yml
    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.template.settings:
      index.number_of_shards: 1
      index.codec: best_compression
    setup.kibana:
    output.logstash:
      hosts: ["192.168.238.90:5044"]
    metricbeat输出到logstash
    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.template.settings:
      index.number_of_shards: 1
      index.codec: best_compression
    setup.kibana:
    output.kafka:
      hosts: ["172.17.166.217:9092", "172.17.166.218:9092", "172.17.166.219:9092"]
    
      topic: 'test2'
      partition.round_robin:
        reachable_only: false
    
      required_acks: 1
      compression: gzip
      max_message_bytes: 1000000
    metricbeat输出到kafka

    metricbeat采集系统配置

    # Module: system
    # Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.6/metricbeat-module-system.html
    - module: system
      period: 60s
      metricsets:
        - network
      interfaces:
        - eth0
    
    - module: system
      period: 10s
      metricsets:
        - cpu
        - load
        - memory
        #- network
        #- process
        #- process_summary
        #- socket_summary
        #- entropy
        #- core
        #- diskio
        #- socket
        #- service
      #process.include_top_n:
      #  by_cpu: 5      # include top 5 processes by CPU
      #  by_memory: 5   # include top 5 processes by memory
    
    - module: system
      period: 1m
      metricsets:
        - filesystem
    #    - fsstat
      processors:
      - drop_event.when.regexp:
          system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
    
    #q
    #- module: system
    #  period: 15m
    #  metricsets:
    #    - uptime
    
    #- module: system 
    #  period: 5m
    #  metricsets:
    #    - raid
    #  raid.mount_point: '/'   
    system.yml
            Metricbeat收集cpu内存等信息Grafana展示
    Kibana上先清空之前的索引信息
    
    load展示
      metric: avg system.load.1
      metric: avg system.load.5
      metric: avg system.load.15
      groupby: host.name.keyword
    
      alias: {{host.name.keyword}} {{metric}} {{field}}
      interval: 1m
    
    cpu展示,如果显示异常,清空索引后再观察下
      cpu.idle.pct
      cpu.system.pct
      cpu.user.pct
      cpu.iowait.pct
    
    磁盘使用率
    system.filesystem.used.pct
    
    内存使用率的展现
    system.memory.actual.used.pct
    
            Metricbeat收集流量信息Grafana展示
    需要配置单独收集某个网卡的流量/etc/metricbeat/modules.d/system.yml
    - module: system
      period: 60s
      metricsets: 
        - network
      interfaces: 
        - eth0
    
    Grafana配置流量信息1m=60s 1Byte=8bit
      avg(system.network.in.bytes)  _value/60*8
      Derivative(avg(system.network.in.bytes))
    
      alias {{host.name.keyword}} in traffic
      alias {{host.name.keyword}} out traffic

    metricbeat modules enable nginx #开启模块

    多台metricbeat安装-多台服务器采集
    metricbeat安装
      yum localinstall metricbeat-7.6.2-x86_64.rpm -y
    
    metric配置/etc/metricbeat/metricbeat.yml
      拷贝之前一台服务器的
    
    metricbeat配置/etc/metricbeat/modules.d/system.yml
      拷贝之前一台服务器的
    
    启动查看grafana
      systemctl restart metricbeat
    
            Metricbeat采集Nginx信息Grafana展示
    Nginx编译需要加以下选项
      --with-http_stub_status_module
    
    Nginx配置新增
            location /sjgstatus {
                stub_status on;
                access_log off;
            allow 192.168.0.0/16;
            deny all;
            }
    
    Metricbeat支持nginx
      metricbeat modules enable nginx
    
    测试能否获取数据
      curl xxx/sjgstatus
    
    Grafana配置nginx请求情况
      avg(requests) _value / 60
      Derivative
      term by : service.address.keyword
      alias: {{service.address.keyword}} accept persecond
    
    模拟数据
      while true; do  curl 192.168.238.90; curl 192.168.238.90/test; sleep 1; done
    
            Metricbeat采集多台Nginx数据
    安装Nginx,跟之前一样的配置
    
    Metric新增一台Nginx监控
    hosts: ["http://xxx","http://xxx"]
    
    一台Metricbeat就能监控能通的Nginx
    metricbeat开启nginx监测模块

    Metricbeat采集Redis信息Grafana展示

    安装redis
      yum install redis -y
    
    配置redis
      设置绑定地址:0.0.0.0
      设置密码:sjgpwd
    
    Metricbeat支持redis
      metricbeat modules enable redis
    
    监控redis每秒连接数
      received persecond _value / 60
      Derivative
      grouby: service.address
      alias: {{service.address.keyword}} received persecond
    
    模拟数据
      while true; do redis-cli -a sjgpwd set a b; redis-cli -a sjgpwd get a; sleep 1; done
    
    metricbeat还支持收集很多模块,见以下目录
    /etc/metricbeat/modules.d/
    redis

    Metricbeat采集Mysql监控数据

    Metricbeat采集Mysql监控数据
    安装mysql服务器准备
    yum install mariadb-server -y
    systemctl restart mariadb
    mysql_secure_installation
    
    监控权限开启
    grant usage on *.* to 'monitor'@'192.168.%' identified by 'sjgpwd';
    flush privileges;
    
    测试能否正常登录
    mysql -h 192.168.238.92 -umonitor -psjgpwd -A
    
    开启监控mysql模块
    metricbeat modules enable mysql
    
    配置mysql监控
      hosts: ["monitor:sjgpwd@tcp(xxx:3306)/"]
    
    监控mysql delete persecond
      delete persecond _value / 60
      Derivative
      grouby: service.address
      alias: {{service.address.keyword}} delete persecond
    
    模拟数据,观察grafana
    use mysql;
    create table test (id int);
    mysql -psjgpwd -A -e "use mysql; delete from test"
    mysql

    Metricbeat根据不同类型定义不同索引

    metricbeat采集
      metricbeat modules enable system
      metricbeat modules enable redis
      metricbeat modules enable nginx
      metricbeat modules enable mysql
    
    Logstash区分system还是redis 还是其它
    output {
      if [service][type] == "mysql" {
        elasticsearch {
          hosts => ["http://192.168.238.90:9200", "http://192.168.238.92:9200"]
          user => "elastic"
          password => "sjgpwd"
          index => "sjgmysql-%{+YYYY.MM.dd}"
        }
      }
      else if [service][type] == "redis" {
        elasticsearch {
          hosts => ["http://192.168.238.90:9200", "http://192.168.238.92:9200"]
          user => "elastic"
          password => "sjgpwd"
          index => "sjgredis-%{+YYYY.MM.dd}"
        }
      }
      else {
        elasticsearch {
          hosts => ["http://192.168.238.90:9200", "http://192.168.238.92:9200"]
          user => "elastic"
          password => "sjgpwd"
          index => "sjgother-%{+YYYY.MM.dd}"
        }
      }
    }
    logstash配置

    Kibana页面上ES索引监控的开启

    Kibana监控的开启
      开启kibana监控
      使用metricbeat
    
    启动metricbeat
      metricbeat modules enable elasticsearch-xpack
      metricbeat modules disable 所有
    
    配置文件elasticsearch-xpack.yml
    - module: elasticsearch
      metricsets:
        - ccr
        - cluster_stats
        - enrich
        - index
        - index_recovery
        - index_summary
        - ml_job
        - node_stats
        - shard
      period: 10s
      hosts: ["http://192.168.238.90:9200", "http://192.168.238.92:9200"]
      username: "elastic"
      password: "sjgpwd"
      xpack.enabled: true
    
    metricbeat配置:/etc/metricbeat/metricbeat.yml
    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.template.settings:
      index.number_of_shards: 1
      index.codec: best_compression
    setup.kibana:
    
    output.elasticsearch:
      hosts: ["192.168.238.90:9200", "192.168.238.92:9200"]
      username: "elastic"
      password: "sjgpwd"
    
    Python测试监控是否正常
    import time
    import datetime
    from elasticsearch import Elasticsearch
    es = Elasticsearch(['http://elastic:sjgpwd@192.168.238.90:9200', 'http://elastic:sjgpwd@192.168.238.92:9200'])
    for i in range(10000):
      curtime=datetime.datetime.utcnow().isoformat()
      body = {"name": "sjg{0}".format(i), "@timestamp": curtime, "sjgcount": i}
      es.index(index='sjg', body=body)
      time.sleep(1)
      print('insert {0}'.format(i))
    kibana监测es

  • 相关阅读:
    oracle常规操作
    shell 的算数运算
    sed 命令小结
    swing
    索引失效
    poj--1258--Agri-Net(最小生成树)
    CodeForces--626C--Block Towers (二分)
    Codeforces--629A--Far Relative’s Birthday Cake(暴力模拟)
    Codeforces--629B--Far Relative’s Problem(模拟)
    hdoj--5104--Primes Problem(素数打表)
  • 原文地址:https://www.cnblogs.com/dahuige/p/15067772.html
Copyright © 2011-2022 走看看