日志分析平台 ELK-7.8.0

ELK是Elasticsearch、Logstash、Kibana的简称

Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据

官网链接: https://www.elastic.co/elasticsearch

安装包下载

ELK各服务之间存在版本依赖关系,不同版本服务可能会出现不必要的麻烦,这里统一使用7.8.0版本。(下载速度较慢,不要轻易中断)

#elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-x86_64.rpm
#logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.rpm
#kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-x86_64.rpm

下载完成后目录如下:

elasticsearch跟logstash运行需要依赖JDK,jdk版本不可低于1.8.0。elasticsearch-7.8.0中建议使用jdk11。

JDK下载地址 https://www.oracle.com/downloads/

[root@elk home]# ll
总用量 971040
-rw-r--r--. 1 root root 319213800 6月  24 19:47 elasticsearch-7.8.0-x86_64.rpm
-rw-r--r--. 1 root root 162971576 6月  24 19:47 jdk-11.0.7_linux-x64_bin.rpm
-rw-r--r--. 1 root root 344836026 6月  24 19:47 kibana-7.8.0-x86_64.rpm
-rw-r--r--. 1 root root 167314018 6月  24 19:47 logstash-7.8.0.rpm

单节点ELK安装

  • 安装jdk,配置环境变量
rpm -ivh jdk-11.0.7_linux-x64_bin.rpm
#1 修改环境变量
vi /etc/profile
#2 profile文件尾部添加
export JAVA_HOME=/usr/java/jdk-11.0.7/
export PATH=$PATH:$JAVA_HOME
#3 保存退出
:wq
#4 source一把
source /etc/profile0
#5 验证jdk环境变量配置是否成功
java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
  • 安装es、logstash、kibana

es跟kibana需要指定非root用户启动,使用rpm方式安装程序会自动帮我们创建好elasticsearch用户跟kibana用户。修改配置文件后,可以直接通过systemctl以服务方式启动程序,不需要来回主动切换用户启动。

rpm -ivh elasticsearch-7.8.0-x86_64.rpm logstash-7.8.0.rpm kibana-7.8.0-x86_64.rpm 
#安装完成后可以通过whereis命令查看安装目录
whereis elasticsearch
elasticsearch: /etc/elasticsearch /usr/share/elasticsearch

Elasticsearch

1 修改配置文件

vi /etc/elasticsearch/elasticsearch.yml;elk为本机主机名,注意yaml格式,:后多一个空格

#设置主机名称
17 cluster.name: elk
#设置节点名称
23 node.name: elk
#设置数据存储目录
33 path.data: /var/lib/elasticsearch
#设置日志输出目录
37 path.logs: /var/log/elasticsearch
#设置访问ip
55 network.host: 192.168.8.32
#设置访问端口
59 http.port: 9200
#设置种子主机,可以设置多个
68 discovery.seed_hosts: ["elk"]
#设置初始主节点,可以设置多个
72 cluster.initial_master_nodes: ["elk"]

修改完成配置文件后保存退出

2 启动
#启动
systemctl start elasticsearch
#查看服务运行状态
systemctl status elasticsearch
#设置开机启动
systemctl enable elasticsearch

启动成功后可以通过浏览器访问 http://192.168.8.32:9200,返回如下

在这里插入图片描述

Logstash

