您的位置:首页 > 编程语言 > Java开发

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

2017-05-17 10:17 651 查看
环境

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://blog.csdn.net/fenglailea/article/details/26006647#t6

如果上面的安装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://blog.csdn.net/blueheart20/article/details/50121691

服务器用户创建

创建
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[/code] 
解压缩

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": "中华人民",
"start_offset": 0,
"end_offset": 4,
"type": "CN_WORD",
"position": 1
},
{
"token": "中华",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 2
},
{
"token": "华人",
"start_offset": 1,
"end_offset": 3,
"type": "CN_WORD",
"position": 3
},
{
"token": "人民共和国",
"start_offset": 2,
"end_offset": 7,
"type": "CN_WORD",
"position": 4
},
{
"token": "人民",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 5
},
{
"token": "共和国",
"start_offset": 4,
"end_offset": 7,
"type": "CN_WORD",
"position": 6
},
{
"token": "共和",
"start_offset": 4,
"end_offset": 6,
"type": "CN_WORD",
"position": 7
},
{
"token": "国",
"start_offset": 6,
"end_offset": 7,
"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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu java Elasticsea