likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 37

ELK 搭建 & 日志集成

背景

突然想自己搭建一个ELK

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

环境

CentoOS7

前置工作

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

更换系统源

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

1. 备份原有源文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
2. 选择新的源

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

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 更新 yum 缓存
yum makecache
4. 更新系统软件包列表
   sudo yum update

安装 net-tools 软件包

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

yum install net-tools -y

安装 vim 软件包

sudo yum install vim -y

安装 telnet 软件包

sudo yum install telnet -y

安装 lrzsz

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

sudo yum install lrzsz -y

安装 wget

sudo yum install wget -y

关闭防火墙

临时关闭:

   systemctl stop firewalld.service

永久关闭:

   systemctl disable firewalld.service

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

安装jdk 11环境

sudo yum install -y java-11-openjdk-devel

根据端口号查找pid

sudo netstat -tunlp | grep 7071

将服务器时间改成上海时间

1. 安装 ntpdate 工具
   sudo yum install ntpdate -y
2. 设置成上海时区
   sudo timedatectl set-timezone Asia/Shanghai
3. 同步时间
   sudo ntpdate time.windows.com

CentOS 搭建ELK

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

ELK的关系

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

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

安装Elasticsearch

# 这条命令的作用是导入 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 配置文件
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 服务
sudo systemctl start elasticsearch
# 这个命令则是设置 Elasticsearch 服务在系统启动时自动启动
sudo systemctl enable elasticsearch

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

安装Logstash

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配置文件
touch /etc/logstash/conf.d/logstash.conf
vim /etc/logstash/conf.d/logstash.conf

带注释版本:

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 编码格式
}

这个是直接粘贴的版本:

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服务
sudo systemctl start logstash 
sudo systemctl enable logstash

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

安装kibana

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配置文件
vim /etc/kibana/kibana.yml
# 下面配置对齐
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"
启动kibana服务
sudo systemctl start kibana
sudo systemctl enable kibana

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

kibana 创建索引模式

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

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

微服务的日志集成

集成微服务

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

调用一下测试接口。

discover 查看日志

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

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

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

索引页:

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

总结

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

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

转载自:https://juejin.cn/post/7419203356520693794
评论
请登录