1.ELK安装环境说明
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
本例子采用Elasticsearch7.9.2,Kibana7.9.2, logstash-7.9.2版本为例子讲解如何安装部署。安装包下载从官网就可以https://www.elastic.co/cn/
需要准备的安装文件列表:
jdk-8u261-linux-x64.rpm
elasticsearch-7.9.2-x86_64.rpm
kibana-7.9.2-x86_64.rpm
logstash-7.9.2.zip
nginx-1.18.0.tar.gz
操作系统版本为:CentOs7.3版本,JDK1.8
2.ELK架构说明
ELK 其实并不是一款软件,而是一整套解决方案,解决的问题主要是从日志收集到索引分类,以及搜索和界面展示的问题。ELK集群的结构如下图:
3.环境准备
操作系统需要先安装JDK,JDK1.8步骤安装请参考官方步骤,本文忽略此步骤说明。
装好以后,验证命令:
java -version
输出为:
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
检查防护墙,停止默认防火墙。输入如下命令:
systemctl stop firewalld
服务器IP:
ELK1节点:192.168.119.128
ELK2节点:192.168.119.134
ELK3节点:192.168.119.135
Nginx节点:192.168.119.130
Logstash节点:192.168.119.130
Kinana安装在128节点上。
为了简化服务器的数据量,实际只安装了一台logstash节点。nginx和logstash共享了一台主机。Kinana也和ELK1节点共享了一台主机。
4.安装Elasticsearch
登录192.168.119.128,上传安装包:elasticsearch-7.9.2-x86_64.rpm
4.1安装步骤:
rpm --install elasticsearch-7.9.2-x86_64.rpm
4.2修改配置文件
vi /etc/security/limits.conf
新增内容如下:
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
vi /etc/sysctl.conf
vm.max_map_count=655360
fs.file-max=655360
执行命令sysctl -p ,让配置生效
修改elastic配置文件
vi /etc/elasticsearch/elasticsearch.yml
修改data存放的路径
path.data: /var/lib/elasticsearch
修改logs日志的路径
path.logs: /var/log/elasticsearch/
监听的网络地址
network.host: 0.0.0.0
初始化主节点
cluster.initial_master_nodes: ["elk-1", "elk-2"]
开启监听的端口
http.port: 9200
找到配置文件中的cluster.name,打开该配置并设置集群名称
cluster.name: mycluster
找到配置文件中的node.name,打开该配置并设置节点名称
node.name: elk-1
# 配置集群中,选举的节点
discovery.seed_hosts: ["192.168.119.128", "192.168.119.134","192.168.119.135"]
192.168.119.134,192.168.119.135节点的安装步骤一样,配置文件除了节点名其他也是一样的。
注意 /etc/elasticsearch/elasticsearch.yml中需要修改的是:node.name: 的配置
134节点修改成
node.name: elk-2
135节点修改成
node.name: elk-3
4.3启动服务
3个节点分别启动elasticsearch
systemctl start elasticsearch.service
4.4停止服务
systemctl stop elasticsearch.service
4.5验证:
curl http://192.168.119.128:9200/
curl http://192.168.119.134:9200/
curl http://192.168.119.135:9200/
可能的返回结果:
{
"name" : "localhost",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "C1rp3FCmRduPQF9Z9RzSrw",
"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"
}
验证集群状态命令:
curl http://192.168.119.128:9200/_cluster/health
curl http://192.168.119.134:9200/_cluster/health
curl http://192.168.119.135:9200/_cluster/health
可能的返回结果(status值不是green表示集群不正常):
{"cluster_name":"mycluster","status":"green","timed_out":false,"number_of_nodes":3,"number_of_data_nodes":3,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}
5.安装Nginx
Nginx安装步骤请参考官方文档。Nginx在192.168.119.130上安装
nginx_ela.conf 配置文件内容:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream n9200 {
server 192.168.119.128:9200;
server 192.168.119.134:9200;
server 192.168.119.135:9200;
}
server {
listen 9200;
proxy_pass n9200;
}
}
启动Nginx
/usr/local/nginx/sbin/nginx -c /opt/nginx_ela.conf
6.安装Kibana
登录192.168.119.128,上传安装包:kibana-7.9.2-x86_64.rpm
6.1安装步骤
rpm --install kibana-7.9.2-x86_64.rpm
6.2修改配置文件
vi /etc/kibana/kibana.yml
开启监听的端口
server.port: 5601
监听的网络地址
server.host: "0.0.0.0"
elasticsearch的网络地址
elasticsearch.hosts: ["http://192.168.119.130:9200"]
kibana的索引值
kibana.index: ".kibana"
6.3启动
systemctl start kibana.service
6.4停止
systemctl stop kibana.service
6.5验证
访问网站 http://192.168.119.128:5601,可以看到页面如下图:
7.安装日志节点的logstash
下面需要添加监控日志的节点。下面我以130节点的tomcat日志为例,展示如何添加日志收集的节点。
130机器上已经安装好tomcat8,安装步骤忽略。需要收集的日志是:/opt/tomcat8/logs/localhost_access_log.*.txt
登录192.168.119.130,上传安装包:logstash-7.9.2.zip
7.1 安装步骤
unzip logstash-7.9.2.zip
mv logstash-7.9.2 /opt/logstash-7.9.2
7.2 编辑tomcat服务的日志收集配置
# vi /opt/tomcat.conf
输入如下内容:
input {
file {
path => "/opt/tomcat8/logs/*.txt"
type => "tomcat"
}
}
output {
if [type] == "tomcat" {
elasticsearch {
hosts => ["192.168.119.130:9200"]
index => "tomcat130-%{+YYYY.MM.dd}"
}
}
}
7.3启动日志收集
/opt/logstash-7.9.2/bin/logstash -f /opt/tomcat.conf &
7.4 登录Kibana,查看数据
访问网站 http://192.168.119.128:5601
点击Connect to your Elasticsearch index,创建一个新的索引模式:
点击Create按钮:
输入tomcat*,点击Next step:
选择@timestamp ,点击 create按钮:
然后点击,左上方的三的图标,点击 Discover:
选择索引中的tomcat*,就可以看到日志了:
如果没有数据,则需要启动tomcat服务,并且访问tomcat的页面,并且随便点击几下。
回到Kibana就可以看见数据了。