ELK在线日志系统搭建

  • ElasticSearch安装
1、下载elasticsearch-7.4.0,解压安装包到路径/usr/local/elk下
tar -zxvf elk/elasticsearch-7.4.0-linux-x86_64.tar.gz -C /usr/local/elk/
  1. 创建用户并赋权
useradd es_user
groupadd esgroup
chown -R es_user:esgroup /usr/local/elk
3、修改ES配置文件:
vi /usr/local/elk/elasticsearch-7.4.0/config/elasticsearch.yml
以下是需要修改的内容:
#目录需要手动创建
path.data: /usr/local/elk/elasticsearch/data
path.logs: /usr/local/elk/elasticsearch/logs
#ES监听地址
network.host: 0.0.0.0   #允许外网个访问
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
4、创建数据和日志目录并修改权限
mkdir -pv /usr/local/elk/elasticsearch/{data,logs}
chown -R es_user:esgroup  /usr/local/elk/elasticsearch/
5、切换用户并后台启动ES,不能用root用户
su es_user
/usr/local/elk/elasticsearch-7.4.0/bin/elasticsearch &
  1. 遇到问题:
max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。
ES启动的时候回占用特别大的资源所以需要修改下系统参数,若不修改资源启动会异常退出。
修改max_map_count
sysctl -w vm.max_map_count=655360
查看max_map_count
sysctl -a|grep vm.max_map_count
ERROR: [1] bootstrap checks failed

[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

修改
elasticsearch.yml
取消注释保留一个节点
cluster.initial_master_nodes: ["node-1"]
这个的话,这里的node-1是上面一个默认的记得打开就可以了

重启 正常

 

二、Logstash安装

下载logstash安装包,姐要到usr/local/elk目录。

进入config目录,新建logstash-shopmall.conf

Vim logstash-shopmall.conf

添加以下内容

# Sample Logstash configuration for creating a simple

# Beats -> Logstash -> Elasticsearch pipeline.

 

input {

  tcp {

    mode => "server"

    host => "0.0.0.0"

    port => 4567

    codec => json_lines

  }

  tcp {

    mode => "server"

    host => "0.0.0.0"

    port => 4560

    codec => json_lines

  }

}

output {

  elasticsearch {

    hosts => ["http://localhost:9200"]

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

    user => "logstash_write"

    password => "elastic1234"

  }

}

 

启动logstash,进入bin目录

sh logstash -f ..\config\logstash-shopmall.conf

 

在项目中配置logstash日志推送

<!--  logStash推送应用名称设置 -->

<springProperty name="applicationName" source="spring.application.name"/>

<!--  logStash推送主机ip配置 -->

<springProperty name="logstash.host" source="logstash.host"/>

<!--  logStash推送端口配置 -->

<springProperty name="logstash.port" source="logstash.port"/>



<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

    <!--配置logStash 服务地址-->

    <destination>${logstash.host}:${logstash.port}</destination>

    <!-- 日志输出编码 -->

    <encoder charset="UTF-8"

             class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">

        <providers>

            <timestamp>

                <timeZone>UTC</timeZone>

            </timestamp>

            <pattern>

                <pattern>

                    {

                    "logLevel": "%level",

                    "serviceName": "${applicationName}",

                    "pid": "${PID}",

                    "thread": "%thread",

                    "class": "%logger{36}",

                    "message": "%msg",

                    "file": "%file",

                    "fileLocation": "%line"

                    }

                </pattern>

            </pattern>

        </providers>

    </encoder>

</appender>

 

三、Kibana安装

下载Kibana安装包,解压到usr/local/elk目录。

设置中文:进入config文件中修改kibana.yml文件:i18n.locale: "zh-CN"

进入bin目录,启动kibana

 

  • 安全配置

1、ElasticSear密码配置

   版本: elasticsearch-7.4.0(6.2或更早版本需要安装X-PACK, 新版本已包含在发行版中)

   修改:elasticsearch.yml

新增以下配置

xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

  保存后重启ES,进入bin目录,输入”sh elasticsearch-setup-passwords interactive”初始化密码

Initiating the setup of passwords for reserved users elastic,kibana,logstash_system,beats_system.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
passwords must be at least [6] characters long
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Passwords do not match.
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [elastic]

  内置三个用户:

  elastic:内置超级用户

  kibana:仅可用于kibana用来连接elasticsearch并与之通信, 不能用于kibana登录,登录kibana请使用elastic用户。

  logstash_system:用于Logstash在Elasticsearch中存储监控信息时使用,在logstash配置连接elasticsearch中也请使用elastic用户

修改密码命令

curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'

2、Kibana配置

   在kibana.yml中配置用户名和密码

   elasticsearch.username: "kibana"

elasticsearch.password: "*****"

server.host: "0.0.0.0" #设置外网可以访问

   账号密码为es初始化中设置的密码

   重启kibana

   输入http://ip:5601打开登录页面,使用elastic账号登录,并在角色和用户管理中添加用户指定 索引用于访问ES.

3、Logstash配置

在logstash.yml中配置用户名和密码

xpack.monitoring.enabled: true

xpack.monitoring.elasticsearch.username: logstash_system

xpack.monitoring.elasticsearch.password: *****

xpack.monitoring.elasticsearch.hosts: ["http://ip:9200"]

  在logstash指定的启动文件中加上具有索引权限的账号(登录kibana后创建的用户),参照

四、Kibana使用

第一步,打开Management

第二步,选择IndexPatterns

点击Ccreate index pattern

输入索引名,点击下一步

创建索引模式后,选择Discover

选择对应索引库,查看日志