elk搭建和采集nginx日志

准备安装包

安装nginx

./configure --prefix=/usr/local/nginx  --with-pcre=/home/zzq/software/elk/pcre-8.41 --with-zlib=/home/zzq/software/elk/zlib-1.2.11 --with-http_ssl_module   --with-openssl=/home/zzq/software/elk/openssl-1.0.2q
  • 然后就是安装了
make && make install
  • 安装完成后打开conf/nginx.conf,取消注释日志输出格式;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

  • 注意要开防火墙端口哦,包括后面所安装的程序,需要从外部访问的都要开哦
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --reload
  • 然后启动nginx,能访问就好了。

安装elasticSearch

  • 解压,修改config/elasticsearch.yml文件,需要修改的基本配置就这几个。
    在这里插入图片描述
  • 启动es ,注意高版本的es不能用root启动
./bin/elasticsearch

如果需要后台运行可以加-d

./bin/elasticsearch -d

启动es可能抛出的异常

[2019-10-25T13:58:31,795][ERROR][o.e.b.Bootstrap          ] [node131] node validation exception
[4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [1024] for user [zzq] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
[2019-10-25T13:58:31,827][INFO ][o.e.n.Node               ] [node131] stopping ...
  • 有4个错误;第一个是文件描述符太低;解决方案:
  echo "* soft nofile 65536" >> /etc/security/limits.conf
  echo "* hard nofile 131072" >> /etc/security/limits.conf
  • 第二个是最大线程数太少;解决方案(zzq是我的用户名,这里不填用户名不能填*):
  echo "zzq soft nproc 4096" >> /etc/security/limits.conf
  echo "zzq hard nproc 4096" >> /etc/security/limits.conf
  ulimit -u  4096
  • 第三个是最大虚拟内存区域太低;解决方案:
  sysctl -w vm.max_map_count=262144
  echo "vm.max_map_count=262144" >> /etc/sysctl.conf
  sysctl -p
  • 第四个请检查日志并修复配置或禁用系统调用筛选器;解决方案vim config/elasticsearch.yml增加:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
  • 测试是否启动成功
curl -XGET '192.168.137.137:9200/?pretty'

在这里插入图片描述

安装logstash

  • 解压;新建配置文件
vim logstash-nginx-access-log.conf
input {
    file {
        path => ["/usr/local/nginx/logs/access.log"] # 日志路径
        type => "nginx_access"
        start_position => "beginning"
    }
}

filter {
  grok {
    match => {
      "message" => '%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:time}\] "%{WORD:request_action} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'   
    }
  }

  date {
    match => [ "time", "dd/MMM/YYYY:HH:mm:ss Z" ]
    locale => en
  }}

output {
  elasticsearch {
        hosts => ["192.168.137.137:9200"]  #es
        index => "logstash-nginx-access-log" # 索引
    }
stdout{
         codec => rubydebug  #控制台打印日志
	}
}

  • 启动
nohup bin/logstash -f logstash-nginx-access-log.conf  &

在这里插入图片描述

安装kibana

  • 解压;编辑vi config/kibana.yml
    在这里插入图片描述
    如果请求超时的话可以增加一些请求超时时间:
elasticsearch.requestTimeout: 50000
  • 启动./bin/kibana
    在这里插入图片描述
  • 访问http://192.168.137.137:5601/
    在这里插入图片描述
  • 新建索引 Management-> Index Patterns -> Create index pattern 输入 logstash-nginx-access-log;创建这个索引。
  • 到Discover界面就能看到这个索引的日志情况
    • 我访问了nginx
      在这里插入图片描述
    • logstash打印的日志
      在这里插入图片描述
    • 再看Discover,就有一些统计数据了
      在这里插入图片描述

总结

  • elk还是挺方便,采集数据,做统计这些;注意外部需要访问的开端口;其他功能我自己还没用,就不误人子弟了;文章如果有错误的地方,请批评指正。

posted on 2019-11-12 14:47  愤怒的苹果ext  阅读(50)  评论(0编辑  收藏  举报

导航