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 (刷新环境变量)
2) 安装 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 [email protected] --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 查看所有索引信息
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 [email protected] --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 进行过滤