安装Elastic Search

安装 Java

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

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

  1. # 确认jdk是否已经安装
  2. java -version
  3. # 安装jdk
  4. sudo dnf install java-11-openjdk-devel

查看java版本:

  1. java -version

安装Elastic Search

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

验证 Elasticsearch 是否运行:

  1. curl -X GET "localhost:9200/"

输出结果如下:

  1. {
  2. "name" : "192.168.63.129",
  3. "cluster_name" : "elasticsearch",
  4. "cluster_uuid" : "L9lXB8HXScaMlQaM4GqF-A",
  5. "version" : {
  6. "number" : "7.9.2",
  7. "build_flavor" : "default",
  8. "build_type" : "rpm",
  9. "build_hash" : "d34da0ea4a966c4e49417f2da2f244e3e97b4e6e",
  10. "build_date" : "2020-09-23T00:45:33.626720Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.6.2",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

修改配置

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

开放端口

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

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

访问地址

  1. http://192.168.43.131:9200/

相关命令

  1. # 查询集群健康状态
  2. # 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用.
  3. curl '192.168.43.131:9200/_cat/health?v'
  4. # 查询所有索引
  5. curl '192.168.43.131:9200/_cat/indices?v'
  6. # 创建索引,创建一个名为“test”的索引
  7. curl -XPUT '192.168.43.131:9200/test?pretty'
  8. # 插入数据,向index索引中插入类型为external、Id为1的数据
  9. curl -H "Content-Type: application/json" -XPUT '192.168.43.131:9200/test/external/1?pretty' -d '
  10. {
  11. "name": "John Doe"
  12. }'
  13. # 获取数据
  14. curl -XGET '192.168.43.131:9200/test/external/1?pretty'
  15. # 删除索引
  16. curl -XDELETE '192.168.43.131:9200/test?pretty'
  17. # 更新数据
  18. curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/external/1/_update?pretty' -d '
  19. {
  20. "doc": { "name": "Jane Doe", "age": 20 }
  21. }'
  22. # 使用script将年龄增加5
  23. curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/external/1/_update?pretty' -d '
  24. {
  25. "script" : "ctx._source.age += 5"
  26. }'
  27. # 删除数据
  28. curl -XDELETE ' :9200/test/external/2?pretty'
  29. # 查询全部数据
  30. curl '192.168.43.131:9200/test/_search?q=*&pretty'
  31. # 返回指定数量的数据,这里返回一条数据
  32. curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/_search?pretty' -d '
  33. {
  34. "query": { "match_all": {} },
  35.  "size": 1
  36. }'
  37. # 查询指定规则的字段,将match更换为match_phrase可实现模糊查询
  38. curl -H "Content-Type: application/json" -XPOST '192.168.43.131:9200/test/_search?pretty' -d '
  39. {
  40. "query": { "match": { "name": "Jane Doe" } }
  41. }'

安装elasticsearch-head插件

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

安装Git

  1. # 确认Git是否已经安装
  2. git --version
  3. # 安装Git
  4. yum install git
  5. # 查看Git版本
  6. git --version

安装nodejs

  1. # 查看node版本,确认是否已安装
  2. node -v
  3. npm -v
  4. # 安装nodejs
  5. yum install nodejs
  6. # 查看已安装版本
  7. node -v
  8. npm -v

下载elasticsearch-head

  1. # 进入软件运行目录
  2. cd /root/data/
  3. mkdir elasticsearch-head
  4. cd elasticsearch-head/
  5. pwd
  6. # 下载代码
  7. git clone https://github.com/mobz/elasticsearch-head.git
  8. # 初始化
  9. cd elasticsearch-head
  10. npm install

配置

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

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

修改ElasticSearch配置

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

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

开放端口

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

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

启动

  1. # 此时目录位置:/root/data/elasticsearch-head/elasticsearch-head
  2. # 测试启动
  3. npm run start
  4. # 后台运行,日志会输出在当前文件夹nohup.out里面
  5. # 系统重启后需手动启动
  6. nohup npm run start &

访问地址

  1. http://192.168.43.131:9100/

安装Kibana

下载安装包

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

安装kibana

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

配置相关参数

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

安装Logstash

下载安装包

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

安装logstash

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

配置Logstash

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

  1. # 创建配置文件目录
  2. cd /root/data/
  3. mkdir logstash
  4. cd logstash/
  5. mkdir conf
  6. cd conf/
  7. pwd
  8. # 修改默认配置文件目录
  9. cd /etc/logstash/
  10. vim logstash.yml
  11. # 修改配置文件存放目录,第64行
  12. path.config: /root/data/logstash/conf/*.conf
  13. #定期检查配置是否更改并重新加载管道,默认为false,第77行
  14. config.reload.automatic: true

启动Logstash

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

使用Logstash测试文件输出到ElasticSearch

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

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

  1. # 进入配置文件目录
  2. cd /root/data/logstash/conf
  3. # 创建日志文件相关目录
  4. cd /root/data/logstash
  5. mkdir logs
  6. cd logs/
  7. mkdir test
  8. cd test
  9. pwd
  10. # 创建测试日志文件
  11. vim testLog-20201012.txt
  12. # 创建测试日志配置文件
  13. cd /root/data/logstash/conf/
  14. vim conf-testlog.conf
  15. # 文件内容如下所示:
  1. input {
  2. file {
  3. path => "/root/data/logstash/logs/test/testLog-*.csv"
  4. type => "testlog-file"
  5. start_position => "beginning"
  6. }
  7. }
  8. filter {
  9. if [type] == "testlog-file" {
  10. mutate {
  11. split => ["message","|"] #按 | 进行split切割message
  12. add_field => {
  13. "SystemName" => "%{[message][0]}"
  14. }
  15. add_field => {
  16. "Environment" => "%{[message][1]}"
  17. }
  18. add_field => {
  19. "Level" => "%{[message][2]}"
  20. }
  21. add_field => {
  22. "LogTime" => "%{[message][3]}"
  23. }
  24. add_field => {
  25. "Content" => "%{[message][4]}"
  26. }
  27. }
  28. ruby { # 解决时间戳不对问题
  29. code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
  30. }
  31. ruby {
  32. code => "event.set('@timestamp',event.get('timestamp'))"
  33. }
  34. mutate {
  35. remove_field => ["timestamp"]
  36. }
  37. }
  38. }
  39. output {
  40. if [type] == "testlog-file" {
  41. elasticsearch{
  42. hosts => ["192.168.43.131:9200"]
  43. index => "testlog" # 如果每天创建一个则可以按照此语法:"testlog-%{+YYYY.MM.dd}"
  44. document_type => "debug"
  45. }
  46. }
  47. }

测试文件内容如下:

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

使用Logstash测试Kafka输出到ElasticSearch

  1. # 进入配置文件目录
  2. cd /root/data/logstash/conf
  3. # 创建测试日志配置文件
  4. vim conf-testlog-from-kafka.conf
  5. # 文件内容如下所示:
  1. input {
  2. kafka {
  3. bootstrap_servers => "192.168.43.131:9092"
  4. group_id => "testTopicGroup"
  5. client_id => "logstash-1"
  6. auto_offset_reset => "latest" # earliest、latest
  7. topics => ["testTopic"]
  8. consumer_threads => 3
  9. decorate_events => true
  10. type => "bussiness-log-kafka"
  11. }
  12. }
  13. filter {
  14. if [type] == "bussiness-log-kafka" {
  15. mutate {
  16. split => ["message","|"] #按 | 进行split切割message
  17. add_field => {
  18. "SystemName" => "%{[message][0]}"
  19. }
  20. add_field => {
  21. "Environment" => "%{[message][1]}"
  22. }
  23. add_field => {
  24. "Level" => "%{[message][2]}"
  25. }
  26. add_field => {
  27. "LogTime" => "%{[message][3]}"
  28. }
  29. add_field => {
  30. "Content" => "%{[message][4]}"
  31. }
  32. }
  33. ruby { # 解决时间戳不对问题
  34. code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
  35. }
  36. ruby {
  37. code => "event.set('@timestamp',event.get('timestamp'))"
  38. }
  39. mutate {
  40. remove_field => ["timestamp"]
  41. }
  42. }
  43. }
  44. output {
  45. if [type] == "bussiness-log-kafka" {
  46. elasticsearch {
  47. hosts => ["192.168.43.131:9200"]
  48. index => "businesslog-kafka" # 如果每天创建一个则可以按照此语法:"testlog-%{+YYYY.MM.dd}"
  49. document_type => "debug"
  50. }
  51. }
  52. }

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. XmlSerializer 反射类型xxx时出错,反射属性xxx时出错。

    在使用XmlSerializer将类序列化成XML时出错,看到InnerException的message可以知道是这个receiver里有错误,进入这个类查看一下代码发现有重名的类 NodeId类修 ...

  2. vue3的setup语法糖

    https://blog.csdn.net/weixin_44922480/article/details/127337914 https://blog.csdn.net/m0_63108819/ar ...

  3. 纯前端使用xlsx实现导出表格

    列表数据纯前端使用xlsx实现导出功能 基础写法 let filename = "资产导出.xlsx"; 定义导出数据 let data = [ ["第一列", ...

  4. Pyathon If条件测试

    if条件测试 # 案例 cars = ['audi','bmw','subaru','toyota'] for car in cars: if car =='bmw': print(car.upper ...

  5. Prism Sample 19-NavigationParticipation

    Navigation Participation,不知翻译方法,意思是对导航过程的参与,触发事件,类似离开导航目标和进入导航的回调 在VM中,增加一个接口 ,然后实现导航事件 public class ...

  6. 【Ubuntu】4.挂载/连接VM共享文件夹

    第一步 首先需要在虚拟机设置中开启共享文件夹 第二步 修改fstab文件自动挂载 如果您想要自动挂载共享文件夹,可以编辑/etc/fstab文件并添加以下内容:(二选一即可,推荐) sudo gedi ...

  7. 2023-04-09:使用 Golang 重写的 ffmpeg 示例encode_video.c,实现视频编码并将编码后的数据封装为容器格式,最终写入输出文件。

    2023-04-09:使用 Golang 重写的 ffmpeg 示例encode_video.c,实现视频编码并将编码后的数据封装为容器格式,最终写入输出文件. 答案2023-04-09: 本文介绍的 ...

  8. vue全家桶进阶之路20:ECMAScript脚本语言规范

    ECMAScript(简称 ES)是一种由 Ecma 国际组织定义的脚本语言标准,它定义了 JavaScript 语言的基本规范和特性.JavaScript 是一种基于 ECMAScript 标准的编 ...

  9. SQL Server修改列的数据类型

    ALTER TABLE LJPA001H DROP CONSTRAINT DF_LJPA001H_pa_sex_1 ALTER TABLE LJPA001H ALTER COLUMN pa_sex V ...

  10. Python对word文档重排版

    介绍 舍友从网上下载的word题库文档很乱,手动改了大半天才改了一点,想起python是大名鼎鼎的自动化脚本,于是乎开始了python对word的一顿瞎操作. 分析需求 对文档中的内容进行分析,只留下 ...