ubuntu16.04 快速搭建ELK日志分析平台

发布时间:2023-02-14 11:30

假如我们要在一台服务器上部署一个ssm应用,部署完,运行一段时间崩了。排查问题得时候,我们自然会想到查看log4J日志。可是,如果服务器不止一个应用,而是好几个呢,这当然可以查看每个应用的log4J日志。那如果不止一台服务器,而是好几台呢,难道还一个一个看?这显然是不现实的。现在又一套开源的分布式日志分析平台ELK可以解决这个问题,将所有日志收集起来,在统一,然后可视化,提供搜索。

那现在我这里只有一台服务器,我就搭建一个单机版的,分布式的只要在单机版上复制一部分过去就行

先看看ELK的架构:ElasticSearch、 LogStash+FileBeats、 Kibana

  • ElasticSearch: 负责数据的存储、处理
  • LogStash、FileBeats: 负责数据的收集
  • Kibana: 提供了可视化操作
    \"ubuntu16.04

安装过程

  • 1.环境准备

    • 一台安装ubuntu16.04 server的机器,添加root用户,普通用户
    • 安装jdk1.8+,注意这里一定要1.8以上
  • 2.安装ElasticSearch、 LogStash+FileBeats、 Kibana

    • 我一向崇尚懒,最快,最有效的方法就是官方文档!https://www.elastic.co/guide/index.html 当然自己找会有些麻烦,我就做官方文档的搬运工。

    • 这里有个点要特别注意!ElasticSearch、 LogStash、 Kibana三者的版本一定要匹配,版本对不上会报错。

  • 2.1ElasticSearch

普通用户

下载:

sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.zip

解压:

unzip elasticsearch-6.5.0.zip

设置大内存:

vi /etc/sysctl.conf 
在最后添加 一行 :vm.max_map_count=655360
加载参数 :sysctl -p 

启动:

cd elasticsearch-6.5.0/ 
./bin/elasticsearch

不用测了,只要没报错就成功,报错一般只有一下情况
1.用root用户运行了,一定要普通用户
2.jdk不是1.8及以上
3.内存过小

  • 2.2LogStash+FileBeats

普通用户

  • 2.2.1LogStash

    安装:
    sudo apt-get update && sudo apt-get install logstash

    进去目录下,我这里是logstash-6.5.0

    cd logstash-6.5.0/
    添加logstash.conf文件:
    vim logstash.conf
    添加:
    input {
            file {
                    path => \"替换应用的log路径,多个路径可以用正则匹配\"
                    start_position => \"beginning\" #从文件开始处读写
            }
    #       stdin {}  #可以从标准输入读数据
    }
    # 数据过滤
    filter {
      #定义数据的格式
      grok {
        match => { \"message\" => \"%{DATA:timestamp}\\|%{IP:serverIp}\\|%{IP:clientIp}\\|%{DATA:logSource}\\|%{DATA:userId}\\|%{DATA:reqUrl}\\|%{DATA:reqUri}\\|%{DATA:refer}\\|%{DATA:device}\\|%{DATA:textDuring}\\|%{DATA:duringTime:int}\\|\\|\"}
      }
      #定义时间戳的格式
      date {
        match => [ \"timestamp\", \"yyyy-MM-dd-HH:mm:ss\" ]
        locale => \"cn\"
      }
      #定义客户端的IP是哪个字段(上面定义的数据格式)
      geoip {
        source => \"clientIp\"
      }
      mutate {
          rename => { \"host\" => \"host.name\" }
      }
    }
    # 输出到本机的 ES
    output {
        elasticsearch {
                hosts => [ \"127.0.0.1:9200\"  ]
    
        }    
    }

启动:

bin/logstash -f logstash.conf --config.reload.automatic

没报错就成功了

  • 2.2.2FileBeats

普通用户安装

sudo apt-get update && sudo apt-get install filebeat

进入解压的文件夹,修改一下filebeat.yml

- type: log
   # Change to true to enable this prospector configuration.
    enabled: True

    # Paths that should be crawled and fetched. Glob based paths.
    # 读取 Nginx 的日志
    paths:
      - 替换应用的log路径
#----------------------------- Logstash output --------------------------------
# 输出到本机的 LogStash
output.logstash:
  # The Logstash hosts
  hosts: [\"localhost:5044\"]

启动 FileBeat,需要以 root 身份启动,更改配置文件的权限即可

sudo chown root filebeat.yml
sudo ./filebeat -e -c filebeat.yml -d \"publish\"

若没报错即成功了!

  • 2.3Kibana

普通用户
安装:

 wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz
 tar -xzf kibana-6.5.0-linux-x86_64.tar.gz
 cd kibana-6.5.0-linux-x86_64/ 

修改外网访问:

vim  config/ kibana.yml
修改这句:
server.host: \"0.0.0.0\"

启动:

bin/kibana

没报错即成功了,端口默认是5601

  • 3.测试

    在本地浏览器,输入ip:5601

    • 选择第一个discover,输入logstash,如果下两行出现success的说明成功, 再点进去,选择@timestamp

      • 查找错误

\"ubuntu16.04

4.分布式环境

将LogStash+FileBeat安装在其他客户机即可,把配置文件输出的elasticsearch 定位到目标ip即可

...
 output {
         elasticsearch {
                 hosts => [ \"127.0.0.1:9200\"  ]
     
}
...

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号