logstash 在rpm安装过程中可能会有一点小插曲,如下:

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2020-06-28T21:36:47.947+08:00 [main] WARN FilenoUtil : Native subprocess control requires open access to sun.nio.ch
Pass '--add-opens java.base/sun.nio.ch=org.jruby.dist' or '=org.jruby.core' to enable.
NoMethodError: undefined method `split' for nil:NilClass
   detect_systemd at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/detector.rb:33
  detect_platform at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/detector.rb:24
           detect at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/detector.rb:18
   setup_defaults at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/cli.rb:153
          execute at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/cli.rb:119
              run at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67
              run at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/cli.rb:114
              run at /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132
           <main> at /usr/share/logstash/lib/systeminstall/pleasewrap.rb:28
./system-install:行88: systemd: 未找到命令
Unable to install system startup script for Logstash.

不要紧! 这是在将logstash服务注册到service时,Ruby语法错误所致(应当是Ruby版本差异原因)。我们依然可以通过手动方式启动,后面列出具体步骤。

安装完成后,配置文件目录位于:/etc/logstash 程序安装目录位于:/usr/share/logstash/

ls -l /etc/logstash/
总用量 40
drwxrwxr-x 2 root root    51 6月  28 15:57 conf.d
-rw-r--r-- 1 root root  2019 6月  15 05:33 jvm.options
-rw-r--r-- 1 root root  8958 6月  15 05:33 log4j2.properties
-rw-r--r-- 1 root root   342 6月  15 05:33 logstash-sample.conf
-rw-r--r-- 1 root root 10321 6月  28 15:55 logstash.yml
-rw-r--r-- 1 root root   285 6月  15 05:33 pipelines.yml
-rw------- 1 root root  1696 6月  15 05:33 startup.options
ls -l /usr/share/logstash/
总用量 644
drwxr-xr-x 2 logstash logstash   4096 6月  28 14:21 bin
-rw-r--r-- 1 logstash logstash   2276 6月  15 05:33 CONTRIBUTORS
drwxrwxr-x 2 logstash logstash      6 6月  15 05:33 data
-rw-r--r-- 1 logstash logstash   4041 6月  15 05:33 Gemfile
-rw-r--r-- 1 logstash logstash  22666 6月  15 05:33 Gemfile.lock
drwxr-xr-x 6 logstash logstash     80 6月  28 14:21 lib
-rw-r--r-- 1 logstash logstash  13675 6月  15 05:33 LICENSE.txt
drwxr-xr-x 4 logstash logstash     86 6月  28 14:21 logstash-core
drwxr-xr-x 3 logstash logstash     83 6月  28 14:21 logstash-core-plugin-api
drwxr-xr-x 4 logstash logstash     52 6月  28 14:21 modules
-rw-r--r-- 1 logstash logstash 601073 6月  15 05:33 NOTICE.TXT
drwxr-xr-x 3 logstash logstash     29 6月  28 14:21 tools
drwxr-xr-x 4 logstash logstash     31 6月  28 14:21 vendor
drwxr-xr-x 9 logstash logstash   4096 6月  28 14:22 x-pack

修改配置logstash.yml

# 节点名称
19 node.name: master
# 数据存储目录,非特殊要求保持默认即可
28 path.data: /var/lib/logstash
# 指定配置文件,支持统配符匹配 如:/etc/logstash/conf.d/*.conf,默认就是这个目录
73 path.config: /etc/logstash/conf.d/*.conf
# host
118 http.host: 192.168.8.38
# 日志输出目录
241 path.logs: /var/log/logstash
1 创建自定义conf文件

vi /etc/logstash/conf.d/logstash.conf 内容可参考 /etc/logstash/conf.d/logstash-sample.conf

logstash 配置有多种方式,下面我们拿一个最简单的syslog协议模板测试。指定输入通过syslog方式,输出指向es

#输入
input{
        syslog{
                type => "system-syslog"
                host => "192.168.8.38"
                #接收信息端口
                port => "514"
        }
}
#输出到console
output{
        elasticsearch {
        #es节点,可以多个
        hosts => ["192.168.8.32:9200"]
        #索引
        index => "syslog-%{+YYYY.MM.dd}"
    }
}
2 systemctl 启动
#启动
sudo systemctl start logstash
#查看启动状态,启动完成约10s左右
sudo systemctl status logstash -l
#启动报:SocketError
:exception=>#<SocketError: initialize: name or service not known>

在这里插入图片描述
SocketError问题

这是因为非root用户没有创建端口监听的权限,解决方式如下(修改User=root Group=root):

#编辑服务脚本
vi /etc/systemd/system/logstash.service
[Unit]
Description=logstash

[Service]
Type=simple
User=logstash
Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

# When stopping, how long to wait before giving up and sending SIGKILL?
# Keep in mind that SIGKILL on a process can cause data loss.
TimeoutStopSec=infinity

[Install]
WantedBy=multi-user.target
#重新加载服务
sudo systemctl daemon-reload
#重新启动
sudo systemctl restart logstash
#查看syslog监听端口是否启用,如下启用成功
netstat -tlnp | grep 514
tcp6       0      0 :::514                  :::*                  LISTEN      41299/java 
3 自定义方式启动
#1 创建自定义启动脚本
vi /usr/share/logstash/start-logstash.sh
#2 写入内容
#!/bin/bash
nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf >/usr/share/logstash/logstash.log 2>&1 &
#3 保存退出
:wq
#4 添加可执行权限
chmod +755 /usr/share/logstash/start-logstash.sh
#5 启动
./start-logstash.sh
#6 查看日志
cat /usr/share/logstash/logstash.log
#查看syslog监听端口是否启用,如下启用成功
netstat -tlnp | grep 514
tcp6       0      0 :::514                  :::*                  LISTEN      3299/java 

Kibana

安装完成后,配置文件目录位于:/etc/kibana程序安装目录位于:/usr/share/kibana/

#配置目录
ls -l /etc/kibana/
总用量 8
-rw-r--r--. 1 root root 5261 6月  29 01:01 kibana.yml
#程序安装目录
ls -l /usr/share/kibana/
总用量 1864
drwxr-xr-x.    2 root   root        61 6月  24 19:49 bin
drwxr-xr-x.    5 root   root        40 6月  24 19:49 built_assets
drwxr-xr-x.    2 root   root        23 6月  24 20:06 config
-rw-rw-r--.    1 root   root     13675 6月  15 04:37 LICENSE.txt
drwxr-xr-x.    6 root   root       101 6月  24 19:49 node
drwxr-xr-x. 1634 root   root     45056 6月  24 19:49 node_modules
-rw-rw-r--.    1 root   root   1794118 6月  15 04:37 NOTICE.txt
drwxr-xr-x.    3 kibana kibana      53 6月  24 19:51 optimize
-rw-rw-r--.    1 root   root       738 6月  15 04:37 package.json
drwxrwxr-x.    2 kibana kibana       6 6月  15 04:37 plugins
-rw-rw-r--.    1 root   root      4057 6月  15 04:37 README.txt
drwxr-xr-x.   11 root   root      4096 6月  24 19:51 src
drwxr-xr-x.    2 root   root      4096 6月  24 19:51 webpackShims
drwxr-xr-x.    5 root   root      4096 6月  24 19:51 x-pack
1 修改配置文件

vi /etc/kibana/kibana.yml

#1 设置服务ui查看端口
2 server.port: 5601
#2 设置服务host
7 server.host: "192.168.8.32"
#3 es节点,可设置多个
28 elasticsearch.hosts: ["http://192.168.8.32:9200"]
#4 ui支持中文
115 i18n.locale: "zh-CN"
2 启动
#启动
sudo systemctl start kibana
#查看启动状态,启动完成约10s左右
sudo systemctl status kibana
3 UI查看
http://192.168.8.38:5601/

至此,ELK日志分析系统搭建完成。剩下工作便是根据项目需求,将收集到的日志筛选过滤,在kibana的ui当中绘制出图,达到监控需求。
在这里插入图片描述
kibana 使用入门可以参考 kibana7.8.0 Dashboard入门

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值