VictoriaLogs Docker 版部署
前置说明
如果你还没做 MongoDB 日志切割,请先看 MongoDB 日志切割。 Docker 版已经内置 Grafana 和慢查询面板,部署完成后可直接使用。
前提条件
- 已安装
docker - 已安装
docker-compose
部署 VictoriaLogs + Grafana
-
下载镜像
- 服务器支持访问互联网
- 服务器不支持访问互联网
docker pull registry.cn-hangzhou.aliyuncs.com/hap-mdy/hap-monitor-victorialogs-grafana-amd64:1.0.0# 离线镜像包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/common/hap-monitor-victorialogs-grafana-amd64-1.0.0.tar.gz# 在服务器上通过 docker load -i 命令加载离线镜像docker load -i hap-monitor-victorialogs-grafana-amd64-1.0.0.tar.gz -
创建配置文件与数据目录
mkdir -p /usr/local/victoria-logs-linuxmkdir -p /data/victorialogsmkdir -p /data/grafana -
创建配置文件
cat > /usr/local/victoria-logs-linux/hap-monitor-logs.yaml << 'EOF'services:hap-monitor-logs:image: registry.cn-hangzhou.aliyuncs.com/hap-mdy/hap-monitor-victorialogs-grafana-amd64:1.0.0container_name: hap-monitor-logsrestart: alwaysports:# VictoriaLogs HTTP API- "9428:9428"# Grafana Web UI- "3000:3000"volumes:# VictoriaLogs 数据目录- /data/victorialogs:/data/victorialogs# Grafana 数据目录- /data/grafana:/usr/local/grafana/dataenvironment:# 时区TZ: Asia/Shanghai# Go Runtime Heap 限制,建议 <= mem_limitGOMEMLIMIT: 2GiB###################################################################### VictoriaLogs###################################################################### 数据目录VL_STORAGE_DATA_PATH: /data/victorialogs# HTTP 监听地址VL_HTTP_LISTEN_ADDR: ":9428"# Basic AuthVL_HTTP_AUTH_USERNAME: myuserVL_HTTP_AUTH_PASSWORD: mypassword# 数据保留时间VL_RETENTION_PERIOD: 30d# 最大磁盘占用VL_RETENTION_DISK_USAGE: 50GiB# 内部 cache 百分比VL_MEMORY_ALLOWED_PERCENT: "2"# 写入并发VL_MAX_CONCURRENT_INSERTS: "4"# 查询并发VL_MAX_CONCURRENT_REQUESTS: "2"# 查询超时VL_SEARCH_MAX_QUERY_DURATION: 30s# 最大查询时间范围VL_SEARCH_MAX_QUERY_TIMERANGE: 24h# 查询排队超时VL_SEARCH_MAX_QUEUE_DURATION: 5s# 慢查询日志阈值VL_SEARCH_LOG_SLOW_QUERY_DURATION: 3s# 单行日志最大大小VL_INSERT_MAX_LINE_SIZE_BYTES: "262144"# 单行最大字段数VL_INSERT_MAX_FIELDS_PER_LINE: "300"# syslog 附加字段VL_SYSLOG_EXTRA_FIELDS_TCP: '{"job":"rsyslog"}'# 日志级别VL_LOGGER_LEVEL: INFO###################################################################### Grafana###################################################################### Grafana 子路径GRAFANA_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:%(http_port)s/privatedeploy/mdy/monitor/victorialogs-grafana/"# 开启子路径模式GRAFANA_SERVER_SERVE_FROM_SUB_PATH: "true"# Grafana 默认管理员账号GRAFANA_ADMIN_USER: admin# Grafana 默认管理员密码GRAFANA_ADMIN_PASSWORD: admin@123456# 允许加载未签名插件GRAFANA_ALLOW_UNSIGNED_PLUGINS: victoriametrics-logs-datasource###################################################################### VictoriaLogs Grafana Datasource###################################################################### VictoriaLogs 地址GRAFANA_VL_DATASOURCE_URL: http://127.0.0.1:9428# VictoriaLogs Basic Auth 用户名GRAFANA_VL_BASIC_AUTH_USER: myuser# VictoriaLogs Basic Auth 密码GRAFANA_VL_BASIC_AUTH_PASSWORD: mypasswordmem_limit: 3gmemswap_limit: 3gcpus: 2.0ulimits:nofile:soft: 102400hard: 102400logging:driver: json-fileoptions:# 单日志文件大小max-size: "100m"# 保留日志文件数量max-file: "3"EOF变量说明:
VL_HTTP_AUTH_USERNAME和VL_HTTP_AUTH_PASSWORD用于 VictoriaLogs 的 Basic Auth 认证,建议按现场规范改成更复杂的用户名和密码,不要直接沿用示例值VL_RETENTION_PERIOD用于设置日志保留时长,例如30d表示保留 30 天VL_RETENTION_DISK_USAGE用于设置 VictoriaLogs 的磁盘占用上限,例如50GiB表示最多使用 50 GiB 磁盘空间- 如果日志量比较大,建议同时结合这两个参数一起调整,避免磁盘增长过快
GRAFANA_VL_DATASOURCE_URL用于指定 Grafana 连接 VictoriaLogs 的地址, 如果 VictoriaLogs 不在本机,请改成实际可访问的地址GRAFANA_VL_BASIC_AUTH_USER和GRAFANA_VL_BASIC_AUTH_PASSWORD用于 Grafana 访问 VictoriaLogs 时的 Basic Auth 认证,需要和 VictoriaLogs 的认证信息保持一致
-
启停服务
# 启动docker-compose -f /usr/local/victoria-logs-linux/hap-monitor-logs.yaml up -d# 停止docker-compose -f /usr/local/victoria-logs-linux/hap-monitor-logs.yaml down
部署日志采集器 Promtail
Promtail 需要部署在每一台 MongoDB 节点上,直接读取本机的 mongodb.log
并把慢查询日志推送到 VictoriaLogs。
注意事项:
PROMTAIL_PUSH_URL需要改成实际的 VictoriaLogs 地址PROMTAIL_USERNAME和PROMTAIL_PASSWORD需要改成 VictoriaLogs 的真实认证信息PROMTAIL_JOB_NAME需要在每台 MongoDB 节点上保持唯一,便于区分日志来源PROMTAIL_LOG_PATH需要改成当前节点上 MongoDB 日志文件的绝对路径- 如果每台 MongoDB 节点的日志路径不同,请分别调整对应配置
-
下载镜像
- 服务器支持访问互联网
- 服务器不支持访问互联网
docker pull registry.cn-hangzhou.aliyuncs.com/hap-mdy/hap-promtail-vlogs-mongodb-amd64:1.0.0# 离线镜像包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/common/hap-promtail-vlogs-mongodb-amd64-1.0.0.tar.gz# 在服务器上通过 docker load -i 命令加载离线镜像docker load -i hap-promtail-vlogs-mongodb-amd64-1.0.0.tar.gz -
创建配置文件与数据目录
mkdir -p /usr/local/promtail-vlogsmkdir -p /usr/local/promtail-vlogs/promtail-data -
创建配置文件
cat > /usr/local/promtail-vlogs/promtail-vlogs-mongodb.yaml << 'EOF'services:promtail-vlogs-mongodb:image: registry.cn-hangzhou.aliyuncs.com/hap-mdy/hap-promtail-vlogs-mongodb-amd64:1.0.0container_name: promtail-vlogs-mongodbrestart: alwaysnetwork_mode: hostenvironment:PROMTAIL_PUSH_URL: http://172.17.30.241:9428/insert/loki/api/v1/pushPROMTAIL_USERNAME: myuserPROMTAIL_PASSWORD: mypasswordPROMTAIL_JOB_NAME: mongodb-01PROMTAIL_LOG_PATH: /data/logs/mongodb/mongodb.logvolumes:- /data/logs/mongodb/mongodb.log:/data/logs/mongodb/mongodb.log:ro- ./promtail-data:/data/promtaildeploy:resources:limits:cpus: '1'memory: 1GEOFcat > /usr/local/promtail-vlogs/promtail-data/positions.yaml << 'EOF'positions: {}EOF -
启停服务
# 启动docker-compose -f /usr/local/promtail-vlogs/promtail-vlogs-mongodb.yaml up -d# 停止docker-compose -f /usr/local/promtail-vlogs/promtail-vlogs-mongodb.yaml down
代理转发配置 Grafana
upstream grafana {
server 192.168.1.10:3000;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name hap.domain.com;
access_log /data/logs/weblogs/grafana.log main;
error_log /data/logs/weblogs/grafana.mingdao.net.error.log;
location /privatedeploy/mdy/monitor/victorialogs-grafana/ {
#allow 1.1.1.1;
#deny all;
proxy_hide_header X-Frame-Options;
proxy_set_header X-Frame-Options ALLOWALL;
proxy_set_header Host $http_host;
proxy_pass http://grafana;
proxy_redirect http://localhost:3000 http://hap.domain.com:80/privatedeploy/mdy/monitor/victorialogs-grafana;
}
location /privatedeploy/mdy/monitor/victorialogs-grafana/api/live {
rewrite ^/(.*) /$1 break;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://grafana;
}
}
代理配置好后即可通过以下地址访问 Grafana 页面:
http://hap.domain.com/privatedeploy/mdy/monitor/victorialogs-grafana
组合部署参考
- VictoriaLogs 与 Grafana 已经在同一个 Docker 组合里部署,不需要额外单独安装 Grafana。
- Promtail 需要部署在每台 MongoDB 节点上,保证每个节点都能采集本机日志。
- 如果不同节点的 MongoDB 日志目录不一致,请在对应节点上单独修改
PROMTAIL_LOG_PATH。
访问说明
- VictoriaLogs 默认监听
9428端口。 - Grafana 默认监听
3000端口,并通过反向代理子路径对外提供访问。 - 如果需要接入现有 Nginx 或网关,请确保子路径与
GRAFANA_SERVER_ROOT_URL保持一致。