ELK日志分析系统搭建

ELK日志分析系统搭建
系统架构
在这里插入图片描述
在这里插入图片描述

【APPServer集群】→→【logstash Agent 采集器】→→【ElasticSearch Cluster】→→【Kibana Server】→→【Browser】
Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

二、环境信息
1、CentOS Linux release 7.9.2009 (Core)
2、ELK版本:v8.8.2
3、部署方式:docker部署

服务端:
Elasticsearch:https://172.16.102.19:9200/
Kibana:http://172.16.102.19:5601/
Logstash:172.16.102.19
客户端(日志收集目标端):
Filebeat: 172.16.102.16
Nginx测试:172.16.102.16/

平台访问
http://172.16.102.19:5601/ 账号:elastic 密码:sirun@2018

三、 部署步骤
3.1 基础环境部署
1、Selinux
2、主机网络
3、时间同步
4、 安装docker-ce并启动

yum install -y docker

systemctl start docker

systemctl enable docker

3.2 Elasticsearch部署
172.16.102.19节点上操作步骤

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2

docker network create elastic

docker network ls | grep elastic

docker run -itd --name elastic --net elastic -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” docker.elastic.co/elasticsearch/elasticsearch:8.8.2

3.3 Kibana部署
172.16.102.19节点上操作步骤

docker pull docker.elastic.co/kibana/kibana:8.8.2

docker run -itd --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.8.2

Kibana连接Elasticsearch
在elastic容器执行elasticsearch-create-enrollment-token命令,创建kibana连接Elasticsearch的enrollment-token

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2693b94e701 docker.elastic.co/kibana/kibana:8.8.2 “/bin/tini – /usr…” 5 seconds ago Up 5 seconds 0.0.0.0:5601->5601/tcp kibana
5c4065492979 docker.elastic.co/elasticsearch/elasticsearch:8.8.2 “/bin/tini – /usr…” 25 minutes ago Up 25 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elastic

docker exec -it elastic /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
eyJ2ZXIiOiI4LjguMiIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiY2U3MGI2Yjk2N2ViNTMwMjVmOGZmY2VlMjIyYTY0Yjg0OGE2OTU4NGQzMjUzNjllODIwMGJmMzRiYzFiNjM1MCIsImtleSI6IjJSTlRMcE1CY3cxYlNQRHJSeF9nOjFIMDE2ekxJUnhTT015Z0ROZEVmNXcifQ==
访问宿主机服务器IP地址和kibana容器映射的端口http://192.168.80.50:5601/
在这里插入图片描述
在截图中页面输入上一步创建的enrollment-token,可以看到下面自动出现了连接到elasticsearch容器的信息https://172.18.0.2:9200
点击Configure Elastic
在这里插入图片描述
在kibana容器执行kibana-verification-code命令,生成verification-code

docker exec -it kibana /usr/share/kibana/bin/kibana-verification-code

在这里插入图片描述在kibana页面输入code,点击Verify

在这里插入图片描述

开始Elastic的配置,等待几秒钟Kibana就可以配置完成
在这里插入图片描述
三、登录kibana,更改密码,设置中文语言
在容器elastic中执行重置密码命令,使用-u参数指定重置的用户名elastic,输入y继续,New value值为新的密码
]# docker exec -it elastic /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
在这里插入图片描述
kibana配置完成后,输入上一步获取的用户名、密码信息
用户名:elastic 密码:WTb5AVbYDOQl2EKoV7-d
在这里插入图片描述
登录成功,我们把用户elastic的密码改一个容易记的密码
在这里插入图片描述
如果喜欢中文页面,可以进入kibana容器设置中文语言
进入kibana容器

docker exec -it kibana bash

在kibana配置文件中添加中文语言设置
kibana@4d76d1aa8bc6:~$ echo “i18n.locale: zh-CN” >> config/kibana.yml
查看配置,可以看到中文语言设置已经添加到配置文件末尾,还可以看到kibana中配置的elasticsearch主机信息
kibana@4d76d1aa8bc6:~$ tail config/kibana.yml
在这里插入图片描述

退出容器,重启kibana容器
kibana@4d76d1aa8bc6:~$ exit

docker restart kibana

在这里插入图片描述
Logstash部署
可以在172.16.102.19节点上操作步骤或者是在客户端节点部署
docker pull docker.elastic.co/logstash/logstash:8.8.2
docker run -itd --name logstash docker.elastic.co/logstash/logstash:8.8.2
创建用于映射容器目录的宿主机目录
mkdir -p /usr/local/logstash
拷贝logstash容器文件到宿主机目录
docker cp logstash:/usr/share/logstash/config /usr/local/logstash/
docker cp logstash:/usr/share/logstash/pipeline /usr/local/logstash/
删除容器
docker rm -f logstash
重新创建logstash容器,并映射宿主机目录,映射5044端口接收filebeat日志,映射514端口接收syslog日志
docker run -itd --name logstash -p 5044:5044 -p 514:514 -v /usr/local/logstash/config:/usr/share/logstash/config -v /usr/local/logstash/pipeline:/usr/share/logstash/pipeline docker.elastic.co/logstash/logstash:8.8.2

接收filebeat日志
进入宿主机映射的logstash目录,目录下有config配置文件目录和pipeline配置文件目录
cd /usr/local/logstash/
[root@localhost logstash]# ll
total 0
drwxrwsr-x 2 root root 216 Apr 12 18:16 config
drwxr-sr-x 3 root root 22 Apr 12 14:40 pipeline

