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/
- 创建用户并赋权
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 &
- 遇到问题:
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
选择对应索引库,查看日志