从0开始CentOS7上安装ELK实现日志收集

  • 1. ELK Stack 简介
  • 2. 组件下载
    • 2.1 安装环境及版本
    • 2.2 下载安装包
  • 3.安装
    • 3.1 ElasticSearch安装
      • 3.1.1 安装JDK
      • 3.1.2 安装ElasticSearch
      • 3.1.3 设置data的目录
      • 3.1.4 设置log的目录
      • 3.1.5 修改配置文件elasticsearch.yml
      • 3.1.6 启动elasticsearch
      • 3.1.7 安装ElasticSearch-Head插件
        • 3.1.7.1 安装nodejs、rpm 、git
        • 3.1.7.2 下载并安装elasticsearch-head
        • 3.1.7.3 修改es-head的localhost地址
        • 3.1.7.4 修改head的连接地址
        • 3.1.7.5 启动elasticsearch-head
    • 3.2 Logstash安装
      • 3.2.1 安装logstash
      • 3.2.2 设置data的目录
      • 3.2.3 设置log的目录
      • 3.2.4、设置conf.d的目录,创建配置文件
      • 3.2.5 修改配置文件logstash.yml
      • 3.2.6 启动logstash
      • 3.2.8 logstash指定配置进行运行
    • 3.3 kibana安装
      • 3.3.1 安装kibana
      • 3.3.2 修改kibana.yml
      • 3.3.3 启动kibana
    • 3.4 配置nginx
      • 3.4.1 安装nginx和http用户认证工具
      • 3.4.2 修改nginx配置
    • 3.5 Filebeat安装
      • 3.5.1 安装filebeat
      • 3.5.2 启动kibana
      • 3.5.3 修改配置Filebeat
      • 3.5.4 登录kibana,创建索引,并且搜集数据
  • 4. 收集应用日志Demo
    • 4.1 修改filebeat.yml配置文件
    • 4.2 修改logstash.conf配置文件
    • 4.3 测试修改的logstash.conf配置文件
    • 4.4 重启相关服务
    • 4.5 登录kibana,创建索引

1. ELK Stack 简介

ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。

  • Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
  • Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
  • Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
  • Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。

2. 组件下载

2.1 安装环境及版本

环境 版本
操作系统 CentOS7
内存 4G+
ElasticSearch 7.10.2
Logstash 7.10.2
Kibana 7.10.2
Filebeat 7.10.2
Java openjdk 1.8.0_275

2.2 下载安装包

建议把所需安装包手动通过下载工具下载下来,点击进入下载页面,快速下载通道:Elasticsearch、 Logstash、 Kibana、 Filebeat 。

将手动下载的安装包上传至安装机器

3.安装

安装前,关闭防火墙

#停止firewall
systemctl stop firewalld.service #禁止firewall开机启动
systemctl disable firewalld.service

关闭Seliunx

# 查看
getenforce
# 临时关闭
# 设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0
# 永久关闭
vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled,设置后需要重启才能生效

3.1 ElasticSearch安装

3.1.1 安装JDK

已经安装过,可以跳过。

ElasticSearch依赖Java开发环境支持,先安装JDK

yum -y install java-1.8.0-openjdk

查看java安装情况:

java -version

3.1.2 安装ElasticSearch

进入到对应上传的文件夹,安装ElasticSearch

rpm -ivh elasticsearch-7.10.2-x86_64.rpm

查找安装路径:

rpm -ql elasticsearch

一般是装在/usr/share/elasticsearch/下。

3.1.3 设置data的目录

创建/data/es-data目录,用于elasticsearch数据的存放

mkdir -p /data/es-data

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /data/es-data

3.1.4 设置log的目录

创建/data/es-log目录,用于elasticsearch日志的存放

mkdir -p /log/es-log

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /log/es-log

3.1.5 修改配置文件elasticsearch.yml

vim /etc/elasticsearch/elasticsearch.yml

修改如下内容:


node.name: node-1#设置data存放的路径为/data/es-data
path.data: /data/es-data#设置logs日志的路径为/log/es-log
path.logs: /log/es-log#设置内存不使用交换分区
bootstrap.memory_lock: false
#配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明#设置允许所有ip可以连接该elasticsearch
network.host: 0.0.0.0#开启监听的端口为9200
http.port: 9200#增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加)
http.cors.enabled: true
http.cors.allow-origin: "*"cluster.initial_master_nodes: ["node-1"]

3.1.6 启动elasticsearch

启动

systemctl start elasticsearch

