因工作原因,近期内大量接触了elk、beats和xpack的相关功能,作为开篇,先简单描述一下应用场景,在本篇内对elk的三件套部署做一个简单的介绍。
前期工作中,发现公司网站的部署只有硬件服务器的监控,当联系监控厂商尝试部署应用监控的时候,发现该项服务属于收费服务,而承接网站建设的乙方却从未想过对此进行监控(黑人脸),这里也不明确点名具体公司了。当前网站应用的监控仅仅依靠f5的health check功能,当出现服务不可用时无法提供邮件等告警服务,毕竟值班人员也是承建方选聘的,可靠性并不是那么高。因此在反复衡量之后选择了当今火热的elk三件套,但是,最最关键的问题是,我从来没有用过elk。
作为一个rookie,又和领导吹下了牛皮,我算是给自己挖了一个很大的坑。
第一期的要求并不高,在不考虑冗余的情况下先单点运行,因此在一台服务器上对elk进行集中部署,后续在优化的时候进行集群调整。
Monitor Server :
系统:rhel 7.4
运行环境:jdk 1.8
用户:假设已经完成了监控用户的建立,不建议使用root启停
PS:
1、当前elk只能运行在jdk 1.8的环境下;
2、rhel 7.4自带openjdk,如果需要更换请自行更换;
3、rhel 7.4自带curl,如需要更换版本请自行处理
4、不要问我安装文件哪里来,放到哪里去,那是你的自由。所有步骤均假设当前所需组件已经解压缩,所有的执行均假设已经在该组件的文件夹中。
以下才是正文,其实我才是分割线。
上图是ELK的产品栈,比较清晰的描述了数据的流向,本篇文章仅展示上图右半侧的内容,其余内容敬请期待。
ElasticSearch安装
ElasticSearch是ELK中最为核心的一个组件,承担了ELK中最为重要的工作。
修改配置文件
cd config
vi elasticsearch.yml
--------------------------------
http.port: 9200
--------------------------------
启动
cd ..
bin/elasticsearch -d
在按下回车后,我看到了如下的一个奇怪提示,然后启动失败。
首先是终端提示的如下一句话,貌似应该是系统岗小哥的锅,申请了4c,可是只给我了1c,应该要吊起来打。
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
进一步查看日志
cd logs
less elasticsearch.log
[2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
这里发现启动时出现了两个错误,简单看上去应该是说明当前系统的参数设置不到位。在修改之前额外提一点,在一开始的配置中,我将network.host配置为localhost,启动日志中并不会报错,elasticsearch可以正常启动,但是访问只能通过localhost访问,不能通过ip地址进行访问,意味着只能通过本机,这显然不符合实际使用场景。通过网上搜寻解决方案,有两种方法,第一种是将该值设置为0.0.0.0,第二种方法是将该值设置为内网的ip地址,我这里采用了第二种方法,第一种方法并未做测试。
针对日志中出现的两个问题,需要进行以下的设置
切换至root用户
vi /etc/sysctl.conf
--------------------------------
vm.max_map_count=262144
--------------------------------
sysctl -p
vi /etc/security/limits.conf
--------------------------------
monitor soft nofile 65536
monitor hard nofile 65536
--------------------------------
shutdown -r now
其中修改limits.conf一定需要重启操作系统才能生效,并不能通过重新登陆生效。
切换至monitor用户
ulimit -a
less /logs/elasticsearch.log
查看参数调整结果和启动日志确定是否还会报错。
在以上全部完成之后可以通过以下方式进行验证
1、在本机使用curl进行验证
无论使用哪种方式,均会显示以下信息,说明ElasticSearch已经启动成功
{
"name" : "EoWbwTJ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "EdOFSKW1R_e4_X9Jr4fwJA",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Logstash安装
Logstash作为数据渠道之一,可以通过自身采集数据或者针对beats采集的数据,对数据进行分析整合输出给ElasticSearch进行使用。
修改配置文件,注意,本身并无logstash.conf配置文件
cd config
vi logstash.conf
--------------------------------
input{
beats{
port => 5044
}
}
filter{
if "filebeat" in [tags]{
grok{
match => {
"message" => "%"
}
}
}
}
output{
if "filebeat" in [tags]{
elasticsearch{
index => "filebeat-%{+YYYY.MM.dd}"
}
}
if "heartbeat" in [tags]{
elasticsearch{
index => "heartbeat-%{+YYYY.MM.dd}"
}
}
if "metricbeat" in [tags]{
elasticsearch{
index => "metricbeat-%{+YYYY.MM.dd}"
}
}
stdout{
codec => rubydebug
}
}
--------------------------------
上述的配置是结合了Beats进行的配置,在没有安装Beats作为数据渠道的情况下,可以使用Logstash进行获取一些日志数据。可以进行如下配置,其中output中的index将用户后续在kibana中index的配置。
--------------------------------
input{
file{
path => "/home/monitor/logstash/logs/*.log"
start_position => "beginning"
}
}
output{
elasticsearch{
index => "logstash-%{+YYYY.MM.dd}"
}
}
--------------------------------
启动
nohup bin/logstash -f config/logstash.conf &
less logs/logstash-plain.log
查看日志中是否出现启动报错信息,如无报错说明启动成功
使用curl查看logstash是否已经成功输出相关index
curl -XGET xxx.xxx.xxx.xxx:9200/_cat/indices
yellow open logstash-2018.04.22 2VgOnKd9Qc2xbeGQnZ4aJw 5 1 18 0 78.8kb 78.8kb
Kibana安装
Kibana是ELK中的直观展现,主要将ElasticSearch中的数据使用图形化、定制化的方式进行展现。
修改配置文件
cd config
vi kibana.yml
--------------------------------
server.port: 5601
--------------------------------
启动
nohup bin/kibana &
查看进程是否已经成功启动
fuser -n tcp 5601
接下来简单介绍一下Kibana的基本操作。
首先是在Kibana中创建index,在Management中选择Index Patterns进入如下页面
选择create index Pattern进入如下页面,输入logstash*后可以看到自动匹配了ElasticSearch中的index
点击Create Index Pattern后即可创建index pattern。
加下来点击Discover
可以发现已经配置成功(请忽略logstash的output内容,我这里读取了apache的access.log文件)
本篇文章至此已经全部讲述完毕。简单介绍下接下来的计划:Beats组件的使用、X-Pack组件的使用、Kibana可视化的使用。
领取专属 10元无门槛券
私享最新 技术干货