ELK搭建实战

ELK搭建实战,第1张

ELK搭建实战 准备工作 下载并安装公共签名密钥
rpm --import  https://artifacts.elastic.co/GPG-KEY-elasticsearch
设置repo内容
vim    /etc/yum.repos.d/elasticsearch.repo
在repo中添加如下内容
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Java环境安装

elasticsearch 需要java环境支持,执行如下命令

安装java 环境yum install java -y版本低直接安装9.0 去镜像网站下载jdk
cd /usr/local
wget https://repo.huaweicloud.com/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz
tar -zxvf jdk-9.0.1_linux-x64_bin.tar.gz 

配置JAVA_HOME
vi /etc/profile

内容如下:

export JAVA_HOME=/usr/local/jdk-9.0.1
export JRE_HOME=/usr/local/jdk-9.0.1/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

使修改生效

source /etc/profile

查看是否安装成功

java -version

验证是否安装好
java -version
Elasticsearch 安装和配置

安装

yum -y install elasticsearch

报错

解决

##设置为自启动

systemctl enable elasticsearch

配置
配置文件路径:/etc/elasticsearch/elasticsearch.yml

核心参数
# 配置文件都在 /etc/elasticsearch/ 目录下
vim /etc/elasticsearch/elasticsearch.yml

# 集群名称
cluster.name: jhxxb
# 节点名称
node.name: node-1
# 数据文件与日志文件存放目录
path.data: /home/esData/es
path.logs: /home/esData/log
# 网络设置
network.host: 0.0.0.0
http.port: 9200
# 集群设置
cluster.initial_master_nodes: ["node-1"]


# 修改配置中目录的用户与用户组,不然无法启动
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch
命令介绍
  1. 启动
    systemctl start elasticsearch.service
  2. 停止
    systemctl stop elasticsearch.service
验证
curl -X GET http://localhost:9200

输出结果如下

{
  "name" : "node-1",
  "cluster_name" : "app-log",
  "cluster_uuid" : "oVk4kUzKTCOsc2zaViOMXA",
  "version" : {
    "number" : "6.8.13",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "be13c69",
    "build_date" : "2020-10-16T09:09:46.555371Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
Logstash 安装

第一步已经设置repo所以可直接安装,如果没有需自行按照第一步设置

安装
yum -y install logstash

手动添加systemd服务

/usr/share/logstash/bin/system-install

完成后会创建脚本/etc/systemd/system/logstash.service
启动:

systemctl start logstash


出现这个错误则需要生成lgstash.service文件

sudo /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd


原因:这是由于jdk版本太低造成的,jdk版本需要在9.0以上,因此需要重新安装jdk。
查看状态

tail -f /var/log/messages查看系统日志

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000083e80000, 1366294528, 0) failed;

原因就是内存无法分配的问题 (这要看遇到的具体是什么了)

现执行命令 free -m 查看内存是不是还有 最主要的是 看有没有交换空间 swap (这很重要)如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间

(1)、创建swapfile:

root权限下,创建swapfile # dd if=/dev/zero of=swapfile bs=1024 count=500000 (有时会遇到dd命令不识别 可能是你安装过一次了 没事 先把swapfile删除就ok了)

(2)、将swapfile设置为swap空间

 mkswap swapfile

(3)、启用交换空间,这个 *** 作有点类似于mount *** 作(个人理解):

swapon  swapfile (删除交换空间 swapoff swapfile)

至此增加交换空间的 *** 作结束了,可以使用free命令查看swap空间大小是否发生变化;

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release

解决办法是修改jvm.options文件配置vim /etc/logstash/jvm.options,将

-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC
自启动
systemctl enable logstash

配置放在后面讲,和FileBeat一起讲更容易理解

Kibana 安装和配置 安装

第一步 有的话这部省略直接安装

# 下载并安装公共签名密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 添加源
vim /etc/yum.repos.d/kibana.repo

[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# 安装
yum install -y kibana

# 配置
vim /etc/kibana/kibana.yml

server.host: "0.0.0.0"
# 不要用 127.0.0.1,可能会提示 Kibana server is not ready yet
elasticsearch.hosts: ["http://192.168.8.41:9200"]
i18n.locale: "zh-CN"


# 刷新服务配置
systemctl daemon-reload
# 开机自启
systemctl enable kibana.service
# 启动
systemctl start kibana.service
# 查看状态
systemctl status kibana.service

默认端口为 5601 浏览器ip:5601

设置自动启
systemctl enable kibana
安装redis FileBeat 安装和配置 安装
yum  -y install  filebeat 
设置自启动
systemctl enable filebeat

配置
配置路径:/etc/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /xxxx/dispatch.log
  fields:
    log_source: jobs


output.redis:
  hosts: ["xxxxxyyyyyzzzz.redis.rds.aliyuncs.com"]
  port: 6379
  db: 2
  timeout: 5
  key: "logstash_list"


processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

注解:FileBeat 是转发日志内容到指定的管道对象(这里使用的是阿里云的redis),其中需要注意的是 log_source 这个是我自定义的日志来源,方便后面Logstash进行日志处理。上面的配置就是讲 日志 放到 redis队列中,队列叫做:logstash_list
启动

systemctl start filebeat
Logstash 配置

配置
前面说过,关于Logstash的配置放到FileBeat安装之后,这个没有先后顺序,只是方便大家理解 才专门单独放到后面讲解。FileBeat 将 日志放到了redis中。那么Logstash就要从redis中取出数据。

配置路径:/etc/logstash/conf.d/log.conf

input {
  redis {
    data_type => "list"
    key => "logstash_list"
    host => "xxxxxyyyyyzzzz.redis.rds.aliyuncs.com"
    port => 6379
    db => 2
  }
}

filter {

    if "cleared" in [message] or "运行时间未到" in [message] or "DEBUG 运行命令" in [message] {
       ### 丢弃
       drop{}
    }
    
    if "yii queue" in [message] and "start" in [message] {
       drop{}
    }
    
    
    if "jobs" == [fields][log_source] {
    
      grok {
            match =>{
              "message" => "job_id:%{NUMBER:job_id}"
            }
        }
    
    }
    
    
    
    
    mutate {
      remove_field => ["@version","[beat][name]","[beat][hostname]","[beat][version]","[host][architecture]","[host][containerized]","[host][id]","[host][os][codename]","[host][os][family]","[host][os][name]","[host][os][platform]","[host][os][version]","[meta][cloud][provider]","[prospector][type]","[log][file][path]","[input][type]","[meta][cloud][region]","http_version"]
    }

}

output {

  if "jobs" == [fields][log_source] {
    elasticsearch {
       hosts => ["localhost:9200"]
       index => "jobs-%{+YYYY.MM.dd}"
    }
  }
}

注解:

  1. 上面的input配置的和FileBeat同一个Redis配置,说明从Redis获取数据。
  2. filter 区域表示过滤处理,上面是根据我自己的业务进行日志丢弃(因为有些日志记录是没有意义的)。根据来源进行 数据匹配 然后单独存储更改值( 如下图,将message字段中的job_id 单独提取作为一个字段 )
  3. filter 中的 mutate 配置了删除一些字段,有些字段都一样,存在没意义,减少存储日志量

    output 配置中 判断来源,然后设置存储在Elasticsearch 中并且索引规则按照定义好的生成(如下图)


启动 systemctl start logstash

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5681966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存