北青永恒 - ELK
type: channel
link: https://www.kococ.cn/tag/ELK
items: ELK 部署文档
items: ELK-Nginx日志分析及绘图
items: ELK日志收集系统概括

ELK 部署文档
type: item
date: 2020-09-24T17:06:00+08:00
description: 1. 前言在日常运维工作中，对于系统和业务日志的处理尤为重要。尤其是分布式架构，每个服务都会有很多节点，如果要手工一个一个的去取日志，运维怕是要累死。 简单介绍：ELK 是 elasticsearch + logstash + kibana 三款开源软件的简称。elasticsearch：是个开源的分布式搜索引擎，特点是：分布式、配置简单、自动发现、索引自动分片、索引副本机制、restful风格接口，多数据源，自动搜索负载等logstash：可以对日志进行收集、滤过、并将其存储在 elasticsearch中kibana：可以为 elasticsearch提供友好的用户交互界面，用户可以通过 kibana来分析、搜索甚至绘图来分析数据。这里介绍下目前使用比较多的架构：ELK + filebeatFilebeat 是一个轻量级开源日志文件数据收集器，可以将它安装到需要收集的节点上，它会将日志输送到 logstash 或 elasticsearch有了 ELK 就可以将分布到多台的日志统一规划起来。网络上有很多关于 ELK 的部署方案，参考了很多发现要不就是老版本的，要不就是不太完善，因此自己做下记录。注意：在安装 ELK 的时候，这三个软件的版本必须保持支持，否则出现各种bug2. ELK搭建过程实验拓扑图：实验环境主机服务介绍：本次实验是收集 nginx 日志，并存储在 elasticsearch中。将 elasticsearch 和 kibana 安装在同一主机上可以避免不必要的网络IO操作，直接本机交互。2.1 Elasticsearch 的安装过程（1）初始化工作selinux、firewall 关闭时间同步主机名修改修改打开文件最大数时间同步：[root@192.168.118.14 ~]``#ntpdate tiger.sina.com.cn修改主机名：[root@192.168.118.14 ~]``#hostnamectl set-hostname node1``修改完主机名别忘记在 ``/etc/hosts` `中申明``192.168.118.14 node1修改文件打开最大数：[root@192.168.118.14 ~]``#vim /etc/security/limits.conf``* soft nproc 655350``* hard nproc 655350``* soft nofile 655350``* hard nofile 655350` `[root@192.168.118.14 ~]``#ulimit -SHn 655350（2）配置 java 环境[root@192.168.118.14 ``/usr/local/src``]``#tar xf jdk-8u77-linux-x64.tar.gz -C /usr/local/` `在 ``/etc/profile` `文件中追加``JAVA_HOME=``/usr/local/jdk1``.8.0_77``JAVA_BIN=$JAVA_HOME``/bin``PATH=$PATH:$JAVA_BIN``CLASSPATH=$JAVA_HOME``/lib/dt``.jar:$JAVA_HOME``/lib/tools``.jar``export` `JAVA_HOME JAVA_BIN PATH CLASSPATH` `[root@192.168.118.14 ``/usr/local/src``]``#source /etc/profile``[root@192.168.118.14 ``/usr/local/src``]``#ln -vs /usr/local/jdk1.8.0_77/bin/java /usr/bin/``[root@192.168.118.14 ``/usr/local/src``]``#java -version``java version ``"1.8.0_77"``Java(TM) SE Runtime Environment (build 1.8.0_77-b03)``Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)（3）安装 elasticsearch下载地址：https://www.elastic.co/cn/downloads/past-releases#elasticsearch这里下载的是 6.8 的 rpm 包直接安装：[root@192.168.118.14 ~``/ELK``]``#yum localinstall elasticsearch-6.8.2.rpm``修改配置文件如下：``[root@192.16…

