网站首页 文章专栏 简述 ELK 搭建日志平台

简述 ELK 搭建日志平台

编辑时间:2019-09-11 15:56:35 作者:苹果 浏览量:1252




ELK是一套常用的开源日志监控和分析系统,由三部分组成:


    1.Elasticsearch     分布式索引与搜索服务

    2.Logstash          管理日志和事件的工具

    3.Kibana            数据可视化服务



    当有多台机器,一般是在入口机上收集信息,然后在其他机子上进行筛选、过滤转存入es中,这时候通常需要第四个工具来做为数据传输通道  redis



特别提醒,要使用ELK中任意一项,请先保证先安装了java


Elasticsearch、Logstash、Kibana 三者均可在官网上下载  推荐rpm安装
https://www.elastic.co/cn/downloads/past-releases#elasticsearch


特别注意,三个版本保持一致




简单的配置:


    1.elasticsearch 配置     (建议先备份再修改)

        network.bind_host: 192.168.1.1              默认情况下,ElasticSearch使用0.0.0.0地址,并为http传输开启9200-9300端口,为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址


    2. logstash 的配置 集中在conf.d文件夹中

        入口机配置:


        input {        
         #收集
             file {
                 path => ["/logs/11111111.log","/logs/2222222.log"]    #日志路径
             }
         }
        #过滤文本
         filter {
           mutate {
              gsub => ["message", "\\x", "\\\x"]  #正则替换
           }
         }
         output {
         #输出
           redis {
                 host => "192.168.1.2"
                 port => 6379
                 data_type => "list"
                 key => "logstash-redis"
             }
         }


        服务端 入 es

        input {        
            redis {
                host => "192.168.1.2"
                port => 6379
                data_type => "list"
                key => "logstash-redis"  ##监听的键值
                threads => 8   #线程数
                batch_count => 1000
            }
        }
        filter {
            json {
                source => "message"
                remove_field => "message"
            }
            urldecode {
                all_fields => true
            }
            mutate {
               split => ["request_uri","?"]   #从请求地址中分开请求地址 及参数
               add_field => ["uri", "%{request_uri[0]}"]   #添加新字段  uri  并赋值
            }
            mutate {
              convert => ["request_time", "float"] #转换数据类型
           }
           mutate {
              convert => ["upstream_response_time" ,"float"]
           }
           mutate {
               split => ["http_x_forwarded_for",","]
               add_field => ["user_real_ip", "%{http_x_forwarded_for[0]}"]
            }
            if [user_real_ip] != "-" {
               geoip {          #IP 位置插件
                   source => "user_real_ip"    #需要解析的存有 IP 的字段名称
                   target => "geoip"       #返回的结果中保存 geoip 解析结果的字段名
                   database => "/usr/local/logstash-6.3.2/GeoLite2-City.mmdb"     #位置信息库所在文件
                   fields => ["ip","latitude","longitude","location","country_name","region_name","city_name"]  #在 geoip 的返回结果中筛选部分字段
                   add_field => ["[geoip][from]","CDN"]    #一般情况下CDN服务器都会传送HTTP_X_FORWARDED_FOR头,这是一个ip串
               }
            }
            else {
               geoip {
                   source => "remote_addr"
                   target => "geoip"
                   database => "/usr/local/logstash-6.3.2/GeoLite2-City.mmdb"
                   fields => ["ip","latitude","longitude","location","country_name","region_name","city_name"]
                   add_field => ["[geoip][from]","USER"]
               }
            }
        }
        output {
        # 存入es
            elasticsearch {
                  hosts => "192.168.1.1:9200"
                  index => "logstash-%{+YYYY.MM.dd}"
           }
        }



    filter 的使用 详见 https://techlog.cn/article/list/10182917




    3.kibana 配置      (建议先备份再修改)
        找到 kibana.yml
        修改
        server.port: 5601
        server.host: 192.168.1.1
        elasticsearch.host: 192.168.1.1



    最后的最后,别忘记启动


        systemctl start  ****


        systemctl enable ****    #建议加入开机启动


    出自:何冰华个人网站

    地址:http://www.hebinghua.com/

    转载请注明出处


来说两句吧
最新评论