ELK 部署

Posted 小小菜_v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK 部署相关的知识,希望对你有一定的参考价值。

ELK 部署指南

背景

	ELK是elasticsearch,logstash和kibana三个的首字母缩写。
	elasticsearch是搜索和分析引擎。
    logstash是服务器端数据处理管道,能从多个来源采集数据和转换数据,然后将数据发送到类似elasticsearch的存储库中。
    kibana则是可以让用户在elasticsearch中通过使用图形和图表数据进行可视化。

环境信息

操作系统: CentOS 7.6
软件版本: 7.13.2

1、jdk16安装

# 下载
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk16u-2021-05-08-12-45/OpenJDK16U-jdk_aarch64_linux_hotspot_2021-05-08-12-45.tar.gz

# 解压
tar -zxvf OpenJDK16U-jdk_aarch64_linux_hotspot_2021-05-08-12-45.tar.gz

# 导入环境变量
export JAVA_HOME=/opt/jdk-16.0.1+9
export PATH=$JAVA_HOME/bin:$PATH

2、系统参数配置

# 修改最大文件打开数
ulimit -n 102400
# 最大文件描述符限制
sysctl -w fs.file-max=102400
# 查看和修改 vm.max_map_count大小
sysctl -a|grep vm.max_map_count
sysctl -w vm.max_map_count=262144

3、elasticsearch下载安装

mkdir -p /home/tools
cd /home/tools
# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.2-linux-aarch64.tar.gz
解压
tar -zxvf elasticsearch-7.13.2-linux-aarch64.tar.gz
# 删除自带的jdk,使用jdk16
cd elasticsearch-7.13.2
rm -rf ./jdk/*
cp -r $JAVA_HOME/* ./jdk/
# 创建数据存储和日志目录
mkdir -p /home/elastic/data
mkdir -p /home/elastic/logs

# 修改elasticsearch配置
vim config/elasticsearch.yml
cluster.name: my-application
node.name: node-elk-001
path.data: /home/elastic/data
path.logs:  /home/elastic/logs
network.host: 180.80.80.199
http.port: 9200
discovery.seed_hosts: ["node-elk-001"]
cluster.initial_master_nodes: ["node-elk-001"]
xpack.ml.enabled: false

# 测试验证是否安装成功
# 添加elastic用户(elasticsearch不能用root用户启动)
useradd elastic
chown elastic:elastic /home/tools/elasticsearch-7.13.2 -R
chown elastic:elastic /home/elastic/ -R
#切换用户
su - elastic
#后台运行
nohup ./bin/elasticsearch &
# 连接
curl -l http://180.80.80.199:9200

出现如下代表运行成功

{
  "name" : "node-elk-001",
  "cluster_name" : "my-application",
  "cluster_uuid" : "MVCC3mI2RuOv******",
  "version" : {
    "number" : "7.13.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "4d960a0733be83dd2543ca018aa4ddc42e956800",
    "build_date" : "2021-06-10T21:01:55.251515791Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

4、kibana安装

cd /home/tools
# 下载软件
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz

cd kibana-7.8.0-linux-x86_64
# 打开文件修改配置
vi config/kibana.yml

server.port: 5601
server.host: "180.80.80.199"
server.name: "node-elk-001"
elasticsearch.hosts: ["http://180.80.80.199:9200"]
kibana.index: ".kibana"
xpack.security.enabled: false

# 下载node
cd /home/tools
wget https://nodejs.org/dist/v10.21.0/node-v10.21.0-linux-arm64.tar.gz
tar -xvf node-v10.21.0-linux-arm64.tar.gz

# 替换kibana 目录下的node
cd kibana-7.8.0-linux-x86_64
rm -rf node/*
cp -r /home/tools/node-v10.21.0-linux-arm64/* ./node

# 测试运行
nohup  ./bin/kibana &

5、logstash安装下载

登录到收集日志的服务器上180.80.80.166

cd /home/tools
# 下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.tar.gz
# 解压
tar -xvf logstash-7.8.0.tar.gz
cd logstash-7.8.0
# 创建目录
mkdir self_config
#修改文件
vi self_config/logstash.conf

logstash.conf

input {
	file {
		path => "/opt/log/sys_*.log"  #需要收集日志目录
		type => "django_log"  # 日志类别
		start_position => "beginning" # 开始读取数据的位置
		# 合并多行数据,日志开头不是[则和上一条合并
		codec=> multiline{
			pattern => "^\\["
			negate => true
			what => "previous"
		}
	}
}
# 提取日志日期到@timestamp字段,kibana只能以@timestamp字段为时间字段分割日志
filter {
	grok {
		# 匹配日志时间并赋值到log_time字段
		match => {"message" => "\\[(?<log_time>[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})\\]"}
	}
	date {
		# 匹配日期时间log_time 并赋值到tmp_time
		match => ["log_time", "yyyy-MM-dd HH:mm:ss,SSS"]
		target => "tmp_time"
	}
	# 若tmp_time不为空, 则复制到@timestamp,同时删除tmp_time字段
	if [tmp_time] {
		ruby {
			code => "event.set('@timestamp', event.get('tmp_time'))"
		}
		mutate {
			remove_field => ["tmp_time"]
		}
	}
}
output {
	if [type] == "django_log" {
		elasticsearch {
			# elasticsearch 服务器hosts
			hosts =>["180.80.80.199:9200"]
			# 上报日志索引,索引名只能小写,不能大写
			index => "django_log_166-%{+YYYY.MM.dd}"
		}
	}
	# stdout { codec => rubydebug } # 打印
}

测试运行

nohup ./bin/logstash -f self_config/logstash.conf -- config.reload.automatic &

6、FAO:

问题报错解决见链接:https://blog.csdn.net/qq_42352516/article/details/118083909?spm=1001.2014.3001.5502

以上是关于ELK 部署的主要内容,如果未能解决你的问题,请参考以下文章

ELK 部署步骤 最后 Filebeat+ELK

ELK 部署步骤 最后 Filebeat+ELK

ELK 部署步骤 最后 Filebeat+ELK

ELK===》ELK介绍Elasticsearch单节点部署Elasticsearch集群部署

ELK企业级日志分析系统概述及部署

ELK部署