kibana源码编译

一、安装nodejs16.14.2及yarn

(一)nodejs

1、下载

https://cdn.npmmirror.com/binaries/node/v16.14.2/node-v16.14.2-linux-x64.tar.gz

2、解压

tar -zxf node-v16.14.2-linux-x64.tar.gz -C /app
cd /app
mv node-v16.14.2-linux-x64 node

3、配置环境变量

vim /etc/profile

在最后添加如下内容:

export NODE_HOME=/app/node
#export JAVA_HOME=/app/jdk

export PATH=$NODE_HOME/bin:$PATH
#export PATH=$NODE_HOME/bin:$JAVA_HOME/bin:$PATH

使环境变量生效:

source /etc/profile

4、验证

[root@localhost kibana]# node -v
v16.14.2
[root@localhost kibana]# npm -v
8.5.0
[root@localhost kibana]# gem -v
3.0.9

5、配置国内源

# 设置淘宝源
npm config set registry https://registry.npmmirror.com
npm config set puppeteer_download_host=https://registry.npmmirror.com
# 取消ssl证书验证
npm config set strict-ssl false

(二)yarn

1、安装

npm install -g yarn

2、验证

[root@localhost kibana]# yarn -v
1.22.21

3、配置国内源

# 设置淘宝源
yarn config set registry https://registry.npmmirror.com
# 设置浏览器驱动下载地址
yarn config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"

二、安装ruby

安装ruby的话,尽量安装2.4以上的版本,因为后面安装fpm的时候对此有要求。

#1. 离线安装 rvm:
# rvm 是用来管理 ruby 的,而 ruby 的其中一个“程序”叫 rubygems,也就是我们用它装 fpm 的,手动装各种库用 gem。
[root@nginx01 ~]# curl -sSL https://github.com/rvm/rvm/tarball/stable -o rvm-stable.tar.gz
 
#2. 解压 rvm 包:
[root@nginx01 ~]# tar -xzvf rvm-stable.tar.gz
 
#3. 进入解压目录,安装 rvm:
[root@nginx01 ~]# cd rvm-rvm-6bfc921/
[root@nginx01 rvm-rvm-6bfc921]# ./install --auto-dotfiles
 
#4. 重新加载 rvm:
[root@nginx01 rvm-rvm-6bfc921]# source /usr/local/rvm/scripts/rvm
 
#5. 查看 rvm 可安装版本:
[root@nginx01 rvm-rvm-6bfc921]# rvm list known
 
#6. 选择安装 ruby 2.6.3:
# 下载安装过程比较慢,请耐心等待
[root@nginx01 rvm-rvm-6bfc921]# rvm install 2.6.3
 
#7. 设置默认使用 ruby 版本:
[root@nginx01 rvm-rvm-6bfc921]# rvm use 2.6.3 --default
Using /usr/local/rvm/gems/ruby-2.6.3
[root@nginx01 rvm-rvm-6bfc921]# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

三、安装其他依赖包

rpm-build、fpm主要是打包成rpm\deb等类型的包使用的

yum install rpm-build gcc-c++ make git
gem install fpm -v 1.5.0

四、安装上网工具

科学上网工具,我选择的是redsock,其他的不太好用

  1. 安装libevent
yum install libevent libevent-devel -y

2、安装配置redsocks

git clone https://github.com/darkk/redsocks.git
cd redsocks/
make
echo 'base {
    log_debug = on;
    log_info = on;
    log = "file:/tmp/reddi.log";
    daemon = on;
    redirector = iptables;
}
redsocks {
    local_ip = 127.0.0.1;
    local_port = 2080;
    ip = 192.168.2.3;
    port = 7890;
    type = socks5;
}' > redsocks.conf

注意: 替换ip = 192.168.2.3;port = 7890;ip为你的宿主机的Window系统的IP,port为Windows的科学上网工具的端口,我的上网工具配置如下:

在这里插入图片描述

3、安装配置iptables

yum install -y iptables iptables-services

echo '#!/bin/bash
# Create new chain
iptables -t nat -N REDSOCKS
# Ignore LANs and some other reserved addresses.
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
#iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Anything else should be redirected to port 2080
-A REDSOCKS -d proxy_server_ip -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 2080
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS
iptables -t nat -A OUTPUT -p tcp --dport 8503 -j REDSOCKS' > iptables-proxy-start.sh

echo 'iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
killall redsocks' > iptables-proxy-stop.sh

8503为测试的出口地址,比如代收的110,143端口。

4、启动

systemctl start iptables
./redsocks -c redsocks.conf
sh iptables-proxy-start.sh

五、编译kibana

1、拉取代码,代码很大,大概6~10G

git clone -b v7.17.5 https://github.com/elastic/kibana.git

2、开始下载依赖并编译

