Linux部署elk日志监控系统

news2024/11/19 23:38:58

目录

一、简介

二、部署elasticsearch

2.1 安装jdk11(jdk版本>=11)

2.2 下载安装包

2.3 授权elk用户 

2.4 配置elasticsearch.yml

2.5 启动elasticsearch

三、部署logstash

3.1 启动测试

3.2 可能出现的报错

3.3 指定配置文件启动logstash

3.4 安装Elasticsearch Head

3.4.1 安装谷歌插件

3.4.2 安装nodejs

四、部署kibana

4.1 修改配置文件并启动 


一、简介

ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

框架简介作用
Elasticsearch开源分布式搜索引擎,提供存储、分析、搜索功能。特点:分布式、基于reasful风格、支持海量高并发的准实时搜索场景、稳定、可靠、快速、使用方便等。接收搜集的海量结构化日志数据,并提供给kibana查询分析
Logstash开源日志搜集、分析、过滤框架,支持多种数据输入输出方式。用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中
Kibana开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持对elasticsearch提供的数据进行分析展示

应用场景:分布式部署项目,需要收集日志、微服务架构项目,收集各个服务的日志、大数据行业。

二、部署elasticsearch

如果是多节点,其他节点只需要安装elasticsearch即可。

11.0.1.16elasticsearch+logstash+kibana

 

2.1 安装jdk11(jdk版本>=11)

jdk安装包不能直接wget下载,oracle下载需要用户登录验证

jdk下载地址:Java Downloads | Oracle

[root@elk-16 /]# hostnamectl set-hostname elk-16
[root@elk-16 /]# ls /opt/jdk/
jdk-11.0.20_linux-x64_bin.tar.gz
[root@elk-16 /]# tar -zxf jdk-11.0.20_linux-x64_bin.tar.gz

[root@elk-16 /]# vim /etc/profile
#文末添加两行,配置环境变量
export JAVA_HOME=/opt/jdk/jdk-11.0.20
export PATH=$JAVA_HOME/bin:$PATH
[root@elk-16 /]# source /etc/profile

[root@elk-16 /]# java -version
java version "11.0.20" 2023-07-18 LTS
******

2.2 下载安装包

下载组件,注意版本保持一致

