5分钟快速搭建你的第一个 ELK 日志分析系统

2023-10-30 18:44:40 浏览数 (2)

截止昨天,我们研究监控模块,基本监控就是转外链或者内嵌三方成熟工具的页面,今天就来研究下日志这块。日志也有很多成熟的工具,自己暂时在日志这块还没有造轮子的能力,只会收集顶多使用脚本处理一下。

一般流程就是收集—处理—存储—展示—分析—垃圾桶,之前使用python处理过日志再到redis存储,再到elk进行分析。

接着说平台的开发:

传统模块,涉及监控、批量执行、日志、资产管理、网络、终端等功能。

批量执行这里涉及的工具有saltstack、ansible

监控会涉及工具prometheus、zabbix、grafana

日志涉及elk、loki

网络涉及lstio以及常用排障命令

终端涉及xterm

统模块这里的功能更多的是集成三方应用的一个超链接,这里的功能大框架肯定是没必要重复造轮子,直接用已经成熟的工具,除非是业务特殊要求,才会自己研发。

怎么比较合适的开发,是值得思考的,平台要像kubesphere一样,接入jenkins、elk等功能一样。

我这里就先把大致模样给开发出来,后面再一步一步的细化完善,自己在开发这个项目中更重要的点是自己知识体系的重新梳理和搭建。

前期只能借鉴他人的优秀案例,不断学习,相信后期一定会有自己的创新和见解!

传统模块我目前觉得开发量不是特别大,因为基本都是直接用别人的工具,就是怎么设计个页面跳转的问题。

主要功能就是监控和日志占比较大,顺道就把elk搭建的流程梳理一下:

官网地址:

代码语言:javascript复制
https://www.elastic.co/

安装文档地址:

代码语言:javascript复制
https://www.elastic.co/guide/en/elasticsearch/reference/8.7/targz.html
https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

目前的主流稳定版本是8.7,可以使用docker安装,我们这里直接使用二进制包安装,安装 Elasticsearch 之前,你需要先安装一个较新的版本的 Java,最好jdk11 ,Elasticsearch和Logstash需要Java运行环境。

1. 安装Elasticsearch:Elasticsearch是一个实时分布式搜索和分析引擎,用来存储日志数据。

代码语言:javascript复制
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.1-linux-x86_64.tar.gz
tar -xzf
elasticsearch-8.7.1-linux-x86_64.tar.gz
cd elasticsearch-8.7.1/
./bin/elasticsearch # 启动Elasticsearch
代码语言:javascript复制
[root@test bin]# ./elasticsearch
[2023-04-28T08:56:24,968][ERROR][o.e.b.Elasticsearch ] [test] fatal exception while booting
Elasticsearchjava.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.server@8.7.1/org.elasticsearch.bootstrap.Elasticsearch.initializeNatives(Elasticsearch.java:262)
at
org.elasticsearch.server@8.7.1/org.elasticsearch.bootstrap.Elasticsearch.initPhase2(Elasticsearch.java:161)
at org.elasticsearch.server@8.7.1/org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:66)
See logs for more details.
ERROR: Elasticsearch did not exit normally
- check the logs at /root/rpm/elasticsearch-8.7.1/logs/my-es.log
ERROR: Elasticsearch exited unexpectedly

以root用户运行Elasticsearch时出现了问题。Elasticsearch 不支持以root用户运行,因为这样会产生安全隐患。

解决方法是切换到普通用户运行Elasticsearch。具体步骤如下:

1. 创建elasticsearch用户组和用户:

代码语言:javascript复制
groupadd elasticsearch
useradd elasticsearch -g elasticsearch

2. 修改Elasticsearch目录的所有权限:

代码语言:javascript复制
chown -R elasticsearch:elasticsearch /path/to/elasticsearch

3. 切换到elasticsearch用户:

代码语言:javascript复制
su elasticsearch

4. 以elasticsearch用户启动Elasticsearch:

代码语言:javascript复制
/path/to/elasticsearch/bin/elasticsearch

2. 安装Logstash:Logstash用来收集、解析和过滤日志,发送到Elasticsearch中。

代码语言:javascript复制
wget wget https://artifacts.elastic.co/downloads/logstash/logstash-8.7.1-linux-x86_64.tar.gz
tar -xzf logstash-8.7.1-linux-x86_64.tar.gz
cd logstash-8.7.1/
./bin/logstash -f logstash.conf # 使用logstash.conf配置文件启动Logstash

3. 安装Kibana:Kibana是一个数据可视化平台,用来检索、分析和展示存储在Elasticsearch索引中的数据。

代码语言:javascript复制
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.7.1-linux-x86_64.tar.gz
tar -xzf kibana-8.7.1-linux-x86_64.tar.gz
cd kibana-8.7.1-linux-x86_64/
./bin/kibana # 启动Kibana

4. 在Kibana中配置Elasticsearch、Logstash地址,然后就可以在Kibana的Web UI中使用了。

代码语言:javascript复制
编辑elasticsearch/config/elasticsearch.yml文件:
network.host: 0.0.0.0 # 允许远程访问 
http.port: 9200 # Elasticsearch端口
cluster.name: my-es # 集群名称
编辑logstash/config/logstash.yml
http.host: "0.0.0.0" # 允许远程连接
编辑kibana/config/kibana.yml文件:
server.host: "0.0.0.0" # 允许远程访问 
elasticsearch.hosts:
["http://localhost:9200"] # ES地址

安装完成后访问kibana页面:

默认用户名:elastic

密码:在启动elaticsearch的时候在哪个界面有初始密码

在devtool中输入

代码语言:javascript复制
GET _cluster/health

返回数据表示安装成功啦。

到这就算初步搭建完成了。

0 人点赞