资讯专栏INFORMATION COLUMN

简单的通过源码安装 elk 平台

cyrils / 2165人阅读

摘要:编译安装日志分析平台首发链接开始之前假设您已经拥有一台内存至少的计算机或虚拟机并且安装了命令并且您应该了解命令的使用如果不了解您可以粗略的看一下简明教程下载安装包下载安装包传输到服务器中如果是里直接下载则可以忽略这一步准备安

编译安装日志分析平台 elk + filebeat
首发链接 [https://system.out.println.or...]()
开始之前
假设您已经拥有一台内存至少1G的linux计算机或虚拟机并且安装了screen命令      
并且您应该了解screen命令的使用 , 如果不了解您可以粗略的看一下 screen简明教程
下载安装包
java http://www.oracle.com/technetwork/java/javase/downloads/index.html     
elk https://www.elastic.co/cn/products

下载安装包

传输到服务器中 , 如果是linux里直接下载则可以忽略这一步

 scp .jdk-8u181-linux-x64.tar.gz 
     .kibana-6.3.2-linux-x86_64.tar.gz  
     .logstash-6.3.2.tar.gz 
     .elasticsearch-6.3.2.tar.gz 
     root@192.168.1.147:/opt


准备安装
接下来登陆到linux环境     
ssh root@192.168.1.147

解压刚才传输的文件,并把删除原文件

cd /opt/ && ls | xargs -I {} tar xzvf {} && rm -f ./*.tar.gz

因为es是不能运行在root用户的 , 即使可以也不建议使用 root
因此, 我们可以多带带创建一个用户来运行elk

useradd elk

给elk的文件目录变更用户

chown -R elk:elk ./*

开始安装
请自行更换 /opt 为你的实际目录
java 8

把以下几行添加到 /etc/bashrc 的末尾

export JAVA_HOME=/opt/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使环境变量生效

source /etc/bashrc

验证安装是否成功

java -version

此时java安装成功

elasticsearch

切换到elk用户

su elk

使用 screen 开始一个新会话

screen -S es

修改默认的配置文件

sed -i "s/# network.host: 192.168.0.1/network.host: 0.0.0.0/" /opt/elasticsearch-6.3.2/config/elasticsearch.yml
sed -i "s/# http.port/http.port/" /opt/elasticsearch-6.3.2/config/elasticsearch.yml

启动es

/opt/elasticsearch-6.3.2/bin/elasticsearch

如果遇到这个错误

执行命令:

su root
sysctl -w vm.max_map_count=262144
sysctl -a | grep vm.max_map_count
exit

再尝试启动 , 如果遇到这个错误

回到root账户 , 修改/etc/security/limits.conf 添加如下行并重启计算机 :

elk        hard    nofile           262144
elk        soft    nofile           262144

再尝试启动 , 一般会看到这个东西

此时es启动成功 , 然后我们利用curl测试一下

curl 127.0.0.1:9200

如果返回这个东西说明真的成功了 , 返回别的这里不讨论 , 一律视为失败 , 请参考日志进行排错

如果需要在浏览器访问, 还需要关闭防火墙和selinux

su root
systemctl stop firewalld.service
setenforce 0
exit 

浏览器访问

至此es安装和启动完毕

我们用组合键回到默认会话

Ctrl A + d
logstash

logstash 安装和配置比较简单 , 但是需要创建一个文件

创建输入输出配置文件

tee /opt/logstash-6.3.2/config/logstash-io.conf <<-"EOF"
input {
    file {
        path => "/var/log/dev.log"
        start_position => "beginning"
    }
}

output {    
    elasticsearch {        
        hosts => ["192.168.1.147:9200"]
    }
}
EOF

默认配置文件在 /opt/logstash-6.3.2/config/logstash.yml 可以按需修改*

尝试启动logstash

screen -S logstash
/opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.conf

如果没有error , 就启动完成了

如果需要测试是否真的启动完成 , natstat 和 telnet 这两个命令都可以

telnet 127.0.0.1 9600 || netstat -anp | gerp 9600

至此logstash安装和启动完毕

我们用组合键回到默认会话

Ctrl A + d
kibana

kibana 只需要修改基础配置文件即可启动 , 并进行浏览器测试

修改配置文件

sed -i "s/#elasticsearch.url: "http://localhost:9200"/elasticsearch.url: "http://192.168.1.147:9200"/" /opt/kibana-6.3.2-linux-x86_64/config/kibana.yml
sed -i "s/#server.host: "localhost"/server.host: "192.168.1.147"/" /opt/kibana-6.3.2-linux-x86_64/config/kibana.yml

启动

/opt/kibana-6.3.2-linux-x86_64/bin/kibana

返回如下信息则说明启动成功

打开浏览器 输入http://192.168.1.147:5601 可以看到如下画面

至此kibana安装和启动完毕

我们用组合键回到默认会话

Ctrl A + d
测试

如果顺利的到了这里 , 那么elk其实已经可以使用了 , filebeat不是必须的.
我们找来一些日志验证一下前面工作的正确性

上传日志到服务器 :

scp ./dev.log root@192.168.1.147:/var/log/

这是一份普通的nginx日志

用screen -r回到logstash会话

界面一闪而过 , 回到了这里

ctrl +c 停止它按上方向键 , 再启动它

稍候片刻启动完成, 回到kibana

在首页创建通配符索引 logstash*


如果next是可点击的 , 那就到了这里

选择@timestamp 继续下一步

然后就开启ELK的世界了

首页如下

filebeat 取得安装包

和准备工作一样 , 从官网获得filebeat的安装包并解压

修改配置

修改filebeat的配置文件 , 和上面一样我们使用sed修改配置文件

# 开启log输入
sed -i "s/enabled: false/enabled: true/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

# log存放的位置 , 位置分隔符 / 需要用  转义
sed -i "s/- /var/log/*.log//var/log/dev.log/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

# 关闭默认的输出到es
sed -i "s/output.elasticsearch:/# output.elasticsearch:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml
sed -i "s/hosts:/# hosts:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

# 打开输入到logstash
sed -i "s/#output.logstash:/output.logstash:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml
sed -i "s/## hosts:/hosts:/" /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

我们还需要修改 logstash 的配置文件才能使用 filebeat 来自动捕获数据

修改logstash的输入输出配置
为了避免你已经手动修改了配置文件 , 我们不再使用sed为改为手动修改配置文件

使用你喜爱的编辑器打开 /opt/logstash-6.3.2/config/logstash-io.conf , 删除掉input代码块并在原file代码块的位置 ,增加如下内容并保存

beats{
    port => 5044
}

最终配置文件大概会是这个样子

input {
    beats{
        port => 5044
    }
}

output {    
    elasticsearch {        
        hosts => ["192.168.1.147:9200"]
    }
}
重启logstash
screen -r logstash
^C^C^C^C....
/opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.conf

如果正常启动并进入监听状态 , 我们回到刚才的会话

screen -r beats
启动filebeat
/opt/filebeat-6.3.2-linux-x86_64/filebeat -e -c /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

如果配置正确 , 那么一般不会遇到什么问题

测试filebeat

因为我们已经在 /var/log/dev.log 这份配置文件 , 那么我们就增加它的内容 , 来测试filebeat是否正常扫描和输出到logstash

里使用死循环来增加日志内容 , 数据是重复的 , 仅可用于验证filebeat的工作    
第三行的 while 是每隔1秒就复制 tmp.log 的内容到 dev.log 的末尾
您随时可以用 ^C [Ctrl +c] 来终止复制过程
su root
cp /var/log/dev.log /tmp/tmp.log
while true ; do cat /tmp/tmp.log >> /var/log/dev.log ; sleep 1 ; done

然后我们查看浏览器的kibana , 右上角倒数第二个按钮, 开启自动刷新并选择五秒

如果一切无误, 坐等5秒 , 就会发现有新的数据展示在页面上

此时可以明显的观察到 , 红框的时间部分每隔5秒就会变化一次

因为我们已经保证了没有 filebeat 时elk平台工作是正常的     
那么如果现在elk不再正常工作了 , 就从 filebeat 大节检查和排错 ,问题最大可能是sed在你的计算机中没有生效
那么就检查配置文件开始 debug 吧
同时也欢迎您在本文章下留言说明你遇到的问题
大功告成
扩展部分

-- 未完待续

x-pack

-- 未完待续

ik分词

-- 未完待续

elasticsearch query language

-- 未完待续

使用语言级软件, 向logstash推送数据的方法 TCP

-- 未完待续

UDP

-- 未完待续

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34285.html

相关文章

  • elk 第二篇 , 为elk加入redis, 替换下beats

    摘要:为加入替换下这是的第二篇文章编译安装日志分析平台支持多种输入输出方法本文章主要描述通过做队列中间件缓解平台的压力使用场景数据不可控时例如日志不是文件而是由直接推送到的就无法使用了当然是可以和一起使用的例如读取文件解析后输出到再由正常流程处理 为elk加入redis, 替换下beats 这是elk的第二篇文章 编译安装日志分析平台 elk + filebeat elk支持多种输入输出方法...

    springDevBird 评论0 收藏0
  • elk 第二篇 , 为elk加入redis, 替换下beats

    摘要:为加入替换下这是的第二篇文章编译安装日志分析平台支持多种输入输出方法本文章主要描述通过做队列中间件缓解平台的压力使用场景数据不可控时例如日志不是文件而是由直接推送到的就无法使用了当然是可以和一起使用的例如读取文件解析后输出到再由正常流程处理 为elk加入redis, 替换下beats 这是elk的第二篇文章 编译安装日志分析平台 elk + filebeat elk支持多种输入输出方法...

    godlong_X 评论0 收藏0
  • elk 第二篇 , 为elk加入redis, 替换下beats

    摘要:为加入替换下这是的第二篇文章编译安装日志分析平台支持多种输入输出方法本文章主要描述通过做队列中间件缓解平台的压力使用场景数据不可控时例如日志不是文件而是由直接推送到的就无法使用了当然是可以和一起使用的例如读取文件解析后输出到再由正常流程处理 为elk加入redis, 替换下beats 这是elk的第二篇文章 编译安装日志分析平台 elk + filebeat elk支持多种输入输出方法...

    changfeng1050 评论0 收藏0
  • CentOs 7.2下ELK日志分析系统搭建

    摘要:系统环境为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择版本。也是一个开源和免费的工具,它可以为和提供的日志分析友好的界面,可以帮助您汇总分析和搜索重要数据日志。注意首次会提示没有索引。。。。 系统环境为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择5.3版本。 System: Centos release 7.2Java: openjdk version 1....

    NotFound 评论0 收藏0
  • ELK 实时日志分析平台环境搭建

    摘要:简单介绍,三者组合在一起搭建实时的日志分析平台,目前好多公司都是这套是个开源分布式搜索引擎,它的特点有分布式,零配置,自动发现,索引自动分片,索引副本机制,风格接口,多数据源,自动搜索负载等。 showImg(https://segmentfault.com/img/remote/1460000012596092?w=1920&h=1270); 简单介绍 ELK(ElasticSear...

    geekidentity 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<