[root@elk-16 /]# mkdir /opt/elk
[root@elk-16 /]# cd /opt/elk
[root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz
[root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.9.3.tar.gz
[root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
[root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz

2.3 授权elk用户 

#解压
[root@elk-16 elk]# tar -zxf elasticsearch-7.9.3-linux-x86_64.tar.gz  -C /opt/elk/
[root@elk-16 elk]# tar -zxf kibana-7.9.3-linux-x86_64.tar.gz -C /opt/elk/
[root@elk-16 elk]# tar -zxf logstash-7.9.3.tar.gz -C /opt/elk/

#创建elk用户
[root@elk-16 elk]# useradd elk

#创建数据日志目录
[root@elk-16 elk]# mkdir /opt/elk
[root@elk-16 elk]# mkdir /var/log/elk/es7
[root@elk-16 elk]# mkdir /data/es7

#elk用户授权
[root@elk-16 elk]# chown -R elk:elk /opt/elk
[root@elk-16 elk]# chown -R elk:elk /var/log/elk
[root@elk-16 elk]# chown -R elk:elk /data/es7

[root@elk-16 opt]# chown -R elk:elk /opt/elk/logstash-7.9.3
[root@elk-16 opt]# chown -R elk:elk /opt/elk/kibana-7.9.3-linux-x86_64

2.4 配置elasticsearch.yml

更改配置文件elasticsearch.yml

#1、修改elasticsearch.yml配置文件
	vim /opt/elk/elasticsearch-7.9.3/config/elasticsearch.yml
	# ---------------------------------- Cluster -----------------------------------
	cluster.name: bigdata-elk
	# ------------------------------------ Node ------------------------------------
	node.name: elk-16
	# ----------------------------------- Paths ------------------------------------
	path.data: /data/es7
	path.logs: /var/log/elk/es7
	# ---------------------------------- Network -----------------------------------
	network.host: 0.0.0.0
	transport.host: 0.0.0.0
	network.publish_host: 11.0.1.16
	http.port: 9200
	# --------------------------------- Discovery ----------------------------------
	#如果有多节点,其他节点只需要安装es7,其余两个不用,并且这两行需要添加所有节点IP、主机名,用逗号“,”隔开
    discovery.seed_hosts: ["11.0.1.16"]
	cluster.initial_master_nodes: ["elk-16"]
	# ---------------------------------- Various -----------------------------------
	http.cors.enabled: true          
	http.cors.allow-origin: "*"        
	bootstrap.memory_lock: false
	bootstrap.system_call_filter: false

#2、修改系统参数,不修改可能达到系统瓶颈,导致软件崩溃
	echo "vm.max_map_count=655360" >> /etc/sysctl.conf
	sysctl -p
		报错:sysctl: cannot stat /proc/sys/–p: No such file or directory
		执行以下命令:
		1、  modprobe br_netfilter
	 	2、  ls /proc/sys/net/bridge
		3、  sysctl -p
		
	vim /etc/security/limits.conf
	* soft nofile 65536
	* hard nofile 65536
	* soft nproc  65536
	* hard nproc  65536
	
	echo "elk     soft    nproc       65536" >> /etc/security/limits.d/20-nproc.conf

#3、告警:Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone.
#在文件elasticsearch.yml中加入下面的配置
xpack.security.enabled: false

2.5 启动elasticsearch

注意切换到elk用户再启动elasticsearch

提示jdk版本过低(因为一开始我装的是jdk8,后面改了jdk11就没问题了)

[elk@elk-16 elk]$ /opt/elk/elasticsearch-7.9.3/bin/elasticsearch -d
future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk/jdk1.8.0_381/jre] does not meet this requirement
future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk/jdk1.8.0_381/jre] does not meet this requirement

换到jdk11后,启动正常

[elk@elk-16 elasticsearch-7.9.3]$ /opt/elk/elasticsearch-7.9.3/bin/elasticsearch -d
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
******
For complete error details, refer to the log at /var/log/elk/es7/elk.log

ctrl+c不会停止elasticsearch,测试,有以下内容表示elasticsearch启动成功。

[root@elk-16 ~]# curl 127.0.0.1:9200
{
  "name" : "elk-16",
  "cluster_name" : "elk",
  "cluster_uuid" : "ZwKngvYkT82yM-lbqAgXXA",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "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"
}

宿主机也测试一下,遇到过11.0.1.16本机可以访问,虚拟机宿主机却访问不了的情况,正常情况下本机宿主机都是可以访问的。 

如果想要结束elasticsearch进程,用kill命令结束进程

#查看进程号
ps -ef | grep elastic 或者 lsof -i:9200
kill -9 ***

三、部署logstash

3.1 启动测试

注意,解压logstash后可能会出现找不到java命令的情况,使用source /etc/profiles 刷新环境变量即可,测试启动logstash,出现“Successfully started Logstash API endpoint {:port=>9600}
”启动成功。

[root@elk-16 opt]# su elk
[elk@elk-16 opt]# cd /opt/elk/logstash-7.9.3
[elk@elk-16 logstash-7.9.3]# bin/logstash -e 'input {stdin {}} output {stdout {}}'
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.jruby.ext.openssl.SecurityHelper 
******
[2023-09-25T17:20:44,771][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
hello
{
    "@timestamp" => 2023-09-25T14:36:42.644Z,
      "@version" => "1",
          "host" => "elk-16",
       "message" => "hello"
}

#hello是我输入的,启动后会生成终端,可以随意输入,ctrl+c停止logstash运行

3.2 可能出现的报错

出现“Errno::EACCES - Permission denied - /opt/elk/logstash-7.9.3/data”,没有给elk用户授权/opt/elk/logstash-7.9.3

#无logstash-7.9.3/data无权限
[elk@elk-16 logstash-7.9.3]$ bin/logstash -e 'input { stdin { } } output { stdout {} }'
******
[ERROR] 2023-09-25 22:28:46.776 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (ArgumentError) Path "/opt/elk/logstash-7.9.3/data" does not exist, and I failed trying to create it: Errno::EACCES - Permission denied - /opt/elk/logstash-7.9.3/data

 如果授权后还是不行,尝试删除/opt/elk/logstash-7.9.3/data。删除后使用logstash命令会重新生产一个data目录。

[elk@elk-16 logstash-7.9.3]# bin/logstash -e 'input {stdin {}} output {stdout {}}'
******
[2023-09-25T17:25:46,132][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

3.3 指定配置文件启动logstash

更改配置文件需要切换回root用户,建议开两个终端,一个elk一个root,避免来回切换麻烦。

[elk@elk-16 logstash-7.9.3]# su root
[root@elk-16 logstash-7.9.3]# vim /opt/elk/logstash-7.9.3/config/test_file.conf

input {
    file {
        path => ["/var/log/elk/es7/bigdata-elk.log"]
        type => "bigdata-elk"
    }
}


output {
    elasticsearch {
        hosts => ["11.0.1.16:9200"]
        index => "sbigdata-elk-log-%{+YYY.MM.dd}"
    }
}

注意启动都是elk用户,指定配置文件启动logstash成功

[elk@elk-16 logstash-7.9.3]$ bin/logstash -f config/test_file.conf
******
[2023-09-26T10:42:02,634][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

需要保证elasticsearch启动,没有启动会抛出拒绝连接错误

[2023-09-25T23:08:00,360][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://11.0.1.16:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://11.0.1.16:9200/][Manticore::SocketException] 拒绝连接 (Connection refused)"}

 打开新的终端,查看9200、9600

[root@elk-16 ~]# netstat -tulnp | grep 9600
tcp6       0      0 127.0.0.1:9600          :::*                    LISTEN      1755/java           
[root@elk-16 ~]# 
[root@elk-16 ~]# netstat -tulnp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      1483/java  

3.4 安装Elasticsearch Head

两种方式,谷歌插件或者部署nodejs,可以观察集群监控状态

3.4.1 安装谷歌插件

下载谷歌插件Multi Elasticsearch Head,注意需要挂梯子,没条件请使用nodejs,打开插件,“New”,输入elasticsearch接口URL。

3.4.2 安装nodejs

github下载elasticsearch-head-master.zip传入/opt/elk目录

下载地址:GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

安装nodejs

#nodejs v14.15安装包
[root@elk-16 elk]# wget https://nodejs.org/dist/v14.15.0/node-v14.15.0-linux-x64.tar.xz
[root@elk-16 elk]# xz -d node-v14.15.0-linux-x64.tar.xz
[root@elk-16 elk]# tar -xf node-v14.15.0-linux-x64.tar

[root@elk-16 elk]# unzip elasticsearch-head-master.zip

#phantomjs 官网	https://phantomjs.org/download.html
[root@elk-16 elk]# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@elk-16 elk]# yum -y install bzip2 fontconfig-devel
[root@elk-16 elk]# tar -xvjf  phantomjs-2.1.1-linux-x86_64.tar.bz2

#创建node、npm命令软连接
[root@elk-16 elk]# ln -s /opt/elk/node-v14.15.0-linux-x64/bin/node /usr/local/bin/node
[root@elk-16 elk]# ln -s /opt/elk/node-v14.15.0-linux-x64/bin/npm /usr/local/bin/npm
[root@elk-16 elk]# ln -s /opt/elk/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

#查看版本
[root@elk-16 elk]# node -v
v14.15.0
[root@elk-16 elk]# npm -v
6.14.8
[root@elk-16 elk]# phantomjs --version
2.1.1
#安装模块
[root@elk-16 elk]# cd /opt/elk/elasticsearch-head-master
[root@elk-16 elasticsearch-head-master]# npm install --registry=https://registry.npm.taobao.org

npm install 报错,npm install因为某些原因中断最好删除node_modules目录

npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js` 

#手动全局安装phantomjs-prebuilt@2.1.16
[root@elk-16 elasticsearch-head-master]# npm -g install phantomjs-prebuilt@2.1.16 --ignore-script

测试前台启动成功后ctrl+c再用后台启动

#前台启动
[root@elk-16 elasticsearch-head-master]# npm run start
******
Waiting forever...
Started connect web server on http://localhost:9100

#后台启动
[root@elk-16 elasticsearch-head-master]# npm run start &
[root@elk-16 ~]# netstat -tulnp |grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      5080/grunt

四、部署kibana

4.1 修改配置文件并启动 

#修改配置文件
vim /opt/elk/kibana-7.9.3-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "11.0.1.16"
server.name: "bigdata-kibana"
elasticsearch.hosts: ["http://11.0.1.16:9200"]
logging.dest: /var/log/elk/kibana/kibana.log
i18n.locale: "zh-CN"

#创建日志目录
mkdir /var/log/elk/kibana
chown -R elk:elk /var/log/elk/kibana

#前台启动kibana
bin/kibana

#后台启动kibana
bin/kibana &

查看9200 9600 9100 5601 端口,结束进程请使用kill命令 

通过查询端口号结束后台运行进程

[root@elk-16 /]# yum install -y lsof
[root@elk-16 /]# lsof -i:5601
[root@elk-16 /]# kill -9 ******

 访问 http://11.0.1.16:5601/

至此,elasticsearch+logstash+kibana日志监控系统部署完成。

参考文档:

https://www.cnblogs.com/wangzhuxing/p/9665905.html#_label1_1

ELK 安装部署(入门必备)_elk安装部署_与光同尘~追光者的博客-CSDN博客

logstash报错问题解决:Logstash stopped processing because of an error: (SystemExit) exit_BigCabbageFy的博客-CSDN博客

npm install 安装时i,报错 phantomjs-prebuilt@2.1.16 install: `node install.js`-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【基于Qt和OpenCV的多线程图像识别应用】

基于Qt和OpenCV的多线程图像识别应用 前言多线程编程为什么需要多线程Qt如何实现多线程线程间通信 图像识别项目代码项目结构各部分代码 项目演示小结 前言 这是一个简单的小项目,使用Qt和OpenCV构建的多线程图像识别应用程序,旨在识别图像中的人脸并将…

作为产品经理,你是如何分析和管理你的产品需求的?

作为一名产品经理,分析和管理产品需求是非常重要的工作。在产品开发周期中,需求调研、需求分析、需求管理等环节都是非常关键的,因为好的需求管理能够直接影响产品的质量和用户体验。 需求调研 在进行需求调研的过程中,我们首先…

App开发者如何从立项着手,奠定商业化基础,完成0到1转变?

随着移动互联技术的发展,流量即价值的观念深入人心,大量不同细分领域的移动应用进入市场。根据工信部公布数据,2023年上半年,我国国内市场上监测到活跃的APP数量为260万款(包括安卓和苹果商店),…

Visual Studio 如何删除多余的空行,仅保留一行空行

1.CtrlH 打开替换窗口(注意选择合适的查找范围) VS2010: VS2017、VS2022: 2.复制下面正则表达式到上面的选择窗口: VS2010: ^(\s*)$\n\n VS2017: ^(\s*)$\n\n VS2022:^(\s*)$\n 3.下面的替换窗口皆写入 \n VS2010: \n VS2017: \n VS2022: \n …

铁路用热轧钢轨

声明 本文是学习GB-T 2585-2021 铁路用热轧钢轨. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了铁路用钢轨的订货内容、分类、尺寸、外形、质量及允许偏差、技术要求、试验方法、检 验规则、标志及质量证明书。 本标准适用于3…

react import爆红

如上所示,会标红, 解决办法:在vscode内部SHiftCtrlP 输入Reload window, 如上的第一个,选中后回车,标红就没了,非常好用。

版本控制系统:Perforce Helix Core -2023

Perforce Helix Core是领先的版本控制系统,适用于需要加速大规模创新的团队。存储并跟踪您所有数字资产的更改,从源代码到二进制再到IP。连接您的团队,让他们更快地行动,更好地构建。 通过 Perforce 版本控制加速创新 Perforce H…

史上最严重的10起勒索软件攻击

与今天的勒索软件攻击相比,世界上首起勒索软件攻击简直就是小菜一碟。 1989年,出席世界卫生组织(WHO)艾滋病会议的数千名与会者回到家中,结果在自家的邮箱软盘里发现了一份关于感染艾滋病毒可能性的调查问卷&#xff…

手机能搜到某个wifi,电脑搜不到解决方法(也许有用)

方法一:更新驱动 下载驱动大师、驱动精灵等等驱动软件,更新网卡驱动 方法二 按 win 键,打开菜单 搜索 查看网络连接(win11版本是搜这个名字) 点击打开是这样式的 然后对 WLAN右击->属性->配置->高级 这…

等保二级测评国家收费标准是多少?统一的吗?

目前我国等保分为五个级别,不同级别要求和费用也不同。有小伙伴在问,等保二级测评国家收费标准是多少?统一的吗?这里就来给大家简单回答一下,仅供参考! 等保二级测评国家收费标准是多少?统一的吗…

RabbitMQ消息可靠性保证机制--发送端确认

发送端确认机制 ​ RabbitMQ后来引入了一种轻量级的方式,叫发送方确认(publisher confirm)机制,生产者将信息设置成confirm(确认)模式,一旦信道进入了confirm模式,所有在该信道上面发送的消息都会被指派成…

python使用uiautomator2操作真机

测试环境:win10 64位,python3.10.4;真机,荣耀10青春版,Android版本10。 之前是在手机模拟器上操作的,参考我的文章python使用uiautomator2操作雷电模拟器_小小爬虾的博客-CSDN博客 一、将手机设置为开发者…

任务执行大数据量与高并发方案

大数据量高并发任务解决方案 场景 每个任务有十万条以上的数据,任务执行过程中对这些数据逐条做分析处理。 在同一段时间,会出现任务高并发执行,导致内存溢出 解决方案 1、分批处理 任务执行过程中,不一次性读取全量数据&…

将切分的图片筛选出有缺陷的

将切分的图片筛选出有缺陷的 需求代码 需求 由于之前切分的图像有一些存在没有缺陷,需要再次筛选 将可视化的图像更改后缀 更改为xml的 可视化代码 可视化后只有7000多个图像 原本的图像有1W多张 代码 # 按照xml文件删除对应的图片 # coding: utf-8 from P…

Java比较器之equals、comparable、comparator

文章目录 前言一、基本类型比较1.2.equals3.和equals的区别 二、对象的比较1.覆写基类的equals2.基于Comparable接口类的比较3.基于Comparator比较器比较4.三种方式对比 前言 在Java中,基本类型的对象可以直接比较,而自定义类型,默认是用equ…

秋招面经记录

秋招面经记录 MySQLRedis项目分布式框架java网络数据结构设计模式HR手撕 MySQL Mysql中有1000万条数据,每次查询10条,该如何优化(答:Limit子查询优化) select t.* from t_topic t LIMIT 90000,10; 对上面的mysql语句说…

【Java 进阶篇】数据定义语言(DDL)详解

数据定义语言(DDL)是SQL(结构化查询语言)的一部分,它用于定义、管理和控制数据库的结构和元素。DDL允许数据库管理员、开发人员和其他用户创建、修改和删除数据库对象,如表、索引、视图等。在本文中&#x…

【C++杂货店】类和对象(上)

【C杂货店】类和对象(上) 一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1 访问限定符4.2 封装 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储规则7.2 例题7.3结构体内存对齐规则 八、this指针8.2 t…

【Spring Cloud】认识微服务架构,拆分简单的 Demo 实现服务的远程调用

文章目录 前言一、认识微服务1.1 服务架构的演变:从单体到微服务单体架构分布式架构微服务架构 1.2 微服务技术的对比:Dubbo、Spring Cloud、Spring Cloud Alibaba技术对比公司需求的选择 1.3 Spring Cloud:微服务框架的精华什么是 Spring Cl…

【Vue.js】使用ElementUI实现增删改查(CRUD)及表单验证

前言: 本文根据上篇实现数据表格(查所有)完善增删改功能,数据表格》查看数据表格的实现链接 一,增删改查 ①后端Controller(增删改查方法): package com.zking.ssm.controller;import com.zking.ssm.model.Book; import com.z…