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

简介: 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 消耗较大,每台安装进行收集的话成本会比较高,我们后面可以引用一些 队列 或其他 收集程序 进行优化。

参考资料

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1055 64
搭建ELK日志收集,保姆级教程
|
11月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
811 90
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
11月前
|
网络安全
window系统下安装elk
本文介绍了Elasticsearch、Logstash和Kibana(统称ELK栈)8.17.3版本的安装与配置流程。主要内容包括: - **Elasticsearch**:详细描述了从下载到启动服务的步骤,以及`elasticsearch.yml`的关键配置项,并提供了Postman操作示例及常见问题解决方案。 - **Logstash**:涵盖了插件安装、配置文件`logstash.conf`编写及其启动命令。 - **Kibana**:讲解了下载、配置`kibana.yml`和启动过程,确保与Elasticsearch正确连接。
|
存储 监控 安全
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4301 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
9月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
953 54
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
433 9
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
925 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log