1-ELK环境搭建

ELK介绍和JDK1.8环境搭建

软件包下载地址和提取码

链接: https://pan.baidu.com/s/1OmtreJTS-nQ8oELPXJHV2A

提取码: g7qa

实战环境

  1. Centos7
  2. 关闭Iptables
  3. 关闭Selinux

ELK功能

  1. Kibana用来展现数据
  2. Elasticsearch用来存储数据
  3. Logstash用来收集数据

实战环境

  1. 192.168.1.10部署Kibana、ES
  2. 192.168.1.11部署Logstash

JDK1.8环境搭建

  1. 安装JDK
  2. 配置环境变量

Yum安装jdk1.8,不建议

  1. 链接:https://www.elastic.co/downloads/logstash
  2. yum install java-1.8.0-openjdk -y
  3. Elasticsearch、Logstash依赖于java环境

JDK的二进制安装

  1. Jdk1.8二进制包下载路径http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. 解压到对应安装目录/usr/local/或者/opt/
  3. 验证安装/usr/local/jdk1.8.0_201/bin/java -version

安装命令

cd /usr/local/src

tar -zvxf jdk-8u201-linux-x64.tar.gz

mv jdk1.8.0_201 /usr/local/

配置Java环境变量写在/etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_201/

export PATH=$PATH:$JAVA_HOME/bin

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

source /etc/profile

验证环境变量

java -version

文本

描述已自动生成

ELK下载地址

  1. ELK6版本
  2. https://artifacts.elastic.co
  3. ELK下载比较慢,建议使用提供的百度网盘的下载链接

实战环境

  1. 192.168.1.10部署Kibana、ES
  2. 192.168.1.11部署Logstash

Kibana二进制安装和启动

安装Kibana

  1. 下载Kibana二进制包
  2. 解压到/usr/local完成安装

Kibana安装脚本

cd /usr/local/src/

tar -zxf kibana-6.6.0-linux-x86_64.tar.gz

mv kibana-6.6.0-linux-x86_64 /usr/local/kibana-6.6.0

修改Kibana配置/usr/local/kibana-6.6.0/config/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

#elasticsearch.url: "http://localhost:9200"

#elasticsearch.username: "user"

#elasticsearch.password: "pass"

Kibana的启动和访问

  1. 前台启动Kibana:/usr/local/kibana-6.6.0/bin/kibana
  2. 后台启动Kibana:nohup /usr/local/kibana-6.6.0/bin/kibana >/tmp/kibana.log 2>/tmp/kibana.log &
  3. 访问Kibana,需要开放5601端口

Kibana的安全说明

  1. 默认无密码,也是谁都能够访问
  2. 如果使用云厂商,可以在安全组控制某个IP的访问
  3. 建议借用Nginx实现用户名密码登录

默认的Kibana

  1. 任何人都能无密码访问Kibana
  2. 借用Nginx实现登录认证
  3. Nginx控制源IP访问、Nginx可以使用用户名密码的方式

Kibana借用Nginx来实现简单认证

  1. Kibana监听在127.0.0.1
  2. 部署Nginx,使用Nginx来转发

Nginx编译安装

yum install -y lrzsz wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

cd /usr/local/src

wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'

tar -zxvf nginx-1.14.2.tar.gz

cd nginx-1.14.2

./configure --prefix=/usr/local/nginx && make && make install

Nginx环境变量设置

  1. export PATH=$PATH:/usr/local/nginx/sbin/
  2. 验证环境变量
1-ELK环境搭建

Nginx两种限制

  1. 限制源IP访问,比较安全,访问的IP得不变
  2. 使用用户名密码的方式,通用