ELK-Nginx日志分析及绘图
type: item
date: 2020-08-27T16:28:00+08:00
description: 1. 前言先上一张整体的效果图：上面这张图就是通过 ELK 分析 nginx 日志所得到的数据，通过 kibana 的功能展示出来的效果图。是不是这样对日志做了解析，想要知道的数据一目了然。接下来就是实现过程实录。2. 实现过程通过上一篇：ELK 部署文档 已经对 ELK + filebeat 获取 nginx 做了详细的配置介绍，这里重点就不在安装 ELK 上面了。 下面这边的内容，主要是针对 logstash 配置文件的编写和 kibana web界面的配置。主机信息在申明下，和上一篇一样：2.1 nginx 日志格式编写在编写logstash 文件之前，得有一个标准输入输出格式，这个格式通用的就是 json 格式。首先，考虑如何才能获取 json 格式的日志，当然可以直接通过修改 nginx 日志的格式来实现，因此开始修改 nginx 日志格式。如果获取的日志无法修改json 格式，则可以通过正则表达式来匹配。在nginx 配置文件中添加如下日志格式：http { … log_format main_json '{"domain":"$server_name",' '"http_x_forwarded_for":"$http_x_forwarded_for",' '"time_local":"$time_iso8601",' '"request":"$request",' '"request_body":"$request_body",' '"status":$status,' '"body_bytes_sent":"$body_bytes_sent",' '"http_referer":"$http_referer",' '"upstream_response_time":"$upstream_response_time",' '"request_time":"$request_time",' '"http_user_agent":"$http_user_agent",' '"upstream_addr":"$upstream_addr",' '"upstream_status":"$upstream_status"}'; …. }定义的这个nginx 日志格式叫 main_json 后面的配置文件，都可以引用这个日志格式。除了nginx 日志参数以外，还可以通过配置文件来自行添加自定义参数，比如 获取用户的真实ip于是编写一个自定义变量的配置文件：[root@192.168.118.16 ~]`` vim /etc/nginx/location.conf` ` set $real_ip $remote_addr;``if` `( $http_x_forwarded_for ~ ``"^(\d+\.\d+\.\d+\.\d+)"` `) {`` ``set` `$real_ip $1;``}这个配置文件只是为了获取用户的真实IP，变量名为： real_ip 需要在nginx.conf 中引用，在刚才的配置文件中也加入该变量，完整日志格式如下：log_format main_json '{"domain":"$server_name",' '"real_ip":"$real_ip",' '"http_x_forwarded_for":"$http_x_forwarded_for",' '"time_local":"$time_iso8601",' '"request":"$request",' '"request_body":"$request_body",' '"status":$status,' '"body_bytes_sent":"$body_bytes_sent",' '"http_referer":"$http_referer",' '"upstream_response_time":"$upstream_response_time",' '"request_time":"$request_time",' '"http_user_agent":"$http_user_agent",' '"upstream_addr":"$upstream_addr",' '"upstream_status":"$upstream_status"}';注释掉该行： access_log /var/log/nginx/access.log main;接下来，编写一个nginx 配置文件 端口为 9527 作为测试使用[root@192.168.118.16 ~]`` vim /etc/nginx/conf.d/server_9527.conf``server {`` ``listen 9527;`` ``server_name …

ELK日志收集系统概括
type: item
date: 2020-03-11T09:45:00+08:00
description: ELK收集日志作者：Andu 2019/6/30精华文章 第1章 ELK介绍没有日志收集平台的时候如何分析日志？什么是ELK/EFLK? ELK的数据流转流程?官方演示地址：https://demo.elastic.co/第2章 日志收集分类代理层：nginx,haproxyweb层：nginx,tomcat数据库层：mysql,redis,mongo,elasticsearch操作系统层：source,message第3章 安装部署ELK3.1 官方地址https://www.elastic.co/guide/index.html3.2 安装配置java[root@Andu ~]# yum install java-1.8.0-openjdk.x86_64 -yA1\(#_msocom_1) [root@Andu ~]# java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode) 3.3 更新时间yum install ntpdate -y ntpdate time1.aliyun.comA2\(#_msocom_2) 3.4 安装配置elasticsearch[root@Andu ~]# mkdir /data/soft/ -p [root@Andu ~]# cd /data/soft/ [root@Andu soft]# rz [root@Andu soft]# ll 总用量 506120 -rw-r--r-- 1 root root 114059630 2月 25 11:09 elasticsearch-6.6.0.rpm -rw-r--r-- 1 root root 36581177 4月 27 12:29 elasticsearch-head.tar.gz -rw-r--r-- 1 root root 11790119 2月 25 11:08 filebeat-6.6.0-x86_64.rpm -rw-r--r-- 1 root root 185123116 2月 25 11:11 kibana-6.6.0-x86_64.rpm -rw-r--r-- 1 root root 170703770 2月 25 11:38 logstash-6.6.0.rpm [root@Andu soft]# rpm -ivh elasticsearch-6.6.0.rpm 警告：elasticsearch-6.6.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY 准备中... ################################# [100%] Creating elasticsearch group... OK Creating elasticsearch user... OK 正在升级/安装... 1:elasticsearch-0:6.6.0-1 ################################# [100%] \### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service \### You can start elasticsearch service by executing sudo systemctl start elasticsearch.serviceCreated elasticsearch keystore in /etc/elasticsearch 3.4.1 相关配置目录及配置文件[root@Andu ~]# rpm -qc elasticsearch /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/jvm.options /etc/elasticsearch/log4j2.properties /etc/elasticsearch/role_mapping.yml /etc/elasticsearch/roles.yml /etc/elas…