【逗老师带你学IT】最简单的Elasticsearch+Logstash收集syslog避坑指南-适合网络工程师

笔者最近在尝试使用Elasticsearch+Logstash搭建一个适合收集网络设备(路由器交换机防火墙)的syslog日志的平台。因为之前完全没接触过过ES全家桶,所以这两天好好百度了一下,然后发现:

网上的文章全是坑!!!
写的好的,一看时间,2017年的。2020年的新文章呢,又臭又长,又要装JAVA又要改环境变量,直接劝退。

众所周知的,逗老师是一个网络工程师。网络工程师跟开发者们看待事物的逻辑是不一样的。在仔细研究了原厂的文档之后,逗老师发现这玩意其实没有网上说的那么复杂。这些程序员们,就是喜欢把问题复杂化。

本文,笔者从一个网络工程师的视角出发,说一下如何用最简单的办法搭建一套适合收集交换机路由器syslog的ES平台。

本文主要避坑:

1、JAVA的各种问题

  • ES最新版本自带Java,根本不需要瞎改环境变量
  • ES推荐使用ES_JAVA变量而不是系统JAVA_HOME变量

2、ES启动时候的各种奇葩问题

  • 权限问题,不要自己瞎搞,原生安装自己会解决好权限问题。
  • yum全自动安装,最好的避坑选择。

3、Yum永远的神,能Yum安装的干啥非要作践自己去手动安装

一、Yum安装ES全家桶

1、yum install Elasticsearch

yum 安装具体指南参见
https://www.elastic.co/guide/en/elasticsearch/reference/7.12/rpm.html#rpm-repo

把下面这坨命令,直接刷进去

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch


cat > /etc/yum.repos.d/elasticsearch.repo   <<EOF
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
EOF

yum install --enablerepo=elasticsearch elasticsearch

安装包大约300MB,等待安装完成之后,刷下面的命令启动ES

systemctl enable elasticsearch.service
systemctl start elasticsearch.service

启动完成后,用下面的命令验证

curl http://localhost:9200

看到如下的返回值基本就对了。
在这里插入图片描述
插一嘴,原厂做好的yum安装源就是这么6,没有头疼的权限、JAVA、环境变量各种问题。


2、yum install Kibana

yum 安装具体指南参见
https://www.elastic.co/guide/en/kibana/7.12/rpm.html#rpm-repo

同样,刷命令

cat > /etc/yum.repos.d/kibana.repo   <<EOF
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

yum install kibana

简简单单,一步搞定。等待安装完成之后,刷下面的命令启动ES

systemctl enable kibana.service
systemctl start kibana.service

通过下面命令确认下5601端口是否已经开始监听

netstat -anpt | grep  5601

3、yum install Logstash

yum 安装具体指南参见
https://www.elastic.co/guide/en/logstash/7.12/installing-logstash.html#_yum

同样,刷命令

cat > /etc/yum.repos.d/logstash.repo   <<EOF
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

yum install logstash

等待安装完成之后,刷下面的命令启动ES

systemctl enable logstash.service
systemctl start logstash.service

4、配置IPTABLES

iptables -I INPUT 1 -j ACCEPT

iptables-save > /etc/sysconfig/iptables

cat > /etc/rc.d/rc.local   <<EOF
#!/bin/bash
iptables-restore < /etc/sysconfig/iptables
touch /var/lock/subsys/local
EOF

chmod +x /etc/rc.d/rc.local 


二、编辑配置文件

简单粗暴,直接刷命令就行

cat > /etc/kibana/kibana.yml  <<EOF
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
EOF

cat > /etc/elasticsearch/elasticsearch.yml   <<EOF
cluster.name: elastic-eit-01(这里名字您自己看着改改)
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
EOF

cat > /etc/logstash/logstash.yml   <<EOF
http.host: 0.0.0.0
http.port: 9600-9700
EOF

三、logstash 配置接收syslog

1、测试直接到控制台输出

首先创建logstash配置文件(命名为syslog.conf),专门用于解析syslog日志,刷命令如下

cat > /etc/logstash/conf.d/syslog.conf <<EOF
#   监听514端口
input {
    syslog {
        port => "514"
    }
}
#   输出到控制台
output {
    stdout {
        codec => rubydebug
    }
}
EOF

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/syslog.conf

