Centos7 搭建 Elasticsearch + Logstash + filebeat
+ Kibana
Elasticsearch + Logstash + filebeat + Kibana
一、什么是 ELK
ELK 是 Elasticsearch + Logstash + Kibana 这种架构的简写。这是一种日志分平台析的架
构。
二、ELK 常见的几种架构
1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过 logstash 收集日志,Elasticsearch 分析日志,
然后在 Kibana(web 界面)中展示。
2
与上一种架构相比,这种架构增加了一个 filebeat 模块。filebeat 是一个轻量的日志收集
代理,用来部署在客户端,优势是消耗非常少的资源(较 logstash), 所以生产中,往往会
采取这种架构方式。当 logstash 出现故障, 会造成日志的丢失。
3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如 kafka) +
Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当 Logstash 出
现故障,日志还是存在中间件中,当 Logstash 再次启动,则会读取中间件中积压的日志。
比较推荐这种方式。
说明: logstash 节点和 elasticsearch 节点可以根据日志量伸缩数量, filebeat 部署在
每台需要收集日志的服务器上。
下面介绍一下第二种方式 Elasticsearch + Logstash + filebeat + Kibana
1、搭建 ELK-ElasticSearch7.5
JDK1.8!!!
新建用户 useradd es
修改用户可创建文件数目
vi /etc/security/limits.conf
# 然后添加如下内容
es soft nproc 50000
es hard nproc 50000
es soft nofile 65535
es hard nofile 65535
修改最大内存限制
vi /etc/sysctl.conf
# 添加下面的配置
vm.max_map_count=655360
# 保存好后执行命令
sysctl -p
下载安装包并解压
# 进入安装目录
cd /opt
# 下载该文件
wget
'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux
-x86_64.tar.gz'
# 解压该文件
tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz
# 给文件夹改变权限
chown -R es:es elasticsearch-7.5.1
# 进入 es 用户
su es
修改配置文件(config 目录下的 elasticsearch.yml)
#配置 es 的集群名称,默认是 elasticsearch,es 会自动发现在同一网段下的 es,如果在
同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: cluster
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /opt/elasticsearch-7.5.1/node/data
#设置日志的存储路径
path.logs: /opt/elasticsearch-7.5.1/node/logs
#设置当前的 ip 地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的 http 端口
http.port: 9200
#设置节点之间交互的端口号
transport.tcp.port: 9300
#设置集群中 master 节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.seed_hosts: ["127.0.0.1:9300"]
#设置集群节点达到什么数量再启动本地恢复
gateway.recover_after_nodes: 1
启动
#执行启动,并后台运行
./bin/elasticsearch &
检查是否安装成功
浏览器登录刚才服务器 ip 加端口 9200,能访问成功,既是启动成功。
看看是否节点显示正常 浏览器输入 ip:9200/_cat/nodes?v
2、搭建 ELK-logstash7
https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
tar -xzvf logstash-7.0.0.tar.gz
mv logstash-7.0.0.tar.gz /usr/local/logstash
wget
读取文件直接发送到 es
修改/usr/local/logstash/config/logstash-sample.conf
input {
#beats {
# port => 5044
#}
file {
path => "/var/log/httpd/access_log"
start_position => beginning
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][logstash]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
检查配置文件是否正确:(假设当前目录为/usr/local/logstash/config/)
../bin/logstash -t -f logstash-sample.conf
启动:
../bin/logstash -f logstash-sample.conf
加载本文件夹所有配置文件启动:
../bin/logstash -f ./
或后台启动:
nohup ../bin/logstash -f config/ &
常用命令参数
-f:通过这个命令可以指定 Logstash 的配置文件,根据配置文件配置 logstash
-e:后面跟着字符串,该字符串可以被当做 logstash 的配置(如果是“” 则默认使用 stdin
作为输入,stdout 作为输出)
-l:日志输出的地址(默认就是 stdout 直接在控制台中输出)
-t:测试配置文件是否正确,然后退出。
读取 filebeat 发送到 es
filebeat 端配置请参照本文开头的[安装 filebeat]一文中的 logstash 相关部分
创建 /usr/local/logstash/config/logstash-filebeats.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
"%{[@metadata][logstash-filebeats]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
index
=>
#user => "elastic"
#password => "changeme"
}
}
3、搭建 ELK-kibana7
官网下载:https://www.elastic.co/cn/downloads/kibana
安装
tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz
cd kibana-7.3.2-linux-x86_64
修改 kibana 相关配置
vim kibana.yml
修改 server.host: "0.0.0.0"
elasticsearch.hosts: ["http://xxxx:9200"]
重启 elasticsearch,然后启动 kibana
最开始我们通过 root 用户来启动 kibana 会发现提示不应该使用 root 用户来运行它的,如
果想用 root 来运行,必须明确指明--allow-root 来运行,这是 kibana 的安全保护机制,
所以我们尽可能的不要使用 root 来启动 kibana,当我们使用 RPM 方式安装 kibana 的时候,
就 默 认 给 我 们 创 建 了 名 为 kibana 的 用 户 , 我 们 应 当 像 管 理 Elasticsearch 那 样 通 过
systemctl 来管理 kibana
sudo systemctl daemon-reload
sudo systemctl enable kibana.service
如果需要域名可以部署 nginx 做一下代理 xxxx:5601
server {
80;
listen
server_name elk.ktyiqiao.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
ssl_certificate /data/ssl/ktyiqiao.com.pem;
ssl_certificate_key /data/ssl/ktyiqiao.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers
EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3
DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
location / {
proxy_pass http://xxxx:5601$request_uri;
auth_basic "登陆验证";
auth_basic_user_file /etc/nginx/htpasswd;
#/etc/nginx/htpasswd 是密码文件,路径自定义
}
}
https 更安全还有登陆验证!
4、安装 filebeat
1、安装 filebeat
本次采用 yum 安装,需要配置 yum 源
cd /etc/yum.repos.d
vim 文件名.repo
然后将下述内容添加到文件中,保存退出
[filebeat]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=0
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum 安装 filebeat
yum -y install filebeat
rpm -qa filebeat
安装好之后可用 whereis filebeat 查看下安装情况,方便找配置文件
配置 filebeat
filebeat 配置文件: filebeat.yml
find / -name filebeat.yml
vim /etc/filebeat/filebeat.yml 需要修改的地方如下
filebeat.inputs:
- type: log
enabled: true
paths:
- /xxxx/logs/*.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
output.logstash:
# The Logstash hosts
hosts: ["xxxx:5044"]
配置好之后启动 filebeat
cd /usr/share/filebeat/bin
后台启动 filebeat
如果直接启动运行会报错:
loading config file: stat filebeat.yml: no such file or direct
是因为未找到配置文件所致,这里采取简单的方法:在运行时直接加上配置文件路径
./filebeat -e -c /etc/filebeat/filebeat.yml
注意:filebeat 没有监听端口,主要看日志和进程
后台方式启动 filebeat:
./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
将所有标准输出及标准错误输
出到/dev/null 空设备,即没有任何输出
./filebeat -e -c filebeat.yml > filebeat.log &
停止 filebeat:查找进程 ID 并 kill 掉:
ps -ef |grep filebeat
kill -9 进程号
另
https://blog.csdn.net/maquealone/article/details/93200288
就此 Elasticsearch + Logstash + filebeat + Kibana 搭建完毕!
filebeat
外
用
法
可
以
参
考