ELK日志分析服务搭建

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本实验所用软件包下载地址:链接:<a href="https://pan.baidu.com/s/1h4q8tL5fJ8TqcCzhHwAVpg" target="_blank">https://pan.baidu.com/s/1h4q8tL5fJ8TqcCzhHwAVpg</a> 提取码:8oaf使用unzip解压(yum install unzip -y)

一、ELK简介

ELK是三个开源软件的缩写,分别是:Elasticsearch , Logstash, Kibana , 新增了一个 FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash,官方也推荐此工具。

1.Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。

2.Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为 c/s 架构,client 端安装在需要收集日志的主机上,server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往 elasticsearch 上去。

3.Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

4.Filebeat 隶属于 Beats。目前 Beats 包含四种工具:

Packetbeat #搜集网络流量数据
Topbeat    #搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据
Filebeat   #搜集文件数据
Winlogbeat #搜集 Windows 事件日志数据 

二、实验部署

业务请求到达nginx;nginx响应请求,并在access.log文件中增加访问记录;
FileBeat搜集新增的日志,通过LogStash的5044端口上传日志;
LogStash将日志信息通过本机9200端口传到Elasticsearch;
搜索日志的用户通过浏览器访问Kibana,服务器端口是5601
Kibana通过9200端口访问Elasticsearch。

1.实验环境准备
单节点ELK:elk服务端:10.0.0.201;nginx客户端:10.0.0.202

(1)配置yum源(两台机器)

wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
#关闭防火墙:systemctl stop(disable) firewalld
#关闭 SELinux:SELINUX=disabled

2.ELK-server服务端部署
(1)安装软件

#创建软件存放目录,并将elk-server.zip压缩包上传
mkdir /elk;cd /elk
#解压缩,并拷贝到/usr/local/目录下
tar -xf elasticsearch-6.2.3.tar.gz
tar -xf logstash-6.2.3.tar.gz 
tar -xf kibana-6.2.3-linux-x86_64.tar.gz
cp -a elasticsearch-6.2.3 logstash-6.2.3 kibana-6.2.3-linux-x86_64 /usr/local
tar -xf jdk-8u261-linux-x64.tar.gz
#cp -a jdk1.8.0_261 /usr/local/jdk1.8

(2)安装jdk

#安装gcc
yum -y install gcc

#配置jdk的环境变量
#vim /etc/profile
#添加:
export JAVA_HOME=/usr/local/jdk1.8
export JAVA_BIN=/usr/local/jdk1.8/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#source /etc/profile

(3)配置Elasticsearch

#新建elasticsearch用户并使用该启动启动
useradd elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-6.2.3/
su - elasticsearch
$ cd /usr/local/elasticsearch-6.2.3/
$ ./bin/elasticsearch -d
#查看进程是否启动成功,需要等待几分钟
netstat -anpt|grep :9200

(4)配置logstash
Logstash 收集 nginx 日志之使用 grok 过滤插件解析日志,grok 作为一个 logstash 的过滤插件,支持根据模式解析文本日志行,拆成字段。

grok的正则匹配

#cd /usr/local/logstash-6.2.3/
vim vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
#添加:
WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request}
HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent}
%{QS:xforward}

创建logstash配置文件

#vim /usr/local/logstash-6.2.3/default.conf
input {
    beats {
        port => "5044"
    }
}
#数据过滤
filter {
    grok {
        match => { "message" => "%{NGINXACCESS}" }
     }
    geoip {
       #nginx 客户端 ip
       source => "10.0.0.202"
     }
}
#输出配置为本机的 9200 端口,这是 ElasticSerach 服务的监听端口
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
    }
}
#进入/usr/local/logstash-6.2.3目录下
#后台启动logstash:
nohup bin/logstash -f default.conf &
#查看启动日志
tail -f nohup.out
#如果报错“Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000f5550000, 178978816, 0) failed; error='Cannot allocate memory' (errno=12)”
#原因:服务器内存不够;解决办法:vim config/jvm.options
#将-Xms1g和-Xmx1g改为:
-Xms256m
-Xmx256m

(5)配置kibana

#编辑配置文件
vim /usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml
#修改: #server.host: "localhost" 为 server.host: "本机IP"

#进入kibana目录
cd /usr/local/kibana-6.2.3-linux-x86_64/
#启动并测试:
nohup bin/kibana &
#浏览器访问:
10.0.0.201:5601

3.Nginx客户端配置

#安装依赖
yum install -y gcc* pcre-devel opensll openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel

#将源码包上传到nginx主机上,并创建nginx用户
useradd -r -s /sbin/nologin nginx
#解压nginx并安装
#cd nginx-1.17.10/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

#上传filebeat软件包并解压到/usr/local

#编辑配置文件
vim /usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml
#修改:
enable:false #修改为 true
paths:/var/log/*.log #修改为/var/log/nginx/*.log
#output.elasticsearch: #将此行注释掉
#hosts: ["localhost:9200"] #将此行注释掉
output.logstash: #取消此行注释
hosts: ["10.0.0.201:5044"] #取消此行注释并修改 IP 地址为 ELK 服务器地址

#切换到/usr/local/ filebeat-6.2.3-linux-x86_64目录下
cd /usr/local/filebeat-6.2.3-linux-x86_64
#启动:
nohup ./filebeat -e -c filebeat.yml &
#查看日志:
tail -f nohup.out

#验证:多访问几次nginx,然后访问kibana进行设置
#步骤:
    #点击左上角的Discoverwe 
    #输入 logstash-*,点击next step
    #选择 time filter,再点击 create index pattern(创建索引模式)
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
17天前
|
存储 监控 安全
|
1月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
38 1
|
1月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
115 0
|
2月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
194 3
|
3月前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
3月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?