搭建ELK日志分析平台
准备条件
- 阿里云服务器
- CentOS 7.5
- Java 服务器日志
- JDK环境
ELK简介
ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack。
Elastic Stack包含:
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。详细可参考Elasticsearch权威指南
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
安装Elasticsearch
- 在线 rpm 安装
网速允许的前提
- 导入elastic公开签名
public signing key
:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 创建文件
elasticsearch.repo
在/etc/yum.repos.d/
目录下
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
- 安装
elasticsearch
yum install elasticsearch
- 设置开机自动启动
chkconfig --add elasticsearch
- 启动测试
sudo -i service elasticsearch start
sudo -i service elasticsearch stop
- 下载 rpm 安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm.sha512
shasum -a 512 -c elasticsearch-6.3.2.rpm.sha512
sudo rpm --install elasticsearch-6.3.2.rpm
安装Kibana
- yum安装
yum -y install kibana
- 对kibana进行配置
vim /etc/kibana/kibana.yml
修改以下内容
server.port: 5601 # 配置kibana的端口
server.host: "0.0.0.0" # 配置监听ip
elasticsearch.url: "http://ip:9200" # 配置es服务器的ip,如果是集群则配置该集群中主节点的ip
logging.dest: /var/log/kibana.log # 配置kibana的日志文件路径,不然默认是messages里记录日志
- 创建日志文件
touch /var/log/kibana.log
chmod 777 /var/log/kibana.log
- 设置开机自动启动
chkconfig --add kibana
- 启动kibana服务
systemctl start kibana
- 检查进程和监听端口
ps aux |grep kibana
netstat -lntp |grep 5601
安装 Logstash
- yum安装
yum install -y logstash
yum源的速度太慢的话就下载rpm包来进行安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm
rpm -ivh logstash-6.3.2.rpm
- 设置开机自动启动
chkconfig --add logstash
- 配置logstash
logstash收集nginx日志
vim /etc/logstash/conf.d/nginx.conf
增加如下内容
input {
file { # 指定一个文件作为输入源
path => "/tmp/elk_access.log" # 指定文件的路径
start_position => "beginning" # 指定何时开始收集
type => "nginx" # 定义日志类型,可自定义
}
}
filter { # 配置过滤器
grok {
match => { "message" => "%{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}"} # 定义日志的输出格式
}
geoip {
source => "clientip"
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => ["192.168.77.128:9200"]
index => "nginx-test-%{+YYYY.MM.dd}"
}
}
检测配置文件是否有错
cd /usr/share/logstash/bin
./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf --config.test_and_exit
重启logstash服务
systemctl restart logstash