[root@localhost logstash]# cd config/
[root@localhost config]# ll
total 40
-rw-r–r-- 1 root root 1915 Apr 12 18:16 http_ca.crt
-rw-rw-r-- 1 root root 1833 Jun 21 2023 jvm.options
-rw-r–r-- 1 root root 7437 Jun 21 2023 log4j2.file.properties
-rw-r–r-- 1 root root 605 Jun 21 2023 log4j2.properties
-rw-rw-r-- 1 root root 342 Jun 21 2023 logstash-sample.conf
-rw-r–r-- 1 root root 93 Apr 12 15:18 logstash.yml
-rw-r–r-- 1 root root 420 Apr 12 14:41 pipelines.yml
-rw-r–r-- 1 root root 286 Apr 12 13:50 pipelines.yml.bak
-rw-rw-r-- 1 root root 1696 Jun 21 2023 startup.options
上述config目录文件中只需要调整pipelines.yml文件即可,其他文件保持不动
[root@localhost config]# cat pipelines.yml

This file is where you define your pipelines. You can define multiple.

For more information on multiple pipelines, see the documentation:

https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

#- pipeline.id: syslog

path.config: “/usr/share/logstash/pipeline/syslog/logstash-syslog.conf”

  • pipeline.id: filebeat
    path.config: “/usr/share/logstash/pipeline/filebeat/logstash-filebeat.conf”
    该目录会指定logstash调用的filebeat配置内容
    查看宿主机的filebeat配置内容
    [root@localhost filebeat]# pwd
    /usr/local/logstash/pipeline/filebeat
    对应容器内部的目录为:/usr/share/logstash/pipeline/filebeat
    [root@localhost filebeat]# cat logstash-filebeat.conf
    input {
    beats {
    port => 5044
    }
    }
    output {
    elasticsearch {
    hosts => [“https://172.16.102.19:9200”]
    index => “logstash-syslog-%{+YYYY.MM.dd}”
    user => “elastic”
    password => “sirun@2018”
    #ssl => true
    #cacert => “/usr/share/logstash/config/http_ca.crt”
    ssl_verification_mode => none
    }
    }
    [root@localhost filebeat]#

3.5 filebeat部署
下载对应版本的filebeat软件包,版本要和ELK的保持一致
filebeat-8.13.2-linux-x86_64.tar.gz,解压,到待收集日志的主机端
[root@zabbixserver opt]# cd filebeat-8.13.2-linux-x86_64
[root@zabbixserver filebeat-8.13.2-linux-x86_64]# ll
total 200136
drwxr-x— 3 root root 60 Apr 11 14:44 data
-rw-r–r-- 1 root root 3749426 Apr 2 18:05 fields.yml
-rwxr-xr-x 1 root root 167305304 Apr 2 18:14 filebeat
-rw-r–r-- 1 root root 183210 Apr 2 18:05 filebeat.reference.yml
-rw------- 1 root root 407 Apr 12 13:24 filebeat.yml
-rw------- 1 root root 8734 Apr 11 13:57 filebeat.yml.bak
drwxr-xr-x 4 root root 24 Apr 2 18:05 kibana
-rw-r–r-- 1 root root 13675 Apr 2 17:39 LICENSE.txt
drwxr-xr-x 71 root root 4096 Apr 2 18:05 module
drwxr-xr-x 2 root root 4096 Apr 2 18:05 modules.d
-rw------- 1 root root 13841186 Apr 15 12:00 nohup.out
-rw-r–r-- 1 root root 3042213 Apr 2 17:39 NOTICE.txt
-rw-r–r-- 1 root root 814 Apr 2 18:14 README.md
[root@zabbixserver filebeat-8.13.2-linux-x86_64]# cat filebeat.yml
filebeat.inputs:

  • type: filestream
    paths:
    • /usr/local/nginx/log/access.log* //这个目录是我们部署的测试nginx环境
      fields_under_root: true
      fields:
      logtype: “nginx-access”
      ignore_older: 72h

processors:

  • add_host_metadata: ~
  • drop_fields:
    fields: [“host.hostname”, “host.os”, “host.architecture”, “host.id”, “host.mac”, “host.containerized”, “agent”, “ecs”, “input”]

output.logstash:
hosts: [“172.16.102.19:5044”]
[root@zabbixserver filebeat-8.13.2-linux-x86_64]# nohup ./filebeat -e -c filebeat.yml &

3.6 部署nginx测试源端
创建一个nginx应用服务,这里使用http://172.16.102.16/这个节点,用filebeat采集日志发送给logstash
打开浏览器,访问 http://172.16.102.16/:80
在这里插入图片描述
四、平台使用
登录Kibana平台,查看索引管理
在这里插入图片描述
在这里插入图片描述
这个【logstash-syslog-2024.11.15】索引名称对应logstash-filebeat.conf配置文件中的index内容,使用时间为后缀方便查询。
进入数据视图界面,创建数据视图
在这里插入图片描述
在这里插入图片描述
查看日志数据展示
在这里插入图片描述
在这里插入图片描述
命中数的来源是访问nginx的站点次数,比如我们每刷新nginx站点一次,正常日志显示平台会多一次命中数。
在这里插入图片描述
比如我在11月15日下午15:25分刷新一个nginx站点(即访问一次nginx站点),日志平台会出现一次访问日志记录
在这里插入图片描述
这个日志刷新几乎可以做到实时,可能会存在刷新延迟,一般都是秒级可以更新。
技术参考
https://blog.csdn.net/weixin_48244640/article/details/131522652
https://blog.csdn.net/weixin_48244640/article/details/131543692
https://blog.csdn.net/weixin_48244640/article/details/131596333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值