搭建
搭建
使用Docker搭建ELK
创建网络
docker network create elk_network
启动elasticsearch容器
docker run -d --name elasticsearch --net=elastic -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
docker.elastic.co/elasticsearch/elasticsearch:7.14.0
配置es
cat config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
启动 Kibana 容器
docker run -d --name kibana --net=elastic -p 5601:5601 docker.elastic.co/kibana/kibana:7.14.0
配置kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
# 设置中文界面
i18n.locale: zh-CN
创建filebeat
docker run -itd --net=elastic --name=filebeat01 \
-v "$PWD/01-filebeat-log-to-es.yml:/usr/share/filebeat/filebeat.yml" \
-v "$PWD/log:/usr/share/filebeat/log" \
docker.elastic.co/beats/filebeat:7.13.1
访问 Kibana
http://kibanaIP:5601
使用kibana
菜单栏Stack Management--创建索引--discover--选择索引
启动 Logstash 容器(或者使用filebeat)
在终端中执行以下命令,创建一个 Logstash 配置文件 logstash.conf,并启动 Logstash 容器。
vim logstash.conf
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["http://esIP:9200"]
}
}
docker run -d --name logstash --network elk_network -v "$PWD/logstash.conf:/usr/share/logstash/pipeline/logstash.conf" docker.elastic.co/logstash/logstash:7.14.0
配置 Nginx
为了将 Nginx 的日志发送给 Logstash,我们需要配置 Nginx,以便将日志文件发送到 Logstash 容器的地址和端口。在 Nginx 配置文件中添加以下内容:
log_format logstash '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log syslog:server=logstash:5140 logstash;
这将使 Nginx 将日志以 syslog 格式发送到 Logstash 容器的地址和端口(5140)。
重启 Nginx
systemctl restart nginx
插件网址
https://www.cnblogs.com/xiaodai12138/p/10084465.html
主机名 | IP地址 | 作用 |
---|---|---|
se1 | 192.168.1.61 | 数据库分布式集群 |
se2 | 192.168.1.62 | 数据库分布式集群 |
se3 | 192.168.1.63 | 数据库分布式集群 |
se3 | 192.168.1.64 | 数据库分布式集群 |
se3 | 192.168.1.65 | 数据库分布式集群 |
kibana | 192.168.1.66 | 日志的可视化(如图表) |
logstash | 192.168.1.67 | 收集分析,处理日志 |
安装ES
yum -y install java-1.8.0-openjdk.x86_64
yum -y install elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: myelk # 配置集群名字
node.name: se1 # 当前主机名称
network.host: 0.0.0.0 # 0.0.0.0 监听所有地址
discovery.zen.ping.unicast.hosts: ["es1","es2","es3"]
cluster.initial_master_nodes: "es1"
# 声明集群成员,不需要全部写进去,但是申明的主机要优先启动
vim config/jvm.options
-Xms128m 最大堆内存,看情况
-Xmx128m
vim /etc/sysctl.conf
vm.max_map_count=65535
systemctl start elasticsearch
systemctl enable elasticsearch
ss -antup | grep 9200
curl http://localhost:9200
多台机器同理,拷贝配置文件,修改节点名称
vim /etc/elasticsearch/elasticsearch.yml
node.name: se2
curl -X GET http://172.21.16.17:9200/_cat 查看索引分片信息
curl -X GET http://172.21.16.17:9200/_cat/health?v 查看集群健康状态
curl -X GET http://172.21.16.17:9200/_cat/nodes?help 查看node的帮助
curl -X GET http://172.21.16.17:9200/_cat/indices?v 查看当前索引
安装Kibana
yum -y install kibana
rpm -qc kibana
vim /opt/kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: http://192.168.1.61:9200 # ES集群中任意地址
kibana.index: ".kibana" # kibana自带索引
kibana.defaultAppId: "discover" # 登陆kibana时的默认页面
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
elasticsearch.startupTimeout: 5000
systemctl start kibana
systemctl enable kibana
ss -antup | grep 5601
浏览器访问kibana
http://192.168.1.66:5601
安装filebeat
yum install filebeat
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
host: "172.21.16.17:5601"
output.elasticsearch:
hosts: ["172.21.16.17:9200"]
设置环境变量
vim /etc/profile.d/elastic.sh
FILE_BEAT_PATH=/usr/share/filebeat/bin
PATH=$PATH:$FILE_BEAT_PATH
filebeat -e setup # 忽略报错 -e 可选,输出到strin
filebeat modules enable system nginx
filebeat modules list
定义监控的日志
vim /etc/filebeat/test.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /tmp/test.log
setup.template.settings:
index.number_of_shards: 3
output.console: 输出到控制台,演示用
pretty: true
enable: true
启用监控
filebeat -e -c test.yml
新开一个窗口,创建日志,查看输出
在message字段中有输入日志中的内容,表明filebeat读取到日志内容
echo test >> /tmp/test.log
vim /etc/filebeat/test1.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /tmp/test.log
tags: ["web", "test"] # 指定标签,可有多个
fields:
from: test_field # 自定义输出字段
fields_under_root: false # 指定自定义字段的位置
setup.template.settings:
index.number_of_shards: 3
output.elasticsearch: # 输出到ES
hosts: ["172.21.16.17:9200"]
部署插件
安装插件的主机才能使用插件
cd /usr/share/elasticsearch/bin
./plugin install ftp://192.168.1.254/elk/elasticsearch-head-master.zip
./plugin install ftp://192.168.1.254/elk/elasticsearch-kopf-master.zip
./plugin install ftp://192.168.1.254/elk/bigdesk-master.zip
查看插件
./plugin list
访问插件
http://192.168.1.65:9200/_plugin/head
http://192.168.1.65:9200/_plugin/kopf
http://192.168.1.65:9200/_plugin/bigdesk
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)