cd kibana
yarn kbn bootstrap
# 执行上面这一步的时候会出现各种报错,诸如下载chrome_driver失败、安装geco,可以手动安装这些报错的包,如下:
# npm install -g chromedriver
# npm install -g geckodriver
npx browserslist@latest --update-db

3、开始打包

打包之前先了解一下打包命令的可选参数:

[root@localhost kibana]# yarn build --help
yarn run v1.22.21
$ node scripts/build --all-platforms --help
usage: node scripts/build

build the Kibana distributable

options:
  --skip-archives                     Don't produce tar/zip archives #--跳过存档不生成tar/zip存档
  --skip-os-packages                  Don't produce rpm/deb/docker packages # --跳过操作系统包不要生成rpm/deb/docker包
  --all-platforms                     Produce archives for all platforms, not just this one # --所有平台为所有平台生成存档,而不仅仅是这一个
  --rpm                               Only build the rpm packages #--rpm仅构建rpm包
  --deb                               Only build the deb packages #--deb只构建deb包
  --docker-images                     Only build the Docker images #--docker镜像仅构建docker镜像
  --docker-context-use-local-artifact Use a local artifact when building the Docker context # --docker上下文使用本地工件构建docker上下文时使用本地工件
  --docker-cross-compile              Produce arm64 and amd64 Docker images #--docker交叉编译生成arm64和amd64 docker镜像
  --docker-contexts                   Only build the Docker build contexts #--docker上下文仅构建docker构建上下文
  --skip-docker-ubi                   Don't build the docker ubi image #--跳过docker ubi不要构建docker ubiimage
  --skip-docker-ubuntu                Don't build the docker ubuntu image #--跳过docker ubuntu不要构建docker ubntu镜像
  --release                           Produce a release-ready distributable #--release生成可发布的版本
  --version-qualifier                 Suffix version with a qualifier  #--版本限定符用限定符后缀版本
  --skip-node-download                Reuse existing downloads of node.js #--跳过nodejs下载,重用node.js的现有下载
  --verbose,-v                        Turn on verbose logging #--verbose,-v打开详细日志记录
  --no-debug                          Turn off debug logging #--无调试关闭调试日志记录

经过我的多次尝试,我们只需要打包成”生成可发布的版本“即可,也就是ELK官网上可下载的版本,其他版本直接跳过,命令如下:

[root@localhost kibana]# yarn build --release --skip-os-packages --skip-docker-ubi --skip-docker-ubuntu 
yarn run v1.22.21
$ node scripts/build --all-platforms --release --skip-os-packages --skip-docker-ubi --skip-docker-ubuntu
 info [  global  ] Verifying environment meets requirements
   │ succ Node.js version verified
   │ succ ✓ 0 sec

 info [  global  ] Cleaning artifacts from previous builds
   │ debg Deleting patterns: ['/usr/local/src/kibana/build',
   │        '/usr/local/src/kibana/target',
   │        '/usr/local/src/kibana/.node_binaries']
   │ debg Deleted 3 files/directories
   │ succ ✓ 9 sec

 info [  global  ] Downloading node.js builds for all platforms
   │ debg Downloading shasum values for node version 16.14.2 from https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v16.14.2/SHASUMS256.txt

......中间过程省略......
......中间过程省略......
......中间过程省略......

info [  kibana  ] Creating the archives for each platform
   │ info archiving /usr/local/src/kibana/build/default/kibana-7.17.5-linux-x86_64 to /usr/local/src/kibana/target/kibana-7.17.5-linux-x86_64.tar.gz
   │ info archiving /usr/local/src/kibana/build/default/kibana-7.17.5-linux-aarch64 to /usr/local/src/kibana/target/kibana-7.17.5-linux-aarch64.tar.gz
   │ info archiving /usr/local/src/kibana/build/default/kibana-7.17.5-darwin-x86_64 to /usr/local/src/kibana/target/kibana-7.17.5-darwin-x86_64.tar.gz
   │ info archiving /usr/local/src/kibana/build/default/kibana-7.17.5-darwin-aarch64 to /usr/local/src/kibana/target/kibana-7.17.5-darwin-aarch64.tar.gz
   │ info archiving /usr/local/src/kibana/build/default/kibana-7.17.5-windows-x86_64 to /usr/local/src/kibana/target/kibana-7.17.5-windows-x86_64.zip
   │ debg archive metrics: [{ group: 'distributable size', id: 'tar', value: 263798754 },
   │        { group: 'distributable file count', id: 'default', value: 37747 },
   │        { group: 'distributable size', id: 'tar', value: 277017617 },
   │        { group: 'distributable file count', id: 'default', value: 37747 },
   │        { group: 'distributable size', id: 'tar', value: 256355436 },
   │        { group: 'distributable file count', id: 'default', value: 37749 },
   │        { group: 'distributable size', id: 'tar', value: 192526999 },
   │        { group: 'distributable file count', id: 'default', value: 37745 },
   │        { group: 'distributable size', id: 'zip', value: 375647041 },
   │        { group: 'distributable file count', id: 'default', value: 37326 }]
   │ succ ✓ 4 min 26 sec

 info [  kibana  ] Creating Docker build contexts
   │ info Generating kibana docker build context bundle
   │ info Generating kibana-ubi8 docker build context bundle
   │ info Generating kibana-ironbank docker build context bundle
   │ info Generating kibana-cloud docker build context bundle
   │ succ ✓ 0 sec

 info [  global  ] Writing sha1sums of archives and packages in target directory
   │ succ ✓ 3 sec

