ELKstack入门

ELKstack入门

ELKstack简介

img

为什么使用elk

专门做日志收集的集群

ELK是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体

为什么要做日志收集

提供一个web页面

elk版本支持

5的版本可以用redis

6.7的版本可以用卡夫卡

E

Elasticsearch一个数据库

L

Logstash一个重量级的日志解析

K

kibana一个数据可视化的展现

什么是Elasticsearch?

  • 1.处理方式灵活: elasticsearch是实时全文索引,具有强大的搜索功能
  • 2.配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。
  • 3.检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
  • 4.集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
  • 5.前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单
1.就是一个数据库 数据库里面可以快速的搜索
2.存储日志
3.数据库是一个高度可拓展的开源 全文搜索 分析引擎
4.可以实现数据的全文搜索 支持分布式可实现高可用
5.提供API接口 可以处理大规模的日志数据 nginx tomcat 系统日志等功能

什么是Logstash?

  • 收集日志 转发日志
  • 可以通过插件来实现日志的收集和转发 支持日志过滤 支持普通log 自定义json格式的日志解析

什么是Kibana?

  • 主要通过接口调用ES的日志的数据 并进行前端数据可视化的展示
  • es和mysql一样 客户端连进去 建库 删库等等
  • 里面的数据都是一些索引,都是通过接口去操作
  • 没有客户端去连接他 接口就会创建数据 接口删除数据

环境准备

主机名 WanIP LanIP 角色 应用
客户01 10.0.0.102 172.16.1.102 elk日志存储数据库 JDK,elasticsearch
客户02 10.0.0.103 172.161.103 elk日志存储数据库 JDK,elasticsearch
# 安装JDK
yum install -y java

# 更换es官方源
vim /etc/yum.repos.d/es.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# 下载es
yum install -y elasticsearch

# 准备配置文件
vim /etc/elasticsearch/elasticsearch.yml 
17 cluster.name: elkstack
23 node.name: es01
33 path.data: /data/es/data
37 path.logs: /data/es/logs
43 bootstrap.memory_lock: true 如果服务起不来可以选择false
55 network.host: 0.0.0.0
59 http.port: 9200
68 discovery.zen.ping.unicast.hosts: ["10.0.0.102", "10.0.0.103"]

# 检查配置信息
[root@kehu01 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: elkstack
node.name: es01
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.102", "10.0.0.103"]

# 检查配置信息
[root@kehu02 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: elkstack
node.name: es02
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.102", "10.0.0.103"]

# 创建数据和日志存放目录
[root@kehu01 ~]# mkdir -p /data/es/data
[root@kehu01 ~]# mkdir -p /data/es/logs

[root@kehu02 ~]# mkdir -p /data/es/data
[root@kehu02 ~]# mkdir -p /data/es/logs

# 修改启动脚本
vim /usr/lib/systemd/system/elasticsearch.service 
# 如果有这行配置就去掉此行注释 (修改内存限制)
LimitMEMLOCK=infinity
# 如果出现这个 就不需要去管
E486: Pattern not found: LimitMEMLOCK=infinity

# 授权
chown -R elasticsearch.elasticsearch /data

# 优化文件描述符(允许所有用户在系统上打开更多的文件描述符,并将内存锁定设置为不限制。)
vim /etc/security/limits.conf
#在最后添加以下行
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072

# 设置JVM最大最小内存限制
vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

# 启动es
systemctl start elasticsearch

# 浏览器访问
10.0.0.102:9200
10.0.0.103:9200

# 如果启动不了
vim /etc/elasticsearch/elasticsearch.yml
43 bootstrap.memory_lock: false
44 bootstrap.system_call_filter: false (添加到43行下面)

img

img

安装elasticsearch插件

插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对elasticsearch集群的状态监控与管理配置等功能,我们现在要安装的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能

安装Elasticsearch的head插件时,要安装npm,npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。

在Elasticsearch 5.x版本以后不再支持直接安装head插件,而是需要通过启动一个服务方式。

Github地址:https://github.com/mobz/elasticsearch-head

# 安装npm
yum install -y npm
npm 前端语法        //node
head插件是一个前端的代码

# 安装git
yum install -y git

# 安装bzip2
yum install -y bzip2

# 下载head插件
[root@kehu01 ~]# git clone https://github.com/mobz/elasticsearch-head.git
Cloning into 'elasticsearch-head'...
remote: Enumerating objects: 4377, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 4377 (delta 12), reused 34 (delta 12), pack-reused 4337
Receiving objects: 100% (4377/4377), 2.54 MiB | 2.19 MiB/s, done.
Resolving deltas: 100% (2429/2429), done.

# 下载node js
wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz
# 或下拉node文件

# 解压 node js
[root@kehu01 ~]# tar xf node-v16.13.0-linux-x64.tar.xz
[root@kehu01 ~]# mkdir /app
[root@kehu01 ~]# mv node-v16.13.0-linux-x64 /app/

# 做软链接
ln -s /app/node-v16.13.0-linux-x64/ /app/node

# 添加环境变量
vim /etc/profile.d/node.sh
expr PATH="/app/node/bin:$PATH"

# 生效配置文件
[root@kehu01 app]# source /etc/profile
PATH=/app/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# 查看版本
[root@kehu01 app]# npm --version
8.19.2

# 进入head插件目录
cd elasticsearch-head/

# 换成taobao33源
npm config set registry=https://registry.npm.taobao.org

# 查看当前包下的镜像源
[root@kehu01 elasticsearch-head]# npm config get registry
https://registry.npm.taobao.org/

# 安装换源命令
[root@kehu01 elasticsearch-head]# npm install -g nrm open@8.4.2 --save

added 17 packages in 1s
npm notice 
npm notice New major version of npm available! 8.19.2 -> 9.8.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.8.0
npm notice Run npm install -g npm@9.8.0 to update!
npm notice 

# 查看可用源
[root@kehu01 elasticsearch-head]# nrm ls
  npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
  tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/

# 切换到taobao源
[root@kehu01 elasticsearch-head]# nrm use taobao
 SUCCESS  The registry has been changed to 'taobao'.

# 下拉phantomjs安装包
# 保存phantomjs-2.1.1-linux-x86_64.tar.bz2 到/root
mv phantomjs-2.1.1-linux-x86_64.tar.bz2 /root/

# 解压phantomjs-2.1.1-linux-x86_64.tar.bz2
tar -xf phantomjs-2.1.1-linux-x86_64.tar.bz2

# 进入目录
cd phantomjs-2.1.1-linux-x86_64
cp bin/phantomjs /usr/local/bin/

# 回到elasticsearch-head
cd elasticsearch-head

# 安装grunt(构筑前端代码)
npm install grunt -save-no-fund

# 开启跨域访问支持
vim /etc/elasticsearch/elasticsearch.yml
在最底下输入
http.cors.enabled: true
http.cors.allow-origin: "*"

# 启动head插件
[root@kehu01 phantomjs-2.1.1-linux-x86_64]# npm run start &
[1] 18261
[root@kehu01 phantomjs-2.1.1-linux-x86_64]# 
> elasticsearch-head@0.0.0 start
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

# 检查插件
[root@kehu01 ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN
18175/grunt

# 重启elasticsearch
systemctl restart elasticsearch.service

# 访问浏览器
10.0.0.102:9100

img

ES接口API

接口就是后端开发,暴露出来代码中带有某些功能的url
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