# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. server: port: 1157 spring: application: name: ${HOSTNAME:@hertzbeat@}${PID} profiles: active: prod ai: mcp: server: enabled: true stdio: false protocol: streamable streamable-http: mcp-endpoint: /api/mcp name: hertzbeat-mcp-server version: 1.0.0 type: SYNC mvc: static-path-pattern: /** jackson: default-property-inclusion: ALWAYS web: resources: static-locations: - classpath:/dist/ - classpath:../dist/ servlet: multipart: max-file-size: 100MB max-request-size: 100MB management: health: mail: enabled: off endpoints: web: exposure: include: - 'metrics' - 'health' - 'prometheus' access: default: read_only endpoint: prometheus: access: read_only metrics: tags: application: ${spring.application.name} environment: ${spring.profiles.active} prometheus: metrics: export: enabled: true sureness: container: jakarta_servlet auths: - digest - basic - jwt jwt: secret: 'CyaFv0bwq2Eik0jdrKUtsA6bx3sDJeFV643R LnfKefTjsIfJLBa2YkhEqEGtcHDTNe4CU6+9 8tVt4bisXQ13rbN0oxhUZR73M6EByXIO+SV5 dKhaX0csgOCTlCxq20yhmUea6H6JIpSE2Rwp' --- spring: config: activate: on-profile: prod datasource: driver-class-name: org.h2.Driver username: sa password: 123456 url: jdbc:h2:./data/hertzbeat;MODE=MYSQL hikari: max-lifetime: 120000 jpa: show-sql: false database: h2 hibernate: ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.H2Dialect format_sql: true flyway: enabled: true clean-disabled: true baseline-on-migrate: true baseline-version: 1 locations: - classpath:db/migration/{vendor} mail: # Mail server address, eg: qq-mailbox is smtp.qq.com, qq-exmail is smtp.exmail.qq.com host: smtp.qq.com username: tancloud@qq.com # Attention this is not email account password, this requires an email authorization code password: your-password # Mailbox smtp server port, eg: qq-mailbox is 465, qq-exmail is 587 port: 465 properties: mail: smtp: socketFactoryClass: javax.net.ssl.SSLSocketFactory ssl: enable: true starttls: enable: false common: queue: # memory, kafka, redis type: memory # properties when queue type is kafka kafka: servers: 127.0.0.1:9092 metrics-data-topic: async-metrics-data metrics-data-to-storage-topic: metrics-data-to-storage-topic service-discovery-data-topic: service-discovery-data alerts-data-topic: async-alerts-data log-entry-data-topic: async-log-entry-data log-entry-data-to-storage-topic: log-entry-data-to-storage-topic redis: redis-host: 127.0.0.1 redis-port: 6379 metrics-data-queue-name-for-service-discovery: service_discovery metrics-data-queue-name-to-persistent-storage: metrics:to_persistent_storage metrics-data-queue-name-to-alerter: metrics:to_alerter metrics-data-queue-name-to-real-time-storage: metrics:to_realtime_storage alerts-data-queue-name: alerts log-entry-queue-name: log:to_alerter log-entry-to-storage-queue-name: log:to_storage warehouse: store: # store history metrics data, enable only one below duckdb: enabled: true # The maximum retention time for history records, after which records will be deleted expire-time: 90d store-path: data/history.duckdb victoria-metrics: # Standalone mode toggle — must be set to false when using cluster mode enabled: false url: http://localhost:8428 username: root password: root insert: buffer-size: 100 flush-interval: 3 compression: enabled: false cluster: enabled: false select: url: http://localhost:8481 username: root password: root insert: url: http://localhost:8480 username: root password: root buffer-size: 1000 flush-interval: 3 td-engine: enabled: false driver-class-name: com.taosdata.jdbc.rs.RestfulDriver url: jdbc:TAOS-RS://localhost:6041/hertzbeat username: root password: taosdata greptime: enabled: false grpc-endpoints: localhost:4001 http-endpoint: http://localhost:4000 # if you config other database name, you should create them first database: public username: greptime password: greptime questdb: enabled: false url: localhost:9000 username: admin password: quest iot-db: enabled: false host: 127.0.0.1 rpc-port: 6667 username: root password: root query-timeout-in-ms: -1 # data expire time, unit:ms, default '7776000000'(90 days, -1:never expire) expire-time: '7776000000' influxdb: enabled: false server-url: http://127.0.0.1:8086 username: root password: root expire-time: '30d' replication: 1 doris: enabled: false url: jdbc:mysql://127.0.0.1:9030 username: root password: table-config: enable-partition: false partition-time-unit: DAY partition-retention-days: 30 partition-future-days: 3 buckets: 8 replication-num: 1 pool-config: minimum-idle: 5 maximum-pool-size: 20 connection-timeout: 30000 write-config: # Write mode: jdbc (default, suitable for small/medium scale) or stream (high throughput) write-mode: jdbc # JDBC mode: batch size and flush interval batch-size: 1000 flush-interval: 5 # Stream Load mode configuration (only used when write-mode: stream) stream-load-config: # Doris FE HTTP port for Stream Load API http-port: :8030 # Stream load timeout in seconds timeout: 60 # Max batch size in bytes for stream load (10MB default) max-bytes-per-batch: 10485760 # Redirect policy in complex networks: direct/public/private, empty means Doris default redirect-policy: "" # store real-time metrics data, enable only one below real-time: memory: enabled: true init-size: 16 redis: enabled: false # redis mode: single, sentinel, cluster. Default is single mode: single # separate each address with comma when using cluster mode, eg: 127.0.0.1:6379,127.0.0.1:6380 address: 127.0.0.1:6379 # enter master name when using sentinel mode masterName: mymaster password: 123456 # redis db index, default: DB0 db: 0 alerter: # custom console url console-url: https://console.tancloud.io # we work we-work-webhook-url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key= # ding ding talk ding-talk-webhook-url: https://oapi.dingtalk.com/robot/send?access_token= # fei shu fly book fly-book-webhook-url: https://open.feishu.cn/open-apis/bot/v2/hook/ # telegram telegram-webhook-url: https://api.telegram.org/bot%s/sendMessage # discord discord-webhook-url: https://discord.com/api/v9/channels/%s/messages # serverChan server-chan-webhook-url: https://sctapi.ftqq.com/%s.send # gotify gotify-webhook-url: http://127.0.0.1/message?token=%s # alert inhibit ttl unit ms, default 14400000(4 hours) inhibit: ttl: 14400000 sms: enable: false type: tencent tencent: secret-id: secret-key: app-id: sign-name: template-id: alibaba: access-key-id: access-key-secret: sign-name: template-code: unisms: # auth-mode: simple or hmac auth-mode: simple access-key-id: YOUR_ACCESS_KEY_ID # hmac mode need to fill in access-key-secret access-key-secret: YOUR_ACCESS_KEY_SECRET signature: YOUR_SMS_SIGNATURE template-id: YOUR_TEMPLATE_ID smslocal: api-key: YOUR_API_KEY_HERE aws: access-key-id: YOUR_ACCESS_KEY_ID access-key-secret: YOUR_ACCESS_KEY_SECRET region: AWS_REGION_FOR_END_USER_MESSAGING twilio: account-sid: YOUR_ACCOUNT_SID auth-token: YOUR_AUTH_TOKEN twilio-phone-number: YOUR_TWILIO_PHONE_NUMBER scheduler: server: enabled: true port: 1158 grafana: enabled: false url: http://127.0.0.1:3000 expose-url: http://127.0.0.1:3000 username: admin password: admin hertzbeat: collector: mysql: # MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics. # auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine # jdbc : always use JDBC # r2dbc : always use the built-in query engine query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto} # Optional virtual-thread overrides. Remove this whole block to use built-in defaults. vthreads: enabled: true common: mode: UNBOUNDED_VT collector: mode: LIMIT_AND_REJECT manager: mode: LIMIT_AND_REJECT max-concurrent-jobs: 10 alerter: notify: mode: LIMIT_AND_REJECT max-concurrent-jobs: 64 periodic-max-concurrent-jobs: 10 log-worker: max-concurrent-jobs: 10 queue-capacity: 1000 reduce: max-concurrent-jobs: 2 window-evaluator: max-concurrent-jobs: 2 notify-max-concurrent-per-channel: 4 warehouse: mode: UNBOUNDED_VT async: enabled: true concurrency-limit: 256 reject-when-limit-reached: true task-termination-timeout: 5000