数码产品

centos 安装ELK

准备安装环境

由于本人的centos是通过虚拟机来进行安装的,为了本地电脑能够访问centos系统中的端口,则需要把防火墙进行关闭,通过以下方式进行关闭防火墙。

# vi /etc/sysconfig/selinux

改变SELINUX的值从enforcing 到disabled, 找到SELINUX改变它的值为disabled,SELINUX=disabled,修改完成进行保存。 保存完之后输入reboot命令进行重启。

接着查看防火墙是否被关闭

[root@localhost ~]# /usr/sbin/sestatus SELinux status: disabled

[root@localhost ~]# getenforce Disabled

安装Java Jdk

Elasticsearch 要求安装的版本是1.8的版本,下面我们是安装1.8的方式,通过Oracle网站下载Oracle jdk1.8.

[root@localhost ~]# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.rpm?AuthParam=1572923902_eec0cc0f1690be19f017e4409dc8249a"

https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.rpm?AuthParam=1572923902_eec0cc0f1690be19f017e4409dc8249a

这个下载连接是登录后的下载连接,也可以在windows电脑上下载完成之后上传到Linux中。

接下来,下载完成之后安装jdk,输入如下命令。

[root@localhost ~]# rpm -ivh jdk-8u231-linux-x64.rpm

安装完成之后,接着检测一下是否安装成功。

[root@localhost ~]# java -version
java verion 1.8.0_231

安装和配置Elasticsearch

在这步。我们将要安装和配置Elasticsearch。安装Elasticsearch 从elastic.co提供的一个tgz安装包,并且配置它运行在localhost。

安装前我们先添加elastic.co key到Linux服务器上。命令如下

