01ELK 7.7 日志服务器搭建及配置

本文介绍了ELK Stack(Elasticsearch、Logstash、Kibana)的基础知识和工作流程,并详细展示了在CentOS 7.8服务器上安装部署ELK 7.7.1的步骤,包括环境配置、组件安装、配置文件修改以及服务启动。通过这个过程,可以实现对日志的收集、分析和可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. ELK 日志服务器搭建及配置

 

ELK介绍

什么是 ELK Stack?

很简单,指的就是 Elastic Stack。

 

那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

 

Elastic Stack 是 ELK Stack 的更新换代产品。

 

ElasticSearch:是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

 

Logstash:是一个具有实时渠道能力的数据收集引擎,主要用于日志的收集与解析,并将其存入 ElasticSearch中。与ElasticSearch有很高的适配性。

 

Kibana:是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。

 

官方网站:

https://www.elastic.co/cn/

 

elastic-stack产品官网:

https://www.elastic.co/cn/elastic-stack

 

官方演示地址:

https://demo.elastic.co/

 

 

工作流程:

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

 

 

环境:

因为我是做实验,所以只用了一台服务器,系统为 CentOS 7.8

,在服务器上安装 elasticsearch-7.7.1、kibana-7.7.1、logstash-7.7.1。

服务器:192.168.118.133

 

 

配置基础环境(全部安装)

1、关闭防火墙和seliunx

# systemctl stop firewalld && systemctl disable firewalld

 

# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config  && setenforce 0

 

2、设置打开文件数

vim /etc/security/limits.conf

 

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

 

vim /etc/sysctl.conf

vm.max_map_count=655360  #单个vm进程最大线程数量为改值的一半左右

 

执行以下命令使变动立即生效:

sysctl -p

 

 

安装配置jdk

[root@elk-175 ~]# yum install java-1.8.0-openjdk.x86_64 -y

[root@elk-175 ~]# 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)

 

 

更新时间:

yum install ntpdate -y

ntpdate time1.aliyun.com

 

 

 

ES安装部署

官网地址:

https://www.elastic.co/cn/elasticsearch/

https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html

 

ES官方安装教程:

https://www.elastic.co/guide/en/elasticsearch/reference/7.7/rpm.html

 

 

Import the Elasticsearch PGP Key

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

Installing from the RPM repository

vim /etc/yum.repos.d/elasticsearch.repo

 

Download and install the RPM manually

 

 

配置 elasticsearch.yml如下:

[root@localhost ~]# cat /etc/elasticsearch/elasticsearch.yml | grep "^[a-z]"

node.name: node-133

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 192.168.118.133

http.port: 9200

bootstrap.memory_lock: true

http.cors.enabled: true
http.cors.allow-origin: "*"

 

ES启动注意事项:

1、对于 network.host: 192.168.118.133 配置项

如果启动在127.0.0.1网卡的话,可以正常启动

ES要跨主机访问,需要监听在真实网卡上

监听真实网卡需要调整系统参数才能正常启动,否则不可以

ES监听在非 127.0.0.1 网卡上,如监听在 0.0.0.0 或 真实网卡地址上时,需要调整的系统参数有:

(1)、修改最大文件打开数

vim /etc/security/limits.conf

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

 

(2)、修改最大打开进程数

vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     4096

 

(3)、内核参数调整

vim /etc/sysctl.conf

vm.max_map_count=655360

修改完这个后需要用命令 sysctl –p 使修改生效

 

解决 bootstrap.memory_lock: true  报错:

需要设置下系统配置文件,首先要切换到root用户,接着做以下修改:

1、修改/etc/security/limits.conf

文件最后添加以下内容:

~]# vim /etc/security/limits.conf

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

* soft memlock unlimited

* hard memlock unlimited

 

# 其中,* 为运行程序的用户,可根据自己的用户进行更改

 

~]# vim /etc/sysctl.conf

vm.swappiness=0

 

~]# sysctl –p     #执行以下命令使变动立即生效

 

重启系统

 

2、修改/etc/systemd/system.conf

分别修改以下内容:

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

 

3、执行以下操作,立即生效

/bin/systemctl daemon-reload

 

 

# 第17行,打开该配置并设置集群名称,如 elk+ip后两位

cluster.name: elk-116.8

# 第23行,打开该配置并设置节点名称,如 node-ip后两位

