【星海随笔】云解决方案学习日志篇(一) 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

添加索引





相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习