这是elk系列的第1篇文章

本文主要描述如何安装和配置elk, 并利用beats来取出数据推送到logstash,使之正常提供服务

流程图

开始之前

假设您已经拥有一台内存至少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
    

    Bash


准备安装

接下来登陆到linux环境
ssh root@192.168.1.147

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

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

Bash

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

useradd elk

Bash

给elk的文件目录变更用户

chown -R elk:elk ./*

Bash


开始安装

请自行更换 /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

Bash

使环境变量生效

source /etc/bashrc

Bash

验证安装是否成功

java -version

Bash

此时java安装成功

elasticsearch

切换到elk用户

su elk

Bash

使用 screen 开始一个新会话

screen -S es

Bash

修改默认的配置文件

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

Bash

启动es

/opt/elasticsearch-6.3.2/bin/elasticsearch

Bash

如果遇到这个错误

执行命令:

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

Bash

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

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

elk        hard    nofile           262144
elk        soft    nofile           262144

Bash

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

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

curl 127.0.0.1:9200

Bash

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

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

su root
systemctl stop firewalld.service
setenforce 0
exit

Bash

浏览器访问

至此es安装和启动完毕

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

Ctrl A + d

Bash

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

nginx

默认配置文件在 /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

Bash

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

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

telnet 127.0.0.1 9600 || netstat -anp | gerp 9600

Bash

至此logstash安装和启动完毕

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

Ctrl A + d

Bash

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

Bash

启动

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

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

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

至此kibana安装和启动完毕

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

Ctrl A + d

Bash

测试

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

  • 上传日志到服务器 :

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

    Bash

  • 这是一份普通的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存放的位置 , 位置分隔符 / 需要用 \ 转义 , dev.log 可以修改为 *.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

Bash

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

修改logstash的输入输出配置

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

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

beats{port => 5044
}

nginx

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

input {beats{port => 5044}
}output {    elasticsearch {        hosts => ["192.168.1.147:9200"]}
}

nginx

重启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

Bash

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

screen -r beats

Bash

启动filebeat

/opt/filebeat-6.3.2-linux-x86_64/filebeat -e -c /opt/filebeat-6.3.2-linux-x86_64/filebeat.yml

Bash

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

测试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

Bash

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

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

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

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

大功告成

来源:https://system.out.println.org/?p=1118

编译安装日志分析平台 elk + beats(个人感觉不错1)相关推荐

  1. 视频教程-【2019精品课】构建ELK海量日志分析平台-ELK

    [2019精品课]构建ELK海量日志分析平台 10年一线开发及项目管理经验,6年以上大数据项目架构.实施.开发与运维经验,骨灰级大数据玩家,对Hadoop.Storm.Spark.Flink.Kyli ...

  2. 日志分析平台ELK部署初学

    1)ELK介绍 ELK官方网站:https://www.elastic.co/products elk-docker 官网:http://elk-docker.readthedocs.org/#ins ...

  3. 日志分析平台-ELK

    日志分析平台-ELK 此次主要是搭建带有redis缓存层的ELK日志分析平台 环境: node1:172.16.1.152 node2:  172.16.1.153 一:配置基础环境 所有节点关闭se ...

  4. 开源实时日志分析平台—ELK

    ELK简介 什么是日志 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据. 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志. 应用日志.安全日志.这些日志分散地存储在不同的机器 ...

  5. 搭建可视化日志分析平台ELK

    文章目录 ELK是什么 为什么要用ELK ELK如何安装搭建 ElasticSearch 安装 一.下载Elasticsearch源码 二.安装 三.Elasticsearch配置 四.新增运行Ela ...

  6. ELK——ElasticStack日志分析平台

    ElasticStack日志分析平台 ELK日志采集与分析系统概述 重读日志文件 使用Processors(处理器)过滤和增强数据 Logstash Logstash安装 使用Grok过滤器插件解析W ...

  7. 搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器

    27.6 安装kibana 27.7 安装logstash 27.8 配置logstash 27.9 kibana上查看日志 27.10 收集nginx日志 27.11 使用beats采集日志 本文是 ...

  8. CentOS 6.8下ELK+filebeat+redis 日志分析平台

    转载来源 :ELK+filebeat+redis 日志分析平台 :https://www.jianshu.com/p/bf2793e85d18 一.简介 ELK Stack是软件集合Elasticse ...

  9. ELK实时日志分析平台环境部署--完整记录

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

最新文章

  1. 【活动】人工智能产学研生态建设研讨会报名
  2. AlertDialog.Builder选择对话框
  3. python基础: String类型
  4. php self 内存,php导致内存溢出
  5. FreeMaker+Xml导出word(含图片)
  6. [Redux/Mobx] 在redux中,什么是action?
  7. 设计模式 之 创建者
  8. # 语音信号处理基础(十)——梅尔倒谱系数
  9. 「WC 2019」数树
  10. JSON cannot be resolved 解决方法
  11. Linux查看硬盘挂载
  12. vue中json数据格式化
  13. 查询计算机物理地址指令,怎么查询mac地址命令_如何查mac地址
  14. YTU 2577: 小数计算——结构体
  15. MC(monitorcat) 监控军刀
  16. 想想也有五年多了(胡紫薇博客)
  17. 光猫连接水星路由器显示服务器,水星mw300r路由器连接光猫的设置方法步骤
  18. slam中的相机相关
  19. python matplotlib axes3d.get_test_data() 是什么意思?(获得测试数据)
  20. 辉光管电子时钟DIY记录-动态扫描驱动方式

热门文章

  1. rabbitmq java文档_《RabbitMQ官方文档》订阅与发布
  2. 01_GIT基础、安装
  3. 1.非关系型数据库(Nosql)之mongodb:mongodb的安装,环境变量配置,数据库服务端启动,客户端启动
  4. 2Boost之UPD,Client and Server
  5. 处理字符串_9_合并多行到一行
  6. 最小二乘法(一元)推导
  7. Python多继承mro示例
  8. 数据流图中flow不显示文字_利用Flow来进行旋转流体仿真
  9. 用python简单处理图片(2):图像通道\几何变换\裁剪
  10. android BitMap回收