使用Elasticsearch、Logstash和Kibana管理日志
全面的日志管理和分析策略是关键任务,使组织能够理解运营,安全和变更管理事件之间的关系,并保持对其基础架构的全面了解。 来自Web服务器,应用程序和操作系统的日志文件也提供有价值的数据,尽管它们采用不同的格式,并且是随机和分布式的。
日志是任何系统的关键部分,因为它们可以让您深入了解系统正在做什么以及发生了什么。 实际上,系统上运行的每个进程都会以某种形式生成日志。 这些日志通常写入本地磁盘上的文件。 当您的系统增长到多个主机时,管理日志和访问它们会变得复杂。
如果没有好的工具,在数百台服务器上搜索数百个日志文件中的特定错误是很困难的。 解决此问题的常见方法是设置集中式日志记录解决方案,以便可以在中央位置聚合多个日志。 为了有效地整合,管理和分析这些不同的日志,许多客户选择使用Elasticsearch,Logstash和Kibana(通常称为ELK Stack)来实现集中式日志记录解决方案。
在Qbox中配置Elasticsearch集群很简单。 在本文中,我们将引导您完成初始步骤,并向您展示启动和配置群集的简单性。 然后,我们安装并配置logstash以将我们的syslog发送到elasticsearch。 然后可以通过Kibana仪表板显示和分析发送到elasticsearch的Syslog。
本教程的目标是将Qbox用作集中式日志记录和监控解决方案 。 Qbox为Elasticsearch,Kibana和许多Elasticsearch分析和监控插件提供了开箱即用的解决方案。 我们将在单独的节点或机器中设置Logstash以从单个或多个服务器收集系统日志,并使用Qbox的配置Kibana来可视化收集的日志。
我们的ELK堆栈设置有三个主要组件:
Elasticsearch服务器所需的CPU , RAM和存储量取决于您要收集的日志量。 在本教程中,我们将使用具有以下最低规格的Qbox配置Elasticsearch:
以上规格可根据您的要求进行更改。 请根据需要选择合适的名称,版本,区域。 对于此示例,我们使用Elasticsearch version 2.3.4 。 最新版本是5.3 。 我们支持Qbox上的所有Elasticsearch版本。
除了我们的Elasticsearch服务器,我们还需要一个单独的Logstash服务器来处理来自客户端服务器的传入syslog并将它们发送到Elasticsearch。 可以有一个或多个客户端服务器,您可以将日志发送到Elasticsearch。 出于简化或测试目的,Logstash服务器也可以充当客户端服务器本身。 我们的Qbox配置Elasticsearch集群的端点和传输地址如下:
注意 :请确保将Qbox Elasticsearch集群中的Logstash服务器IP列入白名单。 此外,Elasticsearch服务器必须能够访问所有客户端服务器以收集syslog。
下载并安装公共签名密钥:
我们将使用Logstash 2.3.x版与我们的Elasticsearch版本2.3.4兼容。 可以参考弹性社区产品支持列表以清除任何版本问题。
将存储库定义添加到/etc/apt/sources.list文件中:
运行sudo apt-get update,即可使用存储库。 你可以安装它:
或者,也可以从Elastic Product Releases Site下载Logstash tar。 设置和运行Logstash的步骤非常简单:
Logstash配置文件采用JSON格式,驻留在/etc/logstash/conf.d 。 配置由三部分组成:输入,过滤器和输出。
让我们创建一个名为02-syslog-input.conf的配置文件,并设置我们的"syslog"输入:
插入以下输入配置:
注意 :Syslog文件路径可能因您的环境,配置和底层操作系统而异。
保存并退出。 这指定将在tcp端口5044上侦听的syslog输入。 现在让我们创建一个名为10-syslog-filter.conf的配置文件,我们将为syslog消息添加一个过滤器:
插入以下syslog过滤器配置:
保存并退出。 此过滤器查找标记为“ syslog ”类型的syslog ,并尝试使用grok解析传入的syslog日志,使其具有结构化和可查询性。
最后,我们将创建一个名为30-elasticsearch-output.conf的配置文件:
插入以下输出配置:
保存并退出。 此输出基本上将Logstash配置为将日志数据存储在Elasticsearch中,该数据运行在https://eb843037.qb0x.com:30024/ ,位于以syslog命名的索引中。
如果您已经下载了logstash tar或zip,则可以在一个位置创建一个包含输入,过滤和输出的logstash.conf文件。
在logstash.conf插入以下输入,过滤和输出配置:
如果要为使用syslog输入的其他应用程序添加过滤器,请确保命名文件,以便它们在输入和输出配置之间进行排序(即,在02-和30-之间)。
使用以下命令测试Logstash配置:
如果没有语法错误,它应该显示配置OK。 否则,请尝试读取错误输出以查看Logstash配置的错误。
重新启动Logstash并启用它,以使我们的配置更改生效:
如果您已下载logstash tar或zip,则可以使用以下命令运行它
接下来,我们将加载示例Kibana仪表板。
完成Logstash服务器设置以从客户端服务器收集日志后,让我们看看Qbox提供的Web界面Kibana。 Kibana用户界面可用于过滤,排序,发现和可视化存储在Elasticsearch中的日志。 继续,单击群集配置仪表板中的使用Kibana可视化数据。
现在从Index Patterns菜单(左侧)中选择[syslog]-YYY.MM.DD ,然后单击Star(设置为默认索引)按钮将syslog索引设置为默认值。
现在单击顶部导航栏中的Discover链接。 默认情况下,这将显示过去15分钟内的所有日志数据。 您应该看到带有日志事件的直方图,其中包含以下日志消息:
现在,因为您只从客户端服务器收集系统日志,因此不会有太多内容。 在这里,您可以搜索和浏览日志。 您还可以自定义仪表板。
请尝试以下方法:
Kibana还有许多其他功能,例如图形和过滤功能,所以请随意浏览!
在单个服务器上监视许多服务会带来一些困难。 在许多服务器上监控许多服务需要一种全新的思维方式和一套新的工具。 当您开始使用微服务,容器和集群时,部署的容器数量将迅速增加。 对于构成群集的服务器也是如此。我们无法登录节点并再查看日志。 在尝试识别服务器或应用程序的问题时,集中日志记录非常有用,因为它允许您在一个位置搜索所有日志。
Qbox-provisioned Elasticsearch使我们可以非常轻松地使用logstash和Kibana可视化集中式日志。 请记住,我们可以将基本上任何类型的日志或索引数据发送到Logstash,但如果使用grok解析和构建数据,则数据会变得更加有用。
我们在集中式日志记录中寻找什么? 但最重要的是如下:
ELK堆栈 (Logstash,Elasticsearch和Kibana)可以完成所有这些工作,并且可以轻松扩展以满足我们的特定需求。
先决条件
安装Logstash
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo“deb https://packages.elastic.co/logstash/2.3/debian stable main”| sudo tee -a /etc/apt/sources.list
sudo apt-get update && sudo apt-get install logstash
配置Logstash
sudo vi /etc/logstash/conf.d/02-syslog-input.conf
输入{
档案{
path => [“/ var / log / syslog”]
type =>“syslog”
}
}
sudo vi /etc/logstash/conf.d/10-syslog-filter.conf
过滤器{
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}”]
}
syslog_pri {}
日期{
match => [“syslog_timestamp”,“MMM d HH:mm:ss”,“MMM dd HH:mm:ss”]
}
}
}
sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf
输出{
elasticsearch {
hosts => [“https://eb843037.qb0x.com:30024/”]
user =>“5d53675f1e0dd8be3ada”
密码=>“3b193023f7”
index =>“syslog - %{+ YYYY.MM.dd}”
document_type =>“system_logs”
}
stdout {codec => rubydebug}
}
sudo vi LOGSTASH_HOME / logstash.conf
输入{
档案{
path => [“/ var / log / syslog”]
type =>“syslog”
}
}
过滤器{
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}”]
}
syslog_pri {}
日期{
match => [“syslog_timestamp”,“MMM d HH:mm:ss”,“MMM dd HH:mm:ss”]
}
}
}
输出{
elasticsearch {
hosts => [“https://eb843037.qb0x.com:30024/”]
user =>“5d53675f1e0dd8be3ada”
密码=>“3b193023f7”
index =>“syslog - %{+ YYYY.MM.dd}”
document_type =>“system_logs”
}
stdout {codec => rubydebug}
}
sudo service logstash configtest
sudo服务logstash重启
sudo update-rc.d logstash默认值96 9
bin / logstash -f logstash.conf
加载Kibana仪表板
结论
最后甚至会从Chrome的UI中取消挂锁图标。。。 谷歌爸爸在上周四...
从昨天跟大家分享金网科技原创手把手Docker java web 应用hellowor...
全面的日志管理和分析策略是关键任务,使组织能够理解运营...
任何运行思科支持的虚拟专用网络(VPN)的人都可能需要安装更...
对最常见的开源协议做下总结分享 Mozilla Public License MPLLicense,允...
Google Chrome 66 Beta将于3月15日,即本周四发布。 虽然谷歌和赛门铁...
PFS概览 众所周知,若服务器的私钥泄漏,任何可以访问私钥的人...
常见的 SSL 错误解决办法 为了保障用户的隐私信息安全,减少信...
代码签名证书简介及其许多好处 今天,几乎所有东西都是电脑。...
什么是API API是Application Programming Interface的简写。 实现了两个或...