ELK7.x日志系统搭建 1. elk基础搭建

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ELK7.x日志系统搭建 1. elk基础搭建

ELK7.x日志系统搭建 1. elk基础搭建

基本介绍

什么是 ELK ? 通俗来讲, ELK 是由 ElasticsearchLogstashKibana 三个开源软件组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,他们组成了一套完整的日志系统的解决方案。

  • Logstash 对各个服务的日志进行采集、过滤、推送。
  • Elasticsearch 存储 Logstash 传送的结构化数据,提供给 Kibana
  • Kibana 提供用户 UIweb 页面进行,数据展示和分析形成图表等。

环境介绍

暂时是准备了两个节点,版本均为7.6JDK是系统的 openJDK,系统为 ubuntu18.04

机器 安装程序
192.168.179.123 Es Logstash
192.168.179.124 Es Kibana Logstash

Elasticsearch集群配置

下载地址:https://mirrors.huaweicloud.com/elasticsearch/7.6.0/elasticsearch-7.6.0-linux-x86_64.tar.gz

修改配置

  • elasticsearch.yml
cluster.name: elk-application  #ELK的集群名称,名称相同即属于是同一个集群
node.name: node-5 #本机在集群内的节点名称 要在集群中唯一
path.data: /elk/data #数据存放目录
path.logs: /elk/logs #日志保存目录
network.host: 192.168.179.123 #监听的IP地址
http.port: 9200 #服务监听的端口
discovery.seed_hosts: ["192.168.179.124", "192.168.179.123"] # 提供集群中符合主机要求的节点的列表 服务发现种子主机
cluster.initial_master_nodes: ["192.168.179.124", "192.168.179.123"] # 可以成为master节点的机器 初始主节点
#开启 xpack 功能,如果要禁止使用密码,请将以下内容注释,直接启动不需要设置密码
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

各节点修改 config/jvm.options 文件的 -Xms4g-Xmx4g 为服务器的内存一半,我的服务器时 4G 内存,所以这里改成了 2G 。当然,这个值最大不要超过 32G 。因为没有意义,具体查阅文档

  • 创建es账号
useradd elastic
passwd elastic
mkdir -p /elk/{data,logs}
chown elasticsearch.elasticsearch /elk/ -R
chown elastic elasticsearch-7.6.0 -R

生成TLS 和身份验证

bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""

生成 TLS 和身份验证,将会在config下生成elastic-certificates.p12文件,将此文件传到其他节点的config目录,注意文件权限

启动集群,es 集群不启动,下面的添加密码操作执行不了。每个节点执行(我是在root用户下指定适用 elastic 用户启动的,如果是在elastic 用户下执行,请直接启动)

su - elastic -c "/elasticsearch-7.6.0/bin/elasticsearch -d"

创建 Elasticsearch 集群密码,有两种方式,使用第二种。在主节点上执行,我所有的密码都设置成了 123456

第一种: bin/elasticsearch-setup-passwords auto 各用户生成随机密码。

第二种: bin/elasticsearch-setup-passwords interactive 手动定义密码,可以设置如下图所示的用户密码。

bin/elasticsearch-setup-passwords interactive

设置密码后通过浏览器去流量就需要输入账号密码了,但是在修改集群密码的过程中有可能失败,错误如下:

Unexpected response code [503] from calling PUT http://192.168.179.124:19200/_security/user/apm_system/_password?pretty
Cause: Cluster state has not been recovered yet, cannot write to the [null] index
Possible next steps:
* Try running this tool again.
* Try running with the --verbose parameter for additional messages.
* Check the elasticsearch logs for additional error details.
* Use the change password API manually. 
ERROR: Failed to set password for user [apm_system].

解决:集群中的两台服务器需要同时设置,并全部重新启动

Kibana 配置

下载地址:https://mirrors.huaweicloud.com/kibana/7.6.0/kibana-7.6.0-linux-x86_64.tar.gz

  • vim config/kibana.yml
server.port: 5601
server.host: "192.168.179.124"
elasticsearch.hosts: ["192.168.179.124:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
  • 启动
sudo nohup ./bin/kibana --allow-root

使用我们的账号密码进行登录


在控制台查看集群状态


Logstash 配置

下载地址:https://mirrors.huaweicloud.com/logstash/7.6.0/logstash-7.6.0.tar.gz

配置kibana监控logstash

我们的 es 是开启了密码验证的,要想将数据推到 es 里面,需要进行配置,密码尽量不使用明文

./bin/logstash-keystore create

上面的命令将创建一个 Created Logstash keystore

我们可以利用如下的命令来创建一些key: ES_HOSTES_PWD

./bin/logstash-keystore add ES_HOST   # http://192.168.179.124:9200/
./bin/logstash-keystore add ES_PWD    # 123456
  • logstash.yml
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: "${ES_PWD}"
xpack.monitoring.elasticsearch.hosts: ["${ES_HOST}"]
mkdir conf.d
vi system-log.conf
######  配置文件  ######
input {
    file {
        path => "/var/log/syslog.1"    #日志路径
        type => "systemlog"            #类型,自定义,在进行多个日志收集存储时可以通过该项进行判断输出
        start_position => "beginning"        #logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有
数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,类似 less +F 的形式运行。
        stat_interval => "2"    #logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒
    }
}
output {
    elasticsearch {
        hosts => ["192.168.179.124:9200"]        #elasticsearch服务器地址
        user => "elastic"
        password => "${ES_PWD}"
        index => "logstash-%{type}-%{+YYYY.MM.dd}"    #索引名称
    }
}

同时,我们需要添加 hosts , userpassword 的定义。这是因为我们现在我们是需要有用户名及密码才可以连接到 Elasticsearch 。同时我们可以创建自己的用户名及密码。我们可以参考“Elasticsearch:用户安全设置”来创建自己喜欢的账号。在这里,为了方便,我们使用elastic账号。在这里,我们是用${ES_HOST}${ES_PWD}来代表我们的Elasticsearch地址及密码。这样的好处是我们不暴露我们的密码在配置文件中。

./bin/logstash -f conf.d/system-log.conf


启动后会每两秒去收集系统日志到 es ,然后监控里面也能看见 logstash


在kibana中查看收集到的数据

默认的话,我们只能看见 es 的集群和 kibana 的信息,我们为了方便可以把 logstash 也添加进来


测试的话:echo test-logstash >> /var/log/syslog.1,然后间隔一会就能看见命中次数改变了

现在我们完成了基本的数据收集,我们的预期是做一个高效率的日志系统,收集我们应用中的各种日志,方便我们查看和分析,例如:mysqlredisnginx框架日志集群日志系统日志等等,我们现在完成了第一步,算是搭建了一个基础的日志系统,在接下来我们慢慢完善这个系统。现在系统主要是利用 logstash 进行日志收集,但是 logstash 消耗较大,每台安装进行收集的话成本会比较高,我们后面可以引用一些 队列 或其他 收集程序 进行优化。

参考资料

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
25天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
1月前
|
存储 监控 安全
|
1月前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
109 2
|
2月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
64 1
|
2月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
64 3
|
2月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
40 4
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
70 0
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
49 0
|
3月前
使用装饰器实现自动化日志系统
使用装饰器实现自动化日志系统
27 0