[root@localhost ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

接着下载rpm安装包

[root@localhost ~]# curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-x86_64.rpm

下载完成之后,接着通过rpm命令进行安装。

[root@localhost ~]# rpm -ivh elasticsearch-5.1.1.rpm

安装完成之后,接着我们进行修改elasticsaerch.yml 配置文件。 进入到/etc/elasticsearch/目录下,接着修改elasticsearch.yml。

[root@localhost ~]# cd /etc/elasticsearch/
[root@localhost ~]#vi elasticsearch.yml

开启内存锁移除bootstrap.memory_lock: true 前面的注释符。这个关闭Elasticsearch的内存切换。 命令如下

bootstrap.memory_lock: true

在配置文件中移除网络块下面的那个 network.host和 http.port 前面的注释。

network.host: localhost
http.port: 9200

保存配置文件并退出。 接下来编辑 elasticsearch.service 文件 中的配置锁。

LimitMEMLOCK=infinity

接着编辑sysconfig配置目录下的Elasticsearch文件。

vi /etc/sysconfig/elasticsearch

移除配置文件中的MAX_LOCKED_MEMORY=unlimited前的注释。

MAX_LOCKED_MEMORY=unlimited

通过上面的配置,Elasticsearch 已经配置完成,Elasticsearch 将运行在localhost 端口为9200.我们关闭内存交换,并且开启所有的内存锁。 重新加载systemd, 开启 Elasticsearch start在启动时,并且开启服务.

[root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl enable elasticsearch
[root@localhost ~]# sudo systemctl start elasticsearch

等待一会儿,当Eelasticsearch启动, 接着检查Eelasticsearch是否启动,通过以下命令查看是否9200端口是否是 'LISTEN'状态.

[root@localhost ~]# netstat -plntu

接着检查内存锁确保mlockall是enabled,并且检查Elasticsearch 正在运行的通过以下命令.

[root@localhost ~]# curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
[root@localhost ~]# curl -XGET 'localhost:9200/?pretty'

安装Kibana通过Nginx

在这步,我们将安装Kibana通过Nginx服务器. Kibana将 监听在本地IP地址然而Nginx 将为Kibana应用程序扮演一个反向代理. 接着下载Kibana并安装。

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.4.2-x86_64.rpm

[root@localhost ~]# rpm -ivh kibana-7.4.2-x86_64.rpm

接着编辑Kibana配置文件.

[root@localhost ~]# vi /etc/kibana/kibana.yml

进入到以下文件中,找到以下命令所对应的行,去掉前面的注释。

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

去掉注释之后保存并退出。接着执行以下命令。增加kibana在启动的时候运行。

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana 将作为node应用程序运行在端口5601. 输入以下命令检查是否运行在5601端口。

netstat -plntu

通过上面的步骤,Kibana已经安装完成。接下来,我们安装Nginx 服务器进行反向代理访问Kibana应用。

Nginx 是有效的在 Epel 仓库, 安装epel-release 通过yum.

yum -y install epel-release

接下来安装Nginx 和 httpd-tools 安装包.

yum -y install nginx httpd-tools

那个httpd-tools 安装包包含那个那个web服务器的工具, 我们将使用 htpasswd basic认证Kibana. 编辑Nginx配置文件 并且移除 'server { }' 块, 因此我们能够增加一个新的虚拟主机配置文件.

cd /etc/nginx/
vim nginx.conf

移除server { } 块.保存并退出。

 

现在我们配置一个虚拟主机配置文件在 conf.d 目录,通过vi 创建'kibana.conf’文件。

vi /etc/nginx/conf.d/kibana.conf

粘贴以下配置到kibana.conf文件中.

server {
    listen 80;
 
    server_name elk-stack.co;
 
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;
 
    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

接着创建认证文件通过htpasswd命令。

sudo htpasswd -c /etc/nginx/.kibana-user admin 接着输入你的密码

测试 Nginx 配置文件并且确保没有错误. 接着添加配置在系统启动的时候运行并且启动Nginx.

[root@localhost ~]# nginx -t
[root@localhost ~]# systemctl enable nginx
[root@localhost ~]# systemctl start nginx

安装和配置 Logstash

在这步,我们将要安装Logsatash并且配置它从filebeat客户端到中央服务器日志,接着过滤并且转换那个Syslog 数据并且移动它到那个stash (Elasticsearch). 下载Logstash 并且安装它通过rpm.

[root@localhost ~]# curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.4.2.rpm

接着通过rpm命令安装

[root@localhost ~]# rpm -ivh logstash-7.4.2.rpm

生成一个 SSL 证书文件以至于客户端能够标识那个elastic服务器。

[root@localhost ~]# cd /etc/pki/tls
vi openssl.cnf

增加一个新的行服务器标识在'[ v3_ca ]' 部分.

[ v3_ca ]


# Server IP Address
subjectAltName = IP: 10.0.15.10

保存并退出。

生成那个证书文件通过 openssl 命令.

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

那个证书文件能够找到在'/etc/pki/tls/certs/' 目录和 '/etc/pki/tls/private/' 目录。

接下来我们创建一个新的Logstash配置文件,我们将创建一个 新的'filebeat-input.conf' 文件配置log源从filebeat。接着 'syslog-filter.conf' 配置文件处理syslog 并且'output-elasticsearch.conf' 配置文件定义 Elasticsearch输出。

进入logstash配置文件目录并且创建新的配置文件i在'conf.d' 的子目录。

cd /etc/logstash/
vi conf.d/filebeat-input.conf

粘贴以下内容进去。

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

创建syslog-filter.conf文件.

vi conf.d/syslog-filter.conf

粘贴以下内容进去。

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

我们使用过滤器插件命名为 'grok' 来转换syslog文件.

接着我们创建配置文件 'output-elasticsearch.conf'.

vi conf.d/output-elasticsearch.conf

粘贴以下内容进去。

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

保存并退出,接着我们增加logstash 在开机时自动启动。

sudo systemctl enable logstash
sudo systemctl start logstash

安装和配置Filebeat在CentOS客户端

新建一个虚拟机作为客户端 Beats是数据货运,轻量的代理能被安装在那个客户端节点发送巨大的数据从客户端机器到Logstash或者Elasticsearch服务器,有四种beats 是有用的,'Filebeat' 对应 'Log Files', 'Metricbeat' 对应 'Metrics', 'Packetbeat' 对应 'Network Data' 以及 'Winlogbeat' 对应 Windows客户端 'Event Log'.

在这篇教程,我将展示你怎样安装 'Filebeat'传输数据log文件到 Logstash 服务器上通过一个SSL连接.

登录从那个客户端服务器连接到elastic服务器,拷贝certificate文件 从elastic服务器到客户端服务器. 

拷贝那个证书文件通过scp命令。

scp root@elk-serverIP://etc/pki/tls/certs/logstash-forwarder.crt . TYPE elk-server password

创建一个新的目录并把刚才拷贝的那个证书放到该目录下.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

接下来导入elastic key到客户端服务器.

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

下载Filebeat并且安装它通过rpm.

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.2-x86_64.rpm
rpm -ivh filebeat-7.4.2-x86_64.rpm

Filebeat已经安装成功, 进入配置目录并且对 'filebeat.yml'进行编辑.

cd /etc/filebeat/
vi filebeat.yml

接着找到paths部分,增加那个新的日志文件, 我们将增加两个日志文件 '/var/log/secure'用于ssh登录日志 并且 '/var/log/messages' 用于 那个服务器日志.

paths:
- /var/log/secure
- /var/log/messages

接着在后面增加一个配置定义那个syslog类型文件。

document-type: syslog

Filebeat已经默认使用Elasticsearch作为输出目标.在这篇教程, 我们将改变它到Logstash,关闭Elasticsearch output 增加 注释在以下命令行。

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]

接着开启Logstash的日志输出。也是在该配置文件下删除注释,并添加以下数据。

output.logstash:
# The Logstash hosts
hosts: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false

保存并退出。

接着开启系统启动时自动启动服务。

sudo systemctl enable filebeat
sudo systemctl start filebeat

使用systemctl status filebeat来进行检查是否启动。

systemctl status filebeat

测试Elastic Stack

 

posted @ 2019-11-05 18:34  Hackerman  阅读(537)  评论(0编辑  收藏  举报
数码产品