ELK实时日志管理-系统搭建
1.简介
Filebeat轻量级的日志传输工具,可以读取系统、nignx、apache等logs文件,监控日志文件,传输数据到Elasticsearch或者Logstash,最后在Kibana中实现可视化。
在这里要实现的功能为:
- Filebeat从nignx读取日志文件,将过滤后的数据传给Logstash。
- Logstash收集到Filebeat传来的数据后格式化输出到 Elasticsearch。
- 最后再由Kibana 访问Elasticsearch提供的比较友好的 Web 界面进行汇总、分析、搜索。
本文主要是搭建过程,不过多涉及原理等深层次内容。
2.准备工作
2.1 基础环境检查
[windCoder@dev ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.76 ut-train-cache mongodb
192.168.0.76 dev.qc.net db-master
192.168.0.79 sk.windCoder.com
2
3
4
5
6
7
8
9
10
11
12
2.2 软件包
wget获取所需软件包,这里默认nignx以安装配置。最新的软件包可从官网 下载。这里使用的tar.gz压缩格式的安装包。
[windCoder@dev ~]# mkdir elk
[windCoder@dev ~]# cd elk/
[windCoder@dev elk]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
[windCoder@dev elk]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz
[windCoder@dev elk]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
[windCoder@dev elk]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.0-linux-x86_64.tar.gz
2
3
4
5
6
7
8
2.3 检测
检测安装包下载情况
[windCoder@dev elk]# ls
elasticsearch-6.4.0.tar.gz filebeat-6.4.0-linux-x86_64.tar.gz kibana-6.4.0-linux-x86_64.tar.gz logstash-6.4.0.tar.gz
2
3
4
服务器只需要安装Elasticsearch、Logstash、Kibana, 客户端只需要安装filebeat。
2.4 JDK检测
elasticsearch、Logstash均需要jdk支持,故若服务器上没有,需要先安装JDK。5.x级以上版本均需要jdk1.8的支持。客户端上使用的是filebeat软件,它不依赖java环境,所以不需要安装。
3.安装Elasticsearch
3.1 解压
Install Elasticsearch with .zip or .tar.gz
[windCoder@dev elk]# tar -zxvf elasticsearch-6.4.0.tar.gz
[windCoder@dev elk]# cd elasticsearch-6.4.0
2
3
4
3.2 配置
Elasticsearch有三个配置文件:
- elasticsearch.yml 用于配置Elasticsearch
- jvm.options 用于配置Elasticsearch JVM设置
- log4j2.properties 用于配置Elasticsearch日志记录
这些文件位于config目录中,此处只配置 elasticsearch.yml
[windCoder@dev elasticsearch-6.4.0]# vi config/elasticsearch.yml
2
3
配置Elasticsearch节点的host、name、port,具体参数请根据实际情况自行修改。Elasticsearch默认端口号为9200。
node.name: sk.windCoder.com
network.host: 192.168.0.79
http.port: 9200
2
3
4
5
3.3 启动
Elasticsearch以默认禁用了root用户直接启动程序,故需要一个其他的用户执行启动命令,不然会报“不能用root用户"的类似错误。
3.3.1 命令行启动
[windCoder@dev elasticsearch-6.4.0]# ./bin/elasticsearch
2
3
默认情况下,elasticsearch在前台运行,并可以通过按Ctrl+C来停止。
3.3.2 作为守护进程启动
要将Elasticsearch作为守护进程运行,请在命令行中指定-d,并使用-p选项将进程ID记录在文件中:
[windCoder@dev elasticsearch-6.4.0]# ./bin/elasticsearch -d -p pid
2
3
日志可在$ES_HOME/logs/
文件夹中查看。
为了结束Elasticsearch,此时需要kill这个守护进程id.
netstat -nltp | grep java
kill -9 PID
2
3
4
4.安装Kibana
不支持运行Kibana和Elasticsearch的不同主要版本(例如Kibana 5.x和Elasticsearch 2.x),也不支持比Elasticsearch版本更新的Kibana次要版本(例如Kibana 5.1和Elasticsearch 5.0)。Set Up Kibana
4.1 解压
[windCoder@dev elk]# tar -zxvf kibana-6.4.0-linux-x86_64.tar.gz
[windCoder@dev elk]# cd kibana-6.4.0-linux-x86_64
2
3
4
4.2 配置
[windCoder@dev kibana-6.4.0-linux-x86_64]# vi config/kibana.yml
2
这里主要配置kibana的访问端口、host和Elasticsearch访问url。kibana默认端口号为5601。
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.0.79:9200"
2
3
若elasticsearch有用户名和密码,也需在这里配置:
elasticsearch.username: "user"
elasticsearch.password: "pass"
2
4.3 启动
4.3.1 命令行启动
[windCoder@dev kibana-6.4.0-linux-x86_64]# ./bin/kibana
2
默认情况下,Kibana在前台运行,将其日志打印到标准输出(stdout),并可以通过按Ctr+C来停止。
4.3.2 后台运行
常常我们更希望这些在后台运行,通过以下代码即可:
[windCoder@dev kibana-6.4.0-linux-x86_64] nohup ./bin/kibana &
2
使用命令shell时,使用nohup为命令添加前缀可防止在注销或退出shell时自动中止命令。其意为"no hangup."。命令末尾的“&”符号指示bash在后台运行。----Linux nohup command
4.3.3 检查服务运行
Kibana默认 进程名:node ,端口5601
[windCoder@dev kibana-6.4.0-linux-x86_64] netstat -nltp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 17821/./bin/../node
2
3
4
5
6
当需要结束时,需执行下面语句:
kill -9 PID
2
如上面kill -9 17821
4.4 对外开放tcp/5601
修改防火墙,放行端口。这里仅提供iptables的修改方式(下面的//注释请勿复制),firewalld方式类似。
/sbin/iptables -I INPUT -p tcp --dport 5601 -j ACCEPT // 写入修改
/etc/init.d/iptables save // 保存修改
service iptables restart // 重启防火墙,修改生效
2
3
4
5
这时,我们可以打开浏览器,测试访问一下kibana服务器 http://192.168.0.79:5601/ 如下图:
5.安装Logstash
5.1 解压
[windCoder@dev elk]# tar -zxvf logstash-6.4.0.tar.gz
[windCoder@dev elk]# cd logstash-6.4.0
2
3
4
5.2 生成证书
[windCoder@dev elk]# cd /etc/pki/tls/
[windCoder@dev tls]# openssl req -subj '/CN=sk.windCoder.com/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out
certs/logstash-forwarder.crt
2
3
5.3 配置
此处是创建了一个新的配置文件01-logstash-initial.conf,其文件名可自定义。
[windCoder@dev logstash-6.4.0]# vi config/01-logstash-initial.conf
2
配置文件具体如下:
input {
beats {
port => 5000
type => "logs"
host => "0.0.0.0"
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
grok {
match => { "message" => ["%{IPORHOST:[nginx][access][client_ip]} - %{DATA:[nginx][access][user_name]} %{DATA:[nginx][access][msec]} \[%{DATA:[nginx][access][time_iso8601]}\] sid:\"%{DATA:[nginx][access][cookie_sid]}\" \"%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}\" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][body_sent][bytes]} ref:\"%{DATA:[nginx][access][referer]}\" \"%{DATA:[nginx][access][user_agent]}\" \"%{DATA:[nginx][access][x_forwarded]}\""]}
remove_field => "message"
}
mutate {
add_field => { "read_timestamp" => "%{@timestamp}" }
}
date {
match => [ "[nginx][access][time]", "dd/MMM/YYYY:H:m:s Z" ]
remove_field => "[nginx][access][time]"
}
}
output {
elasticsearch {
hosts => ["192.168.0.79:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
5.4启动
Running Logstash from the Command Line
5.4.1测试启动
[windCoder@dev logstash-6.4.0]# ./bin/logstash -t -f /home/windCoder/elk/logstash-6.4.0/config/01-logstash-initial.conf
默认情况下,logstash在前台运行,并可以通过按Ctrl+C来停止。
5.4.2 后台运行
nohup ./bin/logstash -f /home/windCoder/elk/logstash-6.4.0/config/01-logstash-initial.conf &
当需要结束时,需执行下面语句:
# 获取logstash的Pid
ps -ef |grep logstash
# 结束进程
kill -9 PID
2
3
4
5
6.部署filebeat
filebeat只需部署到客户端,这里客户端服务器为同一个。
6.1 解压
[windCoder@dev elk]# tar -zxvf filebeat-6.4.0-linux-x86_64.tar.gz
[windCoder@dev elk]# cd filebeat-6.4.0-linux-x86_64
2
3
4
6.2 配置
首先要配置的是filebeat.yml。
6.2.1 filebeat.yml
[windCoder@dev filebeat-6.4.0-linux-x86_64]# vi filebeat.yml
这里主要配置的有:
- Filebeat inputs 可以配置日志类型的,也可以配置日志过滤。这次只配置过滤条件。
- Filebeat modules 默认应该不需要配置,具体配置有单独文件。
- Elasticsearch output 由于这里有一层Logstash,需要注释这里的配置。
- Logstash output 这里需要放开注释,配置我们之前的Logstash相关内容。
下面放出关键配置:
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
paths:
- /home/parim/apps/nginx-1.10/logs/access.log*
enabled: true
include_lines: ['(\/learner)+']
exclude_lines: ['\/(content|assets|static|images|fonts)\/','\.(css|js|png|jpg|xml)','\/null']
#============================= Filebeat modules ===============================
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
#================================ Outputs =====================================
#-------------------------- Elasticsearch output ------------------------------
这里面的全注释即可。
#----------------------------- Logstash output --------------------------------
output.logstash:
hosts: ["sk.windCoder.com:5000"]
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
logstash中hosts的地址必须与上面生成证书里面的地址相同,不然会报证书的相关错误。
6.3启动
6.3.1 命令行
[windCoder@dev filebeat-6.4.0-linux-x86_64]# ./filebeat -e -c filebeat.yml -d "publish"
默认情况下,filebeat在前台运行,并可以通过按Ctrl+C来停止。
6.3.2 后台运行
[windCoder@dev filebeat-6.4.0-linux-x86_64]# nohup ./filebeat -e -c filebeat.yml > filebeat.log &
若想结束,通过获取Pid,然后Kill的方式即可。
ps -ef |grep filebeat
kill -9 PID
2
3
以上4个软件配置好并启动后,可在浏览器中看到效果:
除特别注明外,本站所有文章均为 windcoder 原创,转载请注明出处来自: elkshishirizhiguanli-xitongdajian

[…] 本文是之前elk的后续,故默认已搭建好logstash等elk相关环境。侧重点是Hadoop安装以及其与logstash的Output插件的整合。ELK的搭建可见:ELK实时日志管理-系统搭建 […]