7.3版本ELk搭建以及日志告警到zabbix全流程

ELK:一套组件

1:安装elasticsearch,需要先安装jdk

  (1)这里我安装的是jdk11.0.1

  链接: https://pan.baidu.com/s/1E1MTgTyNFskHbahzBgNfjg 提取码: iutb

  解压jdk,解压命令为#tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz

为了使后续使用将解压的文件夹改名为jdk:#mv jdk-12.0.2/  jdk

(2):配置环境变量,输入命令

#vim /etc/profile

在文件尾部加入以下内容:

export JAVA_HOME=/usr/local/jdk

export JRE_HOME=/$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

修改完成后,保存文件,退出。

通过source命令重新加载/etc/profile文件,使得修改后的内容生效,命令如下。

# source /etc/profile

输入java –version查看jdk版本,输出成功,这代表安装成功。

 

 

       值得注意的是:export JAVA_HOME=/usr/local/jdk  这个路径是看你吧你的jdk安装在那个路径下,改为你安装的路径。
2:elasticsearch的安装

(1)去官网下载7.3版本的elasticsearch,其他组件也建议使用相同版本。选择linux版本然后上传至服务器,选择你要上传的目录,然后解压

tar -zxvf elasticsearch-7.3.0-linux-86_64.tar.gz

(2)修改配置文件

  1. network.host: 0.0.0.0 这样写是全局访问,你也可以写成让某个主机访问,全局访问需要打开防火墙的端口,或者关闭防火墙
  2.  http.port: 9200

(3)启动elasticsearch需要非root用户

useradd test         #创建用户test

groupadd test#创建组test

useradd test-g test#将用户添加到组

然后需要把该组建的权限赋予新建的非root用户

chown test:test  /elasticsearch/*  这是我得文件夹

(4)启动elasticsearch

进入到elasticsearch,cd /elasticsearch/bin

然后 ./elasticsearch &   挂后台执行

 

注意容易出错:

[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]

  [3]:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

解决:【1】:编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效

【2】:编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:

sysctl -p

重新启动,成功。

【3】:

在配置文件里面

取消注释保留一个节点
cluster.initial_master_nodes: ["node-1"]
这个的话,这里的node-1是上面一个默认的记得打开就可以了

3:安装filebeat

(1)filebeat是安装在客户端用来搜集日志的,然后把收集的日志送到logstash

(2)把压缩包上传至指定目录,解压  tar -zxvf filebeat-7.3.0.tar.gz

(3)修改配置文件  vim /filebeat/filebeat.yml

在文件末尾加上这些

 

涂画的地方是logstash的ip和端口

path:是你要搜集日志的路径

需要注意的是:在配置文件里面需要把

 

 

 这两行注释掉,关掉一个出口

如果报-bash: ./filebeat: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory错误

 解决:

sudo yum install  glibc-common glibc

sudo yum install  glibc.i686

 

4:安装logstash

(1)上传压缩包到指定目录,解压

tar -zxvf logstash-7.3.0.tar.gz

(2)新建一个配置文件,用来使用此文件启动logstash  vim test.conf   

 

涂掉的地方是elasticsearch的地址和端口  指定输出到哪里

 这是简单的配置,input是来接收filebeat传送过来的日志文件,,如果有更多需求,可以使用filter过滤功能

(3)启动 

在logstash的bin目录下

./logstash -f ../test.conf &   这里我的test.conf是和bin为同级目录

5:安装kibana

(1)上传压缩包到指定目录,解压 tar -zvxf   ********

(2)修改配置文件

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://localhost:9200"]

如果需要汉化kibana

i18n.locale: "zh-CN"

(3)启动   在bin目录下    ./kibana &   需要注意的是  kibana也是要在非root用户下启动

(4)界面使用,

 

 

 

所有组件都启动后会看到在elasticsearch下的索引管理里面有你自己建立的索引,也就是在logstash配置文件里,

然后在kibana里面创建索引模式,点进去,你会看到你的索引,然后定义索引模式,例如logstash-*  点击下一步

最后需要在日志界面的配置源中,把该索引加进去

 

 

 这些都是索引。

产看日志过滤使用,可以在搜索框中使用多条件联合查询

 

(6)告警到zabbix

(1)安装

logstash-output-zabbix是一个社区维护的插件,它默认不安装,但是它安装起来也很容易,直接在logstash中运行即可:

bin/logstash-plugin install logstash-output-zabbix
(2)配置logstash文件

input {
    beats {
            port => 5044
    }
}

filter {
    
        grok {
                match => { "message" => "%{IP:remote_addr} (?:%{DATA:remote_user}|-) \[%{HTTPDATE:timestamp}\] %{IPORHOST:http_host} %{DATA:request_method} %{DATA:request_uri} %{NUMBER:status} (?:%{NUMBER:body_bytes_sent}|-) (?:%{DATA:request_time}|-) \"(?:%{DATA:http_referer}|-)\" \"%{DATA:http_user_agent}\" (?:%{DATA:http_x_forwarded_for}|-) \"(?:%{DATA:http_cookie}|-)\""}
        }
        mutate {
               
                add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ]            在消息中添加zabbix中item的key值
                add_field => [ "[@metadata][zabbix_host]" , "EIP_weixin" ]                         在消息中添加zabbix中的host值,主机名
        }
    
}

output {
                elasticsearch {
                       hosts => ["10.1.129.101:9200"]
                       index => "logstash-wxself.gtafe.com_10.1.134.60"
                      
                      }
      

      if [message]  =~ /(ERR|error|ERROR|Failed)/  {
                 zabbix {
                        zabbix_host => "[@metadata][zabbix_host]"                 
                        zabbix_key => "[@metadata][zabbix_key]"
                        zabbix_server_host => "10.1.134.220"   
                        zabbix_server_port => "10051"
                        zabbix_value => "message"
                        }
                }


        stdout { codec => rubydebug }
}

  (3)然后在zabbix  web界面建立模板。监控项,触发器

需要注意的是,监控项要设置成zabbix采集器,设置成字符类型(设置文本类型不行,不知道什么原因),触发器设置为

 

设置完后可以测试一下,需要你在采集日志的主机上安装zabbix  agent,命令如下:

/usr/local/zabbix/bin/zabbix_sender -z 10.1.134.220 -vv -s "EIP_weixin" -k logstash-api-access -o "Aug"

-z代表是  zabbix server  地址  -vv 是 详细显示  -s  是主机名   -k  是键值 -o  是  传输值

 

posted @ 2019-09-06 15:57  王天赏  阅读(1459)  评论(1编辑  收藏  举报