环境
Ubuntu16.x服务器
内存:最少8G
lanmps 环境套件 (http://www.lanmps.com)
PHP版本:5.6
MysqL版本:5.6
Nginx版本:最新
Elasticsearch版本:5.4
Logstash版本:5.4

JAVA 安装

方式一

这里使用的 Java版本是 1.8.0_131
安装 Java 版本,根据教程下载相应的版本 看(方法三:源码安装)
http://www.jb51.cc/article/p-rgbisukp-bbo.html

如果上面的安装JAVA 不成功,请使用下面的安装

方式二

如果方式一的安装JAVA 不成功,请使用下面的安装
报如下错误

Error: Could not find libjava.so
     Error: Could not find Java SE Runtime Environment.

找了N种方法后都无法解决的。
先要删除 方式一的 JAVA 设置环境变量配置文件,然后再进行如下设置

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo update-java-alternatives -s java-8-oracle

sudo apt-get install Oracle-java8-set-default  #设置环境变量

JAVA 版本

java -version

本方式 来自 http://www.jb51.cc/article/p-wtjtnlnj-yr.html

服务器用户创建

创建 hadoop 用户
一行一行执行

useradd -m hadoop -s /bin/bash     # 创建hadoop用户
passwd hadoop          # 修改密码,这个时候会让你输入密码2次
usermod -G root hadoop    # 增加管理员权限

设置管理员用户组权限
执行命令

visudo

root 那行增加 hadoop一行,如下所示

root    ALL=(ALL)       ALL
hadoop    ALL=(ALL)       ALL

应用设置

方法一: 退出当前用户,改用hadoop登录,用命令su –,即可获得root权限进行操作
方法二:重新启动系统

以下配置都是使用 hadoop 用户

root 用户是无法启动 elasticsearch

Elasticsearch 安装及配置

http://kibana.logstash.es/content/elasticsearch/
https://es.xiaoleilu.com/

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html
风来了.fox

服务器说明

如果在服务器上面安装
最低 8G内存,
如果更低的内存 请自行更改 config/jvm.xx 文件中的配置

不要用root用户,
不要用root用户,
不要用root用户

使用 上面创建好的 hadoop用户

Elasticsearch下载地址

https://www.elastic.co/downloads/elasticsearch

目前最新版5.4

使用hadoop用户

cd ~
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz

解压缩

tar zxvf elasticsearch-5.4.0.tar.gz

配置elasticsearch

编辑 config/elasticsearch.yml

cd elasticsearch-5.4.0
vim config/elasticsearch.yml

修改为

network.host: 0.0.0.0
cluster.name: es 

cluster.name 可以不用设置
…其他部分没有改动,不需要修改

环境变量设置

sudo vim /etc/profile.d/elasticsearch.sh

加入

export ES_HOME=/home/hadoop/elasticsearch-5.4.0
export PATH=$ES_HOME/bin:$PATH

应用生效

. /etc/profile
. /etc/bashrc

启动

cd elasticsearch-5.4.0
bin/elasticsearch     #前台运行
或
bin/elasticsearch -d  #后台运行

关闭

查找进程 ID

ps -ef |grep elasticsearch

找到这个ID,KILL他

kill -9  id

中文分词插件 analysis-ik

https://github.com/medcl/elasticsearch-analysis-ik/releases

版本:5.4.0
使用hadoop用户

cd ~
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.4.0/elasticsearch-analysis-ik-5.4.0.zip
unzip elasticsearch-analysis-ik-5.4.0.zip -d elasticsearch-analysis-ik-5.4.0

复制到插件目录

mv elasticsearch-analysis-ik-5.4.0 elasticsearch-5.4.0/plugins/analysis-ik

这个时候需要重启 elasticsearch 插件才能生效(这个可以等设置好词库再重启也可以)

分词词库设置

进入 elasticsearch安装目录
编辑词库配置文件

cd ~/elasticsearch-5.4.0
vim plugins/analysis-ik/config/IKAnalyzer.cfg.xml

ext_dict 这一行修改为

<entry key="ext_dict">custom/sougou.dic;custom/mydict.dic;custom/single_word_low_freq.dic;custom/product.dic</entry>

custom/product.dic 是我的词库,这里不方便透露
这个时候需要重启 elasticsearch 插件才能生效

分词热更新

如果设置热更新,配置如下设置(网址中的文件是不存在的,这里只是个案例)

<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://www.foxwho.com/thesaurus/word.txt</entry>

文件里面 UTF8编码 一行一个,并用\n换行

官方说明

https://github.com/medcl/elasticsearch-analysis-ik
目前该插件支持热更新 IK 分词,通过上文在 IK 配置文件中提到的如下配置

<!--用户可以在这里配置远程扩展字典 -->
    <entry key="remote_ext_dict">location</entry>
    <!--用户可以在这里配置远程扩展停止词字典-->
    <entry key="remote_ext_stopwords">location</entry>

其中 location 是指一个 url,比如 http://yoursite.com/getCustomDict,该请求只需满足以下两点即可完成分词热更新。

该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。
该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。
满足上面两点要求就可以实现热更新分词了,不需要重启 ES 实例。

可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 Nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

分词测试

curl -XPUT "http://localhost:9200/index"

测试分词效果:
浏览器中允许

http://localhost:9200/index/_analyze?analyzer=ik_max_word&text=中华人民共和国

结果

{
    "tokens": [ { "token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0 },{ "token": "中华人民","end_offset": 4,"position": 1 },{ "token": "中华","end_offset": 2,"position": 2 },{ "token": "华人","start_offset": 1,"end_offset": 3,"position": 3 },{ "token": "人民共和国","start_offset": 2,"position": 4 },{ "token": "人民","position": 5 },{ "token": "共和国","start_offset": 4,"position": 6 },{ "token": "共和","end_offset": 6,"position": 7 },{ "token": "国","start_offset": 6,"type": "CN_CHAR","position": 8 } ] }

Logstash5.X 日志搜集处理

下载地址
https://www.elastic.co/downloads/logstash
目前最新版 5.4.0

版本:5.4.0
使用hadoop用户

这里使用 TAR.GZ 源码安装,即方式一

cd ~
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.0.tar.gz
tar -zxvf logstash-5.4.0.tar.gz

测试是否安装成功

~/logstash-5.4.0/bin/logstash -e 'input { stdin { } } output { stdout {}}'

如果输出如下表示安装成功

The stdin plugin is Now waiting for input:
[2017-05-16T21:48:15,233][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}

Logstash5.X配置

创建配置目录
先进入 Logstash 根目录

cd ~/logstash-5.4.0
mkdir -p etc
vim etc/www.lanmps.com.conf

etc/test.conf 文件内容

input {
  file {
    type => "Nginx-access"
    path => ["/www/wwwLogs/www.lanmps.com/*.log"]
    start_position => "beginning"
  }
}

filter {
    grok {
        "message"=>"%{IPORHOST:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|-)\" (%{HOSTNAME:domain}|-) %{NUMBER:response} (?:%{NUMBER:bytes}|-) (%{QS:referrer}) %{QS:agent} \"(%{WORD:x_forword}|-)\" (%{URIHOST:upstream_host}|-) (%{NUMBER:upstream_response}|-) (%{WORD:upstream_cache_status}|-) %{QS:upstream_content_type} (%{USERNAME:upstream_response_time}) > (%{USERNAME:response_time})"
    #匹配模式 message是每段读进来的日志,IP、HTTPDATE、WORD、NOTSPACE、NUMBER都是patterns/grok-patterns中定义好的正则格式名称,对照上面的日志进行编写,冒号,(?:%{USER:ident}|-)这种形式是条件判断,相当于程序里面的二目运算。如果有双引号""或者[]号,需要在前面加\进行转义。
    }
    kv {
                source => "request"
                field_split => "&?"
                value_split => "="
        }
  #再单独将取得的URL、request字段取出来进行key-value值匹配,需要kv插件。提供字段分隔符"&?",值键分隔符"=",则会自动将字段和值采集出来。
    urldecode {
        all_fields => true
    }
  #把所有字段进行urldecode(显示中文)
}

output {
  elasticsearch {
        hosts => ["10.1.5.66:9200"]
        index => "logstash-%{type}-%{+YYYY.MM.dd}"
        document_type => "%{type}"
  }
}

配置说明
http://kibana.logstash.es/content/logstash/plugins/input/file.html

Nginx 日志格式定义

log_format access '$remote_addr - $remote_user [$time_local] "$request" $http_host $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $upstream_status $upstream_cache_status "$upstream_http_content_type" $upstream_response_time > $request_time';

Logstash5.X启动和停止

测试命令

cd ~/logstash-5.4.0/
bin/logstash -e 'input { stdin { } } output { stdout {codec=>rubydebug} }'

然后你会发现终端在等待你的输入。没问题,敲入 Hello World,回车,然后看看会返回什么结果!
出现如下结果

2017-02-23T08:34:25.661Z c-101 Hello World

测试配置文件是否 正确

cd ~/logstash-5.4.0/
bin/logstash -t -f etc/

启动

加载 etc文件夹下所有 *.conf 的文本文件,然后在自己内存里拼接成一个完整的大配置文件

cd ~/logstash-5.4.0/
bin/logstash -f etc/

后台运行

nohup cd ~/logstash-5.4.0/ && bin/logstash -f etc/ &

停止

查找进程 ID

ps -ef |grep logstash

找到这个ID,KILL 他

kill -9  id

Ubuntu16.x服务器 安装 Java,Elasticsearch5.4.X,中文分词,同义词,Logstash5.4.X 日志搜集的更多相关文章

  1. 使用 Swift语言进行 Hadoop 数据流应用程序开发

    如果您发现了问题,或者希望为改进本文提供意见和建议,请在这里指出.在您开始之前,请参阅目前待解决的问题清单.简介本项目包括两类Hadoop流处理应用程序:映射器mapper和总结器reducer。如上所示,在Hadoop上编写流处理程序是一个很简单的工作,也不需要依赖于特定的软件体系。

  2. Elasticsearch属性单词常用解析说明

    这篇文章主要介绍了Elasticsearch属性单词常用解析说明,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  3. Java操作Elasticsearch rest-high-level-client 的基本使用

    这篇文章主要介绍了Java操作Elasticsearch rest-high-level-client 的基本使用,本篇主要讲解一下 rest-high-level-client 去操作 Elasticsearch的方法,结合实例代码给大家详细讲解,需要的朋友可以参考下

  4. Elasticsearch插件及nodejs的安装配置

    这篇文章主要为大家介绍了Elasticsearch插件及nodejs的安装配置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. SpringBoot+Elasticsearch实现数据搜索的方法详解

    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。本文将利用SpringBoot整合Elasticsearch实现海量级数据搜索,需要的可以参考一下

  6. php实现scws中文分词搜索的方法

    这篇文章主要介绍了php实现scws中文分词搜索的方法,详细介绍了scws中文分词搜索的具体步骤与相关使用技巧,并提供了scws的本站下载地址,需要的朋友可以参考下

  7. php实现的中文分词类完整实例

    这篇文章主要介绍了php实现的中文分词类,结合完整实例形式分析了php基于字符串的遍历、转换、运算等技巧实现中文分词功能的具体方法,需要的朋友可以参考下

  8. PHP中使用ElasticSearch最新实例讲解

    这篇文章主要介绍了PHP中使用ElasticSearch最新实例讲解,这篇文章的教程是比较详细,有需要的同学可以研究下

  9. Laravel使用scout集成elasticsearch做全文搜索的实现方法

    这篇文章主要介绍了Laravel使用scout集成elasticsearch做全文搜索的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. SpringBoot 整合 Elasticsearch 实现海量级数据搜索功能

    这篇文章主要介绍了SpringBoot 整合 Elasticsearch 实现海量级数据搜索,本文主要围绕 SpringBoot 整合 ElasticSearch 接受数据的插入和搜索使用技巧,在实际的使用过程中,版本号尤其的重要,不同版本的 es,对应的 api 是不一样,需要的朋友可以参考下

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部