Nginx限制源IP访问(/usr/local/nginx/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;
    server {
       listen       80;
       location / {
           allow 127.0.0.1;
           deny all;
           proxy_pass http://127.0.0.1:5601;
       }
    }

观察访问日志

  1. /usr/local/nginx/logs/access.log
  2. 如果被拒绝了可以在日志里找到源IP

Nginx配置使用用户名密码的方式

location / {
            auth_basic "elk auth";
            auth_basic_user_file /usr/local/nginx/conf/htpasswd;
            proxy_pass http://127.0.0.1:5601;
        }

设置用户名和密码

printf "ljh:$(openssl passwd -1 ljhpwd)\n" >/usr/local/nginx/conf/htpasswd

访问测试 图形用户界面, 应用程序描述已自动生成 图形用户界面, 文本, 应用程序描述已自动生成

Elasticsearch二进制安装和启动

Elasticsearch

  1. 使用Java开发,安装方便
  2. Elasticsearch提供Http接口
  3. Elasticsearch提供集群模式

Kibana网页访问问题

  1. Kibana网页在Elasticsearch还没安装前无法访问
  2. 安装完Elasticsearch就好了

Elasticsearch的安装

  1. 下载二进制包
  2. 解压到对应目录完成安装/usr/local/
  3. 目录属主更新为elk,Elasticsearch无法用root启动

ES的安装脚本

cd /usr/local/src

tar -zxvf elasticsearch-6.6.0.tar.gz

mv elasticsearch-6.6.0 /usr/local/

Elasticsearch配置/usr/local/elasticsearch-6.6.0/config/elasticsearch.yml

path.data: /usr/local/elasticsearch-6.6.0/data

path.logs: /usr/local/elasticsearch-6.6.0/logs

network.host: 127.0.0.1

http.port: 9200

# JVM的内存限制更改/usr/local/elasticsearch-6.6.0/config/jvm.options

-Xms128M

-Xmx128M

Elasticsearch的启动,得用普通用户启动

如果使用root启动会报错

1-ELK环境搭建
  1. useradd -s /sbin/nologin elk
  2. chown -R elk:elk /usr/local/elasticsearch-6.6.0/
  3. su - elk -s /bin/bash

验证启动是否成功

  1. 观察日志/usr/local/elasticsearch-6.6.0/logs/elasticsearch.log
图片包含 文本

描述已自动生成
图片包含 图形用户界面

描述已自动生成
  1. 观察Kibana网页
图形用户界面, 应用程序

描述已自动生成

Elasticsearch启动注意

  1. Elasticsearch如果启动在127.0.0.1的话,可以启动成功
  2. Elasticsearch如果要跨机器通讯,需要监听在真实网卡上
  3. 监听在真实网卡需要调整系统参数才能正常启动

Elasticsearch监听在非127.0.0.1

监听在0.0.0.0或者内网地址

vi /usr/local/elasticsearch-6.6.0/config/elasticsearch.yml

1-ELK环境搭建

ps aux | grep elk

图形用户界面, 文本

描述已自动生成

以上两种监听都需要调整系统参数

启动下:

/usr/local/elasticsearch-6.6.0/bin/elasticsearch -d

ES启动三个报错的处理

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

[2]: max number of threads [3829] for user [elk] 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]

最大文件打开数调整/etc/security/limits.conf

61 # End of file

62 * - nofile 65536

最大打开进程数调整/etc/security/limits.d/20-nproc.conf

全部修改成这一个参数

* - nproc 10240

文本

描述已自动生成

内核参数调整/etc/sysctl.conf

vm.max_map_count = 262144

sysctl -p

绿色的钟表

描述已自动生成

退出终端重新登录ELK用户开启

/usr/local/elasticsearch-6.6.0/bin/elasticsearch -d

tail -f /usr/local/elasticsearch-6.6.0/logs/elasticsearch.log

Elasticsearch监听网卡建议

  1. 如果学习,建议监听在127.0.0.1
  2. 如果是云服务器的话,一定把9200和9300公网入口在安全组限制一下
  3. 自建机房的话,建议监听在内网网卡,监听在公网会被入侵

用网页访问ES

图形用户界面, 文本, 应用程序

描述已自动生成

Elasticsearch的基本操作

Elasticsearch的概念

  1. 索引 ->类似于Mysql中的数据库
  2. 类型 ->类似于Mysql中的数据表
  3. 文档 ->存储数据

Elasticsearch的数据操作

  1. 手动curl操作Elasticsearch会比较难
  2. 借用Kibana来操作Elasticsearch

测试Web接口

  1. 浏览器访问
  2. Kibana操作:GET /
图形用户界面, 文本, 应用程序

描述已自动生成

索引操作

  • 创建索引: PUT /ljh
图形用户界面, 文本, 应用程序, Teams

描述已自动生成
  • 获取所有索引: GET /_cat/indices?v
应用程序

中度可信度描述已自动生成
  • 删除索引: DELETE / ljh
图形用户界面, 文本, 应用程序, Word

描述已自动生成

Elasticsearch增删改查

# ES插入数据

PUT /ljh/users/1
{
  "name":"ljh", 
  "age": 30
}
图形用户界面, 文本, 应用程序

描述已自动生成

# ES查询数据

GET /ljh/users/1

图形用户界面, 文本, 应用程序

描述已自动生成

# 模糊查询

首选插入一条数据到/ljh/users/2 "name":"ly" "age": 50,模糊查询/ljh 下的所有内容,以列表形式展示

GET /ljh/_search?q=*

图形用户界面

中度可信度描述已自动生成

修改数据、覆盖式修改

PUT /ljh/users/1
{
  "name": "ljhchange",
  "age": 46
}
图形用户界面, 文本, 应用程序

描述已自动生成

ES删除数据

DELETE /ljh/users/1

图形用户界面

描述已自动生成

修改某个字段、不覆盖

POST /ljh/users/2/_update
{
  "doc": {
    "age": 29
  }
}
图形用户界面, 应用程序

描述已自动生成

修改所有的数据

