阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7单机部署ELK

473次阅读
没有评论

共计 7054 个字符,预计需要花费 18 分钟才能阅读完成。

一、 简介

1.1 介绍

ELK 是三个开源工具组成,简单解释如下:

Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。

Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

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

1.2  场景分析

日志主要包括系统日志、应用程序日志和安全日志等等。运维人员和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的 syslog,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk 和 wc 等 Linux 命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

这里采用开源实时日志分析 ELK 平台能够完美的解决我们上述的问题,当然也还有别的平台或者工具可以使用,这里只讨论 ELK,官方网站:https://www.elastic.co

二、安装 Elasticsearch

2.1 安装 jdk

# Java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

 2.2 安装 Elasticsearch

# tar -zxvf elasticsearch-5.6.3.tar.gz
# mv elasticsearch-5.6.3 /data/elasticsearch
# cd elasticsearch/config/
# 备份配置文件
# cp elasticsearch.yml elasticsearch.yml.bak

编辑配置文件

# cat elasticsearch.yml | grep -v ^#
cluster.name: elk-application
node.name: node-1
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 172.16.220.248
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node-1"]
discovery.zen.minimum_master_nodes: 1

添加 elasticsearch 用户,不能使用 root 启动

# groupadd -g 1008 elasticsearch
# useradd -g 1008 -u 1008 elasticsearch
# chown -R elasticsearch:elasticsearch /data/elasticsearch/

修改 sysctl.conf 文件

# vim /etc/sysctl.conf
vm.max_map_count = 262144
 
# sysctl -p

修改 /etc/security/limits.conf 文件,修改打开文件句柄

*              soft    nofile          100000
*              hard    nofile          100000
*              soft    nproc          100000
*              hard    nproc          100000

添加 hosts 文件

# vim /etc/hosts
172.16.220.248 node-1

启动

# su -s elasticsearch
# cd /data/elasticsearch/bin
# ./elasticearch &

查看是否启动

CentOS 7 单机部署 ELK

简单的 curl 测试

# curl http://172.16.220.248:9200

CentOS 7 单机部署 ELK

三、安装 Logstash 和 filebeat

filebeat 用于在各个服务器上获取数据,发送到 logstash 上,再由 logstash 处理数据。

3.1 安装 logstash

# tar -zxvf logstash-5.6.3.tar.gz
# mv logstash-5.6.3 /data/logstash

3.2 安装 filebeat

下载 filebeat 并启动,通过它来监听数据源文件的新增内容经过 logstash 处理后上传到 es 里面

# tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz
# mv filebeat-5.6.3-linux-x86_64 /data/filebeat
# cd /data/filebeat
# cp filebeat.yml filebeat.yml.bak

编辑 filebeat.yml 文件

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/message-log  # 测试本机的一个 log 文件
output.logstash:
  hosts: ["172.16.220.248:5044"]

启动 filebeat 服务

# cd /data/filebeat
# ./filebeat &

查看启动,filebeat 没有监听端口,主要看日志和进程

# tialf logs/filebeat
# ps -ef | grep filebeat

CentOS 7 单机部署 ELK

filebeat 监听的文件记录信息在 /data/filebeat/data/registry

新建一个本地文件 message-log,可以取几条本机系统的 messages 文件

  CentOS 7 单机部署 ELK

3.3 启动 logstash

最后新建一个 logstash 的启动指定 test.conf 配置文件,内容如下:

input {
    beats {
      port => "5044"
    }
}
output {
   elasticsearch {
   hosts => "172.16.220.248:9200"
  }
  stdout {codec => rubydebug }  # 这是将输出打印在屏幕上,可以注释掉
}

Logstash 默认有 input、filter、output 三个区域,一般最少需要配置 input 和 output 即可!

logstash 的本身默认的 logstash.yml 配置文件选择不修改即可!

简单测试一下 logstash 不指定配置文件启动

# cd /data/filebeat/bin
# ./logstash -e 'input {stdin {} } output {stdout {} }'

CentOS 7 单机部署 ELK

我们手动输入 hello world,它也会输出 hello world

指定配置文件启动 logstash

# ./logstash -f ../config/test.conf &

查看 5044 端口和 9600 端口是否开启

CentOS 7 单机部署 ELK

等待一会后应该会出现如下信息输出,这也就是 test.conf 里面最后一行定义输出到屏幕上

CentOS 7 单机部署 ELK

 四、安装 kibana

# tar -zxvf kibana-5.6.3-linux-x86_64.tar.gz
# mv kibana-5.6.3-linux-x86_64 /data/kinbana
# cd /data/kinbana/config/
# cp kibana.yml kibana.yml.bak

编辑 kibana.yml 配置文件

# vim kibana.yml
server.port: 5601
server.host: "172.16.220.248"
elasticsearch.url: "http://172.16.220.248:9200"

启动 kinbana

