百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

ELK6可视化统一展示,方便开发、运维技术等人员查看日志用

off999 2025-01-24 13:24 42 浏览 0 评论

ELK可集中式、收集管理各服务器节点的日志信息,可视化统一展示,方便开发、运维技术等人员查看日志。

· 环境准备1). ELK软件版本elastic系列6.8.0版本,使用yum方式安装。elastic系列软件下载地址:2). OS环境CentOS73). JDK版本JDK8版本4). ELK架构实现方案ELK + Filebeat方式实现,架构如下图:

Filebeat 日志收集器,负责收集各服务器节点系统、应用的日志,并发送给Logstash。Logstash 负责处理来自Filebeat的日志,处理后日志保存ElasticSearch索引。ElasticSearch 存储来自Logstash的日志。Kibana 从ElasticSearch搜索日志,并可视化展示。5). ELK Stack此架构缺陷以上架构适用于日志量不是特别大的企业,一般都能满足日志需求,前提ELK各节点(ES集群、logstash集群、kibana)做到高可用。但对于大并发量场景,产生巨大日志量,大量的日志会涌入ES集群、Logstash集群,可能ELK系统会遇到流量瓶颈。这时一般解决方案是加入消息队列(Kafka、Redis、zookeeper),数据转储,让数据有一定缓冲。

· 安装部署1). 安装Java8

yum install -y java-1.8.0-openjdk

2). 配置elastic的yum仓库导入PGP Key

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

配置yum源

cat >>/etc/yum.repos.d/elk.repo<<EOF

[ELK-6.x]

name=ELK repository for 6.x packages

baseurl=https://artifacts.elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

EOF

3). 安装配置ElasticSearch

yum install -y elasticsearch

ElasticSearch主配置文件修改 /etc/elasticsearch/elasticsearch.yml

cluster.name: preventfraud-elk #ES集群

node.name: preventfraud-node #节点

path.data: /data/elasticsearch/data #数据存储

path.logs: /data/elasticsearch/logs #log信息

network.host: 10.20.1.75

http.port: 9200 #http端口

主要修改cluster集群、node节点名称,这里ElasticSearch为单节点;还有data数据节点,ElasticSearch存储大量索引信息,需要大容量磁盘空间;log日志目录;网络及端口信息。9200端口是 http 协议端口,用于外部通信;9300端口是 tcp 协议端口,用于集群间传递信息。elasticsearch目录文件授权

chown -R elasticsearch.elasticsearch /usr/share/elasticsearch/

chown -R elasticsearch.elasticsearch /etc/elasticsearch/

启动ElasticSearch服务

systemctl daemon-reload

systemctl enable elasticsearch

systemctl start elasticsearch

检查elasticsearch服务启动状态,如下看到的json信息:

[root@srv-elk ~]# curl http://10.20.1.75:9200/

{

"name" : "preventfraud-node",

"cluster_name" : "preventfraud-elk",

"cluster_uuid" : "ETKr4fyTTAG-_x2Xalnr9w",

"version" : {

"number" : "6.8.12",

"build_flavor" : "default",

"build_type" : "rpm",

"build_hash" : "7a15d2a",

"build_date" : "2020-08-12T07:27:20.804867Z",

"build_snapshot" : false,

"lucene_version" : "7.7.3",

"minimum_wire_compatibility_version" : "5.6.0",

"minimum_index_compatibility_version" : "5.0.0"

},

"tagline" : "You Know, for Search"

}

4). 安装配置Logstash

yum install -y logstash

生成SSL证书,crt文件后面需加入到Filebeat中。

openssl req -subj '/CN=server.example.com/' -x509 -days 3650 -nodes -batch -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash.key -out /etc/pki/tls/certs/logstash.crt

主配置文件/etc/logstash/logstash.yml

path.data: /data/logstash/data #数据

path.logs: /data/logstash/logs #日志目录

Logstash目录文件授权

chown -R logstash.logstash /usr/share/logstash/