POST /ljh/_update_by_query
{
  "script": {
    "source": "ctx._source['age']=30" 
  },
  "query": {
    "match_all": {}
  }
}

修改前:

图形用户界面, 文本, 应用程序

描述已自动生成

修改后:

图形用户界面, 应用程序

描述已自动生成

所有索引增加一个字段

POST /ljh/_update_by_query
{
  "script":{
    "source": "ctx._source['city']='hangzhou'"
  },
  "query":{
    "match_all": {}
  }
}
图形用户界面, 文本, 应用程序

描述已自动生成
图形用户界面, 文本, 应用程序

描述已自动生成

ELK功能

  1. Kibana用来展现数据
  2. Elasticsearch用来存储数据
  3. Logstash用来收集数据

Logstash二进制安装和启动

Logstash的安装

  1. 依赖于Java环境(仿照server01部署)

安装命令

cd /usr/local/src

tar -zvxf jdk-8u201-linux-x64.tar.gz

mv jdk1.8.0_201 /usr/local/

配置Java环境变量写在/etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_201/

export PATH=$PATH:$JAVA_HOME/bin

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

source /etc/profile

验证环境变量

java -version

  1. 下载二进制安装文件
  2. 解压到对应目录完成安装/usr/local/

Logstash的安装脚本

cd /usr/local/src

tar -zxf logstash-6.6.0.tar.gz

mv logstash-6.6.0 /usr/local/

Logstash的JVM配置文件更新/usr/local/logstash-6.6.0/config/jvm.options

-Xms200M

-Xmx200M

Logstash支持

  1. Logstash分为输入、输出
  2. 输入:标准输入、日志等
  3. 输出:标准输出、ES等

Logstash最简单配置,用于测试/usr/local/logstash-6.6.0/config/logstash.conf

input{
  stdin{}
}
output{
  stdout{
    codec=>rubydebug
  }
}

Logstash的启动和测试

  1. yum install haveged -y; systemctl enable haveged; systemctl start haveged # 速度调优
  2. 前台启动:/usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf
  3. 后台启动:nohup /usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf >/tmp/logstash.log 2>/tmp/logstash.log &
  4. 测试标准输入和输出

输入:ljh

输出:

文本

描述已自动生成

Logstash读取日志/usr/local/logstash-6.6.0/config/logstash.conf

input {
  file {
    path => "/var/log/secure"
  }
}
output{
  stdout{
    codec=>rubydebug
  }
}
文本

描述已自动生成

Logstash读取日志发送到ES

实战环境

  1. 192.168.1.10: es
  2. 192.168.1.11: logstash

Logstash和ES结合说明

  1. Logstash支持读取日志发送到ES
  2. 但Logstash用来收集日志比较重,后面将对这个进行优化

server02安装一个nginx ,开启nginx,将nginx的访问日志推送到logstash

Nginx编译安装

yum install -y lrzsz wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

cd /usr/local/src

# wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'

tar -zxvf nginx-1.14.2.tar.gz

cd nginx-1.14.2

./configure --prefix=/usr/local/nginx && make && make install

Nginx环境变量设置

export PATH=$PATH:/usr/local/nginx/sbin/

开启nginx:nginx

Logstash配置发送日志到ES数据库/usr/local/logstash-6.6.0/config/logstash.conf

input {
  file {
    path => "/usr/local/nginx/logs/access.log"
  }
}
output {
  elasticsearch {
    hosts => ["http://192.168.1.10:9200"]
  }
}

后台启动,重载配置

nohup /usr/local/logstash-6.6.0/bin/logstash -f /usr/local/logstash-6.6.0/config/logstash.conf >/tmp/logstash.log 2>/tmp/logstash.log &

  1. 更改output可以直接重载配置
  2. kill -1 进程id

Logstash收集日志必要点

  1. 日志文件需要有新日志产生
  2. Logstash跟Elasticsearch要能通讯

访问nginx,在Kibana上查询数据

  1. GET /logstash-2023.05.02/_search?q=*
  2. Kibana上创建索引直接查看日志
图形用户界面, 文本, 应用程序, 电子邮件

描述已自动生成

图形用户界面, 文本, 应用程序

描述已自动生成
文本

中度可信度描述已自动生成

在Discover界面查询

图形用户界面, 文本, 应用程序, 电子邮件

描述已自动生成
图形用户界面, 文本, 应用程序, Teams

描述已自动生成

Kibana简单查询

  1. 根据字段查询:message: "_msearch"
  2. 根据字段查询:选中查询
图形用户界面, 文本, 应用程序, 电子邮件

描述已自动生成

ELK流程

Logstash读取日志 -> ES存储数据 -> Kibana展现

发布者:LJH,转发请注明出处:https://www.ljh.cool/37036.html

(1)
上一篇 2023年4月21日 下午1:54
下一篇 2023年5月5日 上午12:16

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注