Done in 1301.40s.

以上就打包完成了,耗费时间很长。

打包好的安装包如下:

[root@localhost kibana]#  ll target/
总用量 1335092
-rw-r--r-- 1 root root 192528483 33 10:56 kibana-7.17.5-darwin-aarch64.tar.gz
-rw-r--r-- 1 root root       164 33 10:57 kibana-7.17.5-darwin-aarch64.tar.gz.sha512.txt
-rw-r--r-- 1 root root 256355606 33 10:55 kibana-7.17.5-darwin-x86_64.tar.gz
-rw-r--r-- 1 root root       163 33 10:57 kibana-7.17.5-darwin-x86_64.tar.gz.sha512.txt
-rw-r--r-- 1 root root      6480 33 10:57 kibana-7.17.5-docker-build-context.tar.gz
-rw-r--r-- 1 root root       170 33 10:57 kibana-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r--r-- 1 root root 277017459 33 10:54 kibana-7.17.5-linux-aarch64.tar.gz
-rw-r--r-- 1 root root       163 33 10:57 kibana-7.17.5-linux-aarch64.tar.gz.sha512.txt
-rw-r--r-- 1 root root 263799071 33 10:53 kibana-7.17.5-linux-x86_64.tar.gz
-rw-r--r-- 1 root root       162 33 10:57 kibana-7.17.5-linux-x86_64.tar.gz.sha512.txt
-rw-r--r-- 1 root root 377276328 33 10:57 kibana-7.17.5-windows-x86_64.zip
-rw-r--r-- 1 root root       161 33 10:57 kibana-7.17.5-windows-x86_64.zip.sha512.txt
-rw-r--r-- 1 root root      6417 33 10:57 kibana-cloud-7.17.5-docker-build-context.tar.gz
-rw-r--r-- 1 root root       176 33 10:57 kibana-cloud-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r--r-- 1 root root      8805 33 10:57 kibana-ironbank-7.17.5-docker-build-context.tar.gz
-rw-r--r-- 1 root root       179 33 10:57 kibana-ironbank-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r--r-- 1 root root      6525 33 10:57 kibana-ubi8-7.17.5-docker-build-context.tar.gz
-rw-r--r-- 1 root root       175 33 10:57 kibana-ubi8-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r--r-- 1 root root     65666 33 10:48 optimizer_bundle_metrics.json

月 3 10:57 kibana-ironbank-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r–r-- 1 root root 6525 3月 3 10:57 kibana-ubi8-7.17.5-docker-build-context.tar.gz
-rw-r–r-- 1 root root 175 3月 3 10:57 kibana-ubi8-7.17.5-docker-build-context.tar.gz.sha512.txt
-rw-r–r-- 1 root root 65666 3月 3 10:48 optimizer_bundle_metrics.json


如果需要制作docker容器镜像,还需要安装docker命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/552416.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Linux系统中设定延迟任务

一、在系统中设定延迟任务要求如下: 要求: 在系统中建立easylee用户,设定其密码为easylee 延迟任务由root用户建立 要求在5小时后备份系统中的用户信息文件到/backup中 确保延迟任务是使用非交互模式建立 确保系统中只有root用户和easylee用户…

Matlab|基于改进遗传算法的配电网故障定位

目录 1 主要内容 2 部分代码 3 部分程序结果 4 下载链接 1 主要内容 该程序复现文章《基于改进遗传算法的配电网故障定位》,将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立…

2024年阿里云4核8G配置云服务器价格低性能高!

阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R) Platinum处理器,阿里云优惠 aliyunfuwuqi…

【Python】高级进阶(专版提升3)

Python 1 程序结构1.1 模块 Module1.1.1 定义1.1.2 作用1.1.3 导入1.1.3.1 import1.1.3.2 from import 1.1.4 模块变量1.1.5 加载过程1.1.6 分类 1.2 包package1.2.1 定义1.2.2 作用1.2.3 导入1.1.3.1 import1.1.3.2 from import 2 异常处理Error2.1 异常2.2 处理 3 迭代3.1 可…

TinyEMU源码分析之访存处理

