安装Elastic Search

安装 Java

Elasticsearch 是一个 Java 应用,因此,第一步就是安装 Java。

以 root 或者其他 sudo 用户身份运行下面的命令,去安装 OpenJDK 软件包:

# 确认jdk是否已经安装
java -version # 安装jdk
sudo dnf install java-11-openjdk-devel

查看java版本:

java -version

安装Elastic Search

# 进入软件下载目录
cd /root/software # 下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-x86_64.rpm # 安装
rpm -ivh elasticsearch-7.1.1-x86_64.rpm # 启动服务
sudo systemctl start elasticsearch.service # 设置为开机自动启动
sudo systemctl enable elasticsearch.service

验证 Elasticsearch 是否运行:

curl -X GET "localhost:9200/"

输出结果如下:

{
"name" : "192.168.63.129",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "L9lXB8HXScaMlQaM4GqF-A",
"version" : {
"number" : "7.9.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "d34da0ea4a966c4e49417f2da2f244e3e97b4e6e",
"build_date" : "2020-09-23T00:45:33.626720Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

修改配置

# 停止服务
systemctl stop elasticsearch.service # 创建数据存储目录
cd /root/data
mkdir elasticsearch
cd elasticsearch
mkdir data
cd data
pwd # 修改对应目录权限
chown -R elasticsearch:elasticsearch /root/data/elasticsearch/data/ # 确认其目录外部的权限是否为755,包括root目录,如果不是可以使用下面命令修改
chmod 775 /root
chmod 775 /root/data
chmod 775 /root/data/elasticsearch # 修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml # 修改内容如下:
# 集群名,17行
cluster.name: cnki-oa-elasticsearch # node名,23行
node.name: node-1 # 数据目录,33行
path.data: /root/data/elasticsearch/data # 日志目录,37行
path.logs: /var/log/elasticsearch # 配置站点地址,55行
network.host: 192.168.43.131 # 配置站点端口,59行
http.port: 9200 # 集群master需要和node名设置一致,72行
cluster.initial_master_nodes: ["node-1"]
# 启动服务
systemctl start elasticsearch.service # 如果启动失败可以查看错误日志
vim /var/log/elasticsearch/cnki-oa-elasticsearch.log # 使用其他服务器验证
curl -X GET "192.168.43.131:9200/"

开放端口

Elasticsearch使用的端口为92009300两个端口,需要在防火墙上进行开启。

# 开启对应端口
firewall-cmd --permanent --add-port={9200/tcp,9300/tcp} # 重新加载配置文件
firewall-cmd --reload # 验证端口开放情况
firewall-cmd --list-all

访问地址

http://192.168.43.131:9200/

相关命令

# 查询集群健康状态
# 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用.
curl '192.168.43.131:9200/_cat/health?v' # 查询所有索引
curl '192.168.43.131:9200/_cat/indices?v' # 创建索引,创建一个名为“test”的索引
curl -XPUT '192.168.43.131:9200/test?pretty' # 插入数据,向index索引中插入类型为external、Id为1的数据
curl -H "Content-Type: application/json" -XPUT '192.168.43.131:9200/test/external/1?pretty' -d '
{
"name": "John Doe"
}' # 获取数据
curl -XGET '192.168.43.131:9200/test/external/1?pretty' # 删除索引
curl -XDELETE '192.168.43.131:9200/test?pretty' # 更新数据
curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/external/1/_update?pretty' -d '
{
"doc": { "name": "Jane Doe", "age": 20 }
}' # 使用script将年龄增加5
curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/external/1/_update?pretty' -d '
{
"script" : "ctx._source.age += 5"
}' # 删除数据
curl -XDELETE ' :9200/test/external/2?pretty' # 查询全部数据
curl '192.168.43.131:9200/test/_search?q=*&pretty' # 返回指定数量的数据,这里返回一条数据
curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/_search?pretty' -d '
{
"query": { "match_all": {} },
 "size": 1
}' # 查询指定规则的字段,将match更换为match_phrase可实现模糊查询
curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/_search?pretty' -d '
{
"query": { "match": { "name": "Jane Doe" } }
}'

安装elasticsearch-head插件

该插件需要依赖git和nodejs,需要首先在系统中确认是否已安装。

安装Git

# 确认Git是否已经安装
git --version # 安装Git
yum install git # 查看Git版本
git --version

安装nodejs

# 查看node版本,确认是否已安装
node -v
npm -v # 安装nodejs
yum install nodejs # 查看已安装版本
node -v
npm -v

下载elasticsearch-head

# 进入软件运行目录
cd /root/data/
mkdir elasticsearch-head
cd elasticsearch-head/
pwd # 下载代码
git clone https://github.com/mobz/elasticsearch-head.git # 初始化
cd elasticsearch-head
npm install

配置

默认开放9100端口进行访问。

# 修改Gruntfile.js,此时目录位置:/root/data/elasticsearch-head/elasticsearch-head
vim Gruntfile.js # 具体修改内容如下:
# 第97行
server: {
options: {
hostname: "192.168.43.131",//或者”*“表示所有
port: 9100,
base: '.',
keepalive: true
}
}
# 修改elasticsearch-head默认连接地址,此时目录位置:/root/data/elasticsearch-head/elasticsearch-head
vim _site/app.js # 修改前内容:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; # 修改后内容:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.43.131:9200";

修改ElasticSearch配置

修改ElasticSearch配置文件,允许其跨域运行。

# 修改配置文件
vim /etc/elasticsearch/elasticsearch.yml # 在第59行处添加下面配置数据:
http.cors.enabled: true
http.cors.allow-origin: "*" # 重新启动ElasticSearch服务
systemctl restart elasticsearch

开放端口

Elasticsearch-head使用的端口为9100端口,需要在防火墙上进行开启。

# 开启对应端口
firewall-cmd --permanent --add-port={9100/tcp} # 重新加载配置文件
firewall-cmd --reload # 验证端口开放情况
firewall-cmd --list-all

启动

# 此时目录位置:/root/data/elasticsearch-head/elasticsearch-head

# 测试启动
npm run start # 后台运行,日志会输出在当前文件夹nohup.out里面
# 系统重启后需手动启动
nohup npm run start &

访问地址

http://192.168.43.131:9100/

安装Kibana

下载安装包

# 进入软件下载目录
cd /root/software # 下载安装包,如果下载太慢可使用迅雷下载后上传至服务器
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-x86_64.rpm

安装kibana

# 进入软件下载目录
cd /root/software # 安装
rpm -ivh kibana-7.1.1-x86_64.rpm # 启动服务
sudo systemctl start kibana.service # 设置为开机自动启动
sudo systemctl enable kibana.service

配置相关参数

# 停止服务
systemctl stop kibana # 编辑配置文件
vim /etc/kibana/kibana.yml # 相关配置文件参数如下,注意修改对应IP地址
# 站点端口号,2行
server.port: 5601 # 站点IP地址,7行
server.host: "192.168.43.131" # 站点名称,25行
server.name: "kibana-node-1" # ElasticSearch站点地址,28行
elasticsearch.hosts: ["http://192.168.43.131:9200"] # 索引,37行
kibana.index: ".kibana" # 语言显示为中文,第113行
i18n.locale: "zh-CN"
# 启动服务
systemctl start kibana # 验证站点是否正常,URL地址如下:
http://192.168.43.131:5601

安装Logstash

下载安装包

# 进入软件下载目录
cd /root/software # 下载安装包,如果下载太慢可使用迅雷下载后上传至服务器
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.1.rpm

安装logstash

# 进入软件下载目录
cd /root/software # 安装
rpm -ivh logstash-7.1.1.rpm # 启动服务
sudo systemctl start logstash.service # 设置为开机自动启动
sudo systemctl enable logstash.service

配置Logstash

Logstash配置文件为JSON格式,存放在/etc/logstash/conf.d/中。该配置由三个部分组成:输入,过滤和输出。

# 创建配置文件目录
cd /root/data/
mkdir logstash
cd logstash/
mkdir conf
cd conf/
pwd # 修改默认配置文件目录
cd /etc/logstash/
vim logstash.yml # 修改配置文件存放目录,第64行
path.config: /root/data/logstash/conf/*.conf
#定期检查配置是否更改并重新加载管道,默认为false,第77行
config.reload.automatic: true

启动Logstash

# 启动服务,如果添加或修改配置文件,需重启服务才能生效
systemctl start logstash.service # 设置开机启动
systemctl enable logstash.service

使用Logstash测试文件输出到ElasticSearch

Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。

这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。

# 进入配置文件目录
cd /root/data/logstash/conf # 创建日志文件相关目录
cd /root/data/logstash
mkdir logs
cd logs/
mkdir test
cd test
pwd # 创建测试日志文件
vim testLog-20201012.txt # 创建测试日志配置文件
cd /root/data/logstash/conf/
vim conf-testlog.conf # 文件内容如下所示:
input {
file {
path => "/root/data/logstash/logs/test/testLog-*.csv"
type => "testlog-file"
start_position => "beginning"
}
}
filter {
if [type] == "testlog-file" {
mutate {
split => ["message","|"] #按 | 进行split切割message
add_field => {
"SystemName" => "%{[message][0]}"
}
add_field => {
"Environment" => "%{[message][1]}"
}
add_field => {
"Level" => "%{[message][2]}"
}
add_field => {
"LogTime" => "%{[message][3]}"
}
add_field => {
"Content" => "%{[message][4]}"
}
}
ruby { # 解决时间戳不对问题
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
}
}
output {
if [type] == "testlog-file" {
elasticsearch{
hosts => ["192.168.43.131:9200"]
index => "testlog" # 如果每天创建一个则可以按照此语法:"testlog-%{+YYYY.MM.dd}"
document_type => "debug"
}
}
}

测试文件内容如下:

SSOModule|Test|Debug|2020-10-12 16:27:12|测试01
SSOModule|Test|Debug|2020-10-12 16:29:12|测试02
SSOModule|Prod|Error|2020-10-12 16:27:12|测试01
ProjectMgnt|Test|Debug|2020-10-12 16:27:12|测试01
ProjectMgnt|Test|Error|2020-10-12 16:27:12|测试01
ProjectMgnt|Prod|Error|2020-10-13 08:27:12|测试01
# 一般添加或修改配置文件后,重启logstash服务即可
systemctl restart logstash # 测试配置文件
/usr/share/logstash/bin/logstash -t -f /root/data/logstash/conf/conf-testlog.conf # 加载logstash配置文件,注意命令行后加上&,否则关闭shell窗口,该程序可能会随着关闭
/usr/share/logstash/bin/logstash -f /root/data/logstash/conf/conf-testlog.conf & # 修改日志文件内容,可将新增日志输出到ElasticSearch中,使用vim修改将会造成日志文件重复
echo 'test05' >> testLog-20201012.txt

使用Logstash测试Kafka输出到ElasticSearch

# 进入配置文件目录
cd /root/data/logstash/conf # 创建测试日志配置文件
vim conf-testlog-from-kafka.conf # 文件内容如下所示:
input {
kafka {
bootstrap_servers => "192.168.43.131:9092"
group_id => "testTopicGroup"
client_id => "logstash-1"
auto_offset_reset => "latest" # earliest、latest
topics => ["testTopic"]
consumer_threads => 3
decorate_events => true
type => "bussiness-log-kafka"
}
}
filter {
if [type] == "bussiness-log-kafka" {
mutate {
split => ["message","|"] #按 | 进行split切割message
add_field => {
"SystemName" => "%{[message][0]}"
}
add_field => {
"Environment" => "%{[message][1]}"
}
add_field => {
"Level" => "%{[message][2]}"
}
add_field => {
"LogTime" => "%{[message][3]}"
}
add_field => {
"Content" => "%{[message][4]}"
}
}
ruby { # 解决时间戳不对问题
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
}
}
output {
if [type] == "bussiness-log-kafka" {
elasticsearch {
hosts => ["192.168.43.131:9200"]
index => "businesslog-kafka" # 如果每天创建一个则可以按照此语法:"testlog-%{+YYYY.MM.dd}"
document_type => "debug"
}
}
}

Centos安装ELK的更多相关文章

  1. centos 安装elk监控

    下面就是要安装一些收集日志 或者分配日志的工具,我选择的是 Filebeat 来收集日志,然后放到kafka中 让kafka这个消息队列来分配生产者消费者  然后通过Logstash 或者一个国产大神 ...

  2. centos 安装ELK

    准备安装环境 由于本人的centos是通过虚拟机来进行安装的,为了本地电脑能够访问centos系统中的端口,则需要把防火墙进行关闭,通过以下方式进行关闭防火墙. # vi /etc/sysconfig ...

  3. CentOS 7.x安装ELK(Elasticsearch+Logstash+Kibana)

    第一次听到ELK,是新浪的@ARGV 介绍内部使用ELK的情况和场景,当时触动很大,原来有那么方便的方式来收集日志和展现,有了这样的工具,你干完坏事,删除日志,就已经没啥作用了. 很多企业都表示出他们 ...

  4. 如何在CentOS 7 / Fedora 31/30/29上安装ELK Stack

    原文地址:https://computingforgeeks.com/how-to-install-elk-stack-on-centos-fedora/ 原作者: Josphat Mutai 译者: ...

  5. 虚拟机创建及安装ELK

    虚拟机创建及安装ELK 作者:高波 归档:学习笔记 2018年5月31日 13:57:02 快捷键: Ctrl + 1    标题1 Ctrl + 2    标题2 Ctrl + 3    标题3 C ...

  6. 安装ELK

    1. 安装Elasticsearch a. 下载 : https://download.elasticsearch.org/elasticsearch/release/org/elasticsearc ...

  7. 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...

  8. CentOS安装gitlab,gerrit,jenkins并配置ci流程

    CentOS安装gitlab,gerrit,jenkins并配置ci流程 By Wenbin juandx@163.com 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上, ...

  9. 【推荐】CentOS安装Subversion-1.8.11+HTTP协议支持配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. 我们需要搭建一个自己的SVN服务器. 此外,搭建好的SVN服务器除了需要支持svn协议外,最好还需要支持HTTP协议和HTTPS协 ...

  10. 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: ...

随机推荐

  1. day26:装饰器&面向对象当中的方法&property

    目录 1.装饰器 1.1 装饰器的基本用法 1.2 @符号的使用 1.3 装饰器的嵌套 1.4 用装饰器扩展带有参数的原函数 1.5 用装饰器扩展带有参数和返回值的原函数 1.6 用类装饰器扩展原函数 ...

  2. SLBR通过自校准的定位和背景细化来去除可见的水印

    一.简要介绍   本文简要介绍了论文"Visible Watermark Removal via Self-calibrated Localization and Background Re ...

  3. Ubuntu编译安装protobuf-3.6.1

    一.下载源码包 下载源码URL:https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3. ...

  4. Django笔记二十四之数据库函数之比较和转换函数

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十四之数据库函数之比较和转换函数 这一篇笔记开始介绍几种数据库函数,以下是几种函数及其作用 Cast 转换类型 Coalesce 优先取 ...

  5. 一文详解RocketMQ-Spring的源码解析与实战

    摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑. 本文分享自华为云社区< ...

  6. NEQR: novel enhanced quantum representation

    一.概述   NEQR利用量子叠加和量子纠缠的特性,将数字图像转换为量子态表示,并通过量子门操作进行处理和操作.相较于传统的经典图像表示方法,NEQR具有更高的图像压缩率和更强的安全性,能够在保持图像 ...

  7. Java常见的线程池的创建及使用

    文章目录 线程池是什么? 线程池的主要参数 线程池的拒绝策略 创建线程池的方式 关闭线程池 大家好,我是Leo!今天准备和大家一起分享的知识是线程池,刚好今天在看八股文,就顺带写一下并把一些实践的例子 ...

  8. 18年CCCC赛后总结

    C4赛后总结: 我正式入坑以来,大约5个月,这也是我第一次出去参与这样正式的比赛,其实比赛结果并不尽人意,但有很多还是需要记录下来的,通过这次比赛的确获得了很多的比赛经验: 一赛前: 其实赛前的状态, ...

  9. 2022-03-20:给定一棵多叉树的头节点head, 每个节点的颜色只会是0、1、2、3中的一种, 任何两个节点之间的都有路径, 如果节点a和节点b的路径上,包含全部的颜色,这条路径算达标路径, (

    2022-03-20:给定一棵多叉树的头节点head, 每个节点的颜色只会是0.1.2.3中的一种, 任何两个节点之间的都有路径, 如果节点a和节点b的路径上,包含全部的颜色,这条路径算达标路径, ( ...

  10. Windows server 2012 r2 激活方法

    slmgr /ipk W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9 slmgr /skms kms.03k.org slmgr /ato