ELK安装笔记

1. Elasticsearch安装

下载elasticsearch7.6.0的docker镜像:
docker停止启动重启的时候不用复制,只要输入几个字母就行了。

docker pull elasticsearch:7.6.0

修改虚拟内存区域大小,否则会因为过小而无法启动:

#切换到root用户
#执行命令:
sysctl -w vm.max_map_count=262144
# 使之立即生效
sysctl -p
#查看结果:
sysctl -a|grep vm.max_map_count

#显示:
vm.max_map_count = 262144

#上述方法修改之后,如果重启虚拟机将失效,所以:
#解决办法:
#在   /etc/sysctl.conf文件最后添加一行,通过vim,输入shift + g快速跳到最后一行
vm.max_map_count=262144
#即可永久修改

使用docker命令启动:

  docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
  -e "discovery.type=single-node" \
  -e "cluster.name=elasticsearch" \
  -v /root/hospital-test-0703/yang/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  -v /root/hospital-test-0703/yang/mydata/elasticsearch/data:/usr/share/elasticsearch/data \
  -d elasticsearch:7.6.0

启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动。
(以及这里面有一个重坑,如果把之前docker装的elasticsearch删掉了,然后重装,一定要把挂载目录里面的东西清理干净,不然换一个版本适配不了。)

这里面有好几点要注意的,首先是
mkdir -p xxxx/xxxx/xxxx来创建一系列目录
然后是/开头就是绝对目录,而docker -v必须要用绝对目录

这里的chmod也有重坑,必须要精确到data这一级目录,在父目录上面加权限不行
chmod 777 /mydata/elasticsearch/data/
chmod 777 /mydata/elasticsearch/plugins

ll可以看权限等级)

  • 安装中文分词器IKAnalyzer,并重新启动:
    planA:
#进入容器
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
docker restart elasticsearch

plabB:
由于在容器里面运行install实在太慢了,没法跑啊,于是自己去github上面下载了zip,解压之后拖到了plugin文件夹里面。

  • elasticsearch没提供界面管理,所以要自己安装一个。
    planA:
    最好的planA+是直接chrome商店下载一个。
    https://github.com/mobz/elasticsearch-head下载这个网页里面项目,然后解压完了之后找到elasticsearch-head-master\elasticsearch-head-master\crx也就是找到crx这个文件夹,里面有个es-head.crx,这个就是扩展程序,不过不能直接这样拖进去,要把这个文件的后缀改成rar,解压出来。

然后解压出来的这个文件夹就能变成插件安装上去。

planB:
(这么装出来,有数据不显示的问题)

#拉取镜像
docker pull mobz/elasticsearch-head:5
#运行容器
docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5

浏览器打开: http://39.100.144.125:9100

尝试连接elaseticsearch会发现无法连接上,由于是前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置,如下

修改docker中elasticsearch的elasticsearch.yml文件

docker exec -it elasticsearch /bin/bash
vim config/elasticsearch.yml

在最下面添加2行

#kua yu
http.cors.enabled: true 
http.cors.allow-origin: "*"

退出并重启服务

exit
docker restart elasticsearch

2. kibana安装

  • 下载kibana6.4.0的docker镜像:
docker pull kibana:7.6.0
  • 使用docker命令启动:
  docker run --name kibana -p 5601:5601 \
  --link elasticsearch:es \
  -e "elasticsearch.hosts=http://es:9200" \
  -d kibana:7.6.0

Kibana设置中文:

#进入kibana容器
docker exec -it kibana  /bin/bash
#打开yml
vi /usr/share/kibana/config/kibana.yml

在末尾加上一行
i18n.locale: zh-CN

然后exit退出docker容器

容器重启使配置生效
docker restart kibana

时间相差八个小时的问题,可以直接在Kibana的设置里面把时区设置成Asia的时区,直接就解决了,filebeat和logstash什么也不用设置


3. FileBeat安装

#拉镜像
docker pull docker.elastic.co/beats/filebeat:7.6.0

