zoukankan      html  css  js  c++  java
  • ELK的搭建

    ELK日志分析及操作步骤:

      一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景 中,此方法效率低下,面临问题包括日志量太大如何归档、文本 搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所 有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

      一般大型系统是一个分布式部署的架构,不同的服务模块部署在 不同的服务器上,问题出现时,大部分情况需要根据问题暴露的 关键信息,定位到具体的服务器和服务模块,构建一套集中式日 志系统,可以提高定位问题的效率。

    一个完整的集中式日志系统,需要包含以下几个主要特点:

    1. 收集-能够采集多种来源的日志数据
    2. 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据
    3. 分析-可以支持 UI 分析
    4. 警告-能够提供错误报告,监控机制


    ELK提供了一整套解决方案,并且都是开源软件,之间互相配合 使用,完美衔接,高效的满足了很多场合的应用。目前主流的一 种日志系统。

    ELK的核心套件:
    ElasticSearch是实时全文搜索和分析引擎,提供搜集、分析、存 储数据三大功能;是一套开放REST和JAVA API等结构提供高效 搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜 索引擎库之上。

    Logstash是一个用来搜集、分析、过滤日志的工具。它支持几 乎任何类型的日志,包括系统日志、错误日志和自定义应用程序 日志。它可以从许多来源接收日志,这些来源包括 syslog、消 息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数 据,包括电子邮件、websockets和Elasticsearch。

    Kibana是一个基于Web的图形界面,用于搜索、分析和可视化 存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch 的REST接口来检索数据,不仅允许用户创建他们自己的数据的 定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

    filebeat 会给服务器logstash传日志
    logstash  负责日志收集、过滤、存储日志
    elasticsearch 负责搜索处理
    kibana  提供web界面展现

    ELK的搭建:

    0、环境构建

    logstash      # 负责日志收集、过滤、存储日志
    elasticsearch   # 负责搜索处理
    kibana        # 提供web界面展现

    @1 192.168.99.104

    1、安装elasticsearch及其配置
    #elasticsearch需要java的运行环境,需要安装jdk

    yum -y install jdk

    JDK是 Java 语言的软件开发工具包,它包含了JAVA的运行环境(JVM+Java系统类)
    库)和JAVA工具。

    java -version                 #查看java版本
    yum -y install elasticsearch
    vim /etc/elasticsearch/elasticsearch.yml

    注:内存不充足时:

    bootstrap.memory_lock: false                   #把true改成false去掉注释,(开机锁定部分专属内存,配置内存使用交换分区)
    
    http.port: 9200                    #监听端口,去掉注释
    systemctl enable elasticsearch
    systemctl start elasticsearch
    firewall-cmd --add-port=9200/tcp
    firewall-cmd --add-port=9200/tcp --permanent
    netstat -anp | grep 9200

    2、安装 logstash

    yum -y install logstash
    systemctl start logstash
    systemctl enable logstash

    3、安装kibana
    # 提供web界面展现

    yum -y install kibana
    vim /etc/kibana/kibana.yml
    ########################
    server.port: 5601                                 #访问端口,去掉注释
    server.host: "0.0.0.0"                            #访问主机,去掉注释
    elasticsearch.url: "http://localhost:9200"        #本机访问端口,去掉注释
    ############################
    systemctl restart kibana
    systemctl enable kibana
    firewall-cmd --add-port=5601/tcp
    firewall-cmd --add-port=5601/tcp --permanent
    netstat -anp | grep 5601

    4、安装filebeat
    logstash收集日志没有filebeat方便

    yum -y install filebeat
    vim /etc/filebeat/filebeat.yml
    ##############################
    - /var/log/*/*.log #其他软件的日志
    - /var/log/messages #系统日志
    因为Linux软件日志有自己的目录,所以/*/*.log
    paths:
    elasticsearch:              #注释掉
    hosts:["localhost:9200"]        #注释掉
    logstash:                 # 取消注释
    hosts:["localhost:5044"]        #取消注释
    #############################
    systemctl enable filebeat
    systemctl start filebeat
    firewall-cmd --add-port=5044/tcp
    firewall-cmd --add-port=5044/tcp --permanent

     

    5、编辑logstash

    cd /etc/logstash/conf.d
    vim 随便.conf
    #######################
    #监听5044端口作为输入
    input {
    beats {
    port => "5044"
    }
    }
    #数据过滤
    filter {
    grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    geoip {
    source => "clientip"
    }
    }
    #输出配置为本机的9200端口,即ElasticSerach服务的监听端口。
    output {
    elasticsearch {
    hosts => ["127.0.0.1:9200"] #ElasticSerach地址/端口
    index => "1906-h104-%{+YYYY.MM.dd}" #输出的文件名称 
    }
    }
    #################################
    systemctl restart logstash

    6、加密(此时任何人都能访问)
    暂时完成效果图:

     此时任何人都能访问,所以需要加密:

    yum -y install nginx
    vim /etc/kibana/kibana.yml
    ########################
    server.host: "localhost" #只允许主机访问,去掉注释
    server.host: "0.0.0.0" #任何主机都能访问,注释掉
    ########################
    vim /etc/nginx/nginx.conf
    sed -i '38,88d' /etc/nginx/nginx.conf
    vim /etc/nginx/conf.d/elk(随便).conf
    ########################
    server {
    listen 8081;
    auth_basic "Restricted Access"; #验证方式
    auth_basic_user_file /etc/nginx/.kibana-user; #验证文件(隐藏文件)
    location / {
    proxy_pass http://127.0.0.1:5601;
    }
    }
    ####################
    #生成文件需要htpasswd
    yum -y install httpd
    htpasswd -c /etc/nginx/.kibana-user elk
    ###
    123
    123
    ###
    nginx -t
    systemctl enable nginx
    systemctl restart nginx
    firewall-cmd --add-port=80/tcp
    firewall-cmd --add-port=80/tcp --permanent

    @2 192.168.99.105

    setenforce 0
    yum -y install jdk
    yum -y install logstash filebeat
    (安装之前必须检查是否有Java环境,如果已经安装报错,需要卸载重新安装)
    cd /etc//filebeat/
    scp 192.168.59.104:$PWD/filebeat.yml ./
    cd /etc/logstash/conf.d
    scp 192.168.59.104:$PWD/* ./
    vim 随便.conf
    #######################
    修改:
    hosts => ["192.168.59.105:9200"] 
    index => "1906-h105-%{+YYYY.MM.dd}" 
    #################################
    systemctl restart logstash

    @1 192.168.99.104

    vim /etc/elasticsearch/elasticsearch.yml
    ##############
    network.host 0.0.0.0(192.168.59.0)            #加入监听其他主机(全部/网段)
    ##############
    systemctl restart elasticsearch
    firewall-cmd --add-port=9200/tcp
    firewall-cmd --add-port=9200/tcp --permanent
  • 相关阅读:
    G D 3 2 预 处 理 符 号 配 置 中 定 义
    指针接收函数
    SMT(SF)
    电流高端采样问题
    简单分析一个采集交流电压平均值的电路
    i--和--i的区别
    结构体共用体的使用
    .net Filter 和 代理模式杂谈
    Spring boot 日志 Logback
    spring boot 使用 mongodb
  • 原文地址:https://www.cnblogs.com/twoo/p/11909886.html
Copyright © 2011-2022 走看看