1、 1、 ELK 集群部署环境准备 1)在 2 个 ELK 节点上配置名称解析,通过本地/etc/hosts 文件实现。

hostnamectl  set-hostname  elk-node1    (设置主机名。第二台为elk-node2)
bash   (主机名生效)
vim /etc/hosts   (修改hosts文件)
192.168.1.10 elk-node1
192.168.1.20 elk-node2

2)需要有 java 环境 (最好是二进制安装) [root@elk-node1 ~]# java -version openjdk version "1.8.0_102"

2、 安装 elasticsearch 软件,通过执行命令配置成系统服务并设置自动开机启动, 2 个节点都要做

  1. Elasticsearch 安装可以通过 YUM 安装、源码包安装,这里通过下载的 rpm 包进行安 装,生产环境中你可以根据实际情况进行安装方式选择,都很容易。
   19  rz
   20  rpm -ivh elasticsearch-5.5.3.rpm 
   21  systemctl daemon-reload
   22  systemctl enable elasticsearch.service
   23  rpm -ql elasticsearch
24   systemctl enable elasticsearch.service

2)更改 elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster   17 去注释修改
node.name: node-2                23 去注释修改
path.data: /data/elk_data        33 去注释修改 创建目录
path.logs: /var/log/elasticsearch/   37 去注释修改 创建目录
bootstrap.memory_lock: false        43 去注释修改
network.host: 0.0.0.0                      55 去注释修改
http.port: 9200                               59 去注释修改
discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]      68 去注释修改

4)创建数据存放路径并授权

   21  mkdir -p /data/elk_data
   22  mkdir -p /var/log/elasticsearch/
   24  chown elasticsearch:elasticsearch /data/elk_data/
   25  chown elasticsearch:elasticsearch /var/log/elasticsearch/

5)启动 elasticsearch 并查看是否成功开启 systemctl start elasticsearch.service netstat -antp | grep 9200 6)通过浏览器访问节点,可以看到节点信息情况 7) 通过浏览器中输入 http://192.168.1.10:9200/_cluster/health?pretty 查看 集群的健康情况,可以看到 status 为 green 绿色。 8) 通过浏览器中输入 http://192.168.10.181:9200/_cluster/state?pretty 查看集群的状态信息

以上方式查看集群状态都不是很直观,可以安装 elasticsearch-head 插件,以便 方便管理集群。 3 、安装 elasticsearch-head 插件 1) Elasticsearch 在 5.0 版本后, elasticsearch-head 插件需要作为独立服务进行安装,需 要 npm 命令。编译安装 node,时间比较长,需耐心等待。

   33  rz  (上传node-v12.13.0)
   34  tar xf node-v12.13.0-linux-x64.tar.xz   (解压)
   35  mv node-v12.13.0-linux-x64 /usr/local/nodesjs  (移动配置文件)
   36  vim /etc/profile  (末尾添加)
VERSION=v10.15.0
DISTRO=linux-x64
export PATH=/usr/local/nodejs/bin:$PATH
   37 source /etc/profile (刷新环境变量)
  1. 安装 elasticsearch-head 作为独立服务并后台启动 安装 elasticsearch-head 插件 (1)方法一
   38  rz  (上传es-head.tar.gz)
   39  ls
   40  tar zxf es-head.tar.gz 
   74  cd elasticsearch-head/
   75  npm  config set registry https://registry.npm.taobao.org
   78  npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
   76  npm install      
   77 npm run start &  (运行在后台)
   78 netstat -anpt | grep 9100  (查看端口)
 执行一下
curl 192.168.1.10:9200/_cat/shards查看所有分片信息
curl 192.168.1.10:9200/_cat/master查看集群当前master节点
curl 192.168.1.10:9200/_cat/nodes查看集群所有节点
curl 192.168.1.10:9200/_cat/indices 查看所有索引信息

(2)方法二

1.git clone git://github.com/mobz/elasticsearch-head.git
2.cd elasticsearch-head
3.npm  config set registry https://registry.npm.taobao.org
4.npm install (如果报错执行“npm install phantomjs-prebuilt@2.1.14 --ignore-scripts”)
5.npm install
6.npm run start  &
7.netstat -anpt | grep 9100
执行一下
curl 192.168.1.10:9200/_cat/shards查看所有分片信息
curl 192.168.1.10:9200/_cat/master查看集群当前master节点
curl 192.168.1.10:9200/_cat/nodes查看集群所有节点
curl 192.168.1.10:9200/_cat/indices 查看所有索引信息