查看状态

systemctl status elasticsearch

设置开机启动

systemctl enable elasticsearch

启动成功之后,测试服务是否开启

curl -X GET http://localhost:9200

返回如下信息,说明安装、启动成功了

3.1.7 安装ElasticSearch-Head插件

3.1.7.1 安装nodejs、rpm 、git

yum install epel-release
yum install nodejs npm git

3.1.7.2 下载并安装elasticsearch-head

git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

3.1.7.3 修改es-head的localhost地址

cd ./elasticsearch-head  #(elasticsearch-head源码文件夹)
vim Gruntfile.js# Add hostnameconnect: {server: {options: {hostname: '0.0.0.0', # addport: 9100,base: '.',keepalive: true}}}

3.1.7.4 修改head的连接地址

cd ./elasticsearch-head  #(elasticsearch-head源码文件夹)
vim ./_site/app.js
将localhost修改为ESdeIP地址
修改前:this.base_uri = this.config.base_uri;
# http://loccalhost:9200 中的localhost改为elasticsearch所在机器的地址
修改后: this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://you ip address:9200";

3.1.7.5 启动elasticsearch-head

cd elasticsearch-head(elasticsearch-head源码目录)
./node_modules/grunt/bin/grunt server &

浏览器访问:http://:9200

3.2 Logstash安装

3.2.1 安装logstash

rpm -ivh logstash-7.10.2-x86_64.rpm

3.2.2 设置data的目录

创建/data/ls-data目录,用于logstash数据的存放

mkdir -p /data/ls-data

修改该目录的拥有者为logstash

chown -R logstash:logstash /data/ls-data

3.2.3 设置log的目录

创建/data/ls-log目录,用于logstash日志的存放

mkdir -p /log/ls-log

修改该目录的拥有者为logstash

chown -R logstash:logstash /log/ls-log

3.2.4、设置conf.d的目录,创建配置文件

#进入logstash目录
cd /etc/logstash#创建conf.d的目录
mkdir conf.d

创建配置文件,日志内容输出到elasticsearch中,如下

vim /etc/logstash/conf.d/logstash.conf

内容如下:

input {beats {port => 5044codec => plain {charset => "UTF-8"}}
}output {elasticsearch { hosts => ["localhost:9200"] }stdout { codec => rubydebug }
}

3.2.5 修改配置文件logstash.yml

vim /etc/logstash/logstash.yml

内容如下:

# 设置数据的存储路径为/data/ls-data
path.data: /data/ls-data# 设置管道配置文件路径为/etc/logstash/conf.d
path.config: /etc/logstash/conf.d# 设置日志文件的存储路径为/log/ls-log
path.logs: /log/ls-log

3.2.6 启动logstash

启动

systemctl start logstash

查看

systemctl status logstash

设置开机启动

systemctl enable logstash

3.2.7、测试logstash
--config.test_and_exit表示,检查测试创建的logstash.conf配置文件,是否有问题,如果没有问题,执行之后,显示Configuration OK 证明配置成功!

/usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit

3.2.8 logstash指定配置进行运行

指定logstash.conf配置文件,以后台的方式运用,执行这段命令之后,需要回车一下

nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf &

检查logstash是否启动

ps -ef|grep logstash

显示如下信息,说明启动了

3.3 kibana安装

3.3.1 安装kibana

rpm -ivh kibana-7.10.2-x86_64.rpm

搜索rpm包

rpm -ql kibana

默认是装在/usr/share/kibana/下。

3.3.2 修改kibana.yml

修改kibana的配置文件

vim /etc/kibana/kibana.yml

内容如下:

#kibana页面映射在5601端口
server.port: 5601#允许所有ip访问5601端口
server.host: "0.0.0.0"#elasticsearch所在的ip及监听的地址
elasticsearch.hosts: ["http://localhost:9200"]

3.3.3 启动kibana

启动

systemctl start kibana

查看状态

systemctl status kibana

设置开机启动

systemctl enable kibana

3.4 配置nginx

3.4.1 安装nginx和http用户认证工具

yum -y install epel-release
yum -y install nginx httpd-tools

3.4.2 修改nginx配置

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
vim /etc/nginx/nginx.conf

将location配置部分,注释掉

创建kibana.conf文件

vim /etc/nginx/conf.d/kibana.conf

内容如下:

server {listen 8000; #修改端口为8000server_name kibana;#auth_basic "Restricted Access";#auth_basic_user_file /etc/nginx/kibana-user;location / {proxy_pass http://127.0.0.1:5601; #代理转发到kibanaproxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}

重新加载配置文件

systemctl reload nginx

到这一步,elk基本配置完了,输入如下命令,启动服务

# 启动ELK和nginx
systemctl restart elasticsearch logstash kibana nginx#查看ELK和nginx启动状态
systemctl status elasticsearch logstash kibana nginx

在浏览器输入ip:8000, 就可以访问了kibana

3.5 Filebeat安装

3.5.1 安装filebeat

yum localinstall -y filebeat-7.10.2-x86_64.rpm

3.5.2 启动kibana

启动

systemctl start filebeat

查看状态

systemctl status filebeat

设置开机启动

systemctl enable filebeat

3.5.3 修改配置Filebeat

编辑filebeat.yml文件

vim /etc/filebeat/filebeat.yml
# ============================== Filebeat inputs ===============================filebeat.inputs:# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.- type: log# Change to true to enable this input configuration.enabled: true #更改为true以启用此prospectors配置。paths:  #支持配置多个文件收集目录#- /var/log/*.log- /var/log/messages
#==================== Outputs =====================
#------------- Elasticsearch output ---------------
#output.elasticsearch:# Array of hosts to connect to.#hosts: ["localhost:9200"]
#---------------- Logstash output -----------------
output.logstash:# The Logstash hostshosts: ["localhost:5044"]

注意:注释掉Elasticsearch output下面的部分,将Filebeat收集到的日志输出到 Logstash output

最后重启服务

systemctl restart filebeat

3.5.4 登录kibana,创建索引,并且搜集数据



ELK+ Filebeat的安装,到此,就基本结束了,以上只是简单的部署完了。

但是,还满足不了需求,我们按需收集日志?Let’s Go!

4. 收集应用日志Demo

Demo日志格式

2021-01-18 00:25:45,7022021-01-18 00:25:45,702 ----------------仿真开始---------------------2021-01-18 00:25:45,7022021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,702 [事件调度] init_entity, 红方机场, entity_init_internal, 仿真初始化:初始化想定, 0.000000, 0.000002021-01-18 00:25:45,7022021-01-18 00:25:45,702 ----------------仿真结束---------------------2021-01-18 00:25:45,702

该日志存放路径/opt/log/test.log

4.1 修改filebeat.yml配置文件

vim /etc/filebeat/filebeat.yml
filebeat.inputs:# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.- type: log# Change to true to enable this input configuration.enabled: true# Paths that should be crawled and fetched. Glob based paths.paths:- /opt/log/test.log # 收集日志目录

4.2 修改logstash.conf配置文件

修改logstash中的配置文件,创建索引,将其输出

vim /etc/logstash/conf.d/logstash.conf

内容如下:

input {beats {port => 5044codec => plain {charset => "UTF-8"}}
}filter {if ( '[' not in [message] ) {     #如果message字段中有【[】请求,就会删除drop {}}    mutate {split => ["message", "["]add_field => {"logtemptime" => "%{[message][0]}""logtime" => "%{[message][0]}""msgTemp" => "%{[message][1]}"}remove_field => "host.name"remove_field => "@version"remove_field => "tags"remove_field => "log.offset"remove_field => "message"}mutate {split => ["msgTemp", " "]add_field => {"operateTopic" => "%{[msgTemp][0]}""operate" => "%{[msgTemp][1]}""simEntity" => "%{[msgTemp][2]}""eventName" => "%{[msgTemp][3]}""evevtDesc" => "%{[msgTemp][4]}""ctime" => "%{[msgTemp][5]}""etime" => "%{[msgTemp][6]}"}remove_field => "msgTemp"}mutate {gsub => ["operateTopic", "]", ""]gsub => ["operate", ",", ""]gsub => ["simEntity", ",", ""]gsub => ["eventName", ",", ""]gsub => ["evevtDesc", ",", ""]gsub => ["ctime", ",", ""]}date {match => ["logtemptime", "yyyy-MM-dd HH:mm:ss,SSS"]target => "@timestamp"locale => "cn"}mutate {remove_field => "logtemptime"}    }output{stdout { codec => rubydebug }elasticsearch {hosts => ["localhost:9200"]index => "testdemo-%{+YYYY.MM.dd}" # 注意index不能包含大写字母,否则报错}
}

4.3 测试修改的logstash.conf配置文件

输入如下命令,检查/etc/logstash/conf.d/logstash.conf文件,是否配置异常!

/usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit

输入结果,显示Configuration OK,就表示没问题!

4.4 重启相关服务

重启filebeat

systemctl restart filebeat

关闭logstash服务

systemctl stop logstash

有时关不掉

用kill命名强制关闭

ps -ef |grep logstash# kill -9 <进程ID>
kill -9 27847

以指定的配置文件,启动logstash,输入如下命令,回车就ok了,执行完之后也可以用ps -ef|grep logstash命令查询logstash是否启动成功!

nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf &

4.5 登录kibana,创建索引

登录kibana,以同样的操作,页面创建索引,查询收集的日志,以下是收集的Demo日志信息


参考文档:http://www.justdojava.com/2019/08/11/elk-install/

从0开始CentOS7上安装ELK,实现日志收集相关推荐

  1. Centos7上安装oracle11g/12c的安装教程推荐及注意事项

    Centos7上安装oracle11g的安装教程推荐及注意事项 历时一天半,终于在今天中午安装完oracle11g,成功后喜悦的心情自是溢于言表.总有些疑问,比如为何如此复杂的数据库为何还会有如此之多 ...

  2. Centos7 上安装 mysql5.7

    Centos7 上安装 mysql5.7 **文章没有图片效果,想看带图片的到文章末尾加我微信公众号,搜索标题就能看到了** ​ 文章没有图片效果,想看带图片的到文章末尾加我微信公众号,搜索标题就能看 ...

  3. 在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中:  cd /usr/local/ 3 创 ...

  4. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  5. 在centOS7中装mysql_在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...

  6. CentOS7 上安装 Zookeeper-3.4.9 服务

    在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹:     mkdir -p /usr/local/ser ...

  7. centos akonadi mysql,MySQL数据库之在CentOS7上安装MySQL5.7

    本文主要向大家介绍了MySQL数据库之在CentOS7上安装MySQL5.7 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 获取RPM包 # wget https://dev. ...

  8. 在CentOS7上安装配置Corosync高可用集群过程全记录

    在CentOS7上安装配置Corosync高可用集群过程全记录 一.环境.拓朴及其他准备工作: 1-1:准备网络YUM源环境: All Nodes OS CentOS 7.3 x86_64: # wg ...

  9. 在CentOS7上安装和使用ZooKeeper最新版本(V3.4.12)

    0.ZooKeeper文档 http://zookeeper.apache.org/doc/r3.4.11/zookeeperOver.html 1.准备 在CentOS7上安装zookeeper时, ...

最新文章

  1. 网站SEO优化之如何维护网站权重?
  2. C++编程练习(5)----“实现简单的循环队列的顺序存储结构“
  3. 公钥,私钥,SSL(讲的很生动)
  4. 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
  5. Python 33(1) UDP协议 数据报协议 socketsever模块
  6. python3 随机数函数
  7. 再记AE与AO的区别与联系
  8. 大学毕业4年-回顾和总结(6)-技术研发-重构之法
  9. ue4 visual studio 好用的插件Visual AssistX 10.9.2301.0 破解版
  10. 文献翻译:《弱监督学习实现3D人脸重建:从单张图片到图片集》(Accurate 3D Face Reconstruction with Weakly-Supervised Learning)
  11. 应聘php面试自我介绍,应聘工作面试自我介绍
  12. 【zhasite】托业英语阅读技巧有哪些
  13. 天线接收功率计算公式_无线信号功率计算公式
  14. 给UILabel中的文字加删除线
  15. 三层交换机dhcp服务器性能,CISCO三层交换机怎么配置DHCP服务?
  16. STM32与ARM7、ARM9、ARM11
  17. 将josn对象转换成string并格式化
  18. CPU的计算机能力和AVX512指令集
  19. Vue详解+实战分析
  20. matlab数据拟合语句,Matlab数据拟合程序 - 范文中心

热门文章

  1. 2022年轩灵大前端知识体系王牌打造计划
  2. 36Kr季报图解:营收5553万元同比增12% 净亏3900万
  3. http400错误经历
  4. 英特尔计划芯片涨价20% 覆盖PC和数据中心等近全线产品
  5. ppt2pdf 批量
  6. 如何提取视频中的语音转换成文字?分享一个超好用的方法
  7. Android判断后台服务(Service)是否运行
  8. 逆向环境准备(刷机与root)
  9. 理解 Linux 网络命名空间
  10. java手动切换成独立显卡_教你MacBook如何实现一键切换显卡