前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >安装 ELK 7.1.1

安装 ELK 7.1.1

原创
作者头像
懒人的小脑
修改于 2019-07-03 09:55:52
修改于 2019-07-03 09:55:52
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

写在前面

这是一篇搭建 ELK 集群的文章,主要涉及3大组件 elasticsearch、logstash 和 kibana 以及一个日志收集代理 filebeat的安装,通过部署 ELK 建立对其感性的认识。

ELK 是Elasticsearch、Logstash、Kibana 的简写,用于将不同来源的日志集中整合的一起,建立集中式日志管理集群。

一个完整的集中式日志系统,需要有一下过程:

  • 收集-能够采集多种来源的日志数据
  • 传输-能够稳定的把日志数据传输到中央系统
  • 存储-如何存储日志数据
  • 分析-可以支持 UI 分析
  • 警告-能够提供错误报告,监控机制

Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。目前,最新的版本是 7.1.1。

主要特点

  • 实时分析
  • 分布式实时文件存储,并将每一个字段都编入索引
  • 文档导向,所有的对象全部是文档
  • 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)。见图 2 和图 3
  • 接口友好,支持 JSON

Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 (JordanSissel)。目前最新的版本是 7.1.1。

主要特点

  • 几乎可以访问任何数据
  • 可以和多种外部应用结合
  • 支持弹性扩展

它由三个主要部分组成

  • Shipper-发送日志数据
  • Broker-收集数据,缺省内置 Redis
  • Indexer-数据写入

Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。目前最新的版本是 7.1.1,并且原生支持中文界面。

Filebeat提供一种轻型的方法用于转发和汇总日志与文件, filebeat替代 logstash-forwarder 接收日志,目前的最新版本是 7.1.1。

实验环境如下:

IP 地址

OS

功能

10.0.12.235

CentOS 7

filebeat

10.0.12.235

CentOS 7

logstash

10.0.12.231

CentOS 7

elasticsearch

10.0.12.243

CentOS 7

kibana

安装 Elasticsearch

安装前准备

elasticsearch 由 java 编写,需要系统中支持 java。

代码语言:txt
AI代码解释
复制
yum install java -y

获取 elasticsearch 软件包,下载至/usr/local/src 目录。

代码语言:txt
AI代码解释
复制
wget -P /usr/local/src https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz

创建elasticsearch 的 data 目录和log目录,用于保存 elasticsearch的数据和日志。

代码语言:txt
AI代码解释
复制
 mkdir -p /data/elasticsearch/{data,log}

创建 elasticsearch 用户,因为 elasticsearch 可以接收用户输入的脚本并执行,所以出于系统安全考虑,elasticsearch 默认禁止 root 用户运行 elasticsearch,需要创建 elasticsearch 用户。

代码语言:txt
AI代码解释
复制
useradd -d /usr/local/elasticsearch -M elasticsearch

安装 elasticsearch

解压elasticsearch软件包至指定目录/usr/local。

代码语言:txt
AI代码解释
复制
tar xf /usr/local/src/elasticsearch-7.1.1-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/elasticsearch-7.1.1/ /usr/local/elasticsearch

修改相关目录的属主

代码语言:txt
AI代码解释
复制
chown -R elasticsearch /usr/local/elasticsearch
chown -R elasticsearch /usr/local/elasticsearch-7.1.1/
chown -R elasticsearch /data/elasticsearch/

最简单的 elasticsearch 配置文件

配置文件:

代码语言:txt
AI代码解释
复制
cluster.name: my-application          #集群名称
node.name: node-1                     #当前节点的名称       
path.data: /data/elasticsearch/data   #数据存放目录
path.logs: /data/elasticsearch/log    #日志存放目录
network.host: 0.0.0.0                 #监听的地址
http.port: 9200                       #监听端口
cluster.initial_master_nodes: ["node-1"]

运行 elasticsearch

elasticsearch 默认会在前台运行,使用-d选项可以使其后台运行。

代码语言:txt
AI代码解释
复制
sudo -u elasticsearch /usr/local/elasticsearch/bin/elasticsearch [-d]

可能产生的错误以及解决办法

- 安装 elasticsearch head 插件,提示下载phantomjs-2.1.1失败或解压失败

下载失败:手动下载 phantomjs-2.1.1.tar.bz2文件至/tmp/phantomjs 目录

解压失败:使用 yum 安装 bzip2

- 运行 elasticsearch 报错汇总

错误1:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

     max number of threads [3795] for user [elasticsearch] is too low, increase to at least [4096]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

错误2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/sysctl.conf
vm.max_map_count = 262144
# sysctl -p

切换到 elasticsearch 用户后,显示为“-bash-4.2$”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
使用 root 用户
cp /etc/skel/.bash* /usr/local/elasticsearch/ 

安装elasticsearch-head 插件

编译安装

代码语言:txt
AI代码解释
复制
yum install nodejs -y
cd /usr/local/src
git clone https://github.com/mobz/elasticsearch-head.git
cd /usr/local/src/elasticsearch-head
#在 head 插件目录中执行
npm instal