chown -R logstash.logstash /etc/logstash/

启动Logstash服务

systemctl enable logstash

systemctl start logstash

处理来自Filebeat的系统、应用的配置文件目录 /etc/logstash/conf.d/,目录下文件需手动创建,如处理收集的nginx日志,创建/etc/logstash/conf.d/filebeat-nginx.conf。5). 安装配置Kibana

yum install -y kibana

主配置文件 /etc/kibana/kibana.yml

server.port: 5601 #http端口,默认5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://10.20.1.75:9200"] #ES地址

logging.dest: /data/kibana/kibana.log #kibana不配置日志输出,默认输出到/var/log/message里,会导致系统日志文件越来越大,不好区分。

i18n.locale: "zh-CN" #配置中文显示

Kibana目录文件授权

chown -R kibana.kibana /usr/share/kibana/

chown -R kibana.kibana /etc/kibana/

chown kibana.kibana /var/log/kibana.log启动kibana服务

systemctl daemon-reload

systemctl enable kibana

systemctl start kibana

访问Kibana地址:

6). 安装Filebeat各日志目标客户端配置yum源

cat >>/etc/yum.repos.d/elk.repo<<EOF

[ELK-6.x]

name=ELK repository for 6.x packages

baseurl=https://artifacts.elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

EOF

安装filebeat

yum install -y filebeat

从ELK服务端copy SSL证书 logstash.crt文件到filebeat的/etc/pki/tls/certs/中。

scp server.example.com:/etc/pki/tls/certs/logstash.crt /etc/pki/tls/certs/

filebeat基本配置,主配置文件 /etc/filebeat/filebeat.yml注释掉默认的 output.elasticsearch 配置项,修改out logstash 配置输出项。

output.logstash:

# The Logstash hosts

hosts: ["10.20.1.75:5044"] #logstash beat配置端口

启动filebeat服务

systemctl enable filebeat

systemctl start filebeat

ELK此部分安装参考:

· ELK + Filebeat案例实施1). Beats介绍这里架构引入 的是 Beats 作为日志搜集器。目前 Beats 包括:Packetbeat:搜集网络流量数据Topbeat:搜集系统、进程和文件系统级别的CPU、内存使用情况等数据Filebeat:搜集文件数据,这里的日志收集器使用该FilebeatWinlogbeat:搜集 Windows 事件日志数据Beats 将搜集到的数据发送到Logstash,经Logstash解析、过滤后,将其发送到Elasticsearch集群。作为日志收集器Logstash也可以,只是Logstash比较厚重,安装后在各服务器节点上占用系统资源高。而Filebeat比较轻量,占用系统资源几乎可忽略不计,从两者安装包的大小可直接看出差距。2). Filebeat配置收集syslog、nginx日志filebeat配置 /etc/filebeat/filebeat.yml

· # Syslog

· -type: log

· enabled: true

· paths:

· -/var/log/secure

· -/var/log/messages

· tags: ["syslog"]

· fields:

· log_type: syslog

· # Nginx Access log

· -type: log

· # Change to true to enable this input configuration.

· enabled: true

· # Paths that should be crawled and fetched. Glob based paths.

· paths:

