ELK搭建教程

ELK就是ElasticSearch + LogStash + Kibana,公司一直在使用ELK进行日志收集可视化,感觉ELK是一套十分有用的工具,为了了解ELK的原理,熟悉ELK操作,准备自己在测试服务器上部署一套ELK系统

1. LogStash
  • 它可以流放到各自的服务器上收集Log日志,通过内置的ElasticSearch插件解析后输出到ES中。
2.ElasticSearch
  • 这是一个基于Lucene的分布式全文搜索框架,可以对logs进行分布式存储,有点像hdfs
3. Kibana
  • 所有的log日志都到ElasticSearch之后,我们需要给他展示出来,对吧? 这个时候Kibana就出手了,它可以多维度的展示es中的数据。这也解决了用mysql存储带来了难以可视化的问题。

一、ELK软件下载

二、ElasticSearch安装

这个其实也是ELK中的核心,启动的时候一定要注意,因为es不可以进行root账户启动,所以你还需要开启一个elsearch账户

  • 1 首先使用mv将elasticsearch文件夹移出root目录
  • 2 创建一个elsearch账户
groupadd elsearch                   #新建elsearch组
useradd elsearch -g elsearch -p 密码 #新建一个elsearch用户
chown -R elsearch:elsearch  ./elasticsearch(此处为你的目录)   #指定elasticsearch所属elsearch组
报错1:org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/opt/elasticsearch-6.6.2/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

错误说明:节点绑定失败
错误原因:可能是因为之前运行的es还没有正常关闭
解决方法:

  • 第一步:通过命令:ps aux | grep elasticsearch 进行查看
  • 第二步:通过命令: kill -9 进程号 关闭此进程。
  • 第三步:重新启动es。./bin/elasticsearch
报错2:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

错误说明:
报错原因:当前配置软硬限制较小
解决方法:

  • vim /etc/security/limits.conf 追加下面代码,并重新登陆elsearch用户,无需重启:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

三、logstash安装

  • 1 进入logstash文件夹,进入config文件夹
  • 2 使用vim logstash.conf建立配置文件并编辑,包含input、fillter、output三个模块
input {
    file {
        path => ["/data/log/flask_api/nginx.log"]
        codec => json
        type => "nginx"
    }
    file {
        path => [
            "/data/log/flask_api/*/internal.log"
        ]
        type => "internal_log"
    }
}
filter {
    if [type] == "nginx" {
        grok {
            match => {
                "resp_body" => "\"score\"\s?:\s?%{INT:score:int}"
            }
        }
    }
    if [type] == "internal_log" {
        grok {
            match => {
                "message" => "%{TIMESTAMP_ISO8601:dt} - %{NOTSPACE:api_name} -[ ]{1,3}%{LOGLEVEL:level} - %{GREEDYDATA:msg} - %{GREEDYDATA:locate}"
            }
        }
        mutate {
            remove_field => ["message"]
        }
    }
}
output {
    stdout { codec => rubydebug }
    if [type] == "nginx" {
        elasticsearch {
            hosts => ["host1:9200", "host2:9200"] 
            index => "flask_api_nginx"
        }
    }
    if [type] == "internal_log" {
        elasticsearch {
            hosts => ["host1:9200", "host2:9200"] 
            index => "flask_api_internal"
        }
    }
}

  • 3 进入bin文件夹下,使用下列代码运行logstack,config.reload.automatic可以在修改配置后无需重启
    ./logstash -f ../config/logstash.conf --config.reload.automatic
  • 4 ps aux | grep logstash
    看到当前用户下的Main进程,那就是logstash进程,kill掉即可,如果有多个,仔细检查下,安全kill即可

四、kibana的安装

  • 1 进入config文件夹,vim kibana.yml可修改配置,默认参数为elasticsearch.hosts: [“http://localhost:9200”] ,可自行修改
  • 2 进入bin文件夹中,./kibana启动
  • 3 关掉kibana,可使用如下代码
netstat -apn|grep 5601
kill -9 ...
报错1 启动成功但无法访问网站

修改kibana.yml文件,修改host,将localhost改为本机真实ip,修改配置后需重启

当监听的日志产生变化的时候,ELK开始运行,否则不会有数据流入

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值