同步操作将从 JustryDeng/notebook 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# 设置基础目录
local_var_base_dir=/usr/local/docker-compose
mkdir -p $local_var_base_dir
# 端口
local_var_redis_port=6379
# 密码
local_var_redis_pwd="123456"
# 数据挂载目录
local_var_redis_data_dir=$local_var_base_dir/redis/data
###### minio相关变量设置 ######
# ak/sk
local_var_minio_ak="minioadmin"
local_var_minio_sk="minioadmin"
# 数据挂载目录
local_var_minio_data_dir=$local_var_base_dir/minio/data
# api请求端口
local_var_minio_api_port=9000
# 控制台端口
local_var_minio_console_port=9090
# 数据挂载目录
local_var_nacos_dir=$local_var_base_dir/nacos/
# 端口
local_var_nacos_port=8848
local_var_es_port_9848=9848 # 值应该为 local_var_nacos_port + 1000
local_var_es_port_9849=9849 # 值应该为 local_var_nacos_port + 1000
# 数据库配置
local_var_nacos_db_host="192.168.44.141"
local_var_nacos_db_port=3306
local_var_nacos_db_name=nacos_config
local_var_nacos_db_user=root
local_var_nacos_db_password="dengshuai"
local_var_nacos_db_param="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true"
提示:因为本人想把nacos的相关文件挂载出来,所以才需要这步;如果你不需要挂载出来的话,可略过
docker run --name nacos-tmp -d -e MODE=standalone nacos/nacos-server:v2.2.0
# 将容器中nacos-tmp中/home/nacos目录拷贝到宿主机/opt/下
docker cp nacos-tmp:/home/nacos $local_var_nacos_dir
# 移除临时容器
docker stop nacos-tmp
docker rm nacos-tmp
cat > /tmp/nacos_server.sql << \EOF
CREATE DATABASE nacos_config;
USE nacos_config;
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
CREATE TABLE `his_config_info` (
`id` bigint(20) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`src_user` text,
`src_ip` varchar(50) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY,
`password` varchar(500) NOT NULL,
`enabled` boolean NOT NULL
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL,
`role` varchar(50) NOT NULL,
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL,
`resource` varchar(255) NOT NULL,
`action` varchar(8) NOT NULL,
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
EOF
# 进入mysql(你也可以不用命令行,直接用客户端登录,然后执行上面的sql)
mysql -h'192.168.44.141' -P3306 -uroot -p'dengshuai'
执行sql并退出
# 执行sql,导入nacos_server初始化文件
source /tmp/nacos_server.sql;
# 查看一下
show database;
use nacos_config;
show tables;
# 退出mysql
quit
local_var_es_password=elastic123
local_var_es_port_9200=9200
local_var_es_port_9300=9300
local_var_kibana_port=5601
local_var_logstash_port=5044
创建目录相关目录
# 创建目录相关目录
mkdir -p $local_var_base_dir/elk/{es/data,es/plugins,es/config,logstash,kibana/config,kibana/data}
ll $local_var_base_dir/elk/es
ll $local_var_base_dir/elk/logstash
ll $local_var_base_dir/elk/kibana
# 授权相关文件夹权限
chmod -R 777 $local_var_base_dir/elk/es
chmod -R 777 $local_var_base_dir/elk/logstash
chmod -R 777 $local_var_base_dir/elk/kibana
创建elasticsearch配置文件
cat > $local_var_base_dir/elk/es/config/elasticsearch.yml << \EOF
network.host: 0.0.0.0 #使用的网络
http.cors.enabled: true #跨域配置
http.cors.allow-origin: "*"
xpack.security.enabled: true #开启密码配置
http.cors.allow-headers: Authorization
xpack.security.transport.ssl.enabled: true
# 禁止启动时更新地图相关数据库
ingest.geoip.downloader.enabled: false
EOF
# 查看一下
cat $local_var_base_dir/elk/es/config/elasticsearch.yml
创建kibana配置文件
cat > $local_var_base_dir/elk/kibana/config/kibana.yml << EOF
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: ["http://elasticsearch:9200"] #es地址;不能写localhost或者127.0.0.1,可以写内网(或公网)地址
i18n.locale: "zh-CN" #汉化
elasticsearch.username: elastic # 设置账号密码
elasticsearch.password: $local_var_es_password
xpack.encryptedSavedObjects.encryptionKey: "fhjskloppd678ehkdfdlliverpoolfcr" # 任意不少于32位的字符即可, 官方解释https://www.elastic.co/guide/en/kibana/7.16/alert-action-settings-kb.html#general-alert-action-settings
EOF
# 查看一下
cat $local_var_base_dir/elk/kibana/config/kibana.yml
创建logstash配置文件
cat > $local_var_base_dir/elk/logstash/logstash.yml << EOF
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] # es地址,不能写localhost或者127.0.0.1,可以写内网(或公网)地址
xpack.monitoring.elasticsearch.username: elastic # es账号
xpack.monitoring.elasticsearch.password: $local_var_es_password # es密码
EOF
# 查看一下
cat $local_var_base_dir/elk/logstash/logstash.yml
创建logstash数据传输配置
cat > $local_var_base_dir/elk/logstash/logstash.conf << EOF
# 数据输入配置
input {
# 从TCP套接字读取数据
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044 # 每个输入源都可以使用不同的端口号。 注:这里是容器内的端口
codec => json_lines
}
# 从Elastic Beats框架(如filebeat)接收数据
#beats {
# port => 5044 注:这里是容器内的端口
#}
}
# 数据处理配置
# 数据输出配置
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"] # es的地址和端口,不能写localhost或者127.0.0.1,可以写内网(或公网)地址
user => "elastic" # es的账号密码
password => "$local_var_es_password" # es的账号密码
index => "all-log-%{+YYYY.MM.dd}" # 索引(自定义即可,因为想要按天分索引,所以后面使用变量%{+YYYY.MM.dd})
}
}
EOF
# 查看一下
cat $local_var_base_dir/elk/logstash/logstash.conf
# 数据挂载目录
local_var_prometheus_dir=$local_var_base_dir/prometheus
# 端口
local_var_prometheus_port=9095
# data目录,准备用来挂载放置prometheus的数据
# config目录,准备用来放置prometheus的配置文件
# rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p $local_var_prometheus_dir/{data,config,rules}
# 授权相关文件夹权限
chmod -R 777 $local_var_prometheus_dir/data
chmod -R 777 $local_var_prometheus_dir/config
chmod -R 777 $local_var_prometheus_dir/rules
# 配置文件
cat > $local_var_prometheus_dir/config/prometheus.yml << EOF
global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s
# 告警规则
rule_files:
# 这里匹配(容器中)指定目录下所有的.rules文件
- /prometheus/rules/*.rules
# 采集配置
scrape_configs:
# 采集项(prometheus)
- job_name: 'prometheus'
static_configs:
# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
- targets: ['localhost:9090']
EOF
# 查看一下配置文件
cat $local_var_prometheus_dir/config/prometheus.yml
# 数据挂载目录
local_var_grafana_dir=$local_var_base_dir/grafana
# 端口
local_var_grafana_port=3000
# data目录,准备用来挂载放置grafana的数据
# plugins目录,准备用来放置grafana的插件
# config目录,准备用来挂载放置grafana的配置文件
mkdir -p $local_var_grafana_dir/{data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 $local_var_grafana_dir/data
chmod -R 777 $local_var_grafana_dir/plugins
chmod -R 777 $local_var_grafana_dir/config
# 先临时启动一个容器
docker run --name grafana-tmp -d grafana/grafana:9.3.2
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini $local_var_grafana_dir/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
# 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini
set | grep local_var_
cat > $local_var_base_dir/docker-compose.yml << EOF
version: '3' #指定compose文件的版本号,目前有1,2,3这三个版本
services:
redis:
image: redis:7.0.5
container_name: redis
restart: always
volumes:
- $local_var_redis_data_dir:/data
- /etc/localtime:/etc/localtime:ro
ports:
- "$local_var_redis_port:6379"
command: redis-server --appendonly yes --bind 0.0.0.0 --requirepass "$local_var_redis_pwd"
minio:
image: minio/minio:RELEASE.2022-12-07T00-56-37Z
container_name: minio
restart: always
environment:
- "MINIO_ACCESS_KEY=$local_var_minio_ak"
- "MINIO_SECRET_KEY=$local_var_minio_sk"
volumes:
- $local_var_minio_data_dir:/data
- /etc/localtime:/etc/localtime:ro
ports:
- "$local_var_minio_api_port:9000"
- "$local_var_minio_console_port:9090"
command: server /data --console-address ":9090" -address ":9000"
nacos:
image: nacos/nacos-server:v2.2.0
container_name: nacos
restart: always
environment:
- "MODE=standalone"
- "MYSQL_SERVICE_HOST=$local_var_nacos_db_host"
- "MYSQL_SERVICE_PORT=$local_var_nacos_db_port"
- "MYSQL_SERVICE_DB_NAME=$local_var_nacos_db_name"
- "MYSQL_SERVICE_USER=$local_var_nacos_db_user"
- "MYSQL_SERVICE_PASSWORD=$local_var_nacos_db_password"
- "MYSQL_SERVICE_DB_PARAM=$local_var_nacos_db_param"
privileged: true # 使容器中的root拥有真正的root权限
volumes:
# 注: 如果你要挂载nacos的相关文件出来, 那么这里一定要处理好, 要不然nacos可能起不起来.
# 可以先不挂载启动一个临时的nacos, 然后把目录复制出来, 然后再在它的基础上进行修改.
# 接着再删除刚才临时创建的nacos容器, 最后再正式启动nacos
- $local_var_nacos_dir:/home/nacos/
- /etc/localtime:/etc/localtime:ro
ports:
- "$local_var_nacos_port:8848"
# nacos2的话,还需要多开放两个端口.
# 主端口的值 + 1000:客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求
# 主端口的值 + 1001:服务端gRPC请求服务端端口,用于服务间同步等
- "$local_var_es_port_9848:9848"
- "$local_var_es_port_9849:9849"
elasticsearch: # 指定服务名
image: elasticsearch:7.17.5 #镜像
container_name: elasticsearch-7.17.5 #定义容器名称
restart: always #开机启动,失败也会一直重启
environment: #环境变量设置
- "cluster.name=elasticsearch"
- "discovery.type=single-node"
# 若启动时报错 exited with code 137,则调大此参数即可
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
volumes: #挂载设置 {宿主机目录或文件}:{容器目录或文件}
- /etc/localtime:/etc/localtime:ro
- $local_var_base_dir/elk/es/plugins:/usr/share/elasticsearch/plugins
- $local_var_base_dir/elk/es/data:/usr/share/elasticsearch/data
- $local_var_base_dir/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports: # 端口映射 {宿主机端口}:{容器端口}
- "$local_var_es_port_9200:9200"
- "$local_var_es_port_9300:9300"
kibana:
image: kibana:7.17.5
container_name: kibana-7.17.5
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- $local_var_base_dir/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
- $local_var_base_dir/elk/kibana/data:/usr/share/kibana/data
depends_on: # 指定此服务依赖哪些服务
- elasticsearch
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "$local_var_kibana_port:5601"
logstash:
image: logstash:7.17.5
container_name: logstash-7.17.5
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- $local_var_base_dir/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
- $local_var_base_dir/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
ports:
- "$local_var_logstash_port:5044"
prometheus:
image: prom/prometheus:v2.41.0
container_name: prometheus
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- $local_var_prometheus_dir/data:/prometheus/data
- $local_var_prometheus_dir/config:/prometheus/config
- $local_var_prometheus_dir/rules:/prometheus/rules
ports:
- "$local_var_prometheus_port:9090"
command:
- '--config.file=/prometheus/config/prometheus.yml'
- '--web.enable-lifecycle'
grafana:
image: grafana/grafana:9.3.2
container_name: grafana
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- $local_var_grafana_dir/data:/var/lib/grafana
- $local_var_grafana_dir/plugins/:/var/lib/grafana/plugins
- $local_var_grafana_dir/config/grafana.ini:/etc/grafana/grafana.ini
ports:
- "$local_var_grafana_port:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel
EOF
提示:前面的所有工作,都是为了能快速生成这个docker-compose.yml而作的准备,如果前面的步骤有错漏也不要紧,只需要保证这个docker-compose.yml文件是服务业务正确的即可
cd $local_var_base_dir
pwd
ll
# 直接查看docker-compose.yml文件
cat $local_var_base_dir/docker-compose.yml
# 再检查经过docker-compose解析后的docker-compose.yml内容是否符合预期
docker-compose config
docker-compose up -d
提示:启动ELK需要一点时间,等一会儿(或通过docker-compose logs -f --tail=100 {es的服务名}观察到elasticsearch服务启动完成后。 注:此时查看es的日志,可能会报类似于
Authentication of [elastic] was terminated by realm
这样的错,这是因为我们还没进行完此步)再进行此步骤
进入es容器
# docker exec -it {es容器名} /bin/bash
# 注:docker ps可查看容器名或容器id
docker exec -it elasticsearch-7.17.5 /bin/bash
执行设置密码的脚本
# 若执行上面的步骤后,马上进入容器执行此指令,可能会报错。 可以等一会儿再进入容器来执行此指令。或者当执行报错时,退出容器再进入,再试
./bin/elasticsearch-setup-passwords interactive
然后依次给各个账号设置密码
elastic、apm_system、kibana_system、logstash_system、beats_system、remote_monitoring_user 注:本人设置的密码较简单,直接以
{账号名}123
作为的密码
退出容器Ctrl+P+Q
,然后重启es容器即可
docker-compose restart elasticsearch
docker-compose restart kibana
docker-compose restart logstash
提示:访问前请确保端口已开
# 查看日志,正常
docker-compose logs --tail=50 -f minio
# 访问测试说明
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_minio_console_port ,并用 $local_var_minio_ak / $local_var_minio_sk 进行登录测试
# 查看日志,正常
docker-compose logs --tail=50 -f redis
# 访问测试说明
echo ===\> 访问测试说明: 执行 'docker exec -it redis redis-cli' , 输入 auth $local_var_redis_pwd ,然后输入 ping, 返回pong则说明成功, 然后quit退出即可
# 查看日志,正常
docker-compose logs --tail=50 -f nacos
# 访问测试说明
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_nacos_port/nacos ,并用 nacos / nacos 进行登录测试
# 查看日志,正常
docker-compose logs --tail=50 -f elasticsearch
# 访问测试说明
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_es_port_9200 ,并用 elastic / $local_var_es_password 完成登录认证
# 查看日志,正常
docker-compose logs --tail=50 -f kibana
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_kibana_port ,并用 elastic / $local_var_es_password 完成登录认证
# 查看日志,正常
docker-compose logs --tail=50 -f logstash
# 向logstash发送json(多发几条),然后去kibana里面看是否收到了
curl 'http://{hostname}:{logstash端口}' -H "Content-Type:application/json" -X POST -d '{"name":"邓沙利文","msg":"test-logstash"}'
# 查看日志,正常
docker-compose logs --tail=50 -f prometheus
# 访问测试说明
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_prometheus_port 即可
# 查看日志,正常
docker-compose logs --tail=50 -f grafana
# 访问测试说明
echo ===\> 访问测试说明: 访问 http://{hostname}:$local_var_grafana_port ,并用 admin / admin 完成登录认证(首登录后会让修改密码). 然后根据自己的需要,配置各种exporter
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。