· - /data/nginx_logs/*fzlm.org.cn-access.log

· json.keys_under_root: true

· json.overwrite_keys: true

· #tail_files: true

· #fields_under_root: true

· fields:

· service: filebeat-nginx-accesslog

· scan_frequency: 10s

· # Nginx Error log

· -type: log

· enable: true

· paths:

· - /data/nginx_logs/*fzlm.org.cn-error.log

· #json.keys_under_root: true

· #json.overwrite_keys: true

· #tail_files: true

· #fields_under_root: true

· fields:

· service: filebeat-nginx-errorlog

· scan_frequency: 10s

· #multiline.pattern: '^\['

· #multiline.negate: true

#multiline.match: after

重启filebeat服务

systemctl restart filebeat.service

enabled: true 配置收集该配置项里的日志,false 为不收集配置项下的日志。tags: 定义标签fields: 自定义属性,可以定义多个paths: 配置收集日志文件路径multiline.pattern: ^\d{4}-\d{1,2}-\d{1,2}\s\d{2}\:\d{2}\:\d{2}\,\d{3}' #匹配值 2020-09-23 17:31:21,756 作为log的开始multiline.negate: true 默认为 false,匹配 pattern 的行合并到上一行;true,不匹配pattern的行合并到上一行multiline.match: after 值 after 或 before,合并到上一行的末尾或开头3). 配置LogstashLogstash中创建处理syslog日志的logstash文件 /etc/logstash/conf.d/logstash-filebeat-syslog.conf

#syslog log

input {

beats {

port => 5044

client_inactivity_timeout => "1200"

}

}

filter {

if [fields][log_type] == "syslog" {

grok {

match => {

"message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}"

}

add_field => [ "received_at", "%{@timestamp}" ]

add_field => [ "received_from", "%{host}" ]

}

mutate { #muate插件参考: https://www.elastic.co/guide/en/logstash/6.8/plugins-filters-mutate.html

remove_field => [ "[beat][hostname]" ]

remove_field => [ "[beat][name]" ]

remove_field => [ "[log][file][path]" ]

remove_tag => [ "beats_input_codec_plain_applied" ]

}

syslog_pri { }

date {

match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]

}

}

}

output {

if [fields][log_type] == "syslog" {

elasticsearch {

hosts => ["10.20.1.75:9200"]

sniffing => true

index => "syslog-%{+YYYY.MM.dd}"

document_type => "%{[@metadata][type]}"

user => "elastic"

password => "******"

}

}

创建处理nginx日志的logstash文件 /etc/logstash/conf.d/logstash-filebeat-nginx.conf

# nginx log

input {

beats {

port => 5044

client_inactivity_timeout => "1200"

}

}

filter {}

output {

if [fields][service] == "filebeat-nginx-accesslog" {

elasticsearch {

hosts => ["10.20.1.75:9200"]

index => "nginx-accesslog-%{+YYYY.MM.dd}"

}

}

if [fields][service] == "filebeat-nginx-errorlog" {

elasticsearch {

hosts => ["10.20.1.75:9200"]

index => "nginx-errorlog-%{+YYYY.MM.dd}"

}

}

}

测试验证Logstash配置文件是否正确

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/logstash-filebeat-api.conf --config.test_and_exit

输出 Configuration OK 字样说明配置正确。

重启logstash 服务

systemctl restart logstash.service

4). ElasticSearch查看索引终端命令查看ES集群索引列表

curl http://10.20.1.75:9200/_cat/indices?v

后期计划安装Elasticsearch-head插件操作、查看、管理Elasticsearch集群索引信息。ElasticSearch5.0版本后需单独安装,不作为Elasticsearch的plugin安装。5). Kibana日志可视化操作登录Kibana,添加索引,查看日志。管理 -> 索引模式 -> 创建索引模式 -> 填写索引名称 -> Next step -> 选择@timestamp -> 创建索引完成

上面有几个已添加完的索引。6). 配置Nginx访问ELKNginx反向代理配置kibana地址。

server {

listen 80;

server_name server.example.com;

location / {

proxy_pass http://10.20.1.75:5601/;

}

}

测试配置域名访问。

· 配置用户认证权限管理(X-pack)1). ELK Stack部署完成后,默认情况Elasticsearch索引数据信息通过head插件能直接访问,无需Elasticsearch认证。只要知道Elasticsearch IP+端口信息,就能进去管理操作了,生产环境下这是非常危险的。接下来对Elasticsearch设置安全认证操作,用到Elasticsearch的X-pack。Elastic Stack 6.3版本及之后,已经集成在一起发布,无需额外安装了,基础安全属于付费黄金版内容。Elastic Stack7 .1版本:基础安全免费。2). Elasticsearch单机节点认证修改Elasticsearch配置 /etc/elasticsearch/elasticsearch.yml。如果是ES集群配置用户认证,需在ES每个节点生成私钥、证书,需配置项会少多些,后面单独配置说明。

· xpack.security.enabled: true # 开启xpack认证机制

· xpack.security.transport.ssl.enabled: true

· http.cors.enabled: true

· http.cors.allow-origin: "*"

http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type #不加此配置项,Elasticsearch服务无法启动。

重启elasticsearch服务

systemctl restart elasticsearch.service

3). Elastic内置账户添加密码Elastic中多个内置的用户,用来管理其他集成组件的账户,主要有:elastic 账号:拥有 superuser 角色,是内置的超级用户。kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。beats_system账号:拥有 beats_system 角色。用户 Beats 在 Elasticsearch 中存储监控信息时使用。也可在kibana管理中查看内置账户:

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

或者

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

interactive:为elastic用户一一添加密码auto:自动生产密码

接下来如果直接访问查看 elasticsearch索引服务,curl ,直接报错:

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

这是因为访问ES的安全认证已生效,需带上授权的认证用户信息才可访问。4). Kibana配置ES开启了安全认证之后,Kibana连接ES以及访问ES都需要认证。kibana配置文件 /etc/kibana/kibana.yml, 添加如下内容,访问的认证用户登录信息:

# x-pack auth

elasticsearch.username: "elastic"

elasticsearch.password: "xxxxxx"

重启 kibana 服务

systemctl restart kibana.service

5). Logstash配置自定义的logstash的配置文件logstash-nginx.conf,在output中增加elasticsearch认证的用户名和密码。

output {

if [fields][service] == "filebeat-nginx-accesslog" {

elasticsearch {

hosts => ["10.20.1.75:9200"]

index => "nginx-accesslog-%{+YYYY.MM.dd}"

}

}


if [fields][service] == "filebeat-nginx-errorlog" {

elasticsearch {

hosts => ["10.20.1.75:9200"]

index => "nginx-errorlog-%{+YYYY.MM.dd}"

user => "elastic"

password => "******"

}

}

}

6). 测试认证插件x-pack配置完毕之后,不能直接访问elasticsearch服务了。 通过如下方式访问elasticsearch服务,需带上用户认证信息才可访问:

curl -XGET -u elastic 'http://10.20.1.75:9200/_cat/indices?v'

输入elastic用户密码后:

登录elasticsearch,提示输入登录用户名和密码:

登录进去发现elasticsearch集群无法连接,这时应该这样访问: ,URL地址要带上认证用户登录信息。使用域名登录ELK,提示输入认证的用户信息,如下:

7). kibana创建用户为了方便开发人员通过kibana查看系统、应用的log信息,在kibana上创建一只读用户。创建角色。进入 kibana 选择管理 -> 安全 -> Roles角色,创建一角色,赋予角色相关的索引,并给read权限,如下图:

创建用户。进入 kibana 选择管理 -> 安全 -> 用户,创建一用户,配置角色选择上面创建的角色名称,如下图:

相关推荐

电脑硬盘格式化工具(电脑 格式化硬盘)

硬盘格式化工具很多,PQMACGIG8.0(中文就叫硬盘分区魔法师)是比较好的一个,这个是在WINDOWS下比叫好用,(个人感觉)FDISK也是比较好的一个,这个一般用在DOS下分区格式化WIN...

photoshop是一款什么软件(ps指的是什么软件)

这个说法是错误的,ps软件“即:photoshop”是由美国著名的“adobe阿多比”公司出品的专业的图像处理软件,它不是由微软公司出品的软件。众所周知的是,微软公司以设计视窗操作系统名满全球,它出...

ipad越狱的好处与坏处(ipad越狱好不好)

  好处一:  1、重命名、重组应用程序  如果你看着Sparrow(iOS最优秀邮件客户端)这个名字不爽,越狱之后就可以改成“Email”,如果你觉得“豆瓣电台”这个名字不给力,那就改成“中央人民广...

win7光盘重装系统步骤图解(win7光盘如何重装系统)

1.确认您的电脑支持从光盘启动。如果支持,可以直接将Windows7安装光盘插入电脑的光驱中。 2.打开电脑,按下F2、F10、F12或Delete等键进入BIOS设置界面。 ...

电脑已联网却无法上网(电脑已经联网了但是不能上网)

电脑连上网后,仍可能存在无法上网的情况,这可能是由多种原因造成的。以下是一些可能的原因和解决方法:1.浏览器问题:有时候,浏览器可能会出现故障,导致无法正常访问网络。您可以尝试清除浏览器的缓存和co...

u盘价格一览表(u盘单价)

不同品牌价格不同,不同内存价格也不同,例如8g、16g、32g、64g等多种容量大小的,根据容量的不同,报价在29元到120元之间不等。闪存盘虽然小,但相对来说却有很大的存储容量。U盘大多能够存储比一...

windows查看ip命令(windows如何查看ip地址)

查看电脑IP:    1)使用Windows+R键打开“运行”窗口,然后输入CMD进入命令提示窗口2)进入命令窗口之后,输入:ipconfig/all回车即可...

内存条的作用(内存条的作用和参数配置)

内存条是存储电脑运行所需的数据和程序,帮助CPU快速读取和运行,提高计算机的运行速度和处理能力。内存条也被称为随机存取存储器(RAM),是电脑中非常必要的一个组件。常见的内存条类型有DDR、DDR2、...

autocad2012安装失败(autocad2012无法安装)

如果您遇到CAD2012安装不了的问题,可能有几个原因导致这种情况。以下是一些常见的解决方法:1.确保系统要求:首先,请确保您的计算机符合CAD2012的系统要求。检查您的操作系统版本、内存、处理器...

win11 16g内存最佳虚拟内存(window10 16个g虚拟内存设置)

内存足够大可以将系统的虚拟内存关掉。1、鼠标右键【此电脑】,在菜单中选择【属性】。2、进入属性后,点击【高级系统设置】。3、进入系统属性后,点击高级下面的【设置】。4、进入性能设置后,点击【高级】。5...

查看windows7激活码(win7激活码哪里看)

windows7激活密钥如下:PPBK3-M92CH-MRR9X-34Y9P-7CH2FQ8JXJ-8HDJR-X4PXM-PW99R-KTJ3H8489X-THF3D-BDJQR-D27PH-P...

win10商业版和消费者版区别(win10商业版与消费者版)

1、用户群体的区别消费者版:通俗来说就是零售版,是一个非常适合个人用户和家庭用户购买的版本。商业版:适合大客户使用的版本,而且还比较适合企业用户使用以及进行批量部署。2、版本区别消费者版Consume...

bilibili加速器(bilibili加速器手机版官网)

需要在电脑上使用bilibili加速器,因为手机上bilibili已经有自带的加速器功能了。可以在bilibili官网或者一些应用商店下载使用,下完后按照安装提示进行安装即可。如果使用的是第三方软件,...

电脑自带的清理垃圾的工具(电脑自带的清理垃圾的工具叫什么)

CCleaner是一款免费的系统优化和隐私保护工具,它的体积小、扫描速度非常快,支持自定义清理规则,增强了应用程序清理范围和效果。CCleaner是Piriform(梨子公司)最著名广受好评的系统清理...

笔记本电脑用什么下载软件(笔记本电脑用什么下载软件比较好)
  • 笔记本电脑用什么下载软件(笔记本电脑用什么下载软件比较好)
  • 笔记本电脑用什么下载软件(笔记本电脑用什么下载软件比较好)
  • 笔记本电脑用什么下载软件(笔记本电脑用什么下载软件比较好)
  • 笔记本电脑用什么下载软件(笔记本电脑用什么下载软件比较好)

取消回复欢迎 发表评论: