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

CentOS7下搭建Elastic Stack 日志分析系统

455次阅读
没有评论

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

本文介绍关于关于搭建 elasticsearch+logstash(beats)+kibana 实现搭建可视化的日志分析系统。
这几款软件也都是免费开源的,其官方站点为:https://www.elastic.co/cn/products

一、关于这几款软件的介绍

Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Logstash 是一个开源的用于收集, 分析和存储日志的工具。
Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。
Beats 是 elasticsearch 公司开源的一款采集系统监控数据的代理 agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给 Elasticsearch 或者通过 Logstash 发送给 Elasticsearch,然后进行后续的数据分析活动。Beats 由如下组成:
①Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息,Packetbeat 嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持 ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache 等协议;
②Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder;
③Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper 等服务;
④Winlogbeat:用于监控、收集 Windows 系统的日志信息;
⑤Create your own Beat:自定义 beat,如果上面的指标不能满足需求,elasticsarch 鼓励开发者 使用 go 语言,扩展实现自定义的 beats,只需要按照模板,实现监控的输入,日志,输出等即可。
Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。
Beats 作为日志搜集器没有 Logstash 作为日志搜集器消耗资源,解决了 Logstash 在各服务器节点上占用系统资源高的问题。

二、实现 elasticsearch+logstash+kibana 的部署

(1)大概网络拓扑图

CentOS7 下搭建 Elastic Stack 日志分析系统
说明:
蓝线的线路图:文件 —->logstash server——>elasticsearch
Logstash 自己做过滤(input plugin)、转换(filter plugin)、输出(output plugin)机制然后直接传送到 elasticsearch 集群
红线的路线图说明:logstash agent 将数据传输到 logstash server 端,在 servlet 端进行统一的输出格式。此刻 agent 端输入是文件,输出到 server;在 logstash server 端,输入端是 logstash agent,输出端是 elasticsearch 集群。
墨色的线路图:加个 redis 做队列缓冲,为了减轻 logstash server 的压力,这也是主流的配置。
以上三种情况,就模拟第三种主流的配置,第一、二有兴趣的可以自己做一下。
(2)主机配置说明

主机名ip运行的服务
master172.16.5.4elasticsearch、filebeat
server1172.16.5.3logstash agent、redis
server2172.17.5.2logstash server、kibana

由于本实验测试吃很大内存,就不搭建集群了,都是用一台服务器测试。

(3)部署 elastic stach
①环境部署。
关闭 iptables、selinux,同时时间同步、hosts 文件进行解析。
命令:iptables -F 情况防火墙策略
setenforce 0 临时关闭 selinux,如果想要永久关闭,修改配置文件,不多说。
②安装 java 环境,解决依赖关系,所有服务器上都安装。
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
③安装 elasticsearch 安装包。
可以官网下载:https://www.elastic.co/cn/products/elasticsearch
我使用已经下载好的安装包
rpm -ivh elasticsearch-5.4.2.rpm
CentOS7 下搭建 Elastic Stack 日志分析系统
④修改配置文件
vim /etc/elasticsearch/jvm.options
修改内存:
-Xms1g
-Xmx1g【建议生产环境 32g,发挥最好的性能】
vim /etc/elasticsearch.yml
cluster.name: myels【集群名字】
node.name: node1【节点名字,主机名】
path.data: /data/els/data【索引存放路径】
path.logs: /data/els/logs【日志路径】
network.host: 0.0.0.0【加入集群时使用的地址,本机地址】
http.port: 9200【监听端口】
discovery.zen.ping.unicast.hosts: [“node1”, “node2”, “node3”]【判断是否在同一个集群里,也就是是否都是监听同一端口】
discovery.zen.minimum_master_nodes: 2【有几个节点,大于半数的最小值】
CentOS7 下搭建 Elastic Stack 日志分析系统


CentOS7 下搭建 Elastic Stack 日志分析系统

⑤创建 elasticsearch 使用的 index 和 logs 目录
mkdir -pv /els/{date,logs} && chown -R elasticsearch:elasticsearch /els/*【创建索引和日志目录】
CentOS7 下搭建 Elastic Stack 日志分析系统
⑥启动服务
systemctl start elasticsearch.service
CentOS7 下搭建 Elastic Stack 日志分析系统
测试。
CentOS7 下搭建 Elastic Stack 日志分析系统
出现以上就是成功了
(4)在 server1 上部署 logstash agent 和 redis
①安装 logstash 和 redis 包。
CentOS7 下搭建 Elastic Stack 日志分析系统
②查看 logstash 的配置文件
/etc/logstash/jvm.options【运行环境,即配置内存等信息;server 端建议大,agent 默认就行】
/etc/logstash/conf.d【配置插件使用的文件】
/etc/logstash/logstash.yml【主配置文件,配置怎么运行】
config.reload.automatic: ture【文件是否立即生效,默认 false 需要手动重启】
config.reload.devel:3【配置文件多久重新加载一次】
配置文件不用修改。
③添加到 path 路径
vim /etc/profied.d/logstash.sh
export PATH=$PATH:/usr/share/logstash/bin
④启动服务
systemctl start logstash
CentOS7 下搭建 Elastic Stack 日志分析系统
⑤修改 redis 配置文件
建议修改该行,提高安全性,本实验就不修改了
requirepass ilinux.io
⑥启动 redis 服务
systemctl start redis
(5)实现 server2 服务器的 logstash server 和 kibana 的部署
①安装 logstash、kibana 安装包
CentOS7 下搭建 Elastic Stack 日志分析系统
②修改 kibana 配置文件
vim /etc/kibana/kibana.yml
server.host: “0.0.0.0”
server.name: “ 主机名“
elasticsearch.uri: “http://server:9200”
③启动 logstash 和 kibana 服务
systemctl start logstash.service
systemctl start redis.service
④浏览器输入 http://localhost:5601,配置 filebeat 的索引(只需输入 filebeat- 即可)。
CentOS7 下搭建 Elastic Stack 日志分析系统
(6)模拟各服务的输入和输出指向的服务。
①模拟 logstash agent 端把日志文件输入给 redis。
设置 logstash 的转换机制。
规则转换机制都放在 /etc/logstash/conf.d/
下面。
vim /etc/logstash/conf.d/redis.conf
CentOS7 下搭建 Elastic Stack 日志分析系统
补充:logstash 内带自变量函数
rpm -ql logstash | grep patternt
CentOS7 下搭建 Elastic Stack 日志分析系统
为了更好的模拟生产环境,我们在此安装 httpd 服务。
yum install httpd
启动 httpd 服务
systemctl start httpd.service
建立 20 个页面
for i in {1..20};do echo “test${i}” > /var/www/html/test${i};done
访问 20 次生产日志
for i in {1..20};do j=$[$RANDOM%20+1];curl http://172.16.5.3/test${j}.html;done
②模拟 logstash server 端的输入端是 redis,输出端是 elasticsearch 集群。
vim /etc/logstash/conf.d/redis.conf
CentOS7 下搭建 Elastic Stack 日志分析系统
③把 els 集群里面的内容发送给 kibana
在第一个框里输入 filebeat-* 后稍等片刻,kibana 会自动识别,OK 后下面的按钮会由灰色变为可操控的按钮 ”Create”, 如上图所示。点击该按钮后,最后就会呈现如下图所示:
CentOS7 下搭建 Elastic Stack 日志分析系统
再回过头新建 logstash 的索引,浏览器输入 http://server2:5601,点击左边栏的”Management”===> 然后点击“index Patterns”===>
CentOS7 下搭建 Elastic Stack 日志分析系统
然后点击“Add New”
CentOS7 下搭建 Elastic Stack 日志分析系统
点击“Crete”按钮创建 logstash 索引,创建完成后即会展现如下图所示:
CentOS7 下搭建 Elastic Stack 日志分析系统
三、实现 beats 的轻量级数据采集器
官方站点:https://www.elastic.co/cn/products/beats
CentOS7 下搭建 Elastic Stack 日志分析系统
工作模式:
beats——>redis——>logstash server——>els 集群
说明:
此时使用 beats 代替了 logstash agent,logstash 和 filebeat 都具有日志收集功能,filebeat 更轻量,占用资源更少,但 logstash 具有 filter 功能,能过滤分析日志。一般结构都是 filebeat 采集日志,然后发送到消息队列,redis,kafaka。然后 logstash 去获取,利用 filter 功能过滤分析,然后存储到 elasticsearch 中。
本实验在上个实验中基本都做完了,这个实验只做 filebeat 部分。
①安装包
yum install httpd filebeat -y
②修改配置文件
cd /etc/filebeat
vim filebeat.yml
filebeat.prospectors:【从哪加载文件,默认即可】
input_type: log【文件类型,日志,默认即可】
paths:

  • /var/log/httpd/access_log
  • /var/log/httpd/error_log
    hosts:【存放路径】
    ③添加数据
    for i in {1..20};do echo “test $i” > /var/www/html/test${i}.html;done
    启动 httpd 服务和 filebeat 服务
    systemctl start httpd
    随意找个主机进行访问,为了得到日志
    for i in {1..20};do j=$[$RANDOM%20+1];curl http://172.16.0.4/test${j}.html
    ④输出给 elasticsearch
    vim /etc/filebeat.yml
    output.elasticsearch :
    hosts: [“server1:9200“,“server2:9200”,“server3:9200”]
    直接输出给 els 不用输出插件了

    ⑤输出给 logstash
    vim /etc/filebeat.yml
    output.logstash :
    hosts: [“172.16.0.4:5044]
    vim /etc/logstash/conf.d/Apachelog.conf
    input {
    beats {
    port => 5044
    }
    filter {
    grok {
    match => {
    “message” => “%{HTTPD_COMBINEDLOG}”
    }
    }
    date {
    match => [“timestamp”,”dd/MMM/YYYY:H:m:s Z”]
    }
    mutate {
    rename => {
    “agent” => “user_agent”
    }
    }
    geoip {
    source => “clientip”
    target => “geoip”
    database => “/etc/logstash/maxmind/GeoLite2-City.mmdb”
    }
    output {
    elasticsearsh {
    hosts => [“http://server1:9200″,”http://server2:9200″,”http://master:9200”]
    index => “logstash-%{+YYYY.MM.DD}
    document_type => “http_access_logs”
    }
    }
    启动:logstash -f apachelog.conf
    ⑥输出给 redis
    编辑 filebeat 配置文件
    vim /etc/filebeat.yml
    添加:
    output.redis:
    hosts: [“redis 服务器 ”]
    password: “iliunx.io”
    key: “httplog”
    db: 0
    timeout: 5
    重启 filebeat
    systemctl restart filebeat
    进入 redis 查看数据
    redis-cli -a ilinux.io
    查看有多少数据
    LLEN httplogs
    在 els server 端配置输入机制
    vim /etc/elasticsearch/conf.d/redis2.conf
    input {
    redis {
    batch_count => 1
    data_type => “list”
    key => “httpdlogs”
    host => “192.168.0.2”
    port => 6379
    threads => 5
    password => “ilinux.io”
    }
    }

filter {
grok {
match => {
“message” => “%{HTTPD_COMBINEDLOG}”
}
}
date {
match => [“timestamp”,”dd/MMM/YYYY:H:m:s Z”]
}
mutate {
rename => {
“agent” => “user_agent”
}
}
geoip {
source => “clientip”
target => “geoip”
database => “/etc/logstash/maxmind/GeoLite2-City.mmdb”
}
output {
elasticsearsh {
hosts => [“http://server1:9200″,”http://server2:9200″,”http://server3:9200”]
index => “logstash-%{+YYYY.MM.DD}
document_type => “http_access_logs”
}
}

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-01/150451.htm

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7959502
文章搜索
热门文章
星哥带你玩飞牛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中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

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

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

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

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

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

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

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

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...