什么是ELK
ELK是一种基于开源工具的日志管理和数据分析解决方案,它由三个核心组件组成:
- Elasticsearch:用于存储、搜索和分析大规模数据的分布式搜索引擎。
- Logstash:用于收集、过滤、转换和发送日志数据的数据处理管道。
- Kibana:用于可视化Elasticsearch中数据的开源数据分析和可视化平台。
ELK监控通常用于收集、存储和分析各种类型的日志数据,以便实时监控系统性能、故障排除、安全审计等目的。通过将这三个组件整合在一起,用户可以轻松地构建强大的日志管理和监控系统,帮助他们更好地理解和利用其日志数据。 ELK监控在各种领域,如IT运维、安全监控、应用程序性能管理等方面得到广泛应用。
为什么使用ELK
-
日志管理和分析:ELK提供了强大的工具和平台,可以帮助用户收集、存储和分析大规模的日志数据,从而更好地理解系统运行情况、应用程序性能以及安全事件等信息。
-
实时监控:ELK可以实时地处理和展示日志数据,帮助用户快速发现系统问题或异常情况,从而及时做出反应。
-
可视化分析:Kibana作为ELK的一部分,提供了丰富的数据可视化功能,用户可以通过图表、地图和仪表板等方式直观地展示和分析数据,帮助用户更好地理解数据背后的信息。
-
安全审计:ELK可以帮助组织进行安全事件的监控和审计,及时发现潜在的安全威胁并做出相应的应对措施。
-
开源和灵活性:ELK是开源的解决方案,具有良好的灵活性和可扩展性,用户可以根据自己的需求进行定制和扩展。
什么是minIO
MinIO是一个开源的对象存储服务器,可以用于存储和管理大规模的非结构化数据,如照片、视频、日志文件等。MinIO是云原生的设计,具有高度可扩展性、高性能和易部署的特点,可以在私有云、公共云或混合云环境中运行。
MinIO提供了S3兼容的API接口,这意味着它可以与支持Amazon S3协议的应用程序和工具无缝集成。用户可以通过简单的HTTP请求来上传、下载和管理对象数据,从而方便地构建和扩展各种基于对象存储的应用程序。
MinIO支持多种部署方式,包括单节点部署、分布式部署和多副本部署,用户可以根据自己的需求选择合适的部署方式。由于其高度可扩展性和性能优势,MinIO在大数据分析、容器化环境、备份和归档等场景中得到广泛应用。
搭建
搭建环境
Elasticsearch——下载 Elastic 产品 | Elastic
Logstash——下载 Elastic 产品 | Elastic
Kibana——下载 Elastic 产品 | Elastic
java——java官网
开始搭建
第一台;
搭建java
[root@localhost ~]# tar zxvf jdk-17_linux-x64_bin_790090.tar.gz
[root@localhost ~]# mv jdk-17.0.10/ /usr/local/java
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java
> export JRE_HOME=/usr/local/java/jre
> export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
> export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
安装Elasticsearch
[root@localhost ~]# tar zxvf elasticsearch-8.12.2-linux-x86_64.tar.gz
[root@localhost ~]# mv elasticsearch-8.12.2 /usr/local/es
[root@localhost ~]# useradd es
[root@localhost ~]# chown -R es:es /usr/local/es/
[root@localhost ~]# mkdir -p /es/data
[root@localhost ~]# mkdir -p /es/log
[root@localhost ~]# chown -R es:es /es/
[root@localhost ~]# vim /etc/security/limits.conf
es soft nofile 65536
es hard nofile 65536
es soft nproc 4096
es hard nproc 4096
es soft memlock ulimited
es hard memlock ulimited
[root@localhost ~]# vim /etc/sysctl.conf
vm.max_map_count=655360 #jvm可以派生进程的最大值
[root@localhost ~]# vim /usr/local/es/config/elasticsearch.yml
cluster.name: "my-application"
network.host: 192.168.20.132
node.name: es
path.data: /es/data
path.logs: /es/log
bootstrap.memory_lock: false
http.port: 9200
discovery.type: single-node #单节点工作模式
s3.client.default.endpoint: 192.168.20.132:9090
s3.client.default.protocol: http
Elasticsearch需创建其他用户,使用root会报错(因为安全问题,Elasticsearch 不允许 root 用户直接运行)
安装kibana
[root@localhost ~]# tar zxvf kibana-8.12.2-linux-x86_64.tar.gz
[root@localhost ~]# mv kibana-8.12.2 /usr/local/kibana
[root@localhost ~]# vim /usr/local/kibana/config/kibana.yml
server.name: kibana
server.host: "192.168.20.132"
elasticsearch.hosts: [ "http://192.168.20.132:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
第二台;
安装logstash和nginx(测试获取日志)
[root@localhost ~]# tar zxvf logstash-8.12.2-linux-x86_64.tar.gz
[root@localhost ~]# mv logstash-8.12.2 /usr/local/logstash
[root@localhost ~]# vim /usr/local/logstash/config/logstash.yml
http.host: "10.98.179.95" #本机ip
xpack.monitoring.elasticsearch.hosts: [ "http://10.98.179.84:9200" ] #elk的ip
config.reload.automatic: true
config.reload.interval: 3s
path.config: /usr/share/logstash/config/nginx-access.conf #遵循的链接配置文件路径
[root@localhost ~]# vim /usr/local/logstash/config/nginx-access.conf
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output {
elasticsearch {
hosts => ["192.168.20.132:9200"]
index => "nokafka-nginx"
}
}
安装minio;
[root@localhost ~]# wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240118225128.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm
[root@localhost ~]# mkdir /minio
[root@localhost ~]# minio server /minio --console-address :9090
进入minio,使用9090端口,创建用户elk,给读写权限,创建桶
启动各个服务
[root@localhost ~]# /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/nginx-access.conf
[root@localhost ~]# su es
[es@localhost root]$ /usr/local/es/bin/elasticsearch
Kibana默认不允许root启动,添加选项
[root@localhost ~]# /usr/local/kibana/bin/kibana --allow-root
访问ip+5601
添加索引仪表盘不作展示,略
添加快照仓库
PUT /_snapshot/es-bucket
{
"type": "s3",
"settings": {
"bucket": "es-bucket",
"endpoint": "http://192.168.20.132:9000",
"protocol": "http",
"path_style_access": true
}
}
GET /_snapshot/es-bucket
查看检索配置信息
PUT /_snapshot/es-bucket/kz
{
"indices": "index1,index2",
"ignore_unavailable": true,
"include_global_state": false
}
创建一个叫kz的快照
进入minio中查看
PUT _snapshot/es-bucket/test1?wait_for_completion=true&pretty
备份所有索引
Minio;