然后在运行docker容器之前,先整一个yml。先创建好目录,然后vim yml编辑一个yml。

#创建一个目录,这次用的是/root/hospital-test-0703/yang/mydata/filebeat/filebeat.yml
vim /root/hospital-test-0703/yang/mydata/filebeat/filebeat.yml

(这个yml是个大坑!!!enable是一个坑,multi是一个坑)

filebeat.inputs:
- type: log
  enabled: true
  paths:
    # 上面也就这一个值得改的,就改这个位置,上面的enable可以在写了多组设置之后快速更改哪个生效
    - /var/log/gateway.log
 tags: ["hospital"]

  #带井号的在粘贴的时候有问题,就是会把缩进搞乱,这个粘贴的时候不能带井号一起粘

  #multiline这个是为了把一行日志打不下来的日志合并起来,不然filebeat收集到的就已经是文件流了,每一行算一条。
  # 这是个正则表达式,^是以这个开头,也就是匹配以 "[" 开头的行
  multiline.pattern: '^\['
  # 否定模式,这个默认是false,跟上面设置的反向
  multiline.negate: true
  # 这个after结合上面的否定模式以及匹配字符,发挥出来的作用就是,把首行之后不是以 "[" 开头的行接到上一行上凑成多行模式
  multiline.match: "after"


#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
#  hosts: ["39.100.144.125:9200"]

#-------------------------- Logstash ------------------------------------------
output.logstash:
  hosts: ["39.100.144.125:5044"]

# 删除各个没用的标签
processors:
- drop_fields:
    fields: ["input_type", "log.offset", "host.name", "input.type", "agent.hostname", "agent.type", "ecs.version", "agent.ephemeral_id", "agent.id", "agent.version", "fields.ics", "log.flags" ]

yml编辑完了之后,在下面注意几个位置,都映射过去,这里似乎这几个文件夹都不要什么权限的。

#跑镜像
docker run -d --name=filebeat \
-v /root/hospital-test-0703/yang/mydata/logs:/var/log \
-v /root/hospital-test-0703/yang/mydata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /root/hospital-test-0703/yang/mydata/filebeat/registry/:/usr/share/filebeat/data/registry/ docker.elastic.co/beats/filebeat:7.6.0

4. logstash 安装

#拉镜像
docker.elastic.co/logstash/logstash:7.6.0

建立这样的目录
/root/hospital-test-0703/yang/mydata/logstash/conf.d/logstash.conf
/root/hospital-test-0703/yang/mydata/logstash/logstash.yml
第一个conf是重点,说实话第二个yml有没有用我还不确定。
第一个conf内容

input {
  beats {
    port => 5044
    #codec => json
    client_inactivity_timeout => 360000
 }
}

output {
    elasticsearch {
        hosts=>["39.100.144.125:9200"]
        index => "logstash-%{+YYYY.MM.dd}" #对日志进行索引归档
    }

    #stdout {codec => rubydebug}
}

filter {
  mutate {
    remove_field => ["tags", "@version"]
  }
}

第二个yml内容

path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash

两个文件都建好了之后,跑镜像

docker run -d -it -p 5044:5044 --name logstash  \
-v /root/hospital-test-0703/yang/mydata/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml   \
-v /root/hospital-test-0703/yang/mydata/logstash/conf.d/:/usr/share/logstash/conf.d/  \
docker.elastic.co/logstash/logstash:7.6.0

跑起来logstash之后,让filebeat往这里面输入日志,然后进入docker镜像去看日志输出。

 docker logs -ft logstash

5. docker的安装经验

(1) ELK有一个大问题,就是这些东西要保持版本的高度一致。所以如果不清楚自己拉的是哪个版本就很麻烦。

docker inspect elasticsearch

也试过使用这个命令来看一下版本,结果标签上面写的就是latest,没查到版本。

(2) 善用docker logs filebeat这种命令,每一次都带着监控看
(3) 39服务器空间不够

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容