Elasticsearch安装配置
基础环境安装(elk-node1和elk-node2同时操作)
1)下载并安装GPG Key
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
2)添加yum仓库
vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
3)安装elasticsearch
yum install -y elasticsearch
4)安装相关测试软件
提前先下载安装epel源:epel-release-latest-7.noarch.rpm,否则yum会报错:No Package…..
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
安装Redis
yum install -y redis
安装Nginx
yum install -y nginx
安装java
yum install -y java
安装完java后,检测
java -version
openjdk version “1.8.0_102”
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
配置部署(下面先进行elk-node1的配置)
1)配置修改配置文件
mkdir -p /data/es-data
vi /etc/elasticsearch/elasticsearch.yml 【将里面内容情况,配置下面内容】
cluster.name: huanqiu # 组名(同一个组,组名必须一致)
node.name: elk-node1 # 节点名称,建议和主机名一致
path.data: /data/es-data # 数据存放的路径
path.logs: /var/log/elasticsearch/ # 日志存放的路径
bootstrap.mlockall: true # 锁住内存,不被使用到交换分区去
network.host: 0.0.0.0 # 网络设置
http.port: 9200 # 端口
2)启动并查看
chown -R elasticsearch.elasticsearch /data/
systemctl start elasticsearch
systemctl status elasticsearch
注意:上面可以看出elasticsearch设置的内存最小256m,最大1g
netstat -antlp |egrep “9200|9300”
然后通过web访问(访问的浏览器最好用google浏览器)
3)通过命令的方式查看数据(在其他外网服务器上查看,如下)
curl -i -XGET ‘http://114.115.216.58:9200/_count?pretty’ -d ‘{“query”:{“match_all”:{}}}’
接下来安装插件,使用插件进行查看~ (下面两个插件要在elk-node1和elk-node2上都要安装)
安装head插件
a)插件安装方法一
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
b)插件安装方法二
首先下载head插件,下载到/usr/loca/src目录下
下载地址:https://github.com/mobz/elasticsearch-head
head插件包百度云盘下载:https://pan.baidu.com/s/1boBE0qj
提取密码:ifj7
unzip elasticsearch-head-master.zip
在/usr/share/elasticsearch/plugins目录下创建head目录
然后将上面下载的elasticsearch-head-master.zip解压后的文件都移到/usr/share/elasticsearch/plugins/head下
接着重启elasticsearch服务即可!
cd /usr/share/elasticsearch/plugins/
mkdir head
cp -r /usr/local/src/elasticsearch-head-master/* ./
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins
systemctl restart elasticsearch
插件访问(最好提前将elk-node2节点的配置和插件都安装后,再来进行访问和数据插入测试)
http://114.115.216.58:9200/_plugin/head/
先插入数据实例,测试下
如下:打开”复合查询“,在POST选项下,任意输入如/index-demo/test,然后在下面输入数据(注意内容之间换行的逗号不要漏掉);
数据输入好之后(如下输入sjh;hello world内容),下面点击”验证JSON“->”提交请求“,提交成功后,观察右栏里出现的信息:有index,type,version等信息,failed:0(成功消息)
再查看测试实例,如下:
“复合查询”下,选择GET选项,在/index-demo/test/后面输入上面POST结果中的id号,不输入内容,即{}括号里为空!
然后点击”验证JSON“->”提交请求”,观察右栏内就有了上面插入的数据了(即sjh,hello world)
打开”基本查询”,查看下数据,如下,即可查询到上面插入的数据:
打开“数据浏览”,也能查看到插入的数据:
如下:一定要提前在elk-node2节点上也完成配置(配置内容在下面提到),否则上面插入数据后,集群状态会呈现黄色yellow状态,elk-node2完成配置加入到集群里后就会恢复到正常的绿色状态。
安装kopf监控插件
a)监控插件安装方法一
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
b)监控插件安装方法二
首先下载监控插件kopf,下载到/usr/loca/src目录下
下载地址:https://github.com/lmenezes/elasticsearch-kopf
kopf插件包百度云盘下载:https://pan.baidu.com/s/1qYixSL2
提取密码:ya4t
unzip elasticsearch-kopf-master.zip
ls
elasticsearch-kopf-master elasticsearch-kopf-master.zip
在/usr/share/elasticsearch/plugins目录下创建kopf目录
然后将上面下载的elasticsearch-kopf-master.zip解压后的文件都移到/usr/share/elasticsearch/plugins/kopf下
接着重启elasticsearch服务即可!
cd /usr/share/elasticsearch/plugins/
mkdir kopf
cd kopf
cp -r /usr/local/src/elasticsearch-kopf-master/* ./
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins
systemctl restart elasticsearch
访问插件:(如下,同样要提前安装好elk-node2节点上的插件,否则访问时会出现集群节点为黄色的yellow告警状态)
http://114.115.216.58:9200/_plugin/kopf/#!/cluster
目前node2加入集群失败,还在解决中。。。。
Logstash安装配置(这个在客户机上是要安装的。elk-node1和elk-node2都安装)
基础环境安装(客户端安装logstash,收集到的数据写入到elasticsearch里,就可以登陆logstash界面查看到了)
1)下载并安装GPG Key
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
2)添加yum仓库
vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
3)安装logstash
yum install -y logstash
4)logstash启动
systemctl start elasticsearch
systemctl status elasticsearch
数据的测试
1)基本的输入输出
/opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{} }’
2)使用rubydebug详细输出
[root@elk-node1 ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{ codec => rubydebug} }’
3) 把内容写到elasticsearch中
[root@elk-node1 ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch { hosts => [“192.168.3.84:9200”]} }’
使用rubydebug和写到elasticsearch中的区别:其实就在于后面标准输出的区别,前者使用codec;后者使用elasticsearch
写到elasticsearch中在logstash中查看,如下图:
写到elasticsearch中又写在文件中一份
/opt/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch { hosts => [“192.168.3.84:9200”]} stdout{ codec => rubydebug}}’
以上文本可以长期保留、操作简单、压缩比大。下面登陆elasticsearch界面中查看;
logstash的配置和文件的编写
1)logstash的配置
简单的配置方式:
vi /etc/logstash/conf.d/01-logstash.conf
input { stdin { } }
output {
elasticsearch { hosts => [“192.168.3.84:9200”]}
stdout { codec => rubydebug }
}
它的执行:
/opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf
参考内容:
https://www.elastic.co/guide/en/logstash/current/configuration.html
https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
收集系统日志
vi file.conf
input {
file {
path => “/var/log/messages”
type => “system”
start_position => “beginning”
}
}
output {
elasticsearch {
hosts => [“192.168.3.84:9200”]
index => “system-%{+YYYY.MM.dd}”
}
}
执行上面日志信息的收集,如下,这个命令会一直在执行中,表示日志在监控收集中;如果中断,就表示日志不在收集!所以需要放在后台执行~
/opt/logstash/bin/logstash -f file.conf &
登陆elasticsearch界面,查看本机系统日志的信息:
参考内容:
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
3)收集java日志,其中包含上面讲到的日志收集
vi file.conf
input {
file {
path => “/var/log/messages”
type => “system”
start_position => “beginning”
}
}
input {
file {
path => “/var/log/elasticsearch/huanqiu.log”
type => “es-error”
start_position => “beginning”
}
}
output {
if [type] == "system"{
elasticsearch {
hosts => ["192.168.3.84:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
if [type] == "es-error"{
elasticsearch {
hosts => ["192.168.3.84:9200"]
index => "es-error-%{+YYYY.MM.dd}"
}
}
}
注意:
如果你的日志中有type字段 那你就不能在conf文件中使用type
执行如下命令收集:
[root@elk-node1 ~]# /opt/logstash/bin/logstash -f file.conf &
登陆elasticsearch界面,查看数据:
参考内容:
https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html
有个问题:
每个报错都给收集成一行了,不是按照一个报错,一个事件模块收集的。
下面将行换成事件的方式展示:
vi multiline.conf
input {
stdin {
codec => multiline {
pattern => “^[”
negate => true
what => “previous”
}
}
}
output {
stdout {
codec => “rubydebug”
}
}
/opt/logstash/bin/logstash -f multiline.conf
在没有遇到[的时候,系统不会收集,只有遇见[的时候,才算是一个事件,才收集起来。
参考内容
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html
Kibana安装配置
1)kibana的安装:
cd /usr/local/src
wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
tar zxf kibana-4.3.1-linux-x64.tar.gz
mv kibana-4.3.1-linux-x64 /usr/local/
ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana
2)修改配置文件:
pwd
/usr/local/kibana/config
cp kibana.yml kibana.yml.bak
vi kibana.yml
server.port: 5601
server.host: “0.0.0.0”
elasticsearch.url: “http://192.168.3.84:9200”
kibana.index: “.kibana” #注意这个.Kibana索引用来存储数据,千万不要删除了它。它是将es数据通过kibana进行web展示的关键。这个配置后,在es的web界面里就会看到这个.kibana索引。
因为他一直运行在前台,要么选择开一个窗口,要么选择使用screen。
安装并使用screen启动kibana:
yum -y install screen
screen #这样就另开启了一个终端窗口
/usr/local/kibana/bin/kibana
然后按ctrl+a+d组合键,这样在上面另启的screen屏里启动的kibana服务就一直运行在前台了….
screen -ls
访问kibana:http://114.115.216.58:5601
如下,如果是添加上面设置的java日志收集信息,则在下面填写es-error*;如果是添加上面设置的系统日志信息system*,以此类型(可以从logstash界面看到日志收集项)
然后点击上面的Discover,在Discover中查看:
查看日志登陆,需要点击“Discover”–>”message”,点击它后面的“add”
注意:
需要右边查看日志内容时带什么属性,就在左边点击相应属性后面的“add”
如下图,添加了message和path的属性,这样,右边显示的日志内容的属性就带了message和path
添加新的日志采集项,点击Settings->+Add New,比如添加system系统日志。注意后面的*不要忘了。
删除kibana里的日志采集项,如下,点击删除图标即可。
如果打开kibana查看日志,发现没有日志内容,出现“No results found”,如下图所示,这说明要查看的日志在当前时间没有日志信息输出,可以点击右上角的时间钟来调试日志信息的查看。
收集系统日志
编写收集文件并执行。
cat syslog.conf
input {
syslog {
type => “system-syslog”
host => “192.168.3.84”
port => “514”
}
}
output {
stdout {
codec => “rubydebug”
}
}
对上面的采集文件进行执行:
/opt/logstash/bin/logstash -f syslog.conf
重新开启一个窗口,查看服务是否启动:
netstat -ntlp|grep 514
vi /etc/rsyslog.conf
#. @@remote-host:514 【在此行下面添加如下内容】
. @@192.168.3.84:514
systemctl restart rsyslog
回到原来的窗口(即上面采集文件的执行终端),就会出现数据:
再次添加到总文件file.conf中:
cat file.conf
input {
file {
path => “/var/log/messages”
type => “system”
start_position => “beginning”
}
file {
path => "/var/log/elasticsearch/huanqiu.log"
type => "es-error"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
}
}
syslog {
type => "system-syslog"
host => "192.168.3.84"
port => "514"
}
}
output {
if [type] == "system"{
elasticsearch {
hosts => ["192.168.3.84:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
if [type] == "es-error"{
elasticsearch {
hosts => ["192.168.3.84:9200"]
index => "es-error-%{+YYYY.MM.dd}"
}
}
if [type] == "system-syslog"{
elasticsearch {
hosts => ["192.168.3.84:9200"]
index => "system-syslog-%{+YYYY.MM.dd}"
}
}
}
以上将system日志输入到elasticsearch中,将其汇总到总文件file.conf里,如下也将system日志输入到elasticserach里:(后续就可以只用这个汇总文件,把要追加的日志汇总到这个总文件里即可)
可以加上–configtest参数,测试下配置文件是否有语法错误或配置不当的地方,这个很重要!!
/opt/logstash/bin/logstash -f file.conf –configtest
/opt/logstash/bin/logstash -f file.conf &
测试:
向日志中添加数据,看elasticsearch和kibana的变化:
添加到kibana界面中:
TCP日志的收集
编写日志收集文件,并执行:(有需要的话,可以将下面收集文件的配置汇总到上面的总文件file.conf里,进而输入到elasticsearch界面里和kibana里查看)
cat tcp.conf
input {
tcp {
host => “192.168.3.84”
port => “6666”
}
}
output {
stdout {
codec => “rubydebug”
}
}
/opt/logstash/bin/logstash -f tcp.conf
开启另外一个窗口,测试一(安装nc命令:yum install -y nc):
nc 192.168.1.160 6666
回到原来的窗口(即上面采集文件的执行终端),就会出现数据:
测试二:
echo “hehe” | nc 192.168.1.160 6666
echo “hehe” > /dev/tcp/192.168.1.160/6666
回到之前的执行端口,在去查看,就会显示出来:
一旦我们的elasticsearch出现问题,就不能进行日志采集处理了!
这种情况下该怎么办呢?
可以在client和elasticsearch之间添加一个中间件作为缓存,先将采集到的日志内容写到中间件上,然后再从中间件输入到elasticsearch中。
基本流程:
1)Logstash-Shipper获取日志信息发送到redis。
2)Redis在此处的作用是防止ElasticSearch服务异常导致丢失日志,提供消息队列的作用。
3)logstash是读取Redis中的日志信息发送给ElasticSearch。
4)ElasticSearch提供日志存储和检索。
5)Kibana是ElasticSearch可视化界面插件