修改 elasticsearch.yml文件,添加如下内容,解决跨域访问问题:

代码语言:txt
AI代码解释
复制
http.cors.enabled: true
http.cors.allow-origin: "*"

运行 elasticsearch head 插件,监听在9100,提供图形化界面。

代码语言:txt
AI代码解释
复制
#在 elasticsearch head 目录中运行
npm run start

使用 chrome 扩展

使用谷歌浏览器安装 elasgticsearch-head 插件

chrome浏览器 elasticsearch-head 插件
chrome浏览器 elasticsearch-head 插件

安装 Filebeat

下载并安装 filebeat

代码语言:txt
AI代码解释
复制
wget -P /usr/local/src https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-linux-x86_64.tar.gz
tar xf /usr/local/src/filebeat-7.1.1-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/filebeat-7.1.1-linux-x86_64/ /usr/local/filebeat
cp /usr/local/filebeat/filebeat.yml /usr/local/filebeat/filebeat.yml.default #备份原始配置文件

修改 filebeat 配置文件

代码语言:txt
AI代码解释
复制
filebeat.inputs: #输入至 filebeat
- type: log
  enabled: true
  paths:
   - /var/log/filebeat/*.log #自己指定一个日志文件
output.logstash: #filebeat 输出至 logstash
  hosts: ["LOGSTASH_IP:5044"]

如何让 filebeat 从头读取日志文件 已经运行的 filebeat程序会通过filebeat 程序目录中的/usr/local/filebeat/data/registry记录已经读取的日志文件和位置,对于初期调试,首先停止 filebeat 程序,然后删除此目录,再次运行 filebeat 程序,就可以从头读取指定的日志。

启动 filebeat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/local/filebeat/filebeat 

安装 Logstash

下载并解压至相关目录

代码语言:txt
AI代码解释
复制
wget -P /usr/local/src https://artifacts.elastic.co/downloads/logstash/logstash-7.1.1.tar.gz 
tar xf /usr/local/src/logstash-7.1.1.tar.gz  -C /usr/local/
ln -s /usr/local/logstash-7.1.1/ /usr/local/logstash

创建插件和数据目录mkdir /usr/local/logstash/plugin-data

调整 logstash.yml 配置文件

代码语言:txt
AI代码解释
复制
#vim /usr/local/logstash/config/logstash.yml
node.name: logstash
path.data: /usr/local/logstash/plugin-data
config.reload.automatic: true #自动更新配置
config.reload.interval: 10 
http.host: "10.0.12.235" #本机 IP 地址

启动 logstash 需要一个配置文件,用来指定日志的输入、过滤和输出。

代码语言:txt
AI代码解释
复制
# vim /usr/local/logstash/conf/nginx-access.conf
input{
    beats {
        port => "5044"
    }
}

filter {
    grok {
        patterns_dir => ["/usr/local/logstash/pattern"]
        match => {
            "message" => ["%{NGINXACCESS}"]
        }
    }
    geoip {
        source => "client_ip"
    }
    date {
        match => ["Time","dd/MMM/yyyy:HH:mm:ss Z","ISO8601"]
        locale => "cn"
        target => "@timestamp"
    }
}

output {
    elasticsearch {
        hosts => [ "http://10.0.12.236:9200" ]
        index => "logstash-%{type}-%{+YYYY.MM.dd}"
        template_overwrite => true
    }
}

因为过滤的正则表达是太长,所以在单独目录种定义

代码语言:txt
AI代码解释
复制
mkdir /usr/local/logstash/pattern
vim /usr/local/logstash/pattern/nginx
NGINXACCESS %{IPV4:client_ip}\:%{BASE10NUM:client_port}\|%{IPV4:X_Forward}\s*%{HTTPDATE:Time}\s*HTTP/%{BASE10NUM:httpversion}\s*%{WORD:verb}\s*%{NOTSPACE:url}\s*\|%{BASE10NUM:Status}\|\s*%{BASE10NUM:body_bytes_sent}\s*%{BASE10NUM:request_time}\s*%{NOTSPACE:referer}\s*%{QUOTEDSTRING:agent}\s*%{IPV4:upstream}\:%{BASE10NUM:upstream_port}\s*%{BASE10NUM:upstream_response_time}\s*%{BASE10NUM:upstream_status}

调试 grok 正则表达式:https://grokdebug.herokuapp.com/

注意 logstash 在启动时,会读取配置目录中所有以 .conf 结尾的文件,各配置文件不要存在错误,即使没有作用。

启动 logstash

代码语言:txt
AI代码解释
复制
/usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/nginx-assess.conf

安装 Kibana(待更新)

附录

日志文件格式,可以根据 此格式生成多条日志记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
100.155.1.33:46175|35.136.45.21	10/Jun/2019:15:24:31 +0800	HTTP/1.1	GET http://api.XX.XX/xx?XX=	|200|	2460	0.187	"-"	"Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Smart_XX 1.0.0 1.0.0"	172.168.32.1:80	0.187	200

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
scrapy结合selenium进行动态加载页面内容爬取
使用requests进行数据获取的时候一般使用的是respond.text来获取网页源码,然后通过正则表达式提取出需要的内容。
zx钟
2019/07/19
2.4K0
Python最火爬虫框架Scrapy入门与实践,豆瓣电影 Top 250 数据采集
Python爬虫框架Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。
二爷
2020/07/22
2.4K0
Python最火爬虫框架Scrapy入门与实践,豆瓣电影 Top 250 数据采集
从原理到实战,一份详实的 Scrapy 爬虫教程
本文将从原理到实战带领大家入门另一个强大的框架 Scrapy。如果对Scrapy感兴趣的话,不妨跟随本文动手做一遍!
CDA数据分析师
2021/08/05
11.2K0
从原理到实战,一份详实的 Scrapy 爬虫教程
011:运用Scrapy爬取腾讯招聘信息
在tecent_recruit文件夹下找到spiders文件夹, 在此处打开cmd窗口输入命令:scrapy genspider catch_positon tencent.com 创建名为“catch_positon"的爬虫文件
李玺
2021/11/22
6860
011:运用Scrapy爬取腾讯招聘信息
python爬虫–scrapy(再探)
— 图片:xpath解析出图片src的属性值。单独的对图片地址发起请求获取图片二进制类型的数据。
全栈程序员站长
2021/04/21
6600
python爬虫–scrapy(再探)
python爬虫 scrapy爬虫框架的基本使用
在编写爬虫的时候,如果我们使用 requests、aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理、爬取调度等,如果写的多了,的确会比较麻烦。利用现有的爬虫框架,可以提高编写爬虫的效率,而说到 Python 的爬虫框架,Scrapy 当之无愧是最流行最强大的爬虫框架了。
叶庭云
2020/09/17
1.6K0
scrapy框架
scrapy genspider 应用名称 爬取网页的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)
全栈程序员站长
2022/09/07
1.7K0
scrapy框架
Python之scrapy框架
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
鱼找水需要时间
2023/02/16
5170
Python之scrapy框架
Scrapy框架新手入门教程
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
小锋学长生活大爆炸
2020/08/13
7100
Scrapy框架新手入门教程
python scrapy爬虫练习(1) 爬取豆瓣电影top250信息
文章目录 一、分析网页 目标URL:https://movie.douban.com/top250?start=0&filter= 每一页有25条电影信息,总共10页。检查网页可以发现,每条电影的详细
叶庭云
2020/09/17
5.1K0
python  scrapy爬虫练习(1)   爬取豆瓣电影top250信息
爬虫之scrapy框架(一)
Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。
GH
2020/03/19
8520
python爬虫入门:scrapy爬取书籍的一些信息
爬取这个网上的书籍http://www.allitebooks.com/security/ 然后价格等信息在亚马逊上爬取:https://www.amazon.com/s/ref=nb_sb_noss
禹都一只猫olei
2018/05/25
7860
Scrapy 爬虫实例(一)
在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:
HLee
2021/06/10
6050
Scrapy 爬虫实例(一)
python3 网络爬虫 实例1
pip install scrapy pip install pyOpenSSL pip install cryptography pip install CFFI pip install lxml pip install cssselect pip install Twisted
用户5760343
2019/12/13
9030
【0基础学爬虫】爬虫基础之scrapy的使用
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为自动化工具 Selenium 的使用。
K哥爬虫
2024/07/01
1810
【0基础学爬虫】爬虫基础之scrapy的使用
如何用 Python + Scrapy 爬取视频?
今天将带大家简单了解Scrapy爬虫框架,并用一个真实案例来演示代码的编写和爬取过程。
快学Python
2021/08/09
2K0
Python爬虫之scrapy构造并发送请求
在爬虫文件的parse方法中,提取详情页增加之前callback指定的parse_detail函数:
海仔
2020/09/28
1.5K0
Python爬虫之scrapy构造并发送请求
爬虫之scrapy框架
  何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞的代码实现并发的,结构如下:
py3study
2020/01/17
1.3K0
Python爬虫之scrapy框架学习
scrapy安装步骤 pip install wheel 下载twisted : 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted (选择对应的版本) 安装twisted : pip install aiohttp-3.8.1-cp38-cp38-win_amd64.whl pip install pywin32 pip install scrapy 测试终端输入: scrapy 创建工程 终端输入: scrapy startproject fi
shaoshaossm
2022/12/26
7130
(原创)Scrapy爬取美女图片
有半个月没有更新了,最近确实有点忙。先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章。为了表达我的歉意,我给大家来一波福利。。。 今天咱们说的是爬虫框架
七夜安全博客
2018/06/21
1.6K0
相关推荐
scrapy结合selenium进行动态加载页面内容爬取
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 写在前面
  • 安装 Elasticsearch
    • 安装前准备
    • 安装 elasticsearch
    • 最简单的 elasticsearch 配置文件
    • 运行 elasticsearch
    • 可能产生的错误以及解决办法
    • 安装elasticsearch-head 插件
  • 安装 Filebeat
  • 安装 Logstash
  • 安装 Kibana(待更新)
  • 附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档