4) 修改 elasticsearch 主配置文件,添加如下内容,然后重启 elasticsearch 服务

vim /etc/elasticsearch/elasticsearch.yml (末尾添加)
http.cors.enabled: true        开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"     跨域访问允许的域名地址

systemctl restart elasticsearch (重启) 5) 通过浏览器进行访问: http://192.168.1.10:9100/,并连接集群 6) 可以通过命令插入一个测试索引,索引为 index-demo,类型为 test,可以看到成功创建。 curl -XPUT 192.168.1.10:9200/index-demo curl -XPUT '192.168.1.10:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{ "user": "zhangsan","mesg":"hello world" }' 刷新浏览器,可以看到创建成功的索引。 还可以看到索引默认被分片 5 个,且副本为 1 个

3、 安装 logstash 并做一些日志搜集输出到 elasticsearch 中 1)在 elk-node1 上安装

   66  rz
   67  rpm -ivh logstash-5.5.3.rpm 
   68  systemctl start logstash.service
   69  ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

2) logstash 基本使用 启动一个 logstash,-e:在命令行执行; input 输入, stdin 标准输入,是一个插件; output 输出, stdout:标准输出 logstash -e 'input { stdin{} } output { stdout{} }’

使用 rubydebug 显示详细输出, codec 为一种编解码器 logstash -e 'input { stdin{} } output { stdout{ codec =>rubydebug} }' 使用 logstash 将信息写入到 elasticsearch 中 logstash -e 'input { stdin{} } output { elasticsearch { hosts=> ["192.168.1.10:9200"]} }'

在 elasticsearch 中查看 logstash 新加的索引 3) logstash 配置文件使用 下面是一个收集系统日志的配置文件例子,将其放到/etc/logstash/conf.d/目录中, logstash 启动的时候便会加载。注意要给 logstash 读取日志文件的权限。

83  chmod 777 /var/log/messages 
85  vim /etc/logstash/conf.d/system.conf
input {
file { 从文件中读取
path => "/var/log/messages" 文件路径
type => "system"
start_position => "beginning" 是否从头开始读取
}
}
output {
elasticsearch { 输出到 elasticsearch 中
hosts => ["192.168.1.10:9200"] elasticsearch 主机地址和端口
index => "system-%{+YYYY.MM.dd}" 索引名称
}
}

重启 logstash 服务 systemctl restart logstash

在浏览器中即可看到新加索引及其内容

4、 安装 kibana 1)在 elk-node1 服务器上安装 kibana,并设置开机启动

   94  rz
   95  rpm -ivh kibana-5.5.3-x86_64.rpm 
   96  systemctl enable kibana.service

2) 设置 kibana 的主配置文件/etc/kibana/kibana.yml server.port: 5601 3 server.host: "192.168.1.10" 7 elasticsearch.url: "http://192.168.1.10:9200" 21 3) 启动 kibana 服务 systemctl start kibana.service netstat -anpt | grep 5601
4) 使用浏览器访问 http://192.168.1.10:5601,第一次登录需要添加一个 elasticsearch 索引,我们添加前面的索引 system-2017.08.09。

可以看到按照” host” 筛选后的结果 5、 将 apache 服务器的日志添加到 elasticsearch 并通过 kibana 显示 1)在 apache 服务器上安装 logstash,以便将日志搜集到 elasticsearch 在192.168.1.20上安装httpd

   23  yum -y install httpd
   24  vim /var/www/html/index.html   创建测试页面
      25  systemctl start httpd   启动httpd
192.168.1.20安装logstash-5.5.3.rpm并启动
28  rz  上传logstash-5.5.3.rpm包
   29  rpm -ivh logstash-5.5.3.rpm
30  systemctl start logstash
2)编写 logstash 配置文件 apache_log.conf 搜集 apache 日志并执行
50   vim apache.conf
input {
file {
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file {
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.1.10:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.1.10:9200"]
index => "apache_error-%{+YYYY.MM.dd}"23
}
执行 /usr/share/logstash/bin/logstash -f /root/apache.conf

3)通过浏览器访问 http://192.168.1.10:9100 查看索引是否创建 4)登录 kibana 添加索引 5)选择 discover 进行查看,并可以根据 fields 进行过滤