当前位置:首页>Linux>Linux 搭建 ELK

Linux 搭建 ELK

  • 2026-10-11 06:30:48
Linux 搭建 ELK

ELK简称

ELK包含 ElasticSearch、Logstash、Kibana 等三部分,ELK是一种日志分析架构,将收集到日志输出到es,kibana可视化页面进行搜索查询。

ELK描述

  1. ElasticSearch:存储数据

  2. Logstash:收集日志数据

  3. kibana:可视化页面

ELK搭建

  1. ElasticSearch

    1. https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-3

    2. tat -zxvf *.gz -C 解压路径

    3. 如果配置了JAVA_HOME但是版本不兼容,那么使用自带的jdk

      1. vim ./bin/elasticsearch-env,大概在38~56行

      2. 把红框的注释掉,表示用自带的jdk

    4. 编辑config/elasticsearch.yml文件

        network.host: 0.0.0.0 #iphttp.port: 9200 #端口号node.name: node-1  #节点名称cluster.initial_master_nodes: ["node-1"] #主节点
    5. 使用密码访问

      1. 编辑config/elasticsearch.yml

          http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: Authorizationxpack.security.enabled: truexpack.security.transport.ssl.enabled: true
        1. 在es启动的情况下 ./bin/elasticsearch -d 

          1. -d 表示采取后台方式运行,或&

          2. es默认情况下不许用root运行,可以新增用户配置用户组,给用户组配置权限,

            1. adduser es

            2. passwd es

            3. chown -R es目录 用户(es)

            4. su es 切换用户

            5. 启动

            6. netstat -anp |grep elasticsearch

            7. 如果有进程表示启动成功

        2. 执行./bin/elasticsearch-setup-passwords interactive -y

          1. 默认es初始不同名称和用处的用户,只需要设置密码即可

          2. 访问 http://ip:port/就可看到表单需要用户登录了

  2. Logstash

    1. https://www.elastic.co/guide/en/logstash/index.html

    2. 解压 tar -zxvf logstash.gz -C 解压路径

    3. cd ./config/

    4. 创建同步模板 vim logstash-logs-to-es-index.conf

        #读input {# file 从文件读取(官方推荐使用beats采集文件日志)    file {        path => ["/home/jar/*.log"]#排除不想监听的文件#exclude => "exclude.log"#设置多长时间扫描目录,发现新文件        discover_interval => 1#自定义日志区分类型        type => "ThisIsMyProjectType"# beginning 从文件开始处读写# end 文件结尾处读写        start_position => end    }# http 方式收集,用于客户端上送消息    http{        id => "http_request"        port => 9062        codec => json        type => "http"    }}#过滤filter {if [type] == "http" {# 把东八区时间赋值给新建的logdate 字段,logstash 不允许自建的特殊字段如带@标识的字段        ruby{           code => "event.set('logdate', (event.get('@timestamp').time.localtime).strftime('%Y-%m-%d%H:%M:%S'))"        }    } elseif [type] == "nginx" {        grok {            match => ["message", "%{IPORHOST:host} - - \[%{HTTPDATE:logdate}\]"]            overwrite => [ "host"]        }    } else {        grok {            match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]        }    }    date {            match => ["logdate", "YYYY-MM-dd HH:mm:ss.SSS"]# 赋值给 @timestamp            target => "@timestamp"    }    mutate {# 删除不需要的字段        remove_field => ["@version","tags","headers"]    }}#输出output{#输出到ES    elasticsearch{# es地址        hosts=>["127.0.0.1:9200"]# es的索引名,可更改。建议使用类型区分:eg => "yjg-%{type}-%{+YYYY.MM.dd}"#index => "yjg-logstash-%{+YYYY.MM.dd}"        index => "0815logs"#es index        user => "elastic" #es账号        password => "123456" #密码    }#输出到控制台    stdout{        codec => rubydebug    }# 输出到kafka#kafka {}#输出到数据库# jdbc {#   driver_jar_path => "/mysql-connector-java-5.1.48.jar"#   driver_class => "com.mysql.jdbc.Driver"#   connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true"#   username => "root"#   password => "123456"#   statement => ["INSERT INTO logstash_log_temp(level, ip, content, logdate) VALUES( ?, INET_ATON(?), ? ,?)", "[level]","[host]", "[message]", "[logdate]"]##}}
    5. 启动 ./bin/logstash -f #数据同步模板文件 &后台方式运行

  3. kibana

    1. https://www.elastic.co/guide/en/kibana/index.html

    2. vim ./config/kibana.yml

        elasticsearch.hosts: ["http://127.0.0.1:9200"]#如果es配置xpack.security.enabled: true#配置用户名和密码elasticsearch.username: "elastic" elasticsearch.password: "123456"#默认是英文,设置为中文i18n.locale: "zh-CN"

kibana使用

最新文章

随机文章