• CentOS7安装elk


    一、安装Elasticsearch

    1.1 安装Java

    # 系统版本
     cat /etc/redhat-release 
    CentOS Linux release 7.5.1804 (Core) 
    
      uname -r
    3.10.0-862.el7.x86_64
    
    
      yum -y install java
      java -version
    openjdk version "1.8.0_212"
    OpenJDK Runtime Environment (build 1.8.0_212-b04)
    OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

    1.2 安装Elasticsearch

    • 关闭防火墙
    systemctl disable firewalld
    • 关闭selinux
    vim /etc/sysconfig/selinux 
    SELINUX= Enforcing # <== 修改为 disabled, 重启系统生效
    • 官方文档
    https://www.elastic.co/guide/en/elasticsearch/reference/6.5/rpm.html#install-rpm
    • 下载并安装公共签名秘钥

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    • 从RPM存储库安装

    在/etc/yum.repos.d/创建一个elasticsearch.repo文件,文件内容如下:

    vim /etc/yum.repos.d/elasticsearch.repo
    
    [elasticsearch-6.x]
    name=Elasticsearch repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    • yum安装ElasticSearch

    yum install elasticsearch -y
    • 启动Elasticsearch
    systemctl daemon-reload
    systemctl enable elasticsearch.service
    • 启动/停止Elasticsearch
    systemctl start elasticsearch.service
    systemctl stop elasticsearch.service
    • Elasticsearch服务运行状态
    systemctl status elasticsearch.service

    Elasticsearch日志存储在/var/log/elasticsearch/目录下

    •  检查Elasticsearch是否正在运行

    [root@localhost ~]# curl http://localhost:9200
    {
      "name" : "O2pObfg",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "uXvFw1fgR1iTduPf1d-MAw",
      "version" : {
        "number" : "6.7.1",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "2f32220",
        "build_date" : "2019-04-02T15:59:27.961366Z",
        "build_snapshot" : false,
        "lucene_version" : "7.7.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }

    1.3 配置Elasticsearch

    Elasticsearch默认使用/etc/elasticsearch运行时配置

    默认Elasticsearch从文件/etc/elasticsearch/elastisearch.yml加载配置。

    [root@localhost ~]# ll -lrht /etc/elasticsearch/
    total 36K
    -rw-rw----. 1 root elasticsearch    0 Apr  3 00:07 users_roles
    -rw-rw----. 1 root elasticsearch    0 Apr  3 00:07 users
    -rw-rw----. 1 root elasticsearch  197 Apr  3 00:07 roles.yml
    -rw-rw----. 1 root elasticsearch  473 Apr  3 00:07 role_mapping.yml
    -rw-rw----. 1 root elasticsearch  13K Apr  3 00:07 log4j2.properties
    -rw-rw----. 1 root elasticsearch 3.6K Apr  3 00:07 jvm.options
    -rw-rw----. 1 root elasticsearch 2.9K Apr  3 00:07 elasticsearch.yml
    -rw-rw----. 1 root elasticsearch  207 Apr 28 14:16 elasticsearch.keystore
    • 配置Elasticsearch数据路径和日志目录:

    官方文档:

    https://www.elastic.co/guide/en/elasticsearch/reference/6.5/settings.html

    https://www.elastic.co/guide/en/elasticsearch/reference/6.5/important-settings.html

    # 创建Elasticsearch数据目录及日志目录
    mkdir /opt/elasticsearch/{data,log}/ -pv
    cd /opt/
    chown -R elasticsearch:elasticsearch elasticsearch/
    
    cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_`date +%Y%m%d_bak`
    
    vim /etc/elasticsearch/elasticsearch.yml
    # Elasticsearch 节点名称
    node.name: node-1
    #数据
    path.data: /opt/elasticsearch/data/
    # 日志
    path.logs: /opt/elasticsearch/log/
    
    # 内存锁定,将进程地址空间锁定在RAM中,防止任何Elasticsearch内存被换出 
    bootstrap.memory_lock: true
    
    # 监听地址
    network.host: 192.168.198.130
    # 监听端口
    http.port: 9200
    
    # 查看修改了那些配置 grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
    node.name: node-1
    path.data: /opt/elasticsearch/data/
    path.logs: /opt/elasticsearch/log/
    bootstrap.memory_lock: true
    network.host: 192.168.198.130
    http.port: 9200
    • 配置JVM

    Jvm配置文件/etc/elasticsearch/jvm.options

    -Xms2g
    -Xmx2g
    • 文件句柄配置

    官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/setting-system-settings.html

    ulimit -n 65536
    tail -1 /etc/security/limits.conf 
    
    elasticsearch  -  nofile  65536
    • 系统配置

    官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/setting-system-settings.html

    vim /usr/lib/systemd/system/elasticsearch.service
    
    
    [Service]        # <== 在此标签下添加
    LimitMEMLOCK=infinity
    
    # 重新加载
    systemctl daemon-reload
    • 虚拟内存

    官方文档:

    https://www.elastic.co/guide/en/elasticsearch/reference/6.5/vm-max-map-count.html

    临时配置:

    sysctl -w vm.max_map_count=262144

    永久配置:/etc/sysctl.conf

    tail -1 /etc/sysctl.conf
    vm.max_map_count=262144
    sysctl -p

    二、安装Logstash

    • 官方文档

    https://www.elastic.co/guide/en/logstash/6.5/installing-logstash.html

    • 下载并安装公共签名和密钥

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    • 在/etc/yum.repos.d/目录下新建logstash.repo文件,文件内容如下:

    [logstash-6.x]
    name=Elastic repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    • yum安装logstash
    yum -y install logstash

    三、安装Kibana

    • 官方文档

    https://www.elastic.co/guide/en/kibana/6.5/rpm.html

    • 下载并安装公共签名和密钥

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    • 在/etc/yum.repos.d/目录下,创建kibana.repo,文件内容如下:

    [kibana-6.x]
    name=Kibana repository for 6.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    • yum 安装kibana
    yum install kibana
    • 启动/停止kibana
    systemctl daemon-reload
    systemctl enable kibana.service
    systemctl start kibana.service
    systemctl stop kibana.service
    • 配置kibana

    Kibana配置文件在/etc/kibana/目录下的kibana.yml。默认kibana运行localhost:5601

    [root@localhost ~]# grep '^[a-z]' /etc/kibana/kibana.yml 
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://192.168.198.130:9200"]
    kibana.index: ".kibana"

    四、安装Filebeat

    • 官方文档

    https://www.elastic.co/guide/en/beats/filebeat/5.5/setup-repositories.html

    https://www.elastic.co/guide/en/beats/filebeat/6.5/configuring-output.html

    • 下载并安装公共签名和密钥
    rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    • 在/etc/yum.repos.d/目录下创建filebeat.repo文件,文件内容如下:

    [elastic-6.x]
    name=Elastic repository for 5.x packages
    baseurl=https://artifacts.elastic.co/packages/6.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    •  yum安装filebeat

    yum -y install filebeat

    #  filebeat记录读取文件位偏移 /var/lib/filebeat/registry

    五、安装Redis

    参考:https://www.cnblogs.com/hwlong/p/9330191.html 

    https://www.cnblogs.com/hwlong/p/6101019.html

    wget http://download.redis.io/releases/redis-3.2.12.tar.gz
    上传至 /usr/local
    tar xzf redis-3.2.12.tar.gz
    mv redis-3.2.12 redis
    cd redis
    make
    src/redis-server &

    六、Filebeat+Redis+Logstash+Elasticsearch+Kibana

    6.1 配置Filebeat

    filebeat.prospectors:
    
    
    - input_type: log
      paths:
        - /data/logs/localhost.localdomain.*.log
      exclude_files: [".gz$"]
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
      tags: ["localhost-localdomain"]
      document_type: localhost-localdomain
    
    
    - input_type: log
      paths:
        - /data/logs/localhost.localdomain-error.*.log
      exclude_files: [".gz$"]
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
      tags: ["localhost-localdomain-error"]
      document_type: localhost-localdomain-error
    
    
    
    
    fields:
      ipaddr: '192.168.198.131'   # <== filebeat本机IP
    fields_under_root: true
    
    
    output.redis:
      hosts: ["192.168.198.130"]        # <== redis地址
      port: 6379
      key: "default_list"
      keys:
        - key: "%{[type]}"                # <== 根据document_type类型写入不同的key中
          mapping:
          "localhost-localdomain": "localhost-localdomain"
          "localhost-localdomain-error": "localhost-localdomain-error"
     
      db: 0
      datatype: list
      timeout: 5
      
    
    
    processors:
      - drop_fields:
           fields: ["offset","beat","source","input"]
    • 启动filebeat
    systemctl status filebeat

    6.2 配置logstash.conf

    input {
    
      redis {
         host => "192.168.198.130"
         port => "6379"
         db => "0"
         data_type => "list"
         key => "default_list"
         type => "default_list"
      }
      
      redis {
         host => "192.168.198.130"
         port => "6379"
         db => "0"
         data_type => "list"
         key => "localhost-localdomain"
         type => "localhost-localdomain"
      }
     
      redis {
         host => "192.168.198.130"
         port => "6379"
         db => "0"
         data_type => "list"
         key => "localhost-localdomain-error"
         type => "localhost-localdomain-error"
      }
    
    
    
    }
    
    
    filter {
    
    }
    
    
    output{
       if [type] == "localhost-localdomain" {
    
           elasticsearch {
               document_type => "localhost-localdomain"
               hosts => ["192.168.198.130:9200"]
               index => "localhost-localdomain.log"
           }
       }
       
       if [type] == "localhost-localdomain-error" {
    
           elasticsearch {
               document_type => "localhost-localdomain-error"
               hosts => ["192.168.198.130:9200"]
               index => "localhost-localdomain-error.log"
           }
       }
    
    
      
    
    }
    • 启动logstash
    /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis-logstash-es.conf  &
  • 相关阅读:
    HTML常用标签及其属性
    初识Java
    JS中firstChild,lastChild,nodeValue属性
    前端网页进度Loading
    Git分支管理小结
    Vim文本编辑命令
    EF
    Linq
    委托(作用:解耦),lambda的演化
    单例模式
  • 原文地址:https://www.cnblogs.com/hwlong/p/5843137.html
Copyright © 2020-2023  润新知