node.name: node-116.8

# 第33行,打开该配置并设置data存放的路径

path.data: /home/elk/es/data

# 第37行,打开该配置并设置logs日志存放的路径

path.logs: /home/elk/es/logs

# 第55行,打开该配置并设置为监听的网络地址

network.host: 192.168.116.8

# 第59行,打开该配置并设置监听的端口

http.port: 9200

# 第68行,建议打开此配置,在启动此节点时,传递主机的初始列表以执行发现,单台机器只填写一个IP,多台机器使用填写多个IP,用逗号隔开。ip可以用主机名代替。

discovery.seed_hosts: ["192.168.116.8"]

# 第72行,建议打开此配置,使用初始的符合主机资格的节点集引导集群,填写节点名称即可。

cluster.initial_master_nodes: ["node-116.8"]

 

Running Elasticsearch with systemd

 

启动 elasticsearch 服务:

systemctl daemon-reload

systemctl enable elasticsearch.service

systemctl start elasticsearch.service

 

 

本地查看服务是否启动:

[root@localhost ~]# netstat -ntpl | grep 9200

tcp6 0 0 192.168.118.133:9200 :::* LISTEN 2326/java

 

通过浏览器登录,页面展示如下:

 

kibana安装部署

官网地址:

https://www.elastic.co/cn/elasticsearch/

https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html

 

kibana官方安装教程:

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

 

 

Import the Elasticsearch PGP Key

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

Installing from the RPM repository

vim /etc/yum.repos.d/kibana.repo

 

Download and install the RPM manually

 

Run Kibana with systemd

 

配置 kibana.yml如下:

[root@localhost ~]# cat /etc/kibana/kibana.yml | grep "^[a-z]"

server.port: 5601

server.host: "192.168.118.133"

server.name: "kibana-118.133"

elasticsearch.hosts: ["http://192.168.118.133:9200"]

i18n.locale: "zh-CN"

# 第7行,启用该配置,并修改为IP地址

server.host: "192.168.116.8"

# 第25行,启用该配置,并自定义服务名

server.name: "kibana-116.8"

# 第28行,启用该配置,并修改为ES的地址和端口

elasticsearch.hosts: ["http://192.168.116.8:9200"]

# 第115行,启用该配置,设置语言环境为中文

i18n.locale: "zh-CN"

 

启动 kibana 服务:

[root@localhost ~]# systemctl start kibana

 

本地查看服务是否启动:

[root@localhost ~]# netstat -atnop|grep 5601

tcp 0 0 192.168.118.133:5601 0.0.0.0:* LISTEN 2675/node off (0.00/0/0)

 

通过浏览器登录,页面展示如下:

 

Logstash安装部署

官网地址:

https://www.elastic.co/cn/elasticsearch/

https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html

 

Logstash官方安装教程:

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

 

 

Download and install the public signing key:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

 

 

vim /etc/yum.repos.d/logstash.repo

 

 

 

And your repository is ready for use. You can install it with:

sudo yum install logstash

 

 

Run Logstash with systemd

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable logstash.service
sudo systemctl start logstash.service
sudo systemctl stop logstash.service

 

 

配置logstash:

修改logstash启动内存大小

[root@server1 yum.repos.d]# vim /etc/logstash/jvm.options

-Xms256M

-Xmx256M     此处大小根据自己虚拟机内存大小分配

 

修改logstash基本信息

[root@server1 yum.repos.d]# vim /etc/logstash/logstash.yml       #此文件同elasticsearch用来指定日志路径等信息,可以为默认。

 

启动logstash

[root@server1 yum.repos.d]# systemctl start logstash

[root@server1 yum.repos.d]# ps -ef |grep logstash

logstash  10478      1 85 22:47 ?        00:00:09 /bin/java -Xms256M -Xmx256M -XX:+UseConcMarkSweepGC -XX:CMSInitiatin

 

 

[root@server1 ~]# vim /etc/logstash/conf.d/system.conf

input {

  file {

    path => "/var/log/messages"     #日志路径

    type => "systemlog"      #类型

    start_position => "beginning"    #logstash 从什么位置开始读取文件

    stat_interval => "2"  #logstash 每隔多久检查一次被监听文件状态(是否有更新) ,默认是 1 秒。

  }

}