# cd /data/kibana/bin
# ./kibana &

查看端口

CentOS 7 单机部署 ELK

浏览器登入查看

  CentOS 7 单机部署 ELK

点击 create 按钮后,然后点击上面的 discover 按钮,注意如果没数据的话,注意看看导入的时间 @timestamp 和现在的时间对比一下,kibana 默认只显示最近 15 分钟的数据,如果超出 15 分钟请选择适当的时间,从 kibana 可以看到 messages-log 里面的 15 条数据都正常导入了。这就也完成我们的实现的第一个效果。但是这仅仅是把流程跑通了,接下来我们需要做的事情还有更多。注意只能先导入数据到 es 后才能在 kibana 创建索引。

CentOS 7 单机部署 ELK

五、获取 Nginx access 日志

Nginx 日志格式在 logstash 的 grok 里面默认是没有的,需要我们手动配置,可以通过 http://grokdebug.herokuapp.com/ 在线工具来判断配置是否正确。

 5.1 在 nginx 服务器上安装 filebeat

服务器:172.16.200.160

# tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz
# mv filebeat-5.6.3-linux-x86_64 /data/filebeat
# cd /data/filebeat
# cp filebeat.yml filebeat.yml.bak

修改 filebeat 配置文件

# cat filebeat.yml | grep -v ^$ | grep -v ^# | grep -v "#"
filebeat.prospectors:
- input_type: log
  paths:
    - /data/nginx/logs/160_access.log
   document_type: nginx_access
output.logstash:
  hosts: ["172.16.220.248:5044"]

启动 filebeat

# ./filebeat &

5.2 重新配置 logstash 启动配置文件

nginx 日志格式,根据业务要求,我们这做了一些修改,比如增加 cookie 等,修改 access.log 日志时间格式等,这个会在另外的博客中写出来,会给出链接的。

  Nginx 日志中添加 cookie 信息  http://www.linuxidc.com/Linux/2017-11/148217.htm

Nginx 改变 access.log 中的时间格式  http://www.linuxidc.com/Linux/2017-11/148221.htm

  Nginx 日志格式 ��

log_format main
                '[$time_local] - $remote_addr:$remote_port - $upstream_addr $upstream_status $upstream_response_time -'
                '"$request" $status $bytes_sent $request_time '
                '"$http_referer" - "$http_user_agent" - '
                '"$customerTag_cookie" - "$ym_cookie" - "$http_cookie" '
                '"$http_x_forwarded_for"';
 
# 这里只是我们自己的格式,各位可以根据自己要求增删

  grok 使用表达式

可能我理解不是很到位,写的也比较复杂,我会把匹配对应项一一写出来,大家可以自己理解,然后为自己的项目配置

%{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip}

grok 匹配说明

 
1
%{SYSLOG5424SD}
时间格式
 
1
%{IPV4:clientip}
获取 ip,clientip 是自己命名的
 
1
%{NUMBER:clientport}
NUMBER 匹配数字
 
1
%{INT:upstream_status}
INT 整形
 
1
%{WORD:method}
WORD 单词
 
1
%{URIPATHPARAM:request}
获取请求内容 request
 
1
%{QS:url}
 QS 可以获取一段字符串

修改 logstash 启动配置文件

input {
    beats {
      port => "5044"
    }
 
}
 
 
filter {
    if [type] == "nginx_access" {
 
    grok {
        match => {"message" => "%{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\"%{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip}"}
      }
      
 
    mutate {
       remove_field => "message"  # 把 message 字段去掉,它会将上面单项获取的信息做个汇总,这样就重复了
    }
 
  }
 
}
 
output {
   elasticsearch {
   hosts => "172.16.220.248:9200"
  }
#stdout {codec => rubydebug}
}

测试一下配置文件

./logstash -t -f ../config/logstash.conf

CentOS 7 单机部署 ELK

  重启 logstash

不出问题 elasticsearch 和 kibana 中就会有数据了

        CentOS 7 单机部署 ELK

基于 CentOS 6.9 搭建 ELK 环境指南  http://www.linuxidc.com/Linux/2017-07/145636.htm

Linux 日志分析 ELK 环境搭建  http://www.linuxidc.com/Linux/2017-07/145494.htm

Logstash 监控日志文件时应对日志文件名改变的原理  http://www.linuxidc.com/Linux/2016-08/133994.htm

使用 Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

Linux 上安装部署 ElasticSearch 全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Elasticsearch 安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

ElasticSearch 集群搭建实例  http://www.linuxidc.com/Linux/2015-02/114243.htm

分布式搜索 ElasticSearch 单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

ElasticSearch 的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

CentOS 安装 Logstash 2.2.0 和 Elasticsearch 2.2.0   http://www.linuxidc.com/Linux/2016-03/128794.htm

ElasticSearch 的详细介绍 :请点这里
ElasticSearch 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148222.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7054字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7977167
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...