搭建

搭建

使用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
posted @   立勋  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示