草履虫也能看懂的ELK搭建流程

环境需要

  1. Elasticsearch需要JAVA环境,至少是JDK1.8
  2. elasticsearch 不允许root用户使用,需要新增个elk用户
  3. 如果觉得官网下载太慢,可以使用这个
    https://pan.baidu.com/s/1LndFYnnZQwFx2-MlDZXdaQ
    提取码:7qnk

Elasticsearch

下载及安装

  1. 如果网络状况好,可以考虑在线安装,比较省事
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 #校验
#校验的正常输出为 elasticsearch-{version}-linux-x86_64.tar.gz: OK
tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
cd elasticsearch-7.6.2/
  1. 或者下载离线包,然后手动上传到服务器去解压。Elasticsearch官网下载地址
    找到 Install Elasticsearch from archive on Linux or MacOS ,点进去就自动下载了。
  2. 或者参考这篇文章的安装方式 快速搭建ELK日志分析系统

注意!我这里使用的版本是7.6.2,ELK三个软件的版本需要保持一致才可以。

配置文件

cluster.name: demo
node.name: node-1
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]

注意!配置文件中的path.logs和path.data这俩文件夹都要把权限赋给elk用户!不然运行时就会报错。

  chown -R elk.elk 文件夹路径

运行测试

在elasticsearch的根目录

#运行elasticsearch:
bin/elasticsearch &

#检查端口
netstat -antp |grep 9200

