Elasticsearch是Java开发的基于Lucene的开源搜索引擎。它提供了一个分布式的、多租户的全文搜索引擎(LCTT翻译:multi-tenant指的是多租户技术,是一种软件架构技术,用来探索和实现如何在一个多租户环境中共享同一个系统或程序。用户环境组件,并仍然确保用户之间的数据隔离。),以及带有HTTP仪表板的Web界面(Kibana)。数据由Elasticsearch查询、检索,并使用JSON文档模式存储。Elasticsearch是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。Elasticsearch是ElasticStack(也称为ELKStack)的核心。Logstash是一个用于管理事件和日志的开源工具。它为数据收集提供了实时传递路径。Logstash会收集你的日志数据,将数据转换成JSON文档,存储在Elasticsearch中。Kibana是Elasticsearch的开源数据可视化工具。Kibana提供了漂亮的仪表板Web界面。您可以使用它来管理和可视化来自Elasticsearch的数据。它不仅漂亮,而且功能强大。在本教程中,我将向您展示如何在CentOS7服务器上安装和配置ElasticStack以监控服务器日志。然后我将向您展示如何在CentOS7和Ubuntu16客户端上安装“Elasticbeats”。先决条件CentOS764位,4GBRAM-elkMasterCentOS764位,1GBRAM-客户端1Ubuntu1664位,1GBRAM-客户端2第1步-在本教程中准备操作系统在本教程中,我们将在CentOS7服务器上禁用SELinux。编辑SELinux配置文件。vim/etc/sysconfig/selinux将SELINUX的值从enforcing改为disabled。SELINUX=disabled然后重启服务器:reboot再次登录服务器,查看SELinux状态。getenforce确保结果被禁用。Step2-InstallJavaDeploymentElasticstack依赖Java,Elasticsearch需要Java8版本,推荐OracleJDK1.8。我将从官方Oraclerpm包安装Java8。使用wget命令下载适用于Java8的JDK。wget--no-cookies--no-check-certificate--header"Cookie:gpw_e24=http:%2F%2Fwww.oracle.com%2F;oraclelicense=accept-securebackup-cookie""http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm”然后使用rpm命令安装:rpm-ivhjdk-8u77-linux-x64.rpm***,勾选javaJDK版本,以确保其正常工作。java-version您将看到服务器的Java版本。第3步-安装和配置Elasticsearch在这一步中,我们将安装和配置Elasticsearch。从elastic.co网站提供的rpm包安装Elasticsearch,并将其配置为在localhost上运行(以确保程序安全且无法从外部访问)。在安装Elasticsearch之前,将elastic.co密钥添加到服务器。rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch接下来使用wget下载Elasticsearch5.1,然后安装。wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpmrpm-ivhelasticsearch-5.1.1.rpmElasticsearch已安装。现在转到配置目录并编辑elasticsaerch.yml配置文件。cd/etc/elasticsearch/vimelasticsearch.yml去掉第40行的注释,开启Elasticsearch的内存锁。这将禁用Elasticsearch的内存交换。bootstrap.memory_lock:true在网络块中,取消注释network.host和http.port行。network.host:localhosthttp.port:9200保存文件并退出编辑器。现在编辑elasticsearch.service文件的内存锁配置。vim/usr/lib/systemd/system/elasticsearch.service去掉第60行的注释,并确保该值为无限制。MAX_LOCKED_MEMORY=unlimited保存并退出。Elasticsearch配置到此结束。Elasticsearch将在本机的9200端口上运行,我们通过在CentOS服务器上启用mlockall来禁用内存交换。重新加载systemd,将Elasticsearch设置为开机启动,然后启动服务。sudosystemctldaemon-reloadsudosystemctlenableelasticsearchsudosystemctlstartelasticsearch等待Eelasticsearch启动成功,然后查看服务器开放的端口,确保9200端口状态为LISTEN。netstat-plntuCheckelasticsearchrunningonport9200然后检查memlock以确保mlockall已启用,并使用以下命令检查Elasticsearch是否正在运行。curl-XGET'localhost:9200/_nodes?filter_path=**.mlockall&pretty'curl-XGET'localhost:9200/?pretty'会看到如下结果。检查内存锁elasticsearch并检查状态第四步-安装和配置Kibana和Nginx在这一步中,我们将在NginxWeb服务器上安装和配置Kibana。Kibana在localhost上监听,Nginx充当Kibana的反向代理。使用wget下载Kibana5.1,然后使用rpm命令安装:wgethttps://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpmrpm-ivhkibana-5.1.1-x86_64.rpm编辑Kibana配置文件。在vim/etc/kibana/kibana.yml中,去掉配置文件中server.port、server.host、elasticsearch.url三行的注释。server.port:5601server.host:"localhost"elasticsearch.url:"http://localhost:9200"保存退出。将Kibana设置为开机启动并启动Kibana。sudosystemctlenablekibanasudosystemctlstartkibanaKibana将作为节点应用程序在端口5601上运行。netstat-plntuKibana作为节点应用程序在端口5601上运行至此Kibana安装结束。现在我们需要安装Nginx并将其配置为反向代理,以便能够从公共IP地址访问Kibana。Nginx在Epel存储库中可用,使用yum安装epel-release。yum-yinstallel-release然后安装Nginx和httpd-tools这两个包。yum-yinstallnginxhttpd-toolshttpd-tools软件包包含用于Web服务器的工具,用于将htpasswd基本身份验证添加到Kibana。编辑Nginx配置文件并删除server{}块,以便我们可以添加新的虚拟主机配置。cd/etc/nginx/vimnginx.conf删除server{}块。RemoveServerBlockonNginx配置保存退出。现在我们需要在conf.d目录下新建一个虚拟主机配置文件。使用vim创建一个新文件kibana.conf。vim/etc/nginx/conf.d/kibana.conf复制下面的配置。服务器{listen80;server_nameelk-stack.co;auth_basic"RestrictedAccess";auth_basic_user_file/etc/nginx/.kibana-user;location/{proxy_passhttp://localhost:5601;proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection'升级';proxy_set_headerHost$主机;proxy_cache_bypass$http_upgrade;}}保存并退出。然后使用htpasswd命令创建一个新的基本认证文件。sudohtpasswd-c/etc/nginx/.kibana-useradmin"Enteryourpassword"测试Nginx配置并确保没有错误。然后设置Nginx开机自启动,启动Nginx。nginx-tsystemctlenablenginxsystemctlstartnginx为Kibana应用添加nginx虚拟主机配置步骤5-安装和配置Logstash在这一步中,我们将安装Logstash并配置它:从配置了filebeat的logstash客户端集中服务器的日志,然后过滤和转换Syslog数据并将其移动到存储中心(Elasticsearch)。下载Logstash并使用rpm安装它。wgethttps://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpmrpm-ivhlogstash-5.1.1.rpm生成新的SSL证书文件,方便客户端识别elasticserver。转到tls目录并编辑openssl.cnf文件。cd/etc/pki/tlsvimopenssl.cnf在[v3_ca]部分添加服务器ID。[v3_ca]#ServerIPAddresssubjectAltName=IP:10.0.15.10保存并退出。使用openssl命令生成证书文件。opensslreq-config/etc/pki/tls/openssl.cnf-x509-days3650-batch-nodes-newkeyrsa: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文件配置filebeat的日志源,然后新建syslog-filter.conf配置文件处理syslog,新建output-elasticsearch.conf文件定义输出日志数据到Elasticsearch。切换到logstash配置目录并在conf.d子目录中创建一个新的配置文件。cd/etc/logstash/vimconf.d/filebeat-input.conf输入配置,粘贴如下配置:input{beats{port=>5443ssl=>truessl_certificate=>"/etc/pki/tls/certs/logstash-forwarder.crt"ssl_key=>"/etc/pki/tls/private/logstash-forwarder.key"}}保存退出。创建一个syslog-filter.conf文件。vimconf.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","MMMdHH:mm:ss","MMMddHH:mm:ss"]}}}我们使用一个名为grok的过滤器插件来解析系统日志文件。保存并退出。创建输出配置文件output-elasticsearch.conf。vimconf.d/output-elasticsearch.conf粘贴以下配置:output{elasticsearch{hosts=>["localhost:9200"]hosts=>"localhost:9200"manage_template=>falseindex=>"%{[@metadata][beat]}-%{+YYYY.MM.dd}"document_type=>"%{[@metadata][type]}"}}保存并退出。***,设置logstash开机启动服务。sudosystemctlenablelogstashsudosystemctlstartlogstashLogstash使用SSL连接在端口5443上启动步骤6-在CentOS客户端上安装和配置FilebeatBeat作为数据发送方的角色。它是一个轻量级代理,可以安装在客户端节点上,将大量数据从客户端发送到Logstash或Elasticsearch服务器。有4个beat,Filebeat用于发送“日志文件”,Metricbeat用于发送“指标”,Packetbeat用于发送“网络数据”,Winlogbeat用于从Windows客户端发送“事件日志”。在本教程中,我将向您展示如何安装和配置Filebeat,以通过SSL连接将数据日志文件传输到Logstash服务器。登录client1的服务器,然后将elastic服务器的证书文件复制到client1的服务器上。sshroot@client1IP使用scp命令复制证书文件。scproot@elk-serverIP:~/logstash-forwarder.crt.输入elk-server密码新建目录,将证书移动到该目录下。sudomkdir-p/etc/pki/tls/certs/mv~/logstash-forwarder.crt/etc/pki/tls/certs/接下来,在客户端1服务器上导入弹性密钥。rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch下载Filebeat并使用rpm命令安装。wgethttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpmrpm-ivhfilebeat-5.1.1-x86_64.rpmFilebeat已经安装,请进入配置目录编辑filebeat.yml文档。cd/etc/filebeat/vimfilebeat.yml在第21行的路径部分,添加一个新的日志文件。我们将创建两个文件,记录ssh活动的/var/log/secure文件和服务器日志/var/log/messages。paths:-/var/log/secure-/var/log/messages在第26行添加一个新的配置来定义syslog类型的文件。document-type:syslogFilebeat默认使用Elasticsearch作为输出目标。在本教程中,我们将其更改为Logshtash。在第83和85行添加注释以禁用Elasticsearch输出。禁用Elasticsearch输出:#------------------------Elasticsearchoutput----------------------------#output.elasticsearch:#Arrayofhoststoconnectto.#hosts:["localhost:9200"]现在添加新的logstash输出配置。取消注释logstash输出配置并将所有值更改为下面配置中的值。output.logstash:#TheLogstashhostshosts:["10.0.15.10:5443"]bulk_max_size:1024ssl.certificate_authorities:["/etc/pki/tls/certs/logstash-forwarder.crt"]template.name:"filebeat"template.path:"filebeat.template.json"template.overwrite:false保存文件并退出vim。将Filebeat设置为bootonstartup并启动它。sudosystemctlenablefilebeatsudosystemctlstartfilebeat第7步-在Ubuntu客户端上安装和配置Filebeat以使用ssh连接到服务器。sshroot@ubuntu-clientIP使用scp命令复制证书文件。scproot@elk-serverIP:~/logstash-forwarder.crt.创建一个新目录并将证书移动到该目录中。sudomkdir-p/etc/pki/tls/certs/mv~/logstash-forwarder.crt/etc/pki/tls/certs/在服务器上导入弹性密钥。wget-qO-https://artifacts.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd-下载Filebeat.deb包并使用dpkg命令进行安装。wgethttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.debdpkg-ifilebeat-5.1.1-amd64.deb进入配置目录,编辑filebeat.yml文件。cd/etc/filebeat/vimfilebeat.yml在路径配置部分添加一个新的日志文件路径。paths:-/var/log/auth.log-/var/log/syslog设置文件类型为syslog。document-type:syslog注释掉以下行以禁用输出到Elasticsearch。#------------------------Elasticsearchoutput--------------------------------#output.elasticsearch:#Arrayofhoststoconnectto.#hosts:["localhost:9200"]要启用logstash输出,取消注释以下配置并更改值,如下所示。output.logstash:#TheLogstashhostshosts:["10.0.15.10:5443"]bulk_max_size:1024ssl.certificate_authorities:["/etc/pki/tls/certs/logstash-forwarder.crt"]template.name:"filebeat"template.path:"filebeat.template.json"template.overwrite:false保存并退出vim。将Filebeat设置为bootonstartup并启动它。sudosystemctlenablefilebeatsudosystemctlstartfilebeat检查服务状态:systemctlstatusfilebeatFilebeat在客户端运行Ubuntu步骤8-测试打开你的浏览器,访问你在Nginx中配置的elasticstack域名,我的是“elk-stack.co”。使用您的管理员密码登录,然后按Enter键登录到Kibana仪表板。使用BasicAuth登录到KibanaDashboard以创建一个新的默认索引filebeat-*并单击“创建”按钮。CreateFirstindexfilebeatforKibana默认索引已经创建。如果弹性堆栈上有多个节拍,您可以通过单击“星号”按钮配置一个默认节拍。Filebeat索引作为KibanaDashboard上的默认索引转到Discover菜单,您可以看到elk-client1和elk-client2服务器上的所有日志文件。从elk-client1服务器日志中的无效ssh登录中发现服务器示例JSON输出的所有日志文件。SSH登录失败的JSON输出使用其他选项,您可以使用Kibana仪表板执行更多操作。ElasticStack已安装在CentOS7服务器上。Filebeat已经安装在CentOS7和Ubuntu客户端上。
