ELK 搭建 & 日志集成

ELK 搭建 & 日志集成

背景

最近在弄skywalking,微服务的链路已经能够正常在skywalking里显示了,所以想着将日志也和skywalking结合。虽然公司的日志是用ELK的,但是目前是我自己测试阶段,所以就想着自己先搭建一个ELK,顺便练习一下ELK搭建的过程。

只是ELK的搭建和日志的简单集成,并不涉及高端知识,大佬请绕道

环境

CentoOS7

前置工作

前提要一个干净的环境。只需要一个正常可以访问的网络。如果你搭建环境已经包含前置工作中的必要内容,那么可以直接跳过。

更换系统源

更换的原因是: 无法获取镜像列表。

1. 备份原有源文件
 

bash

代码解读

复制代码

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

2. 选择新的源

以腾讯源为例,你可以下载腾讯的 CentOS 7 源配置文件:

 

bash

代码解读

复制代码

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

3. 更新 yum 缓存
 

bash

代码解读

复制代码

yum makecache

4. 更新系统软件包列表
 

bash

代码解读

复制代码

  sudo yum update

安装 net-tools 软件包

原因: ifconfig 命令包含在 net-tools 软件包中。

 

bash

代码解读

复制代码

yum install net-tools

安装 vim 软件包
 

bash

代码解读

复制代码

sudo yum install vim

安装 telnet 软件包
 

bash

代码解读

复制代码

sudo yum install

安装 lrzsz

“sz” 命令通常用于在 Linux 系统中通过串口或 SSH 连接将文件从服务器下载到本地。

 

bash

代码解读

复制代码

sudo yum install lrzsz

安装 wget
 

bash

代码解读

复制代码

sudo yum install wget

关闭防火墙

临时关闭:

 

bash

代码解读

复制代码

  systemctl stop firewalld.service

永久关闭:

 

bash

代码解读

复制代码

  systemctl disable firewalld.service

先执行临时的再执行永久的,只执行永久的不好使,因为永久的要再下次开机才生效。

安装java环境
 

bash

代码解读

复制代码

sudo yum install java-1.8.0-openjdk

根据端口号查找pid
 

bash

代码解读

复制代码

sudo netstat -tunlp | grep 7071

将服务器时间改成上海时间
1. 安装 ntpdate 工具
 

bash

代码解读

复制代码

  sudo yum install ntpdate

2. 设置成上海时区
 

bash

代码解读

复制代码

  sudo timedatectl set-timezone Asia/Shanghai

3. 同步时间
 

bash

代码解读

复制代码

  sudo ntpdate time.windows.com

CentOS 搭建ELK

到这里就可以开始真正的搭建ELK了

ELK的关系

图是百度图片上找的,仅用于学习用途,侵权联系我,删。

安装Elasticsearch
 

bash

代码解读

复制代码

# 这条命令的作用是导入 Elastic 软件库的 GPG 密钥。 # GPG 密钥用于验证软件包的完整性和来源的可靠性,确保您从可信的来源获取和安装软件。通过导入这个密钥,系统可# 以确认您即将安装的 Elastic 相关软件包是经过官方认证且未被篡改的。 sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo vim /etc/yum.repos.d/elasticsearch.repo # 在文件中添加以下内容 [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ​ sudo yum install elasticsearch

修改 Elasticsearch 配置文件
 

bash

代码解读

复制代码

vim /etc/elasticsearch/elasticsearch.yml # 下面这些内容要对齐 cluster.name: my_elasticsearch_cluster # 自定义一个 node.name: node-1 network.host: 0.0.0.0 # 表示监听所有网络接口 http.port: 9200 discovery.seed_hosts: ["localhost:9200"] discovery.type: single-node #以单例es启动

启动 Elasticsearch 服务
 

bash

代码解读

复制代码

sudo systemctl start elasticsearch # 这个命令则是设置 Elasticsearch 服务在系统启动时自动启动 sudo systemctl enable elasticsearch

正常启动之后可以访问:http://localhost:9200

安装Logstash
 

bash

代码解读

复制代码

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo vim /etc/yum.repos.d/logstash.repo # 在文件中添加以下内容 [logstash-7.x] name=Logstash repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md sudo yum install logstash

创建logstash.conf配置文件
 

bash

代码解读

复制代码

touch /etc/logstash/conf.d/logstash.conf vim /etc/logstash/conf.d/logstash.conf

带注释版本:

 

bash

代码解读

复制代码

input { // 输入部分 file { // 使用文件作为输入源   path => "/data/log/service/logs/app/*.log" // 指定要读取的日志文件路径   type => "system_log" // 为输入的日志定义一个类型标签 } } ​ filter { // 过滤部分 if [type] == "system_log" { // 如果输入的日志类型是"system_log"   grok { // 使用 grok 插件进行解析     match => { "message" => "%{COMBINEDAPACHELOG}" } // 尝试按照指定的模式解析"message"字段   } } } ​ output { // 输出部分 elasticsearch { // 输出到 Elasticsearch   hosts => ["localhost:9200"] // 指定 Elasticsearch 的主机和端口   index => "logstash-%{+YYYY.MM.dd}" // 定义输出的索引名称,使用日期作为后缀 } stdout { codec => rubydebug } // 同时将处理结果输出到标准输出,使用 rubydebug 编码格式 }

这个是直接粘贴的版本:

 

bash

代码解读

复制代码

input { file { path => "/data/log/service/logs/app/*.log" type => "system_log" } } filter { if [type] == "system_log" { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } } output { elasticsearch { hosts => ["localhost:9200"] index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }

启动logstash服务
 

bash

代码解读

复制代码

sudo systemctl start logstash sudo systemctl enable logstash

是否正常启动去看日志,我的是在:/var/log/logstash

安装kibana
 

bash

代码解读

复制代码

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo vim /etc/yum.repos.d/kibana.repo # 在文件中添加以下内容 [kibana-7.x] name=Kibana repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ​ sudo yum install kibana

修改kibana配置文件
 

bash

代码解读

复制代码

vim /etc/kibana/kibana.yml # 下面配置对齐 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"] i18n.locale: "zh-CN"

启动kibana服务
 

bash

代码解读

复制代码

sudo systemctl start kibana sudo systemctl enable kibana

正常启动之后可以访问:http://localhost:5601

kibana 创建索引模式

索引模式要和logstash里的output里对应的索引前缀相同。例如例子的应该对应的索引模式是:logstash-*.

微服务的日志集成

集成微服务

这里对微服务没啥要求(随便放一个jar包运行一下就好了),唯一要求就是日志的输入文件(在项目里的log4j.xml里配置的)要和上面logstash中的input部分对应起来。

调用一下测试接口。

discover 查看日志

我认为一个索引模式是匹配多个索引的,索引是根据logstash的out部分进行传给es的。

索引页:

总结

在centos7上成功搭建了ELK并且正常收集到了来自微服务的日志,以及通过kibana进行正常查询。

计划下一篇写ELK和skywalking链路跟踪的集成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值