ELK-三件套从无到有

因工作原因,近期内大量接触了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可视化的使用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G0N5W200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券