TinyEMU源码分析之访存处理 1 访存指令介绍2 指令译码3 地址转换3.1 VA与PA3.2 VA转PA 4 判断地址空间范围5 执行访存操作5.1 访问RAM内存5.2 访问非RAM(设备)内存 6 访存处理流程图 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其…

数据结构排序算法

排序也称排序算法(SortAlgorithm),排序是将一组数据,依指定的顺序进行排列的过程。 分类 内部排序【使用内存】 指将需要处理的所有数据都加载到内部存储器中进行排序插入排序 直接插入排序希尔排序 选择排序 简单选择排序堆排序 交换排序 冒泡排序快速…

两阶段提交进阶

两阶段提交之进阶 上一节我们讲了,两阶段提交逻辑上的表现,其实较为肤浅,并且偏向理论,可能大家都能看懂,但是如果放入实际的mysql应用中并联系事务和日志进行分析,又会怎么样呢? 这次就专门分…

Unity类银河恶魔城学习记录13-1 p142 Save system源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…

软考133-上午题-【软件工程】-软件项目估算

一、COCOMO 估算模型 COCOMO 模型是一种精确的、易于使用的成本估算模型。 COCOMO 模型按其详细程度分为:基本 COCOMO 模型、中级 COCOMO 模型和详细 COCOMO 模型。 1)基本 COCOMO 模型 基本 COCOMO 模型是一个静态单变量模型,用于对整个软…

内衣裤洗衣机如何选购?掌握这六个挑选技巧,轻松选购!

这两年内衣裤洗衣机可以称得上较火的小电器,小小的身躯却有大大的能力,一键可以同时启动洗、漂、脱三种全自动为一体化功能,在多功能和性能的提升上,还可以解放我们双手的同时将衣物给清洗干净,让越来越多小伙伴选择一…

node基础 第二篇

01 ffmpeg开源跨平台多媒体处理工具,处理音视频,剪辑,合并,转码等 FFmpeg 的主要功能和特性:1.格式转换:FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式,支持几乎所有常见的音频和视频格式,包括 MP…

Node Version Manager(nvm):轻松管理 Node.js 版本的利器

文章目录 前言一、名词解释1、node.js是什么?2、nvm是什么? 二、安装1.在 Linux/macOS 上安装2.在 Windows 上安装 二、使用1.查看可安装的node版本2.安装node3. 查看已安装node4.切换node版本5.其它 总结 前言 Node.js 是现代 Web 开发中不可或缺的一部…

docker-compose 安装MongoDB续创建用户及赋权

文章目录 1. 问题描述2. 分析2.1 admin2.2 config2.3 local 3. 如何连接3.解决 1. 问题描述 在这一篇使用docker-compose创建MongoDB环境的笔记里,我们创建了数据库,但是似乎没有办法使用如Robo 3T这样的工具去连接数据库。连接的时候会返回这样的错误&…

c语言,单链表的实现----------有全代码!!!!

1.单链表的定义和结构 单链表是一种链式的数据结构,它用一组不连续的储存单元存反线性表中的数据元素。链表中的数据是以节点的形式来表示的,节点和节点之间相互连接 一般来说节点有两部分组成 1.数据域 :数据域用来存储各种类型的数据&…

基于SpringBoot+Vue的疾病防控系统设计与实现(源码+文档+包运行)

一.系统概述 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对疾病防控信息管理的提升&a…

windows 如何安装 perl ?

链接:https://strawberryperl.com/ 我们选择安装 “草莓 perl” 下载后根据引导安装就行了

node.jd版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 进入命令控制行窗口,输入where node,查看本地…

双指针的引入和深入思考(持续更新中)

目录 1.引入双指针 2.使用场景 3.例题引入 1.引入双指针 当我们需要维护某个区间性质的或者是求满足某些性质的区间的长度时,对于一个区间是由左右端点的,我们有简单的枚举左右端点的O()的时间的做法,当时在大多数题目中是不可行的&#…

DataX案例,MongoDB数据导入HDFS与MySQL

【尚硅谷】Alibaba开源数据同步工具DataX技术教程_哔哩哔哩_bilibili 目录 1、MongoDB 1.1、MongoDB介绍 1.2、MongoDB基本概念解析 1.3、MongoDB中的数据存储结构 1.4、MongoDB启动服务 1.5、MongoDB小案例 2、DataX导入导出案例 2.1、读取MongoDB的数据导入到HDFS 2…

论文笔记:Does Writing with Language Models Reduce Content Diversity?

iclr 2024 reviewer评分 566 1 intro 大模型正在迅速改变人们创造内容的方式 虽然基于LLM的写作助手有可能提高写作质量并增加作者的生产力,但它们也引入了算法单一文化——>论文旨在评估与LLM一起写作是否无意中降低了内容的多样性论文设计了一个控制实验&…
最新文章