zoukankan      html  css  js  c++  java
  • 7.3版本ELk搭建以及日志告警到zabbix全流程

    ELK:一套组件

    1:安装elasticsearch,需要先安装jdk

      (1)这里我安装的是jdk11.0.1

      链接: https://pan.baidu.com/s/1E1MTgTyNFskHbahzBgNfjg 提取码: iutb

      解压jdk,解压命令为#tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz

    为了使后续使用将解压的文件夹改名为jdk:#mv jdk-12.0.2/  jdk

    (2):配置环境变量,输入命令

    #vim /etc/profile

    在文件尾部加入以下内容:

    export JAVA_HOME=/usr/local/jdk

    export JRE_HOME=/$JAVA_HOME/jre

    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    修改完成后,保存文件,退出。

    通过source命令重新加载/etc/profile文件,使得修改后的内容生效,命令如下。

    # source /etc/profile

    输入java –version查看jdk版本,输出成功,这代表安装成功。

           值得注意的是:export JAVA_HOME=/usr/local/jdk  这个路径是看你吧你的jdk安装在那个路径下,改为你安装的路径。
    2:elasticsearch的安装

    (1)去官网下载7.3版本的elasticsearch,其他组件也建议使用相同版本。选择linux版本然后上传至服务器,选择你要上传的目录,然后解压

    tar -zxvf elasticsearch-7.3.0-linux-86_64.tar.gz

    (2)修改配置文件

    1. network.host: 0.0.0.0 这样写是全局访问,你也可以写成让某个主机访问,全局访问需要打开防火墙的端口,或者关闭防火墙
    2.  http.port: 9200

    (3)启动elasticsearch需要非root用户

    useradd test         #创建用户test

    groupadd test#创建组test

    useradd test-g test#将用户添加到组

    然后需要把该组建的权限赋予新建的非root用户

    chown test:test  /elasticsearch/*  这是我得文件夹

    (4)启动elasticsearch

    进入到elasticsearch,cd /elasticsearch/bin

    然后 ./elasticsearch &   挂后台执行

     

    注意容易出错:

    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

      [3]:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    解决:【1】:编辑 /etc/security/limits.conf,追加以下内容;
    * soft nofile 65536
    * hard nofile 65536
    此文件修改后需要重新登录用户,才会生效

    【2】:编辑 /etc/sysctl.conf,追加以下内容:
    vm.max_map_count=655360
    保存后,执行:

    sysctl -p

    重新启动,成功。

    【3】:

    在配置文件里面

    取消注释保留一个节点
    cluster.initial_master_nodes: ["node-1"]
    这个的话,这里的node-1是上面一个默认的记得打开就可以了

    3:安装filebeat

    (1)filebeat是安装在客户端用来搜集日志的,然后把收集的日志送到logstash

    (2)把压缩包上传至指定目录,解压  tar -zxvf filebeat-7.3.0.tar.gz

    (3)修改配置文件  vim /filebeat/filebeat.yml

    在文件末尾加上这些

     

    涂画的地方是logstash的ip和端口

    path:是你要搜集日志的路径

    需要注意的是:在配置文件里面需要把

     这两行注释掉,关掉一个出口

    如果报-bash: ./filebeat: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory错误

     解决:

    sudo yum install  glibc-common glibc

    sudo yum install  glibc.i686

     

    4:安装logstash

    (1)上传压缩包到指定目录,解压

    tar -zxvf logstash-7.3.0.tar.gz

    (2)新建一个配置文件,用来使用此文件启动logstash  vim test.conf   

     

    涂掉的地方是elasticsearch的地址和端口  指定输出到哪里

     这是简单的配置,input是来接收filebeat传送过来的日志文件,,如果有更多需求,可以使用filter过滤功能

    (3)启动 

    在logstash的bin目录下

    ./logstash -f ../test.conf &   这里我的test.conf是和bin为同级目录

    5:安装kibana

    (1)上传压缩包到指定目录,解压 tar -zvxf   ********

    (2)修改配置文件

    server.port: 5601

    server.host: "0.0.0.0"

    elasticsearch.hosts: ["http://localhost:9200"]

    如果需要汉化kibana

    i18n.locale: "zh-CN"

    (3)启动   在bin目录下    ./kibana &   需要注意的是  kibana也是要在非root用户下启动

    (4)界面使用,

    所有组件都启动后会看到在elasticsearch下的索引管理里面有你自己建立的索引,也就是在logstash配置文件里,

    然后在kibana里面创建索引模式,点进去,你会看到你的索引,然后定义索引模式,例如logstash-*  点击下一步

    最后需要在日志界面的配置源中,把该索引加进去

     这些都是索引。

    产看日志过滤使用,可以在搜索框中使用多条件联合查询

    (6)告警到zabbix

    (1)安装

    logstash-output-zabbix是一个社区维护的插件,它默认不安装,但是它安装起来也很容易,直接在logstash中运行即可:

    bin/logstash-plugin install logstash-output-zabbix
    (2)配置logstash文件

    input {
        beats {
                port => 5044
        }
    }
    
    filter {
        
            grok {
                    match => { "message" => "%{IP:remote_addr} (?:%{DATA:remote_user}|-) [%{HTTPDATE:timestamp}] %{IPORHOST:http_host} %{DATA:request_method} %{DATA:request_uri} %{NUMBER:status} (?:%{NUMBER:body_bytes_sent}|-) (?:%{DATA:request_time}|-) "(?:%{DATA:http_referer}|-)" "%{DATA:http_user_agent}" (?:%{DATA:http_x_forwarded_for}|-) "(?:%{DATA:http_cookie}|-)""}
            }
            mutate {
                   
                    add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ]            在消息中添加zabbix中item的key值
                    add_field => [ "[@metadata][zabbix_host]" , "EIP_weixin" ]                         在消息中添加zabbix中的host值,主机名
            }
        
    }
    
    output {
                    elasticsearch {
                           hosts => ["10.1.129.101:9200"]
                           index => "logstash-wxself.gtafe.com_10.1.134.60"
                          
                          }
          
    
          if [message]  =~ /(ERR|error|ERROR|Failed)/  {
                     zabbix {
                            zabbix_host => "[@metadata][zabbix_host]"                 
                            zabbix_key => "[@metadata][zabbix_key]"
                            zabbix_server_host => "10.1.134.220"   
                            zabbix_server_port => "10051"
                            zabbix_value => "message"
                            }
                    }
    
    
            stdout { codec => rubydebug }
    }
    

      (3)然后在zabbix  web界面建立模板。监控项,触发器

    需要注意的是,监控项要设置成zabbix采集器,设置成字符类型(设置文本类型不行,不知道什么原因),触发器设置为

    设置完后可以测试一下,需要你在采集日志的主机上安装zabbix  agent,命令如下:

    /usr/local/zabbix/bin/zabbix_sender -z 10.1.134.220 -vv -s "EIP_weixin" -k logstash-api-access -o "Aug"

    -z代表是  zabbix server  地址  -vv 是 详细显示  -s  是主机名   -k  是键值 -o  是  传输值

  • 相关阅读:
    【nginx】常见的陷阱和错误
    linux配置文件的一些调优
    关于防刷票的一些问题
    关于nginx的限速模块
    使用Javascript监控前端相关数据
    【mysql】关于Index Condition Pushdown特性
    【mysql】关于临时表
    堆和栈的区别(转过无数次的文章)
    深入PHP内核之in_array
    【mysql】索引的优化
  • 原文地址:https://www.cnblogs.com/wts-home/p/11474933.html
Copyright © 2011-2022 走看看