elk7.9.1部署和简单使用

一、什么是ELK?

  • elasticsearch:日志的存储和分析
  • logstash:收集日志
  • kibana:日志的展示

二、为什么要用ELK

  • 开发人员不能登录生产服务器查看日志
  • 很多服务都是分布式,有多节点,查询日志非常不方便
  • 可以会产生大量的io,可能会占用大量的io
  • 查询速度慢,不支持日志分析

三、ELK架构

  • filebeat用于手机和监控日志,将日志输出至logstash
  • logstash用于将收集来的日志进行过滤创建索引并输出至elasticsearch
  • elasticsearch用于将logstash输入的日志进行存储
  • kibana将从elasticsearch中取出数据,并展示

四、部署准备

1.下载地址与版本:

2.部署环境

系统:centos7.6

软件:

elasticsearch ip:172.18.97.30 2核4G

logstash+kibana ip:172.18.97.29 4核8G

filebeat 应用服务器

3.配置java环境

在官网找到要下载的jdk包

解压 tar fx jdk-8u151-linux-x64.tar.gz

修改环境变量:vim /etc/profile

  • export JAVA_HOME=/data/soft/jdk
  • export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
  • export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

让配置生效:source /etc/profile

注:elasticsearch+kibana均是java编写,需要java环境,两台均需要配置

五:部署elasticsearch

1.创建一个系统普通用户,启动时需要使用普通用户

useradd elsearch

echo "123456" | passwd --stdin elsearch

chown -R elsearch:elsearch /data/soft/elsearch

2.进入下载包的路径执行、

#解压

tar fx elasticsearch-7.9.1-linux-x86_64.tar.gz -C /data/soft/elsearch

#备份配置

cd /data/soft/elsearch/config

cp -a elasticsearch.yml elasticsearch.yml.bak

vim elasticsearch.yml

更改一下配置

  • # 集群的名称,各节点相同,否则找不到集群
  • cluster.name: test-elk
  • # 节点名称
  • node.name: node-30
  • # 数据存放的路径,普通用户需要有权限
  • path.data: /data/soft/elsearch/data
  • # 日志存放路径,普通用户需要有权限
  • path.logs: /data/soft/elsearch/logs
  • # 禁用swap,快速反应
  • bootstrap.memory_lock: false
  • # 绑定节点ip
  • network.host: 0.0.0.0
  • # 提供服务的端口
  • http.port: 9200
  • # 集群通信端口,一般为9300-9400
  • transport.port: 9300
  • # 集群中master的候选节点地址数组,可以配置ip+端口,或者节点名称node.name
  • # 如discovery.seed_hosts: ["172.16.10.184:9300", "172.16.10.185:9300"]
  • discovery.seed_hosts: ["172.18.97.30"]
  • # 集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量
  • discovery.zen.minimum_master_nodes: 1
  • # 集群初始master节点
  • cluster.initial_master_nodes: ["node-30"]
  • # 是否允许跨域
  • http.cors.enabled: true
  • # 允许的源地址
  • http.cors.allow-origin: "*"
  • # 当前节点是master的候选节点,主节点cpu高一点,存储磁盘空间大一点
  • node.master: true # 本次搭建未用到,es只使用唯一节点
  • # 当前节点不是数据节点 ,false代表数据将不存在本节点
  • node.data: false
  • discovery.type=single-node 单节点会有引导检查,此配置会绕过检查

3.实例优化

jvm堆大小优化,一般设置为内存的一半

sed -i 's/-Xms1g/-Xms2g/g' /data/soft/elsearch/config/jvm.options

sed -i 's/-Xmx1g/-Xmx2g/g' /data/soft/elsearch/config/jvm.options

4.系统优化

4.1vim /etc/security/limits.conf

# 在文件最后添加内容如下

* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

解释:

soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。 hard xxx : 代表严格的设定,不允许超过这个设定的值。 nofile : 是每个进程可以打开的文件数的限制 nproc : 是操作系统级别对每个用户创建的进程数的限制

4.2 vim /etc/sysctl.conf

#添加如下 vm.max_map_count=262144 #elasticsearch用户拥有的内存权限太小,至少需要262144; vm.swappiness=0 #表示最大限度使用物理内存,在内存不足的情况下,然后才是swap空间

5.启动elasticsearch

su - elasticsearch

cd /data/soft/elastic/bin/

./elasticsearch -d

访问试试ip+9200

看到这个说明成功了。

五、logstash部署

1.基于java使用,先搭建java环境,同elasticsearch

(略)

2.tar fx logstash-7.9.1.tar.gz -C /data/soft/logstash/

3.配置

在config下建一个conf.d的文件

cd /data/soft/logstash/config

