ELK之二----kibana部署及logstash单(多)日志收集
一、安装部署Kibana插件
Kibana官网下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana
1、介绍
kibana 是您走进 Elastic Stack 的窗口,Kibana 让您能够可视化 Elasticsearch 中的数据并操作Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。
① 一张图片胜过千万行日志
Kibana 让您能够自由地选择如何呈现您的数据。或许您一开始并不知道自己想要什么。不过借助Kibana 的交互式可视化,您可以先从一个问题出发,看看能够从中发现些什么。
② 从基础入手
Kibana 核心搭载了一批经典功能:柱状图、线状图、饼图、环形图,等等。它们充分利用了Elasticsearch 的聚合功能。
③ 将地理数据融入任何地图
利用我们的 Elastic Maps Services 来实现地理空间数据的可视化,或者发挥创意,在您自己的地图上实现自定义位置数据的可视化。
④ 时间序列也在菜单之列
您可以利用 Timelion,对您 Elasticsearch 中的数据执行高级时间序列分析。您可以利用功能强大、简单易学的表达式来描述查询、转换和可视化。
⑤ 利用 graph 功能探索关系
凭借搜索引擎的相关性功能,结合 graph 探索,揭示您 Elasticsearch 数据中极其常见的关系。
2、安装部署kibana
1、下载kibaba安装包并安装
[root@elk-1 ~]# yum install kibana-6.8.1-x86_64.rpm -y
2、修改kibana配置文件/etc/kibana/kibana.yml
server.port: 5601 # 默认的监听端口5601 server.host: "0.0.0.0" # 监听的IP地址 elasticsearch.hosts: ["http://192.168.7.101:9200"] # 对端elasticsearch集群主机的IP地址 i18n.locale: "zh-CN" # 添加此项支持汉化版
3、在另一台集群主机安装kibana,并修改对端的elasticsearch主机配置文件,将hosts的IP地址指向另一台集群的elasticsearch主机的IP地址。
server.port: 5601 # 默认的监听端口5601 server.host: "0.0.0.0" # 监听的IP地址 elasticsearch.hosts: ["http://192.168.7.100:9200"] # 对端elasticsearch集群主机的IP地址 i18n.locale: "zh-CN" # 添加此项支持汉化版
4、启动kibana服务,并设置为开机启动
[root@elk-1 ~]# systemctl start kibana [root@elk-1 ~]# systemctl enable kibana
5、查看访问的页面:192.168.7.100:5601,实际访问的是192.168.7.101主机的信息,同理访问192.168.7.101:5601,访问的就是192.168.7.100主机的信息。
二、管理kibana
1、添加数据到kibana
1、我们先开创建一个示例数据,查看是否集群能够同步数据:在kibana--->添加指标数据------>样例数据,进行添加数据
2、查看两个网页的数据是否存在,点击Discover,查看192.168.7.100有数距
3、查看192.168.7.101,也存在数据,此时就已经实现了集群备份的功能。
4、登陆head插件,此时也可以看到两个集群上的数据信息
4、在elasticsearch主机上查看创建的数据
[root@elk-1 ~]# ll /data/esdata/nodes/0/indices/ total 0 drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 2XedLDp7Sym8HNzdF8pGTQ drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 ASx4EO3lSkuXndRlcWNB5g drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 jfOVaC5STCmKYudya7paMg drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ
5、在elasticsearch集群主机上查看数据
[root@elk-2 ~]# ll /data/esdata/nodes/0/indices/ total 0 drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 2XedLDp7Sym8HNzdF8pGTQ drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 ASx4EO3lSkuXndRlcWNB5g drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 jfOVaC5STCmKYudya7paMg drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ
2、管理索引
1、此时删除数据,一定要在管理界面删除,不能在elasticsearch主机上删除数据,否则会导致数据不同步。
2、删除一个数据后,然后在elasticsearch两个主机集群分布上查看信息,两个集群的内容都剩五个文件。
[root@elk-2 ~]# ll /data/esdata/nodes/0/indices/ total 0 drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 95saCfoiSKKdFgNcZTxD1g drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 AD9HqYcQQ0Czds0Rwc9k-A drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:36 hPSzBwspRuycvSp8886DbA drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 r5BNakB1Q6-WUgcLL1eMug
三、安装部署logstash
1、介绍
(1)定义
查看官方文档 https://www.elastic.co/cn/products/logstash
① 官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
② Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:
- inpust:必须(标准输入),负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
- filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
- output:必须(标准输出),负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
2、安装JDK并配置JDK环境变量
1、logstash也依赖于java-JDK包,因此我们也要将jdk安装到logstash主机上。
[root@logstash src]# tar xvf jdk-8u212-linux-x64.tar.gz # 解压jdk包 [root@logstash src]# ln -sv /usr/local/src/jdk jdk1.8.0_212/ jdk-8u212-linux-x64.tar.gz [root@logstash src]# ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk # 创建jdk软链接 ‘/usr/local/jdk’ -> ‘/usr/local/src/jdk1.8.0_212/’ [root@logstash src]# ln -sv /usr/local/jdk/bin/java /usr/bin/ # 创建java软链接 ‘/usr/bin/java’ -> ‘/usr/local/jdk/bin/java’
2、配置JAVA-JDK的环境变量
[root@logstash src]# vim /etc/profile.d/jdk.sh # 配置环境变量 export HISTTIMEFORMAT="%F %T `whoami`" export export LANG="en_US.utf-8" export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin [root@logstash src]# . /etc/profile.d/jdk.sh # 使环境变量生效 [root@logstash src]# java -version #查看JAVA版本 java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8.0_212-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode) [root@logstash src]# echo $JAVA_HOME #查看此时的JDK环境变量路径 /usr/local/jdk
3、安装logstash
官网下载路径:https://www.elastic.co/cn/downloads/logstash
1、安装logstash包,logstash需要的内存也很大,根据实际来设置,我这里分配3G内存
[root@logstash src]# yum install logstash-6.8.1.rpm -y # 安装logstash [root@logstash ~]# chown logstash.logstash /usr/share/logstash/data/queue/ -R #权限更改为 logstash 用户和组,否则启动的时候日志报错
2、指定logstash的环境变量
[root@logstash conf.d]# vim /etc/profile.d/logstash.sh export PATH=$PATH:/usr/share/logstash/bin/ [root@logstash conf.d]# . /etc/profile.d/logstash.sh
4、开启logstash前,测试logstash
实例一:标准输入和标准输出测试
[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output{ stdout { codec => rubydebug }}' # 安装完logstash时,需要对logstash进行测试 hello #输入一个hello { "host" => "logstash", #主机名 "message" => "hello", #输入的消息 "@version" => "1", # 版本 "@timestamp" => 2020-03-12T06:44:48.693Z #当前时间 }
实例二:测试输入数据
[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/linux.txt"}}' hello
此时的hello信息就会输入到/tmp/linux.txt文件中
{"@timestamp":"2020-03-12T06:54:46.889Z","host":"logstash","@version":"1","message":"hello"}
实例三:测试输出到elasticsearch
[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["http://192.168.7.100:9200"] index => "linux-test-%{+YYYY.MM.dd}"}}' hello
此时可以在head插件的网页上查看创建的文件
然后在kibana网页上查看此时创建的文件:管理---->索引模式----->创建索引模式
下一步:
2、然后就可以在discover能查看到自己创建的文件信息
实例四:收集单系统日志并输出至文件
1、在/etc/logstash/conf.d目录下创建一个收集/var/log/messages的系统日志文件:linux.conf
[root@logstash conf.d]# pwd /etc/logstash/conf.d [root@logstash conf.d]# vim linux.conf input { file { path => "/var/log/messages" start_position => "beginning" stat_interval => 3 # 间隔时间3s. type => "messagelog" } } output { elasticsearch { hosts => ["192.168.7.100:9200"] index => "messagelog-7-100-%{+YYYY.MM.dd}" } #stdout { #codec => "rubydebug" #最开始测试输入输出使用 #} }
2、测试语法是否存在问题
[root@logstash conf.d]# logstash -f /etc/logstash/conf.d/linux.conf -t WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console [WARN ] 2020-03-12 16:09:51.259 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified Configuration OK #测试语法,显示OK,说明没问题。 [INFO ] 2020-03-12 16:10:04.705 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
3、由于/var/log/messages只有root的属主有读写权限,需要将此文件的权限改为644,使文件在普通用户启动logstash时,有读取的权限
[root@logstash conf.d]# chmod 644 /var/log/messages [root@logstash conf.d]# ll /var/log/messages -rw-r--r--. 1 root root 1101911 Mar 12 16:21 /var/log/messages
4、启动logstash服务
[root@logstash conf.d]# systemctl start logstash #启动logstash服务 [root@logstash conf.d]# logstash -f linux.conf # 执行编辑的logstash收集日志的文件
可以看到logstash已经启动起来。
5、查看elasticsearch网页上收集到的messages日志信息:管理---->索引模式---->创建索引模式-
6、然后在discover上进行查看此时的日志文件信息
实例五:收集多日志并输出至文件
1、在logstash主机上安装nginx服务,并启动
[root@logstash conf.d]# yum install nginx -y [root@logstash conf.d]# chmod 644 /var/log/nginx/access.log [root@logstash conf.d]# systemctl start nginx
2、修改logstash的配置文件
[root@logstash conf.d]# pwd /etc/logstash/conf.d [root@logstash conf.d]# vim linux.conf file { path => "/var/log/messages" start_position => "beginning" stat_interval => 3 type => "messagelog" } file { path => "/var/log/nginx/access.log" start_position => "beginning" stat_interval => 3 type => "nginx-log" } } output { if [type] == "messagelog" { elasticsearch { hosts => ["192.168.7.100:9200"] index => "messagelog-7-100-%{+YYYY.MM.dd}" }} if [type] == "nginx-log" { elasticsearch { hosts => ["192.168.7.100:9200"] index => "nginx-log-7-100-%{+YYYY.MM.dd}" }} }
3、修改完以上的配置文件,重新启动logstash服务:systemctl restart logstash
测试配置文件是否正常,显示OK就说明提取log没问题
4、执行修改的配置文件,显示successfuliy,说明执行文件正常。
[root@logstash conf.d]# logstash -f linux.conf
5、在kibana网页上查看此时添加的nginx-log日志收集文件,创建索引模式
6、在discover选项查看此时已经存在了nginx-log的日志信息