等待控制台回显稳定后,看到Logtash已经开始监听udp 514端口,不要关闭这个控制台,停留在此观察现象。
在这里插入图片描述
再起一个新终端ssh到服务器上,或者换一台linux主机,使用logger直接触发一条测试syslog
logger -T -P 514 -n 127.0.0.1 'Hello,World!'

运行logstash的控制台收到

{
          "@version" => "1",
          "severity" => 0,
    "severity_label" => "Emergency",
          "facility" => 0,
              "tags" => [
        [0] "_grokparsefailure_sysloginput"
    ],
        "@timestamp" => 2021-05-19T09:55:10.702Z,
           "message" => "<5>May 19 17:55:10 root: Hello,World!\u0000",
          "priority" => 0,
              "host" => "127.0.0.1",
    "facility_label" => "kernel"
}

至此,logstash监听UDP 514并格式化syslog的功能已经确认没问题了。

2、测试logstash转elastic

cat > /etc/logstash/conf.d/logstash_elastic.conf <<EOF

input {
    syslog {
        port => "514"
    }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "syslog-message-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
EOF

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash_elastic.conf

同样,另起一个控制台
logger -T -P 514 -n 127.0.0.1 'Hello,World!'

通过curl直接查看ES内是否已经生成记录

curl http://localhost:9200/_cat/indices?v 

在这里插入图片描述

查看具体的日志信息

curl http://localhost:9200/syslog-message-2021.05.19/_search

在这里插入图片描述
没问题,ES内已经可以记录日志了,日志格式如下:

{
    "took":5,
    "timed_out":false,
    "_shards":{
        "total":1,
        "successful":1,
        "skipped":0,
        "failed":0
    },
    "hits":{
        "total":{
            "value":2,
            "relation":"eq"
        },
        "max_score":"1.0",
        "hits":[
            {
                "_index":"syslog-message-2021.05.19",
                "_type":"_doc",
                "_id":"EpsdhHkBCtbT25Ll1tX3",
                "_score":"1.0",
                "_source":{
                    "facility_label":"kernel",
                    "@version":"1",
                    "severity":0,
                    "@timestamp":"2021-05-19T10:13:38.423Z",
                    "message":"&lt;5&gt;May 19 18:13:38 root: Hello,World!\u0000",
                    "host":"10.152.132.21",
                    "tags":[
                        "_grokparsefailure_sysloginput"
                    ],
                    "facility":0,
                    "severity_label":"Emergency",
                    "priority":0
                }
            },
            {
                "_index":"syslog-message-2021.05.19",
                "_type":"_doc",
                "_id":"E5sdhHkBCtbT25Ll2NVO",
                "_score":"1.0",
                "_source":{
                    "facility_label":"kernel",
                    "@version":"1",
                    "severity":0,
                    "@timestamp":"2021-05-19T10:13:38.915Z",
                    "message":"&lt;5&gt;May 19 18:13:38 root: Hello,World!\u0000",
                    "host":"10.152.132.21",
                    "tags":[
                        "_grokparsefailure_sysloginput"
                    ],
                    "facility":0,
                    "severity_label":"Emergency",
                    "priority":0
                }
            }
        ]
    }
}

3、正式配置Logtash+ES

刚才的配置文件测试完毕后不要动,就在那里放着就可以了。
因为刚才配置文件内使用的是514端口,Linux对1024以下的端口使用需要root权限。但是默认logstash.service运行是以非root用户运行,需要简单修改以下服务配置文件。

nano /etc/systemd/system/logstash.service

修改service配置文件中User=root
User=root
通过以下命令重新加载服务配置文件,并重启logstash

systemctl daemon-reload
systemctl restart logstash.service

四、Kinana操作

1、初始化操作

访问kibana的5601端口
http://x.x.x.x:5601
1、左侧导航树,Analytics>Overview
在这里插入图片描述
2、首次运行,添加一个新的数据
在这里插入图片描述
3、添加一个新的索引
在这里插入图片描述
创建索引样式时,可以看到今天刚刚已经生成的索引名称,本例中,我们填写

syslog-message-*

来匹配今后所有的索引

在这里插入图片描述
在这里插入图片描述

2、查看数据

日志在这里哟
在这里插入图片描述
开开心心的看日志吧
在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逗老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值