mkdir conf.d

vim logstash.yml

++++++++++++++++++++++++++++++++++++++++++++++++++

# 接收filebeat传过来的日志数据

input {

beats {

port => "5044"

}

}

# 输出数据,先输出到控制台

output {

stdout{codec => rubydebug}

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

等安装filebeat后测试

六、filebeat部署

filebeat需要部署在应用服务器上,是一个轻量级的插件,监控日志的动态,并收集发送给logstash,也可以直接发送给elasticsearch,当然可以发送至kafka、redis中,然后logstash去其中取数据,此次不涉及,主要安装将数据传给logstash。

将filebeat放入应用服务器中,此次使用tomcat演示

1.解压

tar fx filebeat-7.9.1-linux-x86_64.tar.gz -C /data/soft/filebeat/

2.备份配置文件

cd /data/soft/filebeat/

cp -a filebeat.yml filebeat.yml.bak

3.修改配置

vim /etc/filebeat.yml

  • # 类型为log类型,低版本是可以自定义的现在只能使用定义好的类型
  • - type: log
  • # 设置为启动,否则不会向外输出日志
  • enabled: true
  • # 日志的路径 ,可以正则匹配多个日志文件
  • paths:
  • - /usr/local/tomcat/logs/catalina.out
  • # 添加一个tags,用于区分服务来创建响应的索引
  • tags: ["usersystem"]
  • # 多行匹配,正则表示的是每行日志是以什么开头的,如以时间开头,写以下正则,后面以其他格式开头的,会并入到上一个匹配上的行中,日志报错时经常会打印好多at ……,就会并入一行中显示
  • multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}'
  • # 这个值如果为true 匹配上了,就代表新的一行,为false匹配上代表不是新的一行,具体看下官网,更难懂
  • multiline.negate: true
  • # 表示未匹配的行并入匹配的下一行前,或者是上一行行后
  • multiline.match: after
  •  
  • output.logstash
  • # 输出目标是logstash,可以写多个,可以部署多个logstash,以实际情况定
  • hosts: ["172.18.97.29:5044"]

注:当服务器上部署了不止一个服务,就主要重复写-type上面的配置

4. 启动logstash

找到logstash服务,进入logstash目录

cd /data/soft/logstash/bin

./logstash -f ../config/conf.d/logstash.yml

启动较慢等一会,

5.启动filebeat

cd /data/soft/filebeat

./filebeat -c filebeat.yml -e

6.查看logstash输出

控制台输出这个就对了

7.修改logstash配置

input {

beats {

port => "5044"

}

}

output {

if "usersystem" in [tags] {

elasticsearch{

hosts => ["172.18.97.30:9200"]

index => "usersystem-%{+YYYY.MM.dd}"

}

}

stdout{codec => rubydebug}

}

if 是判断标签中的信息来区分服务,elasticsearch是为了将日志输入到es中,index是定义索引名称

8.重启并后台启动

ps -ef | grep logstash

kill -9 ***

nohup ./logstash -f /data/soft/logstash/config/conf.d/logstash.yml &

七.kibana的安装

1.安装和配置 [root@head-kib ~]# tar zvxf kibana-7.9.1-linux-x86_64.tar.gz -C /data/soft/ [root@head-kib ~]# cd /data/soft/kibana/kibana-7.9.1-linux-x86_64/config/ [root@head-kib config]# vim kibana.yml #在末尾添加以下内容 server.port: 5601

server.host: "0.0.0.0"

server.name: "kibana-29"

elasticsearch.hosts: ["http://172.18.97.30:9200"]

i18n.locale: "zh-CN" kibana.index: ".kibana" ==================================================================================== server.port # kibana 服务端口,默认5601 server.host # kibana 主机IP地址,默认localhost elasticsearch.url # 用来做查询的ES节点的URL,默认http://localhost:9200 kibana.index # kibana在Elasticsearch中使用索引来存储保存的searches, visualizations和dashboards,默认.kibana

i18n.locale: "zh-CN" # 使用中文

2.访问kibana 地址

ip:5601如下图

索引管理等由此入口进入

创建索引模式

根据logstash中定义的索引名称进行创建

在discover中寻找创建的索引

就可以看到日志了

注:还有很多细节没有写出,可自行研究下,可在dashboard中添加图表来进行日志分析等操作

采坑指南:

1.es启动报错:

org.elasticsearch.discovery.MasterNotDiscoveredException异常解决

#记得写这条

cluster.initial_master_nodes: ["node-30"]

2.logstash中不要有大写索引名称会报错,也就是说我们定义tags的时候尽量用小写

猜你喜欢

转载自blog.csdn.net/weixin_47402482/article/details/108886584