【星海随笔】云解决方案学习日志篇(一) ELK,kibana,Logstash安装

心路历程

本来想最近再研究研究DPDK的。但是自己做一个东西很多时候没有回报。因为自己的低学历问题,类似工作的面试都没有。所以很多东西学了很快就忘了,没有地方可以用。

今天看到了一个大佬,除了发型外,很多想法还是很共鸣的。
Shay Banon

决定开始跟着大佬的文章研究一段时间。这样梯度的学习中,自己就算没有一线的经验也可以学到很多一线的东西。

大佬是Elastic的创始人,决定先从ELK开始研究。

例如Elastic与Amazon, Elastic 和 Grafana Labs ,Elasticsearch、Kibana 及 X-Pack 、Kafka等。。。

在这当中,Kafka的作用是明显的,作为一个中间件,一个缓冲,它起到了提高吞吐,隔离峰值影响,缓存日志数据,快速落盘,同时通过producer/consumer模式,让Logstash能够横向拓展的作用,还能够用作数据的多路分发。

大多数时候,我们看到的实际架构,按数据流转顺序排列,应该是BKLEK架构。

Filebeat+kfaka+ELK

Elastic 社区

参考文档

https://blog.csdn.net/weixin_44991162/article/details/90257265


前置 Kibana 安装

Elasticsearch和Kibana之间的关系是紧密的,它们共同构成了Elastic Stack,也被称为ELK Stack

Elasticsearch是一个开源的分布式搜索和分析引擎

负责存储和搜索数据。

而Kibana是一个数据可视化工具

用于可视化和分析这些数据。

它们之间通过RESTful API 进行通信,使得集成非常简单。

Kibana提供了多种可视化工具,如线图、柱状图、饼图等,以及各种数据分析功能,如日志分析、监控、搜索等,可以帮助用户更好地理解和分析数据。

Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。

STEP1

首先要关闭Iptables 和 Selinux

Logstash 依赖于JAVA

Oracle 修复了 Java 超过一半的问题。所以我们到Oracle 官方网站上下载 java 的JDK

https://www.oracle.com/java/technologies/downloads/#java11
tar -zxf jdk-11.0.18_linux-x64_bin.tar.gz -C /usr/local/

配置环境变量
bash 复制代码
cat >> /etc/profile << "EOF"
export JAVA_HOME=/usr/local/jdk-11.0.18
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
EOF
#加载环境变量
source /etc/profile
#验证版本
java -version

Kibana 安装

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.16.1-linux-x86_64.tar.gz

bash 复制代码
tar -zxf kibana-7.16.1-linux-x86_64.tar.gz -C /usr/local/
mv /usr/local/kibana-7.16.1-linux-x86_64 /usr/local/kibana-7.16.1 
ls /usr/local/kibana-7.16.

环境变量配置:

bash 复制代码
cat >> /etc/profile << "EOF"
export PATH=$PATH:/usr/local/kibana-7.16.1/bin
EOF
source /etc/profile

修改Kibana配置kibana.yml

bash 复制代码
vim /usr/local/kibana-7.16.1/config/kibana.yml
#简单使用,只修改下面两个选项即可
server.port: 5601
server.host: "0.0.0.0"

创建Kibana 用户、授予Kibana 权限,并启动服务

bash 复制代码
#添加kibana用户,禁止ssh登录
useradd -s /sbin/nologin kibana
 
#授权
chown -R kibana:kibana /usr/local/kibana-7.16.1/
 
#切换kibana 用户,验证版本
su - kibana -s /bin/bash
kibana --version
 
#启动服务
nohup kibana >/tmp/kibana.log 2>&1 &
#查看端口是否监听
netstat -lntp |grep 5601
#服务没问题后退出当前用户
exit

Elasticsearch 安装

ElasticSearch是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。

Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。

Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.1-linux-x86_64.tar.gz

bash 复制代码
tar -zxf elasticsearch-7.16.1-linux-x86_64.tar.gz -C /usr/local/
ls /usr/local/elasticsearch-7.16.1/
bash 复制代码
cat >> /etc/profile << "EOF"
export PATH=$PATH:/usr/local/elasticsearch-7.16.1/bin
EOF
source /etc/profile
修改 Elasticsearch配置文件
bash 复制代码
vim /usr/local/elasticsearch-7.16.1/config/elasticsearch.yml
#只需修改添加下面几个选项即可
#可自定义数据存储路径(注意授权)
path.data: data
#可自定义日志存在路径(注意授权)
path.logs: logs
#监听的ip根据自己的情况修改,我的服务都部署在一台机器,所以监听127.0.0.1
network.host: 127.0.0.1
http.port: 9200
#开启密码认证
xpack.security.enabled: true
#集群模式,single-node 是单节点
discovery.type: single-node
修改ES JVM的内存限制
bash 复制代码
vim /usr/local/elasticsearch-7.16.1/config/jvm.options
#建议调至当前可用内存的一半
-Xms2g
-Xmx2g

