使用ELK收集k8s日志
前言:ELK是目前主流的日志解决方案,尤其是容器化集群的今天,ELK几乎是集群必备的一部分能力;ELK在K8S落地有多种组合模式: 比如:fluentd+ELK或filebeat+ELK或log-pilot+ELK而本文采用的是功能更强大的后者:log-pilot 采集--->logstash过滤加工--->ES存储与索引--->Kibana展示的方案,日志量大的集群建议再加一层
前言:ELK是目前主流的日志解决方案,尤其是容器化集群的今天,ELK几乎是集群必备的一部分能力;ELK在K8S落地有多种组合模式: 比如:fluentd+ELK或filebeat+ELK或log-pilot+ELK而本文采用的是功能更强大的后者:log-pilot 采集--->logstash过滤加工--->ES存储与索引--->Kibana展示的方案,日志量大的集群建议再加一层kafka提升吞吐,降低logstash的负载。
那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化
1,ES集群安装
1.1 我们计划安装两个节点的ES集群环境:
节点1 IP | 192.168.2.125 |
---|---|
节点2 IP | 192.168.2.126 |
- 假设已经安装k8s集群:
ip | role |
---|---|
192.168.2.122 | master |
192.168.2.123 | node1 |
192.168.2.124 | node2 |
1.2 关于安装的版本
从 6.8.0 和 7.1.0 版本开始, Elastic Stack安全功能免费提供,在Elasticsearch7.3,x-pack已经作为默认的插件集成在Elasticsearch里面了,为了今后方便的的添加安全策略,我们建议安装7.3之后的版本 本文我们安装7.5.0版本,es和kibana版本使用同样的版本号。
以下命令在两个节点分别执行(线安装docker-ce):
docker pull elasticsearch:7.5.0 (目前最新7.9.1)
mkdir -p /data/es/data 请逐级创建目录
mkdir -p /data/es/config 请逐级创建目录
vim /etc/sysctl.conf
加入如下内容:
vm.max_map_count=262144
然后:wq保存
启用配置:
sysctl -p
1.3 节点1和节点2上设置yml文件
- 节点1:
cd /data/es/config
vim elasticsearch.yml
#集群名称
cluster.name: es-cluster
##节点名称
node.name: node-a
##是不是有资格竞选主节点
node.master: true
##是否存储数据
node.data: true
##最大集群节点数
node.max_local_storage_nodes: 10
##网关地址
network.host: 0.0.0.0
network.publish_host: 192.168.2.125
##端口
http.port: 9200
##内部节点之间沟通端口
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
##es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.2.125:9300","192.168.2.126:9300"]
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a"]
#数据存储路径
path.data: /usr/share/elasticsearch/data
#日志存储路径
path.logs: /usr/share/elasticsearch/data/logs
- 修改文件执行权限:
chmod 777 /data/es/config
chmod 777 /data/es/config/elasticsearch.yml
chmod 777 /data/es/data
- 节点2:
cd /data/es/config
vim elasticsearch.yml
#集群名称
cluster.name: es-cluster
##节点名称
node.name: node-b
##是不是有资格竞选主节点
node.master: true
##是否存储数据
node.data: true
##最大集群节点数
node.max_local_storage_nodes: 10
##网关地址
network.host: 0.0.0.0
network.publish_host: 192.168.2.126
##端口
http.port: 9200
##内部节点之间沟通端口
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
##es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.2.125:9300","192.168.2.126:9300"]
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a"]
#数据存储路径
path.data: /usr/share/elasticsearch/data
#日志存储路径
path.logs: /usr/share/elasticsearch/data/logs
- 修改文件执行权限:
chmod 777 /data/es/config
chmod 777 /data/es/config/elasticsearch.yml
chmod 777 /data/es/data
1.4 创建容器
节点1,节点2均执行以下命令:
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v /data/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/es/data:/usr/share/elasticsearch/data --name ES elasticsearch:7.5.0
等约2分钟左右查看两个节点状态:
http://192.168.2.125:9200/
http://192.168.2.126:9200/
1.5 使用elasticsearch-head前端框架(可选内容,其中一个节点安装即可)
#拉取镜像
docker pull mobz/elasticsearch-head:5
#启动容器
docker run -d -p 9100:9100 --name es-manager mobz/elasticsearch-head:5
浏览器访问http://192.168.2.125:9100/
并连接http://192.168.2.126:9200/
- 附:yml文件参数说明
以下参数介绍来源:https://blog.csdn.net/belonghuang157405/article/details/83301937
cluster.name:用于唯一标识一个集群,不同的集群,其 cluster.name 不同,集群名字相同的所有节点自动组成一个集群。如果不配置改属性,默认值是:elasticsearch。
node.name:节点名,默认随机指定一个name列表中名字。集群中node名字不能重复
index.number_of_shards: 默认的配置是把索引分为5个分片
index.number_of_replicas:设置每个index的默认的冗余备份的分片数,默认是1
通过 index.number_of_shards,index.number_of_replicas默认设置索引将分为5个分片,每个分片1个副本,共10个结点。
禁用索引的分布式特性,使索引只创建在本地主机上:
index.number_of_shards: 1
index.number_of_replicas: 0
但随着版本的升级 将不在配置文件中配置而实启动ES后,再进行配置
bootstrap.memory_lock: true 当JVM做分页切换(swapping)时,ElasticSearch执行的效率会降低,推荐把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的物理内存分配给ES,同时允许ElasticSearch进程锁住内存
network.bind_host: 设置可以访问的ip,可以是ipv4或ipv6的,默认为0.0.0.0,这里全部设置通过
network.publish_host:设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
同时设置bind_host和publish_host两个参数可以替换成network.host
network.bind_host: 192.168.2.125
network.publish_host: 192.168.2.125
=>network.host: 192.168.2.125
http.port:设置对外服务的http端口,默认为9200
transport.tcp.port: 设置节点之间交互的tcp端口,默认是9300
http.cors.enabled: 是否允许跨域REST请求
http.cors.allow-origin: 允许 REST 请求来自何处
node.master: true 配置该结点有资格被选举为主结点(候选主结点),用于处理请求和管理集群。如果结点没有资格成为主结点,那么该结点永远不可能成为主结点;如果结点有资格成为主结点,只有在被其他候选主结点认可和被选举为主结点之后,才真正成为主结点。
node.data: true 配置该结点是数据结点,用于保存数据,执行数据相关的操作(CRUD,Aggregation);
discovery.zen.minimum_master_nodes: //自动发现master节点的最小数,如果这个集群中配置进来的master节点少于这个数目,es的日志会一直报master节点数目不足。(默认为1)为了避免脑裂,个数请遵从该公式 => (totalnumber of master-eligible nodes / 2 + 1)。 * 脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active master,最终使得整个集群处于混乱状态*
discovery.zen.ping.unicast.hosts: 集群个节点IP地址,也可以使用es-node等名称,需要各节点能够解析
1.6 安装中文分词(2台主机都要安装)
版本对应关系如下图:
说明:本文是安装了7.5.0版本插件(并不是说ES7.5安装插件也必须7.5,这个看上图的对应关系,ES7安装当前最新版本都没问题的)
进入容器:
docker exec -it ES /bin/bash
下载插件:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.0/elasticsearch-analysis-ik-7.5.0.zip
等几分钟安装好后,退出容器,重启容器:
docker restart ES
2.安装kibana (任意机器,建议2台主机分担负载)
2.1 docker镜像下载
拉取镜像,注意版本要和ES版本号一致:
docker pull kibana:7.5.0
mkdir -p /data/es/kibana/config
mkdir -p /data/es/kibana/plugins
制作配置文件:
vim kibana.yml
###################
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.2.125:9200","http://192.168.2.126:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
添加执行权限:
chmod 777 /data/es/kibana
chmod 777 /data/es/kibana/config
chmod 777 /data/es/kibana/config/kibana.yml
2.2启动容器:
docker run -d --name kibana -p 5601:5601 -v /data/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml -v /data/es/kibana/plugins:/usr/share/kibana/plugins:rw --name kibana kibana:7.5.0
此时我们可以查看日志 docker logs kibana 当看到以下信息时证明启动成功:
{"type":"log","@timestamp":"2020-09-11T11:14:33Z","tags":["info","plugins-system"],"pid":6,"message":"Setting up [15] plugins: [security,licensing,code,timelion,features,spaces,translations,uiActions,newsfeed,inspector,embeddable,advancedUiActions,expressions,eui_utils,data]"}
{"type":"log","@timestamp":"2020-09-11T11:14:33Z","tags":["info","plugins","security"],"pid":6,"message":"Setting up plugin"}
{"type":"log","@timestamp":"2020-09-11T11:14:33Z","tags":["warning","plugins","security","config"],"pid":6,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml"}
2.3 此时我们通过http://ip:5601就可以看到kibana界面。可以通过nginx访问:
server
{
listen 80;
#listen 443 ssl;
server_name kibana.xxxx.cn; #域名A记录我们提前已经指好
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.2.126:5601; #kibana的安装节点及端口
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
2.4 kibana汉化
由于 kibana5.*和 6.*版本 官方并没有支持中文,需要另外下载补丁包 推荐下面这个 https://github.com/anbai-inc/Kibana_Hanization,手动安装。
7.0之后官方已经支持了中文,中文包在 /usr/share/kibana/node_modules/x-pack/plugins/translations/translations/zh-CN.jso 只需要在配置文件 kibana.yml 中加入
i18n.locale: "zh-CN"
具体修改如下:
vim /data/es/kibana/config/kibana.yml
加入一行:
i18n.locale: "zh-CN"
然后保存
重启容器:
docker restart kibana
3,添加登陆密码验证(在node-a执行)
docker exec -it ES /bin/bash #进入容器
生成证书:
###生成授权证书
bin/elasticsearch-certutil ca //(CA证书:elastic-stack-ca.p12)
Please enter the desired output file [elastic-stack-ca.p12]: elastic-stack-ca.p12 (输入elastic-stack-ca.p12)
Enter password for elastic-stack-ca.p12 : (输入一个密码,后面要用)
###根据授权证书生成节点证书
[root@6259c569027a elasticsearch]# bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 //(生成节点证书)
Enter password for CA (elastic-stack-ca.p12) :(输入授权证书刚才的密码)
Please enter the desired output file [elastic-certificates.p12]: elastic-certificates.p12 //(输入节点证书文件名elastic-certificates.p12)
Enter password for elastic-certificates.p12 : (输入节点证书密码)
然后我们将刚才输入的密码添加到 elasticsearch keystore:
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
以上命令会在config目录生成elasticsearch.keystore文件
证书创建完毕,可以看到两个证书文件在当前目录:
[root@6d45757e6e78 elasticsearch]# ll
-rw------- 1 root root 3443 Sep 11 11:39 elastic-certificates.p12
-rw------- 1 root root 2527 Sep 11 11:38 elastic-stack-ca.p12
3.1 我们把elastic-certificates.p12复制到data目录,该目录我们映射到主机,不会丢失(ES镜像内执行):
cp elastic-certificates.p12 data/
-
同时将elastic-certificates.p12文件也复制到其他节点(node-b)的es/data目录。
-
将elasticsearch.keystore复制到其他节点(node-b)的config目录(进入docker容器后上传)
修改文件的权限:
[root@k8s-node1 data]# chmod 777 elastic-certificates.p12
[root@k8s-node2 data]# chmod 777 elastic-certificates.p12
然后我们修改各节点的elasticsearch.yml文件:
vim elasticsearch.yml,添加这几行:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/data/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/data/elastic-certificates.p12
启用密码:
#master节点执行如下操作:
vim /data/es/config/elasticsearch.yaml
#添加如下三行(前面已有添加过)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
#保存后,重启Docker
docker restart ES
这时候再次打开http://ip:9200,则会弹出密码输入框,我们接下来初始化密码:
docker exec -it ES /bin/bash #进入ES容器
bin/elasticsearch-setup-passwords interactive #执行密码初始化,一共6个组件的密码,每个重复一次,共输入12遍,如下:
[root@6259c569027a elasticsearch]# bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
然后分别重启两个节点的ES docker restart ES
3.2 Kibana添加ES密码
vim kibana.yml
#添加下面两行后,重启kibana容器
elasticsearch.username: "kibana"
elasticsearch.password: "" //之前为kibana帐户创建的密码"
然后重启kibana容器,会跳转到登录界面
docker restart kibana
登录时我们用elastic帐户登录(起初尝试用kibana帐户报403)
http://192.168.17.11:560/
用户名:elastic
密码:"" //kibana yml文件设置的密码
3.3 kibana查看ES集群状态
看到这个情况时,我们需要修改下elasticsearch.yml文件,添加一个配置项:
两个节点的 es.yml均添加下面一行,然后docker restart ES重启ES:
xpack.monitoring.collection.enabled: true
docker restart ES
重新进入kibana就可以ES节点的详细信息了。
4,安装logstash
Logstash是一个日志收集器,可以理解为一个管道,或者中间件。 功能是从定义的输入源inputs读取信息,经过filters过滤器处理,输入到定义好的outputs输出源。 输入源可以是stdin、日志文件、数据库等,输出源可以是stdout、elesticsearch、HDFS等。
安装过程如下:
4.1 下载docker镜像
尽量保证版本号和ES一致,否则容易产生不兼容问题:
docker pull docker.elastic.co/logstash/logstash:7.5.0
4.2 创建文件夹 (用于容器文件的挂载)
mkdir -p /data/logstash/config
logstash.yml相关参数编写可参考:https://segmentfault.com/a/1190000016591476
4.3 创建相关配置文件
vim logstash.yml
http.host: "0.0.0.0"
http.port: 9600
vim log4j2.properties
logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug
vim pipelines.yml
- pipeline.id: my-logstash
path.config: "/usr/share/logstash/config/*.conf"
pipeline.workers: 3
es.conf 文件:
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044
}
}
output {
elasticsearch {
action => "index"
hosts => ["192.168.2.125:9200","192.168.2.126:9200"]
index => "index"
user =>"elastic"
password =>"xxxx"
}
}
4.3 修改文件执行权限
chmod 777 /data/logstash/
chmod 777 /data/logstash/config/es.conf
chmod 777 /data/logstash/config/log4j2.properties
chmod 777 /data/logstash/config/logstash.yml
chmod 777 /data/logstash/config/pipelines.yml
4.4 启动命令
docker run -d -p 5044:5044 -p 9600:9600 -it -v /data/logstash/config/:/usr/share/logstash/config/ --name logstash docker.elastic.co/logstash/logstash:7.5.0
4.5 docker logs logstash 查看日志,当看到如下信息说明运行成功:
12:42:58.137 [[my-logstash]-pipeline-manager] INFO logstash.javapipeline - Pipeline started {"pipeline.id"=>"my-logstash"}
12:42:58.174 [[my-logstash]<tcp] INFO logstash.inputs.tcp - Starting tcp input listener {:address=>"0.0.0.0:5044", :ssl_enable=>"false"}
12:42:58.207 [Agent thread] INFO logstash.agent - Pipelines running {:count=>1, :running_pipelines=>[:"my-logstash"], :non_running_pipelines=>[]}
12:42:58.594 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
4.6 打开浏览器访问验证:http://ip:9600
{"host":"0e1b21fcaa24","version":"7.5.0","http_address":"0.0.0.0:9600","id":"8d98f377-9d31-4696-97fb-e621a5223b74","name":"0e1b21fcaa24","ephemeral_id":"736e9a91-1cda-4412-af58-d85ddf0c2c67","status":"green","snapshot":false,"pipeline":{"workers":2,"batch_size":125,"batch_delay":50},"build_date":"2019-11-26T02:59:04+00:00","build_sha":"85009049925add368863d1e02f7956d5630d6b55","build_snapshot":false}
5,安装log-pilot
Log-Pilot是阿里开源的一个智能容器日志采集工具,能够高效便捷地将容器日志采集输出到多种后台日志存储系统中,不仅能够采集容器标准输出日志,同时能够动态发现配置采集容器内文件日志,参考官方介绍:https://yq.aliyun.com/articles/674327
5.1 我们在k8s集群内将采用k8s的模式进行安装,便于自动管理。
准备yaml文件如下:
kubectl create namespace es
vim log-pilot.yaml #创建文件
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: log-pilot
namespace: es
labels:
k8s-app: log-pilot
kubernetes.io/cluster-service: "true"
spec:
template:
metadata:
labels:
k8s-app: log-es
kubernetes.io/cluster-service: "true"
version: v1.22
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: log-pilot
image: registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.6-filebeat
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
env:
- name: "LOGGING_OUTPUT"
value: "logstash"
- name: "LOGSTASH_HOST"
value: "192.168.2.125"
- name: "LOGSTASH_PORT"
value: "5044"
- name: "LOGSTASH_LOADBALANCE"
value: "true"
#- name: "FILEBEAT_OUTPUT"
# value: "elasticsearch"
#- name: "ELASTICSEARCH_HOST"
# value: "192.168.0.137"
#- name: "ELASTICSEARCH_PORT"
# value: "9200"
#- name: "ELASTICSEARCH_USER"
# value: "elastic"
#- name: "ELASTICSEARCH_PASSWORD"
# value: "1111111"
volumeMounts:
- name: sock
mountPath: /var/run/docker.sock
- name: root
mountPath: /host
readOnly: true
- name: varlib
mountPath: /var/lib/filebeat
- name: varlog
mountPath: /var/log/filebeat
securityContext:
capabilities:
add:
- SYS_ADMIN
terminationGracePeriodSeconds: 30
volumes:
- name: sock
hostPath:
path: /var/run/docker.sock
- name: root
hostPath:
path: /
- name: varlib
hostPath:
path: /var/lib/filebeat
type: DirectoryOrCreate
- name: varlog
hostPath:
path: /var/log/filebeat
type: DirectoryOrCreate
在master节点执行:
kubectl apply -f log-pilot.yaml
其中:
LOGGING_OUTPUT 是使用logstash接收log-pilot接收到的日志
LOGSTASH_HOST logstash服务的ip地址
LOGSTASH_PORT logstash服务的端口
LOGSTASH_LOADBALANCE 是否为logstash开启负载均衡模式
备注:如果kubernetes版本为V1.18版本,可参考以下yaml文件:
apiVersion: apps/v1
kind: DaemonSet # 日志采集需要在所有节点都运行,所以采用DaemonSet资源
metadata:
name: log-pilot
namespace: es
labels:
k8s-app: log-pilot
kubernetes.io/cluster-service: "true"
spec:
selector:
matchLabels:
k8s-app: log-es
kubernetes.io/cluster-service: "true"
version: v1.22
template:
metadata:
labels:
k8s-app: log-es
kubernetes.io/cluster-service: "true"
version: v1.22
spec:
tolerations: # 这里的配置表示允许将资源部署到Master节点中
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: log-pilot
image: registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.5-filebeat
resources: # 资源限制
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
env: # 定义与Elasticsearch通信的一些环境变量
- name: "FILEBEAT_OUTPUT"
value: "elasticsearch"
- name: "ELASTICSEARCH_HOST"
value: "192.168.2.125"
- name: "ELASTICSEARCH_PORT"
value: "9200"
- name: "ELASTICSEARCH_USER"
value: "elastic"
- name: "ELASTICSEARCH_PASSWORD"
value: "Admin@321"
volumeMounts: # 挂载日志目录
- name: sock
mountPath: /var/run/docker.sock
- name: root
mountPath: /host
readOnly: true
- name: varlib
mountPath: /var/lib/filebeat
- name: varlog
mountPath: /var/log/filebeat
securityContext:
capabilities:
add:
- SYS_ADMIN
terminationGracePeriodSeconds: 30
volumes:
- name: sock
hostPath:
path: /var/run/docker.sock
- name: root
hostPath:
path: /
- name: varlib
hostPath:
path: /var/lib/filebeat
type: DirectoryOrCreate
- name: varlog
hostPath:
path: /var/log/filebeat
type: DirectoryOrCreate
5.2 查看部署情况
# kubectl get pods -n es -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
log-pilot-hmxxb 1/1 Running 0 3h13m 10.233.96.26 node2 <none> <none>
log-pilot-k5l2l 1/1 Running 0 3h13m 10.233.70.13 master <none> <none>
log-pilot-wqh8q 1/1 Running 0 3h13m 10.233.90.29 node1 <none> <none>
每个节点都部署了一个。
5.3 log-pilot会自动打一些环境变量或标签
og-pilot相关详细参数及使用可以参考:https://toutiao.io/posts/k0qse0/preview
6,.验证日志写入情况
6.1 运行一个容器测试日志写入:
master节点创建一个tomcat.yaml,如下:
apiVersion: v1
kind: Pod
metadata:
name: tomcat
spec:
containers:
- name: tomcat
image: "tomcat:7.0"
env:
- name: aliyun_logs_myTomcat
value: "stdout"
- name: aliyun_logs_access
value: "/usr/local/tomcat/logs/catalina.*.log"
volumeMounts:
- name: tomcat-log
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-log
emptyDir: {}
然后执行kubectl apply -f tomcat.yaml创建pod.
6.2 kibana中查看
Kibana到management菜单--->索引模式--->创建索引模式
输入我们的索引名称加上*,如下图。
我们索引名称为index,然后下一步,配置其他项后,保存索引模式。
索引模式创建完毕后,我们点击【Discover】菜单进行查看
先切换索引,然后输入查询条件查询日志
更多推荐
所有评论(0)