目录
[Elasticsearch 部署](#Elasticsearch 部署)
[Elasticsearch-head 插件](#Elasticsearch-head 插件)
[安装 phantomjs](#安装 phantomjs)
[安装 Elasticsearch-head](#安装 Elasticsearch-head)
[Logstash 安装部署](#Logstash 安装部署)
[Kibana 安装部署](#Kibana 安装部署)
本章纯搭建过程,几乎无任何注释解释
环境准备
ELK的搭建和测试,至少需要三台机器
172.16.233.101:apache节点
172.16.233.102:node1节点
172.16.233.103:node2节点
首先几台机器均需:
关闭防火墙
关闭增强功能
node1和node2节点需要配置主机名与IP解析
vim /etc/hosts
172.16.233.102 node1
172.16.233.103 node3
保存并退出
确定机器中都装有java
java -version 查看,如果没有直接 yum install
(也可以使用jdk)
Elasticsearch 部署
安装Elasticsearch
(注:以下操作均在node1和node2节点上完成,可以用xshell自带的工具实现,点击工具--->发送键输入到所有会话,将apache节点关闭即可)
安装 elasticsearch 包,上传至/opt 目录下
直接搜索,在官网上下载elasticsearch-rpm 包
cd /opt
rpm -ivh elasticsearch-6.6.1.rpm
加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service
修改elasticsearch主配置文件
以防万一,先做一个备份
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字,这里可以取消发送键给所有终端,分别改名,node1节点为node1,node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
保存并退出
查看配置文件中刚刚取消注释的并修改的行
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
创建data 数据存放目录并赋权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data
启动elasticsearch
systemctl start elasticsearch.service
查看端口号 9200
netstat -antp | grep 9200
测试
浏览器访问 172.16.233.102:9200 或者 172.16.233.103:9200 都可以,可以查看节点信息
访问 172.16.233.102:9200/_cluster/health?pretty 或者另一节点
查看集群监控状况,status 值为green ,表示节点正常运行
如果显示为黄色,说明数据完整,但副本有问题
如果显示为红色,那就说明连数据都不完整
这种方法虽然能查看集群健康状态以及其他信息,但其实是不太友好的,字段太过密集,也不方便操作
可以通过安装 Elasticsearch-head 插件,更方便地管理集群
Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs
node 和 phantomjs 的安装包都可以在官网直接下载
将安装包或压缩包都放到 /opt 下
安装node
yum install -y gcc gcc-c++ make
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install #这里内存和处理器核数最好高一点,不然需要很久
安装 phantomjs
同样的
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
安装 Elasticsearch-head
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install
修改Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
G到行尾,在末尾添加如下两行内容
http.cors.enabled: true #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有
保存退出
重启 elasticsearch 服务
systemctl restart elasticsearch
启动 elasticsearch-head 服务
elasticsearch-head 启动需要进入目录下启动,进程需要读取该目录下的gruntfile.js 文件
cd /usr/local/src/elasticsearch-head/
npm run start &
显示如下内容说明启动成功 ↓
> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
查看9100 端口
访问172.16.233.102:9100 或 103
很显而易见,正上方健康值绿色就代表集群正常
我们插入一条索引,索引为 index-demo1 ,类型为test
curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
刷新页面
Logstash 安装部署
(在apache节点上操作)
安装 apache 服务
yum -y install httpd
systemctl start httpd
选择相应的版本下载
Download Logstash Free | Get Started Now | Elastic
rpm -ivh logstash-6.6.1.rpm
systemctl start logstash.service
systemctl enable logstash.service
做一个软连接方便系统识别
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
测试Logstash
logstash -e 'input { stdin{} } output { stdout{} }'
............
............
等待时机输入随便一个网址
ctrl c 取消
chmod +r /var/log/messages #让 Logstash 可以读取日志
vim /etc/logstash/conf.d/system.conf
input {
file{
path =>"/var/log/messages"
type =>"system"
start_position =>"beginning"
}
}
output {
elasticsearch {
hosts => ["172.16.233.102:9200"]
index =>"system-%{+YYYY.MM.dd}"
}
}
保存并退出
重启 Logstash 服务
systemctl restart logstash
Kibana 安装部署
(在node节点上操作,选一个节点即可)
同样在官网可以选择相应的版本进行下载
Download Kibana Free | Get Started Now | Elastic
右侧的
可以选择版本
放在 /opt 下
rpm -ivh kibana-6.6.1-x86_64.rpm
编辑 Kibana 主配置文件
vim /etc/kibana/kibana.yml
--2行--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7行--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--28行--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.hosts: ["http://192.168.10.13:9200"]
--37行--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
保存退出
如果没有在对应的行找到内容,可能是版本不同,在其他行寻找一下,内容是一致的
启动Kibana 服务
systemctl start kibana.service
systemctl enable kibana.service
验证
浏览器访问 172.16.233.102:5601
会进入到 Kibana 的welcome 界面
Kibana 部署就完成了
ELFK
增加一台节点服务器 Filebeat 节点(172.16.233.104)
在 Filebeat 节点上操作
安装
tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz
mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat
编辑主配置文件
vim /usr/local/filebeat/filebeat.yml
filebeat.prospectors:
- type: log #指定 log 类型,从日志文件中读取消息
enabled: true
paths:
-
/var/log/messages #指定监控的日志文件
-
/var/log/*.log
fields: #可以使用 fields 配置选项设置一些参数字段添加到 output 中
service_name: filebeat
log_type: log
service_id: 172.16.233.104
''''''''''''''''''''''''''''''''''''''''''Elasticsearch output'''''''''''''''''''''''''''''''''''''''''
(全部注释掉)
'''''''''''''''''''''''''''''''''''''''''' Logstash output '''''''''''''''''''''''''''''''''''''''''
output.logstash:
hosts: ["172.16.233.104:5044"] #指定 logstash 的 IP 和端口
在 Logstash 组件所在节点上新建一个 Logstash 配置文件
cd /etc/logstash/conf.d
vim logstash.conf
input {
beats {
port => "5044"
}:
}
output {
elasticsearch {
hosts => ["172.16.233.102:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
保存退出
logstash -f logstash.conf
安装完成
想要测试 则浏览器访问
172.16.233.102:5601
点击 Management --> Index Pattern --> Create Index Pattern --> 选择输入 Index Pattern --> 下一步 --> Time Filter field name --> @timestarmp
单机 Discover 按钮课查看图标信息及日志信息
按钮添加索引 filebeat-*