output {

  elasticsearch {

  hosts => ["192.168.118.133:9200"]      #指定elasticsearch监听地址

  index => "logstash-systemlog-%{+YYYY.MM.dd}"    #索引名称

 }

}

 

检测配置文件是否有语法错误:

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf -t

 

重启logstash

[root@server1 ~]# systemctl start logstash.service

 

 

查看进程:

ps -ef|grep logstash

 

 

 

Kibana中创建索引

 

点击管理模块

 

创建索引模式

 

输入想要创建的索引名称

 

这里选择使用时间戳方式

 

这里索引已经创建完成,可以看到索引信息

 

点击dashboard,搜索刚才创建的索引

可以看到已经有数据了

 

到此步已经完成了ELK对日志的监控

 

总结

ELK的功能十分强大,它能够很好地将复杂无序的日志友好的展示出来,方便IT人员快速的定位问题。本次搭建因为资源有限,所以架构比较简单,组件相对比较少。在企业中经常采用elasticsearch和logstash集群模式来提高性能,而且经常会用到filebeat,Redis等组件提高效率。安装配置比较简单,三个插件可以直接yum安装到底。重要的是配置有点复杂。

 

 

参考文章:

ELK(7.3版本)的搭建

https://blog.csdn.net/weixin_45413603/article/details/100050535

 

ELK-7.5搭建及监控日志教程

https://blog.csdn.net/lucky_ykcul/article/details/103302528

 

ELK-7.6.1部署记录

https://blog.csdn.net/wangtiandi/article/details/104915311

 

centos7.4安装elk7.7.0最新版本

https://blog.csdn.net/huangfujin321/article/details/106328278/

 

 

### 日志服务器搭建配置 #### 工具选择 对于一家部署在 AWS 上的企业,可以选择多种日志管理工具来满足需求。常见的开源工具包括 Fluentd 和 Filebeat 用于日志采集,Elasticsearch 存储数据,Kibana 进行可视化分析[^1]。这些工具可以组合成 ELK (Elasticsearch, Logstash, Kibana) 或 EFK (Elasticsearch, Fluentd/Filbeats, Kibana) 架构。 为了实现自动化部署,推荐使用 Ansible 来简化服务器配置过程。Ansible 是一种无需代理的自动化运维工具,能够有效减少人为干预带来的错误风险,并提升大规模集群的一致性配置能力[^2]。 #### 配置流程 以下是具体的配置方案: ##### 1. **日志采集** - 对于 Linux 系统上的日志采集,可选用 ICAgent(适用于华为云场景下的日志收集)或者更通用的工具如 Fluentd、Filebeat[^3]。 - 如果采用 Filebeat,则需在其配置文件 `filebeat.yml` 中定义输入源路径以及目标 Elasticsearch 的地址: ```yaml filebeat.inputs: - type: log paths: - /var/log/*.log output.elasticsearch: hosts: ["http://elasticsearch-host:9200"] ``` ##### 2. **日志存储至 Elasticsearch** - 将采集到的日志发送给 Elasticsearch 实例进行集中存储。确保 Elasticsearch 节点具备足够的磁盘空间和内存资源以支持高吞吐量的数据写入操作。 ##### 3. **日志分析与可视化** - 利用 Kibana 创建仪表板展示关键指标趋势图或告警条件设定界面。例如,在 Kibana Discovery 页面查询特定时间段内的 HTTP 请求失败率: ```kql response_code: "5*" AND @timestamp >= now()-1h ``` ##### 4. **自动化部署** - 使用 Ansible Playbook 自动完成上述组件安装及初始化工作流设计。下面是一个简单的 playbook 示例片段: ```yaml --- - name: Install and configure logging stack hosts: all become: yes tasks: - name: Ensure required packages are installed apt: name: "{{ item }}" state: present loop: - elasticsearch - kibana - filebeat - name: Copy configuration files to remote servers copy: src: ./config/{{ inventory_hostname }}/ dest: /etc/ - name: Start services after setup completes successfully service: name: "{{ item }}" state: started enabled: true with_items: - elasticsearch - kibana - filebeat ``` #### 最佳实践建议 - 维护清晰的角色划分以便更好地组织复杂项目结构[^2]。 - 加密传输过程中涉及敏感信息的部分以防泄露。 - 定期备份重要配置文档防止意外丢失[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值