创建elastic 用户、授予elastic 权限,并启动服务

bash 复制代码
#添加elastic用户,禁止ssh登录
useradd -s /sbin/nologin elastic
 
#授权
chown -R elastic:elastic /usr/local/elasticsearch-7.16.1/
 
#切换 elastic 用户,验证版本
su - elastic -s /bin/bash
elasticsearch --version
 
#启动服务
elasticsearch -d
#查看端口是否监听
netstat -lntp |grep 9200
#服务没问题后退出当前用户
exit

Elasticsearch 设置密码

bash 复制代码
/usr/local/elasticsearch-7.16.1/bin/elasticsearch-setup-passwords interactive
输入:y
输入自定义密码:1234567

验证密码

bash 复制代码
curl -u elastic:elk@2023 127.0.0.1:9200
修改 Kibana 配置,添加 es 密码认证
bash 复制代码
vim /usr/local/kibana-7.16.1/config/kibana.yml 
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.username: "elstic"
elasticsearch.password: "1234567"

重启 Kibana

bash 复制代码
su - kibana -s /bin/bash
#停止服务重新启动
ps -ef |grep -w kibana-7.16.1 |grep -v grep | awk '{print $2}' |xargs kill
nohup kibana >/tmp/kibana.log 2>&1 &
#查看端口是否监听
netstat -lntp |grep 5601
#观察日志有无错误输出
tailf /tmp/kibana.log
#服务没问题后退出当前用户
exit

访问 Kibana :5601


Logstash 安装

Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。
Filebeat是一个轻量级的日志收集器,主要用于从文件中读取日志行并将其传输到其他地方,如Elasticsearch或Logstash。它适合部署在收集的最前端,用于日志收集和传输。

Logstash是一个功能强大的数据处理管道,可以从多种来源接收数据,并进行复杂的转换和过滤,然后将数据发送到许多不同的目标。它适用于大规模的日志处理任务,提供了更多的过滤插件和处理选项,可以进行更复杂的数据转换和处理操作。

由于其轻量级的设计,Filebeat占用的系统资源较少,适用于在较小的环境中部署。

而Logstash由于其更强大的功能和灵活性,需要更多的系统资源来运行,适用于大规模的日志处理任务。
logstash 超大规模日志时,日志先存到kafka,再通过logstash同步到elasticsearch

对于日志规模不大时,不需要用到logstash。

由于Elasticsearch具有解析的能力(如Logstash过滤器)--- Ingest,这意味着可以将数据直接用Filebeat推送到Elasticsearch,并让Elasticsearch既做解析的事情,又做存储的事情

下载

bash 复制代码
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.16.1-linux-x86_64.tar.gz

加压安装包

bash 复制代码
tar -zxf logstash-7.16.1-linux-x86_64.tar.gz -C /usr/local/
ll /usr/local/logstash-7.16.1/

设置环境变量

bash 复制代码
cat >> /etc/profile << "EOF"
export PATH=$PATH:/usr/local/logstash-7.16.1/bin
EOF
source /etc/profile

Logstash JVM的内存限制

bash 复制代码
vim /usr/local/logstash-7.16.1/config/jvm.options
#建议调至当前可用内存的一半
-Xms1g
-Xmx1g

查看版本

bash 复制代码
[root@VM-5-163-centos ~]# logstash --version
Using bundled JDK: /usr/local/logstash-7.16.1/jdk
logstash 7.16.1

Logstash 不强制使用普通用户启动,如需普通用户启动,可以参考前面创建用户步骤


测试采集 nginx 日志
创建 logstash config配置文件
bash 复制代码
cat > /usr/local/logstash-7.16.1/config/logstash.conf <<  "EOF"
input {
  file {
    path => "/usr/local/nginx/logs/access.log"
  }
}
filter {
    grok {
        match => {
            "message" => '(?<remote_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - - \[(?<timestamp>\S+ \+\d+)\] "(?<method>[A-Z]+) (?<request>\S+) HTTP/\d.\d" (?<status>\d+) (?<bytes>\d+) "[^"]+" "(?<agent>[^"]+)"'
        }
        remove_field => ["message","@version","path"]
    }
    date {
        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
        target => "@timestamp"
    }
}
output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    user => "elastic"
    password => "elk@2023"
    index => "logstash-%{+YYYY.MM.dd}"
  }
}
EOF

启动logstash

bash 复制代码
logstash -f /usr/local/logstash-7.16.1/config/logstash.conf 

Kibana 查看ES 是否已经有Logstash 的 index

添加索引





相关推荐
怀旧6661 小时前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
infiniteWei2 小时前
【Lucene】原理学习路线
学习·搜索引擎·全文检索·lucene
follycat2 小时前
[极客大挑战 2019]PHP 1
开发语言·学习·网络安全·php
并不会6 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
龙鸣丿6 小时前
Linux基础学习笔记
linux·笔记·学习
Nu11PointerException8 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
@小博的博客12 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生12 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步13 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
love_and_hope13 小时前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习