部署---elk极速部署
参考文档:
https://blog.csdn.net/xiaohuai0444167/article/details/105199051
https://www.cnblogs.com/yanjieli/p/11187430.html
部署---elk
1. ELK简介
什么是ELK?通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件组成的一个组合体
Elasticsearch#
elasticsearch是一个高度可扩展全文搜索和分析引擎,基于Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
Logstash#
数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;支持普通log、自定义json格式的日志解析。
Kibana#
数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示。
这三个软件当中,每个软件用于完成不同的功能,ELK又称ELKstack,官网 https://www.elastic.co/ ,
ELK主要优点有如下几个:
1、处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能
2、配置相对简单:elasticsearch全部使用JSON接口,logstash使用模块配置,kibana的配置文件部分更简单
3、检索性能高:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应
4、集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
5、前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单
6、ELK部署环境准备
这里实验所使用系统CentOS 7.4 x86_64
,服务器信息如下。并关闭防火墙和selinux
,及host
绑定等。
IPAddr | HostName |
---|---|
A: 10.0.0.61 | 安装jdk elasticsearch (图形化界面kibana) |
B: 10.0.0.7 | 安装jdk和logstash |
# 2. 安装Elasticsearch
epel源配置
wget -O /etc/> yum.repos.d/epel.repo http:> //mirrors.aliyun.com/repo/epel-7.repo
[root@m01 ~]# cat /etc/yum.repos.d/elk-6.repo
[elk-6.x]
name=Elastic repository for 6.x packages
#baseurl=https://artifacts.elastic.co/packages/6.x/yum
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/6.x/yum/
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
因为elasticsearch服务运行需要java环境,因此两台elasticsearch服务器需要安装java环境。
2.1 安装JDK
centos7默认是安装了jdk,如果需要安装高版本可以使用一下步骤,这里使用下面的yum安装jdk 1.8.0_211 。
注意:两个节点都要安装。
方法一:yum安装下载好的JDK包
[root@linux-elk1 ~]#yum install -y java-1.8.0-openjdk
[root@linux-elk1 ~]#java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
方法二:源码安装JDK,将下载的软件包上传到服务器进行安装。
下载地址:https://pan.baidu.com/s/1AAPyPzhdclNNCb0m6ooVYQ 提取码:x18u
[root@linux-elk1 ~]#tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@linux-elk1 ~]#ln -s /usr/local/jdk1.8.0_211 /usr/local/java
[root@linux-elk1 ~]#sed -i.ori '$a export JAVA_HOME=/usr/local/java \nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH \nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
[root@linux-elk1 ~]#source /etc/profile
[root@linux-elk1 ~]#java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
2.2 安装Elasticsearch
2.3配置Elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
修改配置内容:
[root@m01 ~]# cat /etc/elasticsearch/elasticsearch.yml
---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: wg001 #定义集群名称
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1 #定义节点名称
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost # 或设置主机ip
#
# Set a custom port for HTTP:
#
http.port: 9200 # ---定义监听端口
#
# For more information, consult the network module docum
2.4 启动Elasticsearch
361 systemctl start elasticsearch
362 systemctl enable elasticsearch
363 systemctl status elasticsearch
检验:
启动很慢 需要等等
[root@m01 ~]# netstat -lntp |grep 9200
tcp6 0 0 10.0.0.61:9200 ::😗 LISTEN 5513/java
[root@linux-elk2 ~]# mkdir -p /elk/{data,logs}
[root@linux-elk2 ~]# chown elasticsearch.elasticsearch /elk/ -R #自定义日志路径,需要授权
通过浏览器访问`elasticsearch`端口
![7-1 curl.png](https://cdn.nlark.com/yuque/0/2020/png/1581532/1599547529887-9e46639c-113d-4d2a-ab90-f2eac05ca5b5.png#align=left&display=inline&height=292&margin=%5Bobject%20Object%5D&name=7-1%20curl.png&originHeight=292&originWidth=611&size=536506&status=done&style=none&width=611) > 查看日志 > [root@localhost ~] tailf /var/log/elasticsearch/wg001.log #查看日志状态
3. 安装logstash
在主机B上安装jdk和logstash
配置源:
[root@m01 ~]# scp -rp /etc/yum.repos.d/elk-6.repo 10.0.0.7:/etc/yum.repos.d/
3.1 安装logstash
3.2 编写配置messages.conf文件
vim /etc/logstash/conf.d/messages.conf
input { #定义进入模块
file {
path => "/var/log/messages" #日志路径
type => "msg-log" #日志类型
start_position => "beginning" #生成过程
}
}
output { #
elasticsearch {
hosts => "10.0.0.61:9200" # 端口
index => "msg_log-%{+YYYY.MM.dd}" # 索引
}
}
3.3 启动
systemctl start logstash
systemctl enablelogstash
netstat -nuptl|grep 9600
#日志tailf /var/log/logstash/logstash-plain.log
A主机验证:
tailf /var/log/elasticsearch/wg001.log
一般会出现这个报错
[2020-03-30T15:49:40,715][WARN ][filewatch.tailmode.handlers.createinitial] failed to open /var/log/messages: #<Errno::EACCES: Permission denied - /var/log/messages>, ["org/jruby/RubyFile.java:366:in `initialize'", "org/jruby/RubyIO.java:1154:in `open'", "/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-file-4.1.9/lib/filewatch/watched_file.rb:198:in `open'"]
缺少权限,添加此命令 chmod o+rwx /var/log/messages 之后重启logstash就会解决
4. 安装Kibana
4.1 安装:
在主机A上安装kibana,修改配置文件
yum install kibana
4.2配置
[root@m01 ~]# vim /etc/kibana/kibana.yml
[root@m01 ~]# grep ^[a-Z] /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.0.0.61"
elasticsearch.hosts: ["http://10.0.0.61:9200"]
input:从源头消费数据
output: 将数据写入到对应的目标
filter[可选]: 过滤和处理数据
vim /etc/kibana/kibana.yml
grep ^[a-Z] /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
4.3启动
systemctl start kibana
[root@m01 ~]# netstat -nuptl|grep 5601
tcp 0 0 10.0.0.61:5601 0.0.0.0:* LISTEN 6577/node
#5. 编写多个logstash
5.1 修改管道的配置,定义多个管道,区分日志的路径和目录
vim /etc/logstash/pipelines.yml (也可以/etc/logstash/conf.d/.*conf)
- pipeline.id: msg
path.config: "/etc/logstash/conf.d/messages.conf"- pipeline.id: sec
path.config: "/etc/logstash/conf.d/secure.conf"
5.2在主机B上,编写logstash多个配置文件
vim /etc/logstash/conf.d/secure.conf
input {
file {
path => "/var/log/secure"
type => "sec-log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => "10.0.0.61:9200"
index => "sec_log-%{+YYYY.MM.dd}"
}
}
重启logstash,查看logstash
systemctl restart logstash
日志:
tailf /var/log/logstash/logstash-plain.log