#测试接口访问
curl http://127.0.0.1:9200/
#返回结果如下则表示运行成功:
{
  "name" : "node-1",
  "cluster_name" : "demo",
  "cluster_uuid" : "PLIR2GguShK5RtDlE7xFeQ",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

ElasticsearchAPI

Elasticsearch提供了API来方便用户使用,具体可以参考这篇 Elasticsearch 快速开始
下面是两个常用的API,用来查看logstash是否成功将消息传入了Elasticsearch

1. 查看全部索引
curl -X GET "localhost:9200/_cat/indices?v"

2. 查看某个索引中的所有文档
curl -X GET "http://localhost:9200/索引名称/_search?q=*&pretty"

插件(可选项)

安装elasticsearch-head插件

  1. 使用docker安装,省时省力
    docker run -p 9100:9100 mobz/elasticsearch-head:5
  1. 或使用git安装
    yum install -y npm
    git clone git://github.com/mobz/elasticsearch-head.git
    cd elasticsearch-head
    npm install
    npm run start
  1. 测试访问
  netstat -antp |grep 9100 #查看端口运行情况

在浏览器上访问 http://IP:9100/ 查看是否成功启动

Logstash

下载

官方网站中提供了tar.gz安装包和在线下载,自行选择。 官方下载地址
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b7a97d31-ee48-4919-b1f1-85749e104e67

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:31bb4ad0-7479-466e-a163-f25c1cce9ac8

测试

  bin/logstash -e 'input { stdin { } } output { stdout {} }'

成功运行的话,应当是你输入什么,他就给你返回什么,而且是带有time和host的格式化输出

配置

新建个配置文件,比如elk.conf,如下输入并保存

  input { stdin { } }
  output {
    elasticsearch { hosts => ["elasticsearch服务的IP:9200"] }
    stdout { codec => rubydebug }
  }

运行

通过刚才新建的配置文件来启动logstash

  logstash -f ./elk.conf

这时,你输入进去的信息,就会被发往两个地方,一个是发给elasticsearch,另一个是由标准输出显示出去。
最好也是用elk这个用户来运行,报错的话注意看是否是没有写权限。我用elk用户运行Elasticsearch之后,再用root用户运行Logstash时,发现无法查询到输入的信息。

Kibana

下载

官方下载地址

配置

解压之后,开始配置Logstash

编辑kibana的配置文件
vim kibana/config/kibana.yml

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:3e6d1f83-36e7-483f-84ca-d96528c7ce6a<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2b8b9c6b-676e-4ac4-a7ca-9c1e22fcc5d1</font>*</details>
server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://192.168.1.202:9200"

kibana.index: ".kibana"
#设置为中文
i18n.locale: "zh-CN"

运行

#这里仍是使用elk用户运行
bin/kibana

运行成功后,kibana会自动去按照配置中的路径去连接Elasticsearch,如果没连接上,他会有提示并且一直重复尝试连接。

测试与使用

在浏览器中输入地址:http://IP:5601就可以啦!不过第一次进入可能会很慢。
然后就是去连接Elasticsearch中的Logstash索引。

草履虫也能看懂的ELK搭建流程
草履虫也能看懂的ELK搭建流程
然后左侧菜单栏的第二个按钮,进入Discover页面,选择logstash索引,此时可能会发现,哎?怎么没数据,那就请注意你的右上角时间筛选是否默认为最近十五分钟了,更改时间筛选条件后再次查询,就可以顺利查到你刚才在logstash里面传进去的消息啦!
草履虫也能看懂的ELK搭建流程

至此,基础的搭建工作告一段落。当我看到我在logstash命令行中传入的那些数据真的可以在Kibana的页面中显示出来的时候,真的是满满的成就感,就像搭积木一样的把这三个工具拼接到了一起,很开心。
但是之后才是真正学习的开始,下一步是让logstash从日志文件中实时读取信息传入Elasticsearch 中,还要去学习如何更好的使用这三个软件,任重道远。

报错解决

max virtual memory areas vm.max_map_count is too low

参考此处 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

elasticsearch进程莫名其妙关闭了?

内存占用过大,系统会oom kill掉占用最大内存的进程(没办法,测试用的云服务器是最低的配置)。
关掉oom kill(不推荐在生产环境使用):

 vm.panic_on_oom = 1 //1表示关闭,默认为0表示开启OOM
  sysctl -p

最后

参考文章:

附 有钱人的做法

腾讯云 自助搭建 ELK 日志服务

Original: https://www.cnblogs.com/zhangdali/p/15671538.html
Author: 真正的大英雄
Title: 草履虫也能看懂的ELK搭建流程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/563837/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 超长时间序列数据可视化的6个技巧

    时间序列是由表示时间的x轴和表示数据值的y轴组成,使用折线图在显示数据随时间推移的进展时很常见。它在提取诸如趋势和季节性影响等信息方面有一些好处。 但是在处理超长的时间轴时有一个问…

    Python 2023年8月7日
    075
  • 10行代码实现一个值班提醒应用

    10行代码实现一个值班提醒应用 工作当中,经常遇到团队成员需要值班排班及提醒的应用场景。虽然,有一些现成的APP可以用,但是对程序员来讲使用起来不免有些繁琐,而且可能不太灵活。 那…

    Python 2023年11月9日
    040
  • 使用js将html导出到word(包含样式及图片)

    工作中存在需要将页面内容导出到word,虽然可以使用后端代码实现,但是过程过于繁琐,本文章将详细讲解如何使用js将html内容快速导出到word。 示例 页面样式 导出结果 ; 步…

    Python 2023年11月8日
    063
  • python 人体建模_Matplotlib学习—可视化人体姿态

    1.简介 Matplotlib是一个Python 2D绘图库,可生成图表、直方图、散点图、谱图、条形图等。pyplot提供了类似MALAB的界面,它提供了matplotlib的&#…

    Python 2023年9月4日
    049
  • 【Redis】无中心化集群

    最近染上了新冠,整整在家休息了一周,然后就遇上某些很c蛋的事,更加坚定了我要抓紧学习跳槽的念头,再苟一苟,小不忍则乱大谋~ 1、什么是redis集群 Redis 集群实现了对Red…

    Python 2023年9月30日
    034
  • 【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~(附完整源码)

    前言 嘿!我是栗子同学,欢迎大家阅读这篇 《坦克大战双人版游戏编程》。 我相信这个游戏的话对于大家可能会比较难,刚开始学习的话这个代码就直接发给大家玩一玩的 哈,但是大家可以看看这…

    Python 2023年9月20日
    053
  • 文档字符串

    5.5 文档字符串 开发者在编写函数或模块时不光要自己能看懂,在和他人合作共同开发或者被他人调用时也需要他人也能看懂。这个时候就可以为自己编写的函数、模块或者类添加相应的文档字符串…

    Python 2023年10月29日
    041
  • juypter 不省略_常用pandas清洗数据命令

    pandas清洗数据常用命令 安装jupyter notebook 启动 jupyter 可以在里面编写python代码 1、 加载数据df = pd.DataFrame(pd.r…

    Python 2023年8月8日
    059
  • 基于windows系统IIS部署Django项目

    本文章参考书籍:钱彬老师《python web开发从入门到实践》 采用IIS服务器部署相比django提供的开发者服务器具有更好的并发访问能力,性能更加稳定。 一、Python W…

    Python 2023年8月4日
    068
  • [Android开发学iOS系列] Auto Layout

    [Android开发学iOS系列] Auto Layout 内容: 介绍什么是Auto Layout. 基本使用方法 在代码中写约束的方法 Auto Layout的原理 尺寸和优先…

    Python 2023年10月16日
    054
  • python fillna函数_从Excel到Python:最常用的36个Pandas函数

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入、数据清洗、预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作。 生成数据表 常见的…

    Python 2023年8月19日
    050
  • Python:对程序做性能分析及计时统计

    1.对整个程序的性能分析 如果只是想简单地对整个程序做计算统计,通常使用UNIX下的 time命令就足够了。 (base) &#x279C; Learn-Python ti…

    Python 2023年10月30日
    032
  • 【Python】绘图和可视化

    🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎📝个人主页-Sonhhxg_柒的博客_CSDN博客📃🎁欢迎各位→点赞👍 + 收藏⭐️ +…

    Python 2023年8月31日
    077
  • Python读取dll库报错:[WinError 126]找不到指定的模块

    问题描述 所做的项目需要调用C编译好的dll动态链接库,一般来说,直接运行 import ctypes dll_read = ctypes.cdll.LoadLibrary(‘./…

    Python 2023年8月2日
    095
  • python-新闻文本分类详细案例-(数据集见文末链接)

    文章目录 分析思路 所用数据集 一、导入相关包 二、数据分析 * 1.读取数据 2. jieba分词并去除停用词 3. TF-IDF 4. 网格搜索寻最优模型及最优参数 5. 预测…

    Python 2023年8月1日
    071
  • pytest源码_Pytest的魂Pluggy(初探篇)

    Pluggy是啥?从官网的解释给出,Pluggy让用户能够通过为host程序安装插件来扩展或修改该程序的行为。而且它是pytest插件管理和钩子函数调用的核心,pytest本身就是…

